From b1adb2179631ff83ab6bb1e43bc343e2835cd985 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Wed, 6 Dec 2017 21:21:30 +0100 Subject: [PATCH 001/658] Test task for Windows console program fails unless the task is of type shell --- .../parts/tasks/electron-browser/terminalTaskSystem.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts index 55f852198c0..65d435d86cc 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts @@ -557,8 +557,9 @@ export class TerminalTaskSystem implements ITaskSystem { } let dir = path.dirname(command); if (dir !== '.') { - // We have a directory. So leave the command as is. - return command; + // We have a directory. Make the path absolute + // to the current working directory + return path.join(cwd, command); } // We have a simple file name. We get the path variable from the env // and try to find the executable on the path. @@ -586,7 +587,7 @@ export class TerminalTaskSystem implements ITaskSystem { return withExtension; } } - return command; + return path.join(cwd, command); } private resolveVariables(task: CustomTask | ContributedTask, value: string[]): string[] { From 92bb67149e9b888e9fccbff17aea21d63347a07f Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 17 Jan 2018 14:39:44 -0500 Subject: [PATCH 002/658] Create .vsts-ci.yml --- .vsts-ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .vsts-ci.yml diff --git a/.vsts-ci.yml b/.vsts-ci.yml new file mode 100644 index 00000000000..a7f9cf98290 --- /dev/null +++ b/.vsts-ci.yml @@ -0,0 +1,25 @@ +queue: + name: Hosted + +steps: + +- task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + +- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + +- script: | + yarn + .\node_modules\.bin\gulp electron + .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit + npm run compile + name: build + +- script: | + node --version + .\scripts\test.bat + .\scripts\test-integration.bat" + name: test From 3fa4b5d617df212b7001625260e1f9eda611e9de Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 17 Jan 2018 14:48:54 -0500 Subject: [PATCH 003/658] Update .vsts-ci.yml --- .vsts-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index a7f9cf98290..f2def574648 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,6 +1,10 @@ queue: name: Hosted +variables: + ELECTRON_RUN_AS_NODE: 1 + VSCODE_BUILD_VERBOSE: true + steps: - task: NodeTool@0 From 2a81453fa4705894d411a703a793b659bb98b40b Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 17 Jan 2018 15:05:54 -0500 Subject: [PATCH 004/658] Changing queue --- .vsts-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index f2def574648..99e23dc4c7b 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,10 +1,10 @@ queue: - name: Hosted + name: Hosted VS 2017 variables: ELECTRON_RUN_AS_NODE: 1 VSCODE_BUILD_VERBOSE: true - + steps: - task: NodeTool@0 @@ -21,7 +21,7 @@ steps: .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build - + - script: | node --version .\scripts\test.bat From 1af99014370c88d46222871439510dd6c15e7e15 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 17 Jan 2018 15:07:56 -0500 Subject: [PATCH 005/658] Changing queue --- .vsts-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 99e23dc4c7b..6ea0722bfe6 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,5 +1,5 @@ queue: - name: Hosted VS 2017 + name: Hosted VS2017 variables: ELECTRON_RUN_AS_NODE: 1 From a23387260a2478c2068e0a1eb07e59a8a235111f Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 17 Jan 2018 15:30:39 -0500 Subject: [PATCH 006/658] Switching to powershell for scripts --- .vsts-ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 6ea0722bfe6..6fae87e58bd 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -4,6 +4,7 @@ queue: variables: ELECTRON_RUN_AS_NODE: 1 VSCODE_BUILD_VERBOSE: true + System.Debug: true steps: @@ -15,15 +16,15 @@ steps: inputs: versionSpec: "1.3.2" -- script: | +- powershell: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build -- script: | +- powershell: | node --version .\scripts\test.bat - .\scripts\test-integration.bat" + .\scripts\test-integration.bat name: test From 227acaa89c8b045600ea863b7ccc4fd311152ea7 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 17 Jan 2018 16:38:42 -0500 Subject: [PATCH 007/658] Added some additional output --- .vsts-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 6fae87e58bd..2b39004e944 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -20,6 +20,8 @@ steps: yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit + Get-Command npm + npm --version npm run compile name: build From 0c9873a42eb32227b4bf2555e09278da3a0303df Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 17 Jan 2018 16:53:31 -0500 Subject: [PATCH 008/658] Trying the Server 2012 queue --- .vsts-ci.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 2b39004e944..3a55ddc3ad5 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,5 +1,5 @@ queue: - name: Hosted VS2017 + name: Hosted variables: ELECTRON_RUN_AS_NODE: 1 @@ -20,8 +20,6 @@ steps: yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit - Get-Command npm - npm --version npm run compile name: build From 4a30dff39473af52edb030cd0c18b358677e3baa Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Fri, 19 Jan 2018 11:54:17 -0500 Subject: [PATCH 009/658] Update .vsts-ci.yml --- .vsts-ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 3a55ddc3ad5..ce743c8e50b 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -28,3 +28,10 @@ steps: .\scripts\test.bat .\scripts\test-integration.bat name: test + +- task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: 'C:\NPM\Cache\_logs' + ArtifactName: 'npm_logs' + ArtifactType: 'Container' + condition: always() From 08339781401e768f4d07569a63a4a48a18593a3f Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Fri, 19 Jan 2018 12:12:24 -0500 Subject: [PATCH 010/658] Update .vsts-ci.yml --- .vsts-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index ce743c8e50b..c2c30f01ce3 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -16,14 +16,14 @@ steps: inputs: versionSpec: "1.3.2" -- powershell: | +- script: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build -- powershell: | +- script: | node --version .\scripts\test.bat .\scripts\test-integration.bat From 4b6862da1c5f5691d238a26a4a8220feaba9ec8d Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Fri, 19 Jan 2018 12:13:10 -0500 Subject: [PATCH 011/658] Update .vsts-ci.yml --- .vsts-ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index c2c30f01ce3..70dc4f8de57 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,6 +1,3 @@ -queue: - name: Hosted - variables: ELECTRON_RUN_AS_NODE: 1 VSCODE_BUILD_VERBOSE: true From a44e678e909dae0998bb278298cbbdb54a19516a Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 08:48:28 -0500 Subject: [PATCH 012/658] Update .vsts-ci.yml --- .vsts-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 70dc4f8de57..9e847ca4e51 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -13,14 +13,14 @@ steps: inputs: versionSpec: "1.3.2" -- script: | +- powershell: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build -- script: | +- powershell: | node --version .\scripts\test.bat .\scripts\test-integration.bat From 22923470e2967cbb7eaff471b12735d302b108b7 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 08:53:31 -0500 Subject: [PATCH 013/658] Update .vsts-ci.yml --- .vsts-ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 9e847ca4e51..1f09251bd6b 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -13,6 +13,11 @@ steps: inputs: versionSpec: "1.3.2" +- script: | + git config --global core.autocrlf false + git config --global core.safescrlf true + git reset --hard + - powershell: | yarn .\node_modules\.bin\gulp electron From 781112800909cf401c0a06aaed7eac4eb1505173 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 09:05:43 -0500 Subject: [PATCH 014/658] Update .vsts-ci.yml --- .vsts-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 1f09251bd6b..1d2daf2cbe6 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -14,9 +14,10 @@ steps: versionSpec: "1.3.2" - script: | + del /S /Q *.* git config --global core.autocrlf false git config --global core.safescrlf true - git reset --hard + git checkout $(Build.SourceBranch) - powershell: | yarn From b245dc81ecbd43390a255c1a16c81aa9c7a4752d Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 09:16:04 -0500 Subject: [PATCH 015/658] Update .vsts-ci.yml --- .vsts-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 1d2daf2cbe6..26cbf791637 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -14,10 +14,10 @@ steps: versionSpec: "1.3.2" - script: | - del /S /Q *.* git config --global core.autocrlf false git config --global core.safescrlf true - git checkout $(Build.SourceBranch) + git checkout HEAD^ + git checkout -f master - powershell: | yarn From 99a71a5347734cbb6c44f0371f622729b52ad988 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 09:23:16 -0500 Subject: [PATCH 016/658] Update .vsts-ci.yml --- .vsts-ci.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 26cbf791637..d8c864833c4 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -5,6 +5,14 @@ variables: steps: +- powershell: | + Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Path $_ -Force } + +- script: | + git config --global core.autocrlf false + git config --global core.safescrlf true + git checkout -f master + - task: NodeTool@0 inputs: versionSpec: "8.9.1" @@ -13,12 +21,6 @@ steps: inputs: versionSpec: "1.3.2" -- script: | - git config --global core.autocrlf false - git config --global core.safescrlf true - git checkout HEAD^ - git checkout -f master - - powershell: | yarn .\node_modules\.bin\gulp electron From 2bb3b03a9bd595fa2f7218a951f38bf83a04f2a2 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 09:26:17 -0500 Subject: [PATCH 017/658] Update .vsts-ci.yml --- .vsts-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index d8c864833c4..a6ed453c3c9 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -6,7 +6,7 @@ variables: steps: - powershell: | - Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Path $_ -Force } + Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Path $_.FullName -Force } - script: | git config --global core.autocrlf false From d00ee6d4f491fb08311963a466fdba51c751e139 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 09:31:07 -0500 Subject: [PATCH 018/658] Update .vsts-ci.yml --- .vsts-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index a6ed453c3c9..2b6e364b6d4 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,4 +1,4 @@ -variables: +-variables: ELECTRON_RUN_AS_NODE: 1 VSCODE_BUILD_VERBOSE: true System.Debug: true @@ -6,7 +6,7 @@ variables: steps: - powershell: | - Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Path $_.FullName -Force } + Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Path $_.FullName -Force -Confirm} - script: | git config --global core.autocrlf false From 548e79c162903694e457f6e9c481d8ef8ad254b3 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 09:32:06 -0500 Subject: [PATCH 019/658] Update .vsts-ci.yml --- .vsts-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 2b6e364b6d4..107f0b797a9 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,7 +1,7 @@ --variables: - ELECTRON_RUN_AS_NODE: 1 - VSCODE_BUILD_VERBOSE: true - System.Debug: true +- variables: + ELECTRON_RUN_AS_NODE: 1 + VSCODE_BUILD_VERBOSE: true + System.Debug: true steps: From 7462d949687924228e3a1e31ed30128ccf746c89 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 09:32:58 -0500 Subject: [PATCH 020/658] Update .vsts-ci.yml --- .vsts-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 107f0b797a9..9876adf3a10 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,7 +1,7 @@ -- variables: - ELECTRON_RUN_AS_NODE: 1 - VSCODE_BUILD_VERBOSE: true - System.Debug: true +variables: + ELECTRON_RUN_AS_NODE: 1 + VSCODE_BUILD_VERBOSE: true + System.Debug: true steps: From bc5b214ffacb2ab40e23ee90079c481a82d67b2c Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 09:38:23 -0500 Subject: [PATCH 021/658] Update .vsts-ci.yml --- .vsts-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 9876adf3a10..d2c17a7239c 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -6,7 +6,7 @@ variables: steps: - powershell: | - Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Path $_.FullName -Force -Confirm} + Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force -Confirm} - script: | git config --global core.autocrlf false From 02efad950b6c0d2a34d2bf54000ce310058a6a02 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Sat, 20 Jan 2018 09:41:16 -0500 Subject: [PATCH 022/658] Update .vsts-ci.yml --- .vsts-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index d2c17a7239c..3a6f16ad856 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -6,7 +6,7 @@ variables: steps: - powershell: | - Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force -Confirm} + Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } - script: | git config --global core.autocrlf false From 19f5929f3152d56990fef80fa32535de515bee63 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Mon, 22 Jan 2018 15:28:15 -0500 Subject: [PATCH 023/658] Update .vsts-ci.yml --- .vsts-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 3a6f16ad856..6fbd5ed4c6b 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -21,14 +21,14 @@ steps: inputs: versionSpec: "1.3.2" -- powershell: | +- script: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build -- powershell: | +- script: | node --version .\scripts\test.bat .\scripts\test-integration.bat From b1790b41a2cf462b448345234293224d94697150 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 24 Jan 2018 12:07:13 -0500 Subject: [PATCH 024/658] Update .vsts-ci.yml --- .vsts-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 6fbd5ed4c6b..3a6f16ad856 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -21,14 +21,14 @@ steps: inputs: versionSpec: "1.3.2" -- script: | +- powershell: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build -- script: | +- powershell: | node --version .\scripts\test.bat .\scripts\test-integration.bat From 81d0951589e4892cc07a595692d1c0a9f26c8470 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Fri, 2 Feb 2018 16:09:58 -0500 Subject: [PATCH 025/658] Update .vsts-ci.yml --- .vsts-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 3a6f16ad856..4c7f8b070e7 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,6 +1,7 @@ variables: ELECTRON_RUN_AS_NODE: 1 VSCODE_BUILD_VERBOSE: true + APPVEYOR: true System.Debug: true steps: From c27c137e85b7de874c4ab42f0052c776205abe7b Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Tue, 6 Feb 2018 09:02:54 -0800 Subject: [PATCH 026/658] Update .vsts-ci.yml --- .vsts-ci.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 4c7f8b070e7..19f6280f5ce 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -34,10 +34,3 @@ steps: .\scripts\test.bat .\scripts\test-integration.bat name: test - -- task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: 'C:\NPM\Cache\_logs' - ArtifactName: 'npm_logs' - ArtifactType: 'Container' - condition: always() From 08b8979d0cb19f71ec0db9ccfe6770a7aea2ac3e Mon Sep 17 00:00:00 2001 From: Dominik Ivosevic Date: Thu, 15 Feb 2018 09:37:48 +0100 Subject: [PATCH 027/658] Improved the regex and added a unit test --- .../parts/output/common/outputLinkComputer.ts | 2 +- .../parts/output/test/outputLinkProvider.test.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/output/common/outputLinkComputer.ts b/src/vs/workbench/parts/output/common/outputLinkComputer.ts index e734eef99bb..c1907f1d37b 100644 --- a/src/vs/workbench/parts/output/common/outputLinkComputer.ts +++ b/src/vs/workbench/parts/output/common/outputLinkComputer.ts @@ -105,7 +105,7 @@ export class OutputLinkComputer { // Example: /workspaces/mankala/Features.ts (45): error // Example: /workspaces/mankala/Features.ts(45,18): error // Example: /workspaces/mankala/Features.ts (45,18): error - patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + '([^\\s\\(\\)]*)(\\s?\\((\\d+)(,(\\d+))?)\\)', 'gi')); + patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + '((?:[^\\s\\(\\)]| [^\\s\\(\\)])*)(\\s?\\((\\d+)(,(\\d+))?)\\)', 'gi')); // Example: at /workspaces/mankala/Game.ts // Example: at /workspaces/mankala/Game.ts:336 diff --git a/src/vs/workbench/parts/output/test/outputLinkProvider.test.ts b/src/vs/workbench/parts/output/test/outputLinkProvider.test.ts index 393a51426f8..60fa73c7033 100644 --- a/src/vs/workbench/parts/output/test/outputLinkProvider.test.ts +++ b/src/vs/workbench/parts/output/test/outputLinkProvider.test.ts @@ -385,6 +385,20 @@ suite('Workbench - OutputWorker', () => { assert.equal(result[0].range.startColumn, 1); assert.equal(result[0].range.endColumn, 106); + // Example: C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features Special.ts (45,18): error. + line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features Special.ts (45,18): error'); + result = OutputLinkComputer.detectLinks(line, 1, patternsSlash, contextService); + assert.equal(result.length, 1); + assert.equal(result[0].url, contextService.toResource('/lib/something/Features Special.ts').toString() + '#45,18'); + assert.equal(result[0].range.startColumn, 1); + assert.equal(result[0].range.endColumn, 114); + + result = OutputLinkComputer.detectLinks(line, 1, patternsBackSlash, contextService); + assert.equal(result.length, 1); + assert.equal(result[0].url, contextService.toResource('/lib/something/Features Special.ts').toString() + '#45,18'); + assert.equal(result[0].range.startColumn, 1); + assert.equal(result[0].range.endColumn, 114); + // Example: at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts. line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts. in'); result = OutputLinkComputer.detectLinks(line, 1, patternsSlash, contextService); From f7ada5080f77dc3145690c8f38b30f9e75ccdfe6 Mon Sep 17 00:00:00 2001 From: Till Salinger Date: Mon, 19 Feb 2018 12:43:20 +0100 Subject: [PATCH 028/658] fixes #43565 --- src/vs/workbench/parts/files/electron-browser/fileActions.ts | 4 ++++ .../parts/files/electron-browser/views/explorerViewer.ts | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index f146ffd72dc..1b1d80847bf 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -1414,6 +1414,10 @@ export function getWellFormedFileName(filename: string): string { // Remove trailing dots filename = strings.rtrim(filename, '.'); + // Remove trailing slashes + filename = strings.rtrim(filename, '/'); + filename = strings.rtrim(filename, '\\'); + return filename; } diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 7e8b7205169..5a8cf2f0aa3 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -58,6 +58,7 @@ import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService import { DataTransfers } from 'vs/base/browser/dnd'; import { Schemas } from 'vs/base/common/network'; import { IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; +import { rtrim } from 'vs/base/common/strings'; export class FileDataSource implements IDataSource { constructor( @@ -324,7 +325,8 @@ export class FileRenderer implements IRenderer { if (inputBox.validate()) { const value = inputBox.value; if (value && value.search(/[\\/]/) !== -1) { // only show if there's a slash - const newPath = paths.normalize(paths.join(initialRelPath, value), true); + let newPath = paths.normalize(paths.join(initialRelPath, value), true); + newPath = rtrim(newPath, paths.nativeSep); const fileType: string = FileKind[fileKind].toLowerCase(); inputBox.showMessage({ From c31bfdcc78d5145232a5e2acad35c51882c5b402 Mon Sep 17 00:00:00 2001 From: Aliaksandr Ushakou Date: Mon, 19 Feb 2018 23:18:56 -0500 Subject: [PATCH 029/658] fix #43465 --- .../browser/viewParts/scrollDecoration/scrollDecoration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts b/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts index e4086a1e00a..63878eda34c 100644 --- a/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts +++ b/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts @@ -54,7 +54,7 @@ export class ScrollDecorationViewPart extends ViewPart { private _updateWidth(): boolean { const layoutInfo = this._context.configuration.editor.layoutInfo; - let newWidth = layoutInfo.width - layoutInfo.minimapWidth; + let newWidth = layoutInfo.width - layoutInfo.verticalScrollbarWidth; if (this._width !== newWidth) { this._width = newWidth; return true; From e51320551dd5ee652b68d3f2a3009dce7a94f6d3 Mon Sep 17 00:00:00 2001 From: Matheus Salmi Date: Thu, 22 Feb 2018 01:04:51 -0300 Subject: [PATCH 030/658] Fix #44032 - make php grammar regex case-insensitive --- extensions/php/build/update-grammar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/php/build/update-grammar.js b/extensions/php/build/update-grammar.js index 94b73aa7354..22e0a05d988 100644 --- a/extensions/php/build/update-grammar.js +++ b/extensions/php/build/update-grammar.js @@ -27,7 +27,7 @@ function fixBadRegex(grammar) { if (scopeResolution) { const match = scopeResolution.patterns[0].match; if (match === '(?i)([a-z_\\x{7f}-\\x{7fffffff}\\\\][a-z0-9_\\x{7f}-\\x{7fffffff}\\\\]*)(?=\\s*::)') { - scopeResolution.patterns[0].match = '([A-Za-z_\\x{7f}-\\x{7fffffff}\\\\][A_Za-z0-9_\\x{7f}-\\x{7fffffff}\\\\]*)(?=\\s*::)'; + scopeResolution.patterns[0].match = '([A-Za-z_\\x{7f}-\\x{7fffffff}\\\\][A-Za-z0-9_\\x{7f}-\\x{7fffffff}\\\\]*)(?=\\s*::)'; return; } } From 2896341a863f711376a897b288427bd5073d1852 Mon Sep 17 00:00:00 2001 From: Matheus Salmi Date: Thu, 22 Feb 2018 01:06:42 -0300 Subject: [PATCH 031/658] Update php grammar file --- extensions/php/syntaxes/php.tmLanguage.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/php/syntaxes/php.tmLanguage.json b/extensions/php/syntaxes/php.tmLanguage.json index 9940c618083..f26a1e7daf5 100644 --- a/extensions/php/syntaxes/php.tmLanguage.json +++ b/extensions/php/syntaxes/php.tmLanguage.json @@ -2430,7 +2430,7 @@ "scope-resolution": { "patterns": [ { - "match": "([A-Za-z_\\x{7f}-\\x{7fffffff}\\\\][A_Za-z0-9_\\x{7f}-\\x{7fffffff}\\\\]*)(?=\\s*::)", + "match": "([A-Za-z_\\x{7f}-\\x{7fffffff}\\\\][A-Za-z0-9_\\x{7f}-\\x{7fffffff}\\\\]*)(?=\\s*::)", "captures": { "1": { "patterns": [ From 6e2387921e5d768c6895188d87506d29b6b6192c Mon Sep 17 00:00:00 2001 From: Dominik Ivosevic Date: Thu, 22 Feb 2018 12:49:30 +0100 Subject: [PATCH 032/658] Refactor pattern construction and update tests --- .../parts/output/common/outputLinkComputer.ts | 13 +++++++++---- .../parts/output/test/outputLinkProvider.test.ts | 6 +++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/parts/output/common/outputLinkComputer.ts b/src/vs/workbench/parts/output/common/outputLinkComputer.ts index c1907f1d37b..db4ce9514bc 100644 --- a/src/vs/workbench/parts/output/common/outputLinkComputer.ts +++ b/src/vs/workbench/parts/output/common/outputLinkComputer.ts @@ -94,23 +94,28 @@ export class OutputLinkComputer { ]); workspaceFolderVariants.forEach(workspaceFolderVariant => { + const validPathCharacterPattern = '[^\\s\\(\\):<>"]'; + const validPathCharacterOrSpacePattern = `(?:${validPathCharacterPattern}| ${validPathCharacterPattern})`; + const pathPattern = `${validPathCharacterOrSpacePattern}+\\.${validPathCharacterPattern}+`; + const strictPathPattern = `${validPathCharacterPattern}+`; // Example: /workspaces/express/server.js on line 8, column 13 - patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + '(\\S*) on line ((\\d+)(, column (\\d+))?)', 'gi')); + patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + `(${pathPattern}) on line ((\\d+)(, column (\\d+))?)`, 'gi')); // Example: /workspaces/express/server.js:line 8, column 13 - patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + '(\\S*):line ((\\d+)(, column (\\d+))?)', 'gi')); + patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + `(${pathPattern}):line ((\\d+)(, column (\\d+))?)`, 'gi')); // Example: /workspaces/mankala/Features.ts(45): error // Example: /workspaces/mankala/Features.ts (45): error // Example: /workspaces/mankala/Features.ts(45,18): error // Example: /workspaces/mankala/Features.ts (45,18): error - patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + '((?:[^\\s\\(\\)]| [^\\s\\(\\)])*)(\\s?\\((\\d+)(,(\\d+))?)\\)', 'gi')); + // Example: /workspaces/mankala/Features Special.ts (45,18): error + patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + `(${pathPattern})(\\s?\\((\\d+)(,(\\d+))?)\\)`, 'gi')); // Example: at /workspaces/mankala/Game.ts // Example: at /workspaces/mankala/Game.ts:336 // Example: at /workspaces/mankala/Game.ts:336:9 - patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + '([^:\\s\\(\\)<>\'\"\\[\\]]*)(:(\\d+))?(:(\\d+))?', 'gi')); + patterns.push(new RegExp(strings.escapeRegExpCharacters(workspaceFolderVariant) + `(${strictPathPattern})(:(\\d+))?(:(\\d+))?`, 'gi')); }); return patterns; diff --git a/src/vs/workbench/parts/output/test/outputLinkProvider.test.ts b/src/vs/workbench/parts/output/test/outputLinkProvider.test.ts index 60fa73c7033..7e7f988fbf9 100644 --- a/src/vs/workbench/parts/output/test/outputLinkProvider.test.ts +++ b/src/vs/workbench/parts/output/test/outputLinkProvider.test.ts @@ -115,7 +115,7 @@ suite('Workbench - OutputWorker', () => { line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts] in'); result = OutputLinkComputer.detectLinks(line, 1, patternsSlash, contextService); assert.equal(result.length, 1); - assert.equal(result[0].url, contextService.toResource('/Game.ts').toString()); + assert.equal(result[0].url, contextService.toResource('/Game.ts]').toString()); // Example: C:\Users\someone\AppData\Local\Temp\_monacodata_9888\workspaces\express\server.js on line 8 line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts on line 8'); @@ -429,8 +429,8 @@ suite('Workbench - OutputWorker', () => { line = toOSPath(' at \'C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts\' in'); result = OutputLinkComputer.detectLinks(line, 1, patternsSlash, contextService); assert.equal(result.length, 1); - assert.equal(result[0].url, contextService.toResource('/Game.ts').toString()); + assert.equal(result[0].url, contextService.toResource('/Game.ts\'').toString()); assert.equal(result[0].range.startColumn, 6); - assert.equal(result[0].range.endColumn, 85); + assert.equal(result[0].range.endColumn, 86); }); }); \ No newline at end of file From 291f1b16f1a1872b9294f8de1c20896f3d327fe2 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 12:35:32 +0100 Subject: [PATCH 033/658] fix yarninstaller reference --- .vsts-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 19f6280f5ce..d01ec459ccd 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,5 +1,5 @@ variables: - ELECTRON_RUN_AS_NODE: 1 + ELECTRON_RUN_AS_NODE: 1 VSCODE_BUILD_VERBOSE: true APPVEYOR: true System.Debug: true @@ -18,7 +18,7 @@ steps: inputs: versionSpec: "8.9.1" -- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 +- task: YarnInstaller@0 inputs: versionSpec: "1.3.2" From e038dbb4b83ac0f59bf47f5ea93180dc660882aa Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 12:38:06 +0100 Subject: [PATCH 034/658] yarn installer --- .vsts-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index d01ec459ccd..4079861d626 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -18,7 +18,7 @@ steps: inputs: versionSpec: "8.9.1" -- task: YarnInstaller@0 +- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@0 inputs: versionSpec: "1.3.2" From 307863bbc5de84785f53f978cf54d670ab09d4ad Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 12:41:40 +0100 Subject: [PATCH 035/658] argh --- .vsts-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 4079861d626..499ae972cfb 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -18,7 +18,7 @@ steps: inputs: versionSpec: "8.9.1" -- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@0 +- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 inputs: versionSpec: "1.3.2" From 3e06489748d347d42234ec56f8f698aafd43f091 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 14:32:09 +0100 Subject: [PATCH 036/658] move build definition file --- .vsts-ci.yml => build/tfs/win32/build.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .vsts-ci.yml => build/tfs/win32/build.yml (100%) diff --git a/.vsts-ci.yml b/build/tfs/win32/build.yml similarity index 100% rename from .vsts-ci.yml rename to build/tfs/win32/build.yml From 47d632fe745bc5448d0b4cfdaef694db02d002c7 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 14:35:43 +0100 Subject: [PATCH 037/658] linux yaml build --- build/tfs/linux/build.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 build/tfs/linux/build.yml diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml new file mode 100644 index 00000000000..499ae972cfb --- /dev/null +++ b/build/tfs/linux/build.yml @@ -0,0 +1,36 @@ +variables: + ELECTRON_RUN_AS_NODE: 1 + VSCODE_BUILD_VERBOSE: true + APPVEYOR: true + System.Debug: true + +steps: + +- powershell: | + Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } + +- script: | + git config --global core.autocrlf false + git config --global core.safescrlf true + git checkout -f master + +- task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + +- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + +- powershell: | + yarn + .\node_modules\.bin\gulp electron + .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit + npm run compile + name: build + +- powershell: | + node --version + .\scripts\test.bat + .\scripts\test-integration.bat + name: test From 519e44c2ba2d969a12b7c78c191da21f4d8a7a8d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 15:02:33 +0100 Subject: [PATCH 038/658] linux: install libxkbfile-dev --- build/tfs/linux/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 499ae972cfb..c87e89e5298 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -6,6 +6,9 @@ variables: steps: +- script: | + apt install libxkbfile-dev + - powershell: | Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } From 7730a66861fc6d78badc62ef4cedd88b68cb07c9 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 15:03:59 +0100 Subject: [PATCH 039/658] linux build --- build/tfs/linux/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index c87e89e5298..78f93c10162 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -7,7 +7,8 @@ variables: steps: - script: | - apt install libxkbfile-dev + apt update + apt install -y libxkbfile-dev - powershell: | Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } From a877a306659f4abc4e2407b55420e0381b961fd4 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 15:08:04 +0100 Subject: [PATCH 040/658] linux build --- build/tfs/linux/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 78f93c10162..282d2c13b84 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -7,8 +7,8 @@ variables: steps: - script: | - apt update - apt install -y libxkbfile-dev + apt-get update + apt-get install -y libxkbfile-dev pkg-config - powershell: | Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } From 32fba19175a087685fe96e9f85bec1f7a4175e7b Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 15:12:05 +0100 Subject: [PATCH 041/658] linux build --- build/tfs/linux/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 282d2c13b84..643dc187696 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -8,7 +8,7 @@ steps: - script: | apt-get update - apt-get install -y libxkbfile-dev pkg-config + apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev - powershell: | Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } From 19cb90af57599f1238f6877dd4b9a561de0f279d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 15:20:24 +0100 Subject: [PATCH 042/658] linux build --- build/tfs/linux/build.yml | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 643dc187696..67ebea86711 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -6,18 +6,6 @@ variables: steps: -- script: | - apt-get update - apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev - -- powershell: | - Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } - -- script: | - git config --global core.autocrlf false - git config --global core.safescrlf true - git checkout -f master - - task: NodeTool@0 inputs: versionSpec: "8.9.1" @@ -26,15 +14,21 @@ steps: inputs: versionSpec: "1.3.2" -- powershell: | +- script: | + apt-get update + apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev + git config --global core.autocrlf false + git config --global core.safescrlf true + git checkout -f master yarn - .\node_modules\.bin\gulp electron - .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit - npm run compile + npm run gulp -- electron-x64 + +- script: | + npm run gulp -- hygiene + ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit + npm run gulp -- vscode-linux-x64-min name: build -- powershell: | - node --version - .\scripts\test.bat - .\scripts\test-integration.bat +- script: | + ./scripts/test.sh --build --reporter dot name: test From ef0081a20aeb55e903e352b5d59e85cb41aa32d5 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 15:21:23 +0100 Subject: [PATCH 043/658] linux buidl --- build/tfs/linux/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 67ebea86711..3aabf1d53aa 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -17,8 +17,9 @@ steps: - script: | apt-get update apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev - git config --global core.autocrlf false - git config --global core.safescrlf true + name: "Install Dependencies" + +- script: | git checkout -f master yarn npm run gulp -- electron-x64 From 0e9abef3fa2c167b59e341b2eb679b5d9b8ba395 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 15:21:58 +0100 Subject: [PATCH 044/658] linux build --- build/tfs/linux/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 3aabf1d53aa..e29328fa8e1 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -17,7 +17,6 @@ steps: - script: | apt-get update apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev - name: "Install Dependencies" - script: | git checkout -f master From c2522d1a8b89a7a7329cab993d27fb85dc36aa8b Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 15:37:50 +0100 Subject: [PATCH 045/658] linux build --- build/tfs/linux/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index e29328fa8e1..5a1e275cdad 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -16,7 +16,7 @@ steps: - script: | apt-get update - apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev + apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 - script: | git checkout -f master From 64fef64832dd1b022bf1ed884ab988637db2b8c9 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 16:47:32 +0100 Subject: [PATCH 046/658] linux build --- build/tfs/linux/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 5a1e275cdad..d6081a65276 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -16,7 +16,7 @@ steps: - script: | apt-get update - apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 + apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 - script: | git checkout -f master From a0e08ec3da0ec536150b069d95436249d6c2eb28 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 17:12:56 +0100 Subject: [PATCH 047/658] linux build --- build/tfs/linux/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index d6081a65276..b0d28a0cb4c 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -1,7 +1,5 @@ variables: - ELECTRON_RUN_AS_NODE: 1 VSCODE_BUILD_VERBOSE: true - APPVEYOR: true System.Debug: true steps: From 7180828f4d5ea83f88e35c535b86f4704101a255 Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Sat, 10 Feb 2018 22:33:42 +0530 Subject: [PATCH 048/658] Allow to filter keyBindings by 'Source'. Usage -> 'source: user' or 'source: default' Closes: #43037 --- .../parts/preferences/common/keybindingsEditorModel.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts b/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts index 96e73a1e653..2064cd6364e 100644 --- a/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts +++ b/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts @@ -243,11 +243,18 @@ class KeybindingItemMatches { this.commandIdMatches = this.matches(searchValue, keybindingItem.command, or(matchesWords, matchesCamelCase), words); this.commandLabelMatches = keybindingItem.commandLabel ? this.matches(searchValue, keybindingItem.commandLabel, (word, wordToMatchAgainst) => matchesWords(word, keybindingItem.commandLabel, true), words) : null; this.commandDefaultLabelMatches = keybindingItem.commandDefaultLabel ? this.matches(searchValue, keybindingItem.commandDefaultLabel, (word, wordToMatchAgainst) => matchesWords(word, keybindingItem.commandDefaultLabel, true), words) : null; - this.sourceMatches = this.matches(searchValue, keybindingItem.source, (word, wordToMatchAgainst) => matchesWords(word, keybindingItem.source, true), words); + this.sourceMatches = this.matches(this.checkForSourceFilter(searchValue), keybindingItem.source, (word, wordToMatchAgainst) => matchesWords(word, keybindingItem.source, true), words); this.whenMatches = keybindingItem.when ? this.matches(searchValue, keybindingItem.when, or(matchesWords, matchesCamelCase), words) : null; this.keybindingMatches = keybindingItem.keybinding ? this.matchesKeybinding(keybindingItem.keybinding, searchValue, keybindingWords) : null; } + private checkForSourceFilter(searchValue: string) { + const words = searchValue.split(':'); + return (words[0].trim().toLowerCase() === 'source') ? + words[1].trim() : + searchValue; + } + private matches(searchValue: string, wordToMatchAgainst: string, wordMatchesFilter: IFilter, words: string[]): IMatch[] { let matches = wordFilter(searchValue, wordToMatchAgainst); if (!matches) { From b31e4ab848ff9aa691697e7fff516b44dd1eadf6 Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Sat, 10 Feb 2018 22:49:34 +0530 Subject: [PATCH 049/658] Extends test for source: filter --- .../test/common/keybindingsEditorModel.test.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts b/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts index c709ffe0827..b452fe7a100 100644 --- a/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts +++ b/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts @@ -258,6 +258,19 @@ suite('Keybindings Editor Model test', () => { }); }); + test('filter by source: filter', () => { + const command = 'a' + uuid.generateUuid(); + const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'context1 && context2', isDefault: false }); + prepareKeybindingService(expected); + + return testObject.resolve({}).then(() => { + let actual = testObject.fetch('source: user').filter(element => element.keybindingItem.command === command)[0]; + assert.ok(actual); + actual = testObject.fetch('source: default').filter(element => element.keybindingItem.command === command)[0]; + assert.ok(actual); + }); + }); + test('filter by when context', () => { const command = 'a' + uuid.generateUuid(); const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'whenContext1 && whenContext2', isDefault: false }); From 9ce1561b3b9e0c982028b2fecb3a2274e32bba84 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 17:46:19 +0100 Subject: [PATCH 050/658] linux build --- build/tfs/linux/build.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index b0d28a0cb4c..77129976f35 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -14,7 +14,13 @@ steps: - script: | apt-get update - apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 + apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 xvfb + cp build/tfs/linux/x64/xvfb.init /etc/init.d/xvfb + chmod +x /etc/init.d/xvfb + update-rc.d xvfb defaults + ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon + service xvfb start + service dbus start - script: | git checkout -f master @@ -28,5 +34,5 @@ steps: name: build - script: | - ./scripts/test.sh --build --reporter dot + DISPLAY=:10 ./scripts/test.sh --build --reporter dot name: test From 94ee7cb1e7bb22edc3fe261115daaccbf70a3919 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 2 Mar 2018 17:49:37 +0100 Subject: [PATCH 051/658] linux build --- build/tfs/linux/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 77129976f35..684abd29d2b 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -14,7 +14,7 @@ steps: - script: | apt-get update - apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 xvfb + apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 dbus xvfb cp build/tfs/linux/x64/xvfb.init /etc/init.d/xvfb chmod +x /etc/init.d/xvfb update-rc.d xvfb defaults From 9c06e7b1fffd7980717d2020e53a3e01c8fa2e76 Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Fri, 2 Mar 2018 23:39:26 +0530 Subject: [PATCH 052/658] Adds context menu actions for source filters - 1. Adds action constants in preferences.ts 2. Adds showUser and showDefault keybindings actions 3. Adds getSecondaryActions to register context menu actions --- .../preferences/browser/keybindingsEditor.ts | 55 +++++++++++++++---- .../parts/preferences/common/preferences.ts | 2 + 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts index 585dd29da3e..6f841981074 100644 --- a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts @@ -27,7 +27,8 @@ import { SearchWidget } from 'vs/workbench/parts/preferences/browser/preferences import { DefineKeybindingWidget } from 'vs/workbench/parts/preferences/browser/keybindingWidgets'; import { IPreferencesService, IKeybindingsEditor, CONTEXT_KEYBINDING_FOCUS, CONTEXT_KEYBINDINGS_EDITOR, CONTEXT_KEYBINDINGS_SEARCH_FOCUS, KEYBINDINGS_EDITOR_COMMAND_REMOVE, KEYBINDINGS_EDITOR_COMMAND_COPY, - KEYBINDINGS_EDITOR_COMMAND_RESET, KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND, KEYBINDINGS_EDITOR_COMMAND_DEFINE, KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR + KEYBINDINGS_EDITOR_COMMAND_RESET, KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND, KEYBINDINGS_EDITOR_COMMAND_DEFINE, KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR, KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS, + KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS } from 'vs/workbench/parts/preferences/common/preferences'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IKeybindingEditingService } from 'vs/workbench/services/keybinding/common/keybindingEditing'; @@ -50,7 +51,7 @@ export class KeybindingsEditorInput extends EditorInput { public static readonly ID: string = 'workbench.input.keybindings'; public readonly keybindingsModel: KeybindingsEditorModel; - constructor( @IInstantiationService instantiationService: IInstantiationService) { + constructor(@IInstantiationService instantiationService: IInstantiationService) { super(); this.keybindingsModel = instantiationService.createInstance(KeybindingsEditorModel, OS); } @@ -97,6 +98,7 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor private keybindingFocusContextKey: IContextKey; private searchFocusContextKey: IContextKey; private sortByPrecedence: Checkbox; + private secondaryActions: IAction[]; constructor( @ITelemetryService telemetryService: ITelemetryService, @@ -176,6 +178,39 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor return focusedElement && focusedElement.templateId === KEYBINDING_ENTRY_TEMPLATE_ID ? focusedElement : null; } + setKeybindingSource(searchString: string): TPromise { + this.searchWidget.setValue(searchString); + return TPromise.as(null); + } + + showDefaultKeyBindings(): IAction { + return { + label: localize('showDefaultKeybindings', "Show Default Keybindings"), + enabled: true, + id: KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS, + run: () => this.setKeybindingSource('source: default') + }; + } + + showUserKeyBindings(): IAction { + return { + label: localize('showUserKeybindings', "Show User Keybindings"), + enabled: true, + id: KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS, + run: () => this.setKeybindingSource('source: user') + }; + } + + getSecondaryActions(): IAction[] { + if (!this.secondaryActions) { + this.secondaryActions = [ + this.showDefaultKeyBindings(), + this.showUserKeyBindings(), + ]; + } + return this.secondaryActions; + } + defineKeybinding(keybindingEntry: IKeybindingItemEntry): TPromise { this.selectEntry(keybindingEntry); this.showOverlayContainer(); @@ -210,10 +245,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor this.reportKeybindingAction(KEYBINDINGS_EDITOR_COMMAND_REMOVE, keybindingEntry.keybindingItem.command, keybindingEntry.keybindingItem.keybinding); return this.keybindingEditingService.removeKeybinding(keybindingEntry.keybindingItem.keybindingItem) .then(() => this.focus(), - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } return TPromise.as(null); } @@ -228,10 +263,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor } this.selectEntry(keybindingEntry); }, - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } copyKeybinding(keybinding: IKeybindingItemEntry): TPromise { diff --git a/src/vs/workbench/parts/preferences/common/preferences.ts b/src/vs/workbench/parts/preferences/common/preferences.ts index ece19a824cb..2507170b87f 100644 --- a/src/vs/workbench/parts/preferences/common/preferences.ts +++ b/src/vs/workbench/parts/preferences/common/preferences.ts @@ -230,6 +230,8 @@ export const KEYBINDINGS_EDITOR_COMMAND_COPY = 'keybindings.editor.copyKeybindin export const KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND = 'keybindings.editor.copyCommandKeybindingEntry'; export const KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR = 'keybindings.editor.showConflicts'; export const KEYBINDINGS_EDITOR_COMMAND_FOCUS_KEYBINDINGS = 'keybindings.editor.focusKeybindings'; +export const KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS = 'keybindings.editor.showDefaultKeybindings'; +export const KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS = 'keybindings.editor.showUserKeybindings'; export const FOLDER_SETTINGS_PATH = join('.vscode', 'settings.json'); export const DEFAULT_SETTINGS_EDITOR_SETTING = 'workbench.settings.openDefaultSettings'; From 8c93f835d9255c6885cf592186a589503ea1dd3f Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Fri, 2 Mar 2018 23:42:13 +0530 Subject: [PATCH 053/658] removing un-related changes --- .../preferences/browser/keybindingsEditor.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts index 6f841981074..c4a4b1c5527 100644 --- a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts @@ -51,7 +51,7 @@ export class KeybindingsEditorInput extends EditorInput { public static readonly ID: string = 'workbench.input.keybindings'; public readonly keybindingsModel: KeybindingsEditorModel; - constructor(@IInstantiationService instantiationService: IInstantiationService) { + constructor( @IInstantiationService instantiationService: IInstantiationService) { super(); this.keybindingsModel = instantiationService.createInstance(KeybindingsEditorModel, OS); } @@ -245,10 +245,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor this.reportKeybindingAction(KEYBINDINGS_EDITOR_COMMAND_REMOVE, keybindingEntry.keybindingItem.command, keybindingEntry.keybindingItem.keybinding); return this.keybindingEditingService.removeKeybinding(keybindingEntry.keybindingItem.keybindingItem) .then(() => this.focus(), - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } return TPromise.as(null); } @@ -263,10 +263,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor } this.selectEntry(keybindingEntry); }, - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } copyKeybinding(keybinding: IKeybindingItemEntry): TPromise { From 09f2c6bfbca5665280c2ddbbdabc87a04374898d Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Fri, 2 Mar 2018 23:47:42 +0530 Subject: [PATCH 054/658] adding guards for split search query --- .../parts/preferences/common/keybindingsEditorModel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts b/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts index 2064cd6364e..8b623b22ff1 100644 --- a/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts +++ b/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts @@ -250,7 +250,7 @@ class KeybindingItemMatches { private checkForSourceFilter(searchValue: string) { const words = searchValue.split(':'); - return (words[0].trim().toLowerCase() === 'source') ? + return (words.length) && (words[0].trim().toLowerCase() === 'source') ? words[1].trim() : searchValue; } From 181a0b6789f233e4a533a4eea438410f0a79470c Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Sat, 3 Mar 2018 00:29:00 +0530 Subject: [PATCH 055/658] fixes tests --- .../test/common/keybindingsEditorModel.test.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts b/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts index b452fe7a100..7347a7b370e 100644 --- a/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts +++ b/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts @@ -258,15 +258,24 @@ suite('Keybindings Editor Model test', () => { }); }); - test('filter by source: filter', () => { + test('filter by default source with "source: " prefix', () => { + const command = 'a' + uuid.generateUuid(); + const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'context1 && context2', isDefault: true }); + prepareKeybindingService(expected); + + return testObject.resolve({}).then(() => { + const actual = testObject.fetch('source: default').filter(element => element.keybindingItem.command === command)[0]; + assert.ok(actual); + }); + }); + + test('filter by user source with "source: " prefix', () => { const command = 'a' + uuid.generateUuid(); const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'context1 && context2', isDefault: false }); prepareKeybindingService(expected); return testObject.resolve({}).then(() => { - let actual = testObject.fetch('source: user').filter(element => element.keybindingItem.command === command)[0]; - assert.ok(actual); - actual = testObject.fetch('source: default').filter(element => element.keybindingItem.command === command)[0]; + const actual = testObject.fetch('source: user').filter(element => element.keybindingItem.command === command)[0]; assert.ok(actual); }); }); From fa15c3654457c068f359fc4f78d5846bef3e9a11 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 5 Mar 2018 11:18:49 +0100 Subject: [PATCH 056/658] darwin: build --- build/tfs/darwin/build.yml | 28 ++++++++++++++++++++++++++++ build/tfs/linux/build.yml | 1 - 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 build/tfs/darwin/build.yml diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml new file mode 100644 index 00000000000..5039b20d9ce --- /dev/null +++ b/build/tfs/darwin/build.yml @@ -0,0 +1,28 @@ +variables: + VSCODE_BUILD_VERBOSE: true + System.Debug: true + +steps: + +- task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + +- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + +- script: | + yarn + npm run gulp -- electron-x64 + +- script: | + npm run gulp -- hygiene + ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit + npm run gulp -- vscode-darwin-min + name: build + +- script: | + ./scripts/test.sh --build --reporter dot + ./scripts/test-integration.sh + name: test diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 684abd29d2b..4319d54068c 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -23,7 +23,6 @@ steps: service dbus start - script: | - git checkout -f master yarn npm run gulp -- electron-x64 From dfd12f750c8d88777de8a4d3630d5f51d63aca30 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 5 Mar 2018 12:38:25 +0100 Subject: [PATCH 057/658] remove line endings check by hygiene --- build/gulpfile.hygiene.js | 133 +++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 72 deletions(-) diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js index 4549611ecbd..291a89bc599 100644 --- a/build/gulpfile.hygiene.js +++ b/build/gulpfile.hygiene.js @@ -33,56 +33,55 @@ const all = [ 'extensions/**/*', 'scripts/**/*', 'src/**/*', - 'test/**/*' -]; - -const eolFilter = [ - '**', - '!ThirdPartyNotices.txt', - '!LICENSE.txt', - '!extensions/**/out/**', - '!test/smoke/out/**', - '!**/node_modules/**', - '!**/fixtures/**', - '!**/*.{svg,exe,png,bmp,scpt,bat,cmd,cur,ttf,woff,eot}', - '!build/{lib,tslintRules}/**/*.js', - '!build/monaco/**', - '!build/win32/**', - '!build/**/*.sh', - '!build/tfs/**/*.js', - '!**/Dockerfile' + 'test/**/*', + '!**/node_modules/**' ]; const indentationFilter = [ '**', + + // except specific files '!ThirdPartyNotices.txt', - '!**/*.md', - '!**/*.ps1', - '!**/*.template', - '!**/*.yaml', - '!**/*.yml', - '!**/yarn.lock', - '!**/lib/**', - '!extensions/**/*.d.ts', - '!src/typings/**/*.d.ts', - '!src/vs/*/**/*.d.ts', - '!**/*.d.ts.recipe', + '!LICENSE.txt', + '!src/vs/nls.js', + '!src/vs/css.js', + '!src/vs/loader.js', + '!src/vs/base/common/marked/raw.marked.js', + '!src/vs/base/common/winjs.base.raw.js', + '!src/vs/base/node/terminateProcess.sh', + '!src/vs/base/node/ps-win.ps1', '!test/assert.js', + + // except specific folders + '!test/smoke/out/**', + '!extensions/vscode-api-tests/testWorkspace/**', + '!extensions/vscode-api-tests/testWorkspace2/**', + '!build/monaco/**', + '!build/win32/**', + + // except multiple specific files '!**/package.json', + '!**/yarn.lock', + + // except multiple specific folders '!**/octicons/**', - '!**/vs/base/common/marked/raw.marked.js', - '!**/vs/base/common/winjs.base.raw.js', - '!**/vs/base/node/terminateProcess.sh', - '!**/vs/base/node/ps-win.ps1', - '!**/vs/nls.js', - '!**/vs/css.js', - '!**/vs/loader.js', + '!**/fixtures/**', + '!**/lib/**', + '!extensions/**/out/**', '!extensions/**/snippets/**', '!extensions/**/syntaxes/**', '!extensions/**/themes/**', '!extensions/**/colorize-fixtures/**', - '!extensions/vscode-api-tests/testWorkspace/**', - '!extensions/vscode-api-tests/testWorkspace2/**' + + // except specific file types + '!src/vs/*/**/*.d.ts', + '!src/typings/**/*.d.ts', + '!extensions/**/*.d.ts', + '!**/*.{svg,exe,png,bmp,scpt,bat,cmd,cur,ttf,woff,eot,md,ps1,template,yaml,yml,d.ts.recipe}', + '!build/{lib,tslintRules}/**/*.js', + '!build/**/*.sh', + '!build/tfs/**/*.js', + '!**/Dockerfile' ]; const copyrightFilter = [ @@ -135,12 +134,12 @@ const tslintFilter = [ '!extensions/html/server/lib/jquery.d.ts' ]; -const copyrightHeader = [ +const copyrightHeaderLines = [ '/*---------------------------------------------------------------------------------------------', ' * Copyright (c) Microsoft Corporation. All rights reserved.', ' * Licensed under the MIT License. See License.txt in the project root for license information.', ' *--------------------------------------------------------------------------------------------*/' -].join('\n'); +]; gulp.task('eslint', () => { return vfs.src(all, { base: '.', follow: true, allowEmpty: true }) @@ -159,23 +158,14 @@ gulp.task('tslint', () => { .pipe(gulptslint.default.report(options)); }); -function hygiene(some, options) { - options = options || {}; +function hygiene(some) { let errorCount = 0; - const eol = es.through(function (file) { - if (/\r\n?/g.test(file.contents.toString('utf8'))) { - console.error(file.relative + ': Bad EOL found'); - errorCount++; - } - - this.emit('data', file); - }); - const indentation = es.through(function (file) { - file.contents - .toString('utf8') - .split(/\r\n|\r|\n/) + const lines = file.contents.toString('utf8').split(/\r\n|\r|\n/); + file.__lines = lines; + + lines .forEach((line, i) => { if (/^\s*$/.test(line)) { // empty or whitespace lines are OK @@ -193,9 +183,14 @@ function hygiene(some, options) { }); const copyrights = es.through(function (file) { - if (file.contents.toString('utf8').indexOf(copyrightHeader) !== 0) { - console.error(file.relative + ': Missing or bad copyright statement'); - errorCount++; + const lines = file.__lines; + + for (let i = 0; i < copyrightHeaderLines.length; i++) { + if (lines[i] !== copyrightHeaderLines[i]) { + console.error(file.relative + ': Missing or bad copyright statement'); + errorCount++; + break; + } } this.emit('data', file); @@ -243,8 +238,6 @@ function hygiene(some, options) { const result = input .pipe(filter(f => !f.stat.isDirectory())) - .pipe(filter(eolFilter)) - .pipe(options.skipEOL ? es.through() : eol) .pipe(filter(indentationFilter)) .pipe(indentation) .pipe(filter(copyrightFilter)) @@ -337,17 +330,13 @@ if (require.main === module) { process.exit(1); }); - cp.exec('git config core.autocrlf', (err, out) => { - const skipEOL = out.trim() === 'true'; - - if (process.argv.length > 2) { - return hygiene(process.argv.slice(2), { skipEOL: skipEOL }).on('error', err => { - console.error(); - console.error(err); - process.exit(1); - }); - } - + if (process.argv.length > 2) { + hygiene(process.argv.slice(2)).on('error', err => { + console.error(); + console.error(err); + process.exit(1); + }); + } else { cp.exec('git diff --cached --name-only', { maxBuffer: 2000 * 1024 }, (err, out) => { if (err) { console.error(); @@ -364,7 +353,7 @@ if (require.main === module) { console.log('Reading git index versions...'); createGitIndexVinyls(some) - .then(vinyls => new Promise((c, e) => hygiene(es.readArray(vinyls), { skipEOL: skipEOL }) + .then(vinyls => new Promise((c, e) => hygiene(es.readArray(vinyls)) .on('end', () => c()) .on('error', e))) .catch(err => { @@ -374,5 +363,5 @@ if (require.main === module) { }); } }); - }); + } } From a3622c8f5e76e4c7f8f8352f2591ad8aa5def120 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 5 Mar 2018 12:42:06 +0100 Subject: [PATCH 058/658] bad casing --- .../theme-seti/{thirdpartynotices.txt => ThirdPartyNotices.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename extensions/theme-seti/{thirdpartynotices.txt => ThirdPartyNotices.txt} (100%) diff --git a/extensions/theme-seti/thirdpartynotices.txt b/extensions/theme-seti/ThirdPartyNotices.txt similarity index 100% rename from extensions/theme-seti/thirdpartynotices.txt rename to extensions/theme-seti/ThirdPartyNotices.txt From 2cfaec6fe122740d036f94061752e74f453e5807 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 5 Mar 2018 12:42:22 +0100 Subject: [PATCH 059/658] use git attributes --- .gitattributes | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000000..0a56ba75f93 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +* text=auto + +LICENSE.txt eol=crlf +ThirdPartyNotices.txt eol=crlf + +*.bat eol=crlf +*.cmd eol=crlf +*.ps1 eol=lf +*.sh eol=lf \ No newline at end of file From 12ab70d329a13dd5b18d892cd40edd7138259bc3 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 5 Mar 2018 12:47:11 +0100 Subject: [PATCH 060/658] fix line endings --- .gitignore | 30 +- .vscode/settings.json | 84 +- LICENSE.txt | 46 +- ThirdPartyNotices.txt | 3778 +-- build/monaco/ThirdPartyNotices.txt | 170 +- build/win32/code.iss | 2186 +- build/win32/i18n/Default.isl | 674 +- build/win32/i18n/Default.ko.isl | 594 +- build/win32/i18n/Default.zh-cn.isl | 594 +- build/win32/i18n/Default.zh-tw.isl | 594 +- build/win32/i18n/messages.de.isl | 14 +- build/win32/i18n/messages.en.isl | 14 +- build/win32/i18n/messages.es.isl | 14 +- build/win32/i18n/messages.fr.isl | 14 +- build/win32/i18n/messages.hu.isl | 14 +- build/win32/i18n/messages.it.isl | 14 +- build/win32/i18n/messages.ja.isl | 14 +- build/win32/i18n/messages.ko.isl | 14 +- build/win32/i18n/messages.pt-br.isl | 14 +- build/win32/i18n/messages.ru.isl | 14 +- build/win32/i18n/messages.tr.isl | 14 +- build/win32/i18n/messages.zh-cn.isl | 14 +- build/win32/i18n/messages.zh-tw.isl | 14 +- extensions/css/server/.vscode/launch.json | 64 +- extensions/html/server/.vscode/launch.json | 64 +- extensions/json/server/.vscode/launch.json | 62 +- extensions/markdown/media/ViewSource.svg | 4 +- .../fileicons/images/RootFolderOpen_16x.svg | 2 +- .../images/RootFolderOpen_16x_inverse.svg | 2 +- .../fileicons/images/RootFolder_16x.svg | 2 +- .../images/RootFolder_16x_inverse.svg | 2 +- extensions/vscode-api-tests/.vscodeignore | 12 +- extensions/yaml/.gitignore | 2 +- resources/win32/bin/code.cmd | 10 +- scripts/code.bat | 102 +- scripts/npm.bat | 4 +- .../node/extfs/fixtures/examples/company.jxs | 46 +- .../node/extfs/fixtures/examples/conway.jxs | 234 +- .../node/extfs/fixtures/examples/employee.jxs | 76 +- .../node/extfs/fixtures/examples/small.jxs | 48 +- .../base/test/node/extfs/fixtures/index.html | 242 +- .../test/node/mime/fixtures/some.cp1252.txt | 44 +- .../test/node/mime/fixtures/some.css.qwoff | 70 +- .../test/node/mime/fixtures/some.json.png | 20 +- .../base/test/node/mime/fixtures/some.xml.png | 4 +- .../images/cancelSelectionFind-inverse.svg | 14 +- .../contrib/find/images/next-inverse.svg | 10 +- src/vs/editor/contrib/find/images/next.svg | 10 +- .../contrib/find/images/previous-inverse.svg | 10 +- .../editor/contrib/find/images/previous.svg | 10 +- .../find/images/replace-all-inverse.svg | 22 +- .../contrib/find/images/replace-all.svg | 22 +- .../contrib/find/images/replace-inverse.svg | 26 +- src/vs/editor/contrib/find/images/replace.svg | 26 +- .../parts/editor/media/stackview-inverse.svg | 40 +- .../browser/parts/editor/media/stackview.svg | 40 +- .../notifications/media/error-inverse.svg | 52 +- .../parts/notifications/media/error.svg | 50 +- .../notifications/media/info-inverse.svg | 34 +- .../parts/notifications/media/info.svg | 34 +- .../notifications/media/warning-inverse.svg | 30 +- .../parts/notifications/media/warning.svg | 30 +- .../parts/debug/browser/media/continue.svg | 4 +- .../extensions/browser/media/EmptyStar.svg | 184 +- .../browser/media/FullStarLight.svg | 184 +- .../browser/media/HalfStarLight.svg | 182 +- .../media/extensions-dark.svg | 12 +- .../media/AddFile_inverse.svg | 4 +- .../media/AddFolder_inverse.svg | 4 +- .../browser/media/replace-all-inverse.svg | 22 +- .../search/browser/media/replace-all.svg | 22 +- .../search/browser/media/replace-inverse.svg | 26 +- .../parts/search/browser/media/replace.svg | 26 +- .../fixtures/resolver/examples/company.js | 46 +- .../node/fixtures/resolver/examples/conway.js | 234 +- .../fixtures/resolver/examples/employee.js | 76 +- .../node/fixtures/resolver/examples/small.js | 48 +- .../test/node/fixtures/resolver/index.html | 242 +- .../fixtures/resolver/other/deep/company.js | 46 +- .../fixtures/resolver/other/deep/conway.js | 234 +- .../fixtures/resolver/other/deep/employee.js | 76 +- .../fixtures/resolver/other/deep/small.js | 48 +- .../node/fixtures/service/deep/company.js | 46 +- .../test/node/fixtures/service/deep/conway.js | 234 +- .../node/fixtures/service/deep/employee.js | 76 +- .../test/node/fixtures/service/deep/small.js | 48 +- .../test/node/fixtures/service/index.html | 242 +- .../fixtures/examples/NullPoinderException.js | 236 +- .../test/node/fixtures/examples/company.js | 46 +- .../test/node/fixtures/examples/employee.js | 22380 ++++++++-------- .../test/node/fixtures/examples/small.js | 48 +- .../search/test/node/fixtures/index.html | 242 +- .../search/test/node/fixtures/site.css | 70 +- 93 files changed, 17948 insertions(+), 17948 deletions(-) diff --git a/.gitignore b/.gitignore index 7412c251294..3506c9929f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,16 @@ -.DS_Store -npm-debug.log -Thumbs.db -node_modules/ -.build/ -out/ -out-build/ -out-editor/ -out-editor-min/ -out-monaco-editor-core/ -out-vscode/ -out-vscode-min/ -build/node_modules -coverage/ -test_data/ +.DS_Store +npm-debug.log +Thumbs.db +node_modules/ +.build/ +out/ +out-build/ +out-editor/ +out-editor-min/ +out-monaco-editor-core/ +out-vscode/ +out-vscode-min/ +build/node_modules +coverage/ +test_data/ yarn-error.log \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index d3e36aa8ebf..67174474c19 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,42 +1,42 @@ -{ - "editor.insertSpaces": false, - "files.eol": "\n", - "files.trimTrailingWhitespace": true, - "files.exclude": { - ".git": true, - ".build": true, - "**/.DS_Store": true, - "build/**/*.js": { - "when": "$(basename).ts" - } - }, - "files.associations": { - "OSSREADME.json": "jsonc" - }, - "search.exclude": { - "**/node_modules": true, - "**/bower_components": true, - ".build/**": true, - "out/**": true, - "out-build/**": true, - "out-vscode/**": true, - "i18n/**": true, - "extensions/**/out/**": true, - "test/smoke/out/**": true - }, - "tslint.enable": true, - "lcov.path": [ - "./.build/coverage/lcov.info", - "./.build/coverage-single/lcov.info" - ], - "lcov.watch": [ - { - "pattern": "**/*.test.js", - "command": "${workspaceFolder}/scripts/test.sh --coverage --run ${file}", - "windows": { - "command": "${workspaceFolder}\\scripts\\test.bat --coverage --run ${file}" - } - } - ], - "typescript.tsdk": "node_modules/typescript/lib" -} +{ + "editor.insertSpaces": false, + "files.eol": "\n", + "files.trimTrailingWhitespace": true, + "files.exclude": { + ".git": true, + ".build": true, + "**/.DS_Store": true, + "build/**/*.js": { + "when": "$(basename).ts" + } + }, + "files.associations": { + "OSSREADME.json": "jsonc" + }, + "search.exclude": { + "**/node_modules": true, + "**/bower_components": true, + ".build/**": true, + "out/**": true, + "out-build/**": true, + "out-vscode/**": true, + "i18n/**": true, + "extensions/**/out/**": true, + "test/smoke/out/**": true + }, + "tslint.enable": true, + "lcov.path": [ + "./.build/coverage/lcov.info", + "./.build/coverage-single/lcov.info" + ], + "lcov.watch": [ + { + "pattern": "**/*.test.js", + "command": "${workspaceFolder}/scripts/test.sh --coverage --run ${file}", + "windows": { + "command": "${workspaceFolder}\\scripts\\test.bat --coverage --run ${file}" + } + } + ], + "typescript.tsdk": "node_modules/typescript/lib" +} diff --git a/LICENSE.txt b/LICENSE.txt index 9afc63d4a1d..69be21bd8ed 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,23 +1,23 @@ -MIT License - -Copyright (c) 2015 - present Microsoft Corporation - -All rights reserved. - -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. +MIT License + +Copyright (c) 2015 - present Microsoft Corporation + +All rights reserved. + +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. diff --git a/ThirdPartyNotices.txt b/ThirdPartyNotices.txt index b04682c2e3e..b0e4112b770 100644 --- a/ThirdPartyNotices.txt +++ b/ThirdPartyNotices.txt @@ -1,1890 +1,1890 @@ -microsoft-vscode - -THIRD-PARTY SOFTWARE NOTICES AND INFORMATION -Do Not Translate or Localize - -This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise. - -1. atom/language-c (https://github.com/atom/language-c) -2. atom/language-clojure (https://github.com/atom/language-clojure) -3. atom/language-coffee-script (https://github.com/atom/language-coffee-script) -4. atom/language-css (https://github.com/atom/language-css) -5. atom/language-java (https://github.com/atom/language-java) -6. atom/language-objective-c (https://github.com/atom/language-objective-c) -7. atom/language-sass version 0.52.0 (https://github.com/atom/language-sass) -8. atom/language-shellscript (https://github.com/atom/language-shellscript) -9. atom/language-xml (https://github.com/atom/language-xml) -10. Benvie/JavaScriptNext.tmLanguage (https://github.com/Microsoft/vscode-JSON.tmLanguage) -11. chjj-marked version 0.3.12 (https://github.com/npmcomponent/chjj-marked) -12. chriskempson/tomorrow-theme (https://github.com/chriskempson/tomorrow-theme) -13. Colorsublime-Themes version 0.1.0 (https://github.com/Colorsublime/Colorsublime-Themes) -14. daaain/Handlebars (https://github.com/daaain/Handlebars) -15. davidrios/jade-tmbundle (https://github.com/davidrios/jade-tmbundle) -16. definitelytyped (https://github.com/DefinitelyTyped/DefinitelyTyped) -17. demyte/language-cshtml (https://github.com/demyte/language-cshtml) -18. dotnet/csharp-tmLanguage version 0.1.0 (https://github.com/dotnet/csharp-tmLanguage) -19. expand-abbreviation version 0.5.8 (https://github.com/emmetio/expand-abbreviation) -20. fadeevab/make.tmbundle (https://github.com/fadeevab/make.tmbundle) -21. freebroccolo/atom-language-swift (https://github.com/freebroccolo/atom-language-swift) -22. HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/) -23. Ikuyadeu/vscode-R (https://github.com/Ikuyadeu/vscode-R) -24. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site) -25. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar) -26. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify) -27. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert) -28. language-docker (https://github.com/moby/moby) -29. language-go version 0.39.0 (https://github.com/atom/language-go) -30. language-less (https://github.com/atom/language-less) -31. language-php (https://github.com/atom/language-php) -32. language-rust version 0.4.9 (https://github.com/zargony/atom-language-rust) -33. MagicStack/MagicPython (https://github.com/MagicStack/MagicPython) -34. Microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/Microsoft/TypeScript-TmLanguage) -35. Microsoft/vscode-mssql (https://github.com/Microsoft/vscode-mssql) -36. mmims/language-batchfile (https://github.com/mmims/language-batchfile) -37. octicons-code version 3.1.0 (https://octicons.github.com) -38. octicons-font version 3.1.0 (https://octicons.github.com) -39. PowerShell/EditorSyntax (https://github.com/powershell/editorsyntax) -40. seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui) -41. shaders-tmLanguage version 0.1.0 (https://github.com/tgjones/shaders-tmLanguage) -42. textmate/asp.vb.net.tmbundle (https://github.com/textmate/asp.vb.net.tmbundle) -43. textmate/c.tmbundle (https://github.com/textmate/c.tmbundle) -44. textmate/diff.tmbundle (https://github.com/textmate/diff.tmbundle) -45. textmate/git.tmbundle (https://github.com/textmate/git.tmbundle) -46. textmate/groovy.tmbundle (https://github.com/textmate/groovy.tmbundle) -47. textmate/html.tmbundle (https://github.com/textmate/html.tmbundle) -48. textmate/ini.tmbundle (https://github.com/textmate/ini.tmbundle) -49. textmate/javascript.tmbundle (https://github.com/textmate/javascript.tmbundle) -50. textmate/lua.tmbundle (https://github.com/textmate/lua.tmbundle) -51. textmate/markdown.tmbundle (https://github.com/textmate/markdown.tmbundle) -52. textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle) -53. textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle) -54. textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle) -55. TypeScript-TmLanguage version 0.1.8 (https://github.com/Microsoft/TypeScript-TmLanguage) -56. vscode-logfile-highlighter version 1.2.0 (https://github.com/emilast/vscode-logfile-highlighter) -57. vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift) - - -%% atom/language-c NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/textmate/c.tmbundle and distributed under the following -license, located in `README.mdown`: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. -========================================= -END OF atom/language-c NOTICES AND INFORMATION - -%% atom/language-clojure NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/mmcgrana/textmate-clojure and distributed under the -following license, located in `LICENSE.md`: - -The MIT License (MIT) - -Copyright (c) 2010- Mark McGranaghan - -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. -========================================= -END OF atom/language-clojure NOTICES AND INFORMATION - -%% atom/language-coffee-script NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/jashkenas/coffee-script-tmbundle and distributed under the -following license, located in `LICENSE`: - -Copyright (c) 2009-2014 Jeremy Ashkenas - -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. -========================================= -END OF atom/language-coffee-script NOTICES AND INFORMATION - -%% atom/language-css NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/textmate/css.tmbundle and distributed under the following -license, located in `README.mdown`: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. -========================================= -END OF atom/language-css NOTICES AND INFORMATION - -%% atom/language-java NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/textmate/java.tmbundle and distributed under the following -license, located in `README.mdown`: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. -========================================= -END OF atom/language-java NOTICES AND INFORMATION - -%% atom/language-objective-c NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/textmate/objective-c.tmbundle and distributed under the following -license, located in `README.mdown`: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. -========================================= -END OF atom/language-objective-c NOTICES AND INFORMATION - -%% atom/language-sass NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/alexsancho/Sass.tmbundle and distributed under the following -license, located in `LICENSE.md`: - -Copyright (c) 2012 Alex Sancho, http://alexsancho.name/ - -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. -========================================= -END OF atom/language-sass NOTICES AND INFORMATION - -%% atom/language-shellscript NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/textmate/shellscript.tmbundle and distributed under the -following license, located in `README.mdown`: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. -========================================= -END OF atom/language-shellscript NOTICES AND INFORMATION - -%% atom/language-xml NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/textmate/xml.tmbundle and distributed under the following -license, located in `README.mdown`: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. -========================================= -END OF atom/language-xml NOTICES AND INFORMATION - -%% Benvie/JavaScriptNext.tmLanguage NOTICES AND INFORMATION BEGIN HERE -========================================= -vscode-JSON.tmLanguage - -Copyright (c) Microsoft Corporation - -All rights reserved. - -MIT License - -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. -========================================= -END OF Benvie/JavaScriptNext.tmLanguage NOTICES AND INFORMATION - -%% chjj-marked NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/) - -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. -========================================= -END OF chjj-marked NOTICES AND INFORMATION - -%% chriskempson/tomorrow-theme NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (C) 2013 Chris Kempson - -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. -========================================= -END OF chriskempson/tomorrow-theme NOTICES AND INFORMATION - -%% Colorsublime-Themes NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) 2015 Colorsublime.com - -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. -========================================= -END OF Colorsublime-Themes NOTICES AND INFORMATION - -%% daaain/Handlebars NOTICES AND INFORMATION BEGIN HERE -========================================= --- Credits - -Adapted from the great sublime-text-handlebars package by Nicholas Westlake. - -Thanks a lot to all the generous contributors (in alphabetical order): @bittersweetryan, @bradcliffe, @calumbrodie, @duncanbeevers, @hlvnst, @jonschlinkert, @Krutius, @samselikoff, @utkarshkukreti, @zeppelin - --- License - -(The MIT License) - -Copyright (c) daaain/Handlebars project authors - -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. -========================================= -END OF daaain/Handlebars NOTICES AND INFORMATION - -%% davidrios/jade-tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 David Rios - -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 -========================================= -END OF davidrios/jade-tmbundle NOTICES AND INFORMATION - -%% definitelytyped NOTICES AND INFORMATION BEGIN HERE -========================================= -This project is licensed under the MIT license. -Copyrights are respective of each contributor listed at the beginning of each definition file. - -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. -========================================= -END OF definitelytyped NOTICES AND INFORMATION - -%% demyte/language-cshtml NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 James Summerton - -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. -========================================= -END OF demyte/language-cshtml NOTICES AND INFORMATION - -%% dotnet/csharp-tmLanguage NOTICES AND INFORMATION BEGIN HERE -========================================= -MIT License - -Copyright (c) 2016 .NET Foundation - -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. -========================================= -END OF dotnet/csharp-tmLanguage NOTICES AND INFORMATION - -%% expand-abbreviation NOTICES AND INFORMATION BEGIN HERE -========================================= -MIT License - -Copyright (c) 2017 Emmet.io - -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. -========================================= -END OF expand-abbreviation NOTICES AND INFORMATION - -%% fadeevab/make.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-make.tmbundle project authors - -If not otherwise specified (see below), files in this repository fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF fadeevab/make.tmbundle NOTICES AND INFORMATION - -%% freebroccolo/atom-language-swift NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 Darin Morrison - -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. -========================================= -END OF freebroccolo/atom-language-swift NOTICES AND INFORMATION - -%% HTML 5.1 W3C Working Draft NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). This software or document includes material copied -from or derived from HTML 5.1 W3C Working Draft (http://www.w3.org/TR/2015/WD-html51-20151008/.) - -THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT -NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF -THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY -PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. - -COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE -DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF. - -The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents -without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders. -========================================= -END OF HTML 5.1 W3C Working Draft NOTICES AND INFORMATION - -%% Ikuyadeu/vscode-R NOTICES AND INFORMATION BEGIN HERE -========================================= -MIT License - -Copyright (c) 2017 Yuki Ueda - -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. -========================================= -END OF Ikuyadeu/vscode-R NOTICES AND INFORMATION - -%% Ionic documentation NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright Drifty Co. http://drifty.com/. - -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS -========================================= -END OF Ionic documentation NOTICES AND INFORMATION - -%% ionide/ionide-fsgrammar NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2015 Krzysztof Cieslak - -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. -========================================= -END OF ionide/ionide-fsgrammar NOTICES AND INFORMATION - -%% js-beautify NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors. - -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. -========================================= -END OF js-beautify NOTICES AND INFORMATION - -%% Jxck/assert NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2011 Jxck - -Originally from node.js (http://nodejs.org) -Copyright Joyent, Inc. - -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. -========================================= -END OF Jxck/assert NOTICES AND INFORMATION - -%% language-docker NOTICES AND INFORMATION BEGIN HERE -========================================= -Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2013-2017 Docker, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -========================================= -END OF language-docker NOTICES AND INFORMATION - -%% language-go NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/rsms/Go.tmbundle and distributed under the following -license, located in `LICENSE`: - -Copyright (c) 2009 Rasmus Andersson - -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. - - -The Go Template grammar was derived from GoSublime located at -https://github.com/DisposaBoy/GoSublime and distributed under the following -license, located in `LICENSE.md`: - -Copyright (c) 2012 The GoSublime Authors - -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. -========================================= -END OF language-go NOTICES AND INFORMATION - -%% language-less NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/textmate/less.tmbundle and distributed under the following -license, located in `LICENSE.md`: - -Copyright (c) 2010 Scott Kyle and Rasmus Andersson - -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. -========================================= -END OF language-less NOTICES AND INFORMATION - -%% language-php NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -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. - - -This package was derived from a TextMate bundle located at -https://github.com/textmate/php.tmbundle and distributed under the following -license, located in `README.mdown`: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. -========================================= -END OF language-php NOTICES AND INFORMATION - -%% language-rust NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright © `2013` `Andreas Neuhaus` `http://zargony.com/` - -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. -========================================= -END OF language-rust NOTICES AND INFORMATION - -%% MagicStack/MagicPython NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License - -Copyright (c) 2015-present MagicStack Inc. http://magic.io - -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. -========================================= -END OF MagicStack/MagicPython NOTICES AND INFORMATION - -%% Microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) Microsoft Corporation -All rights reserved. - -MIT License - -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. -========================================= -END OF Microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION - -%% Microsoft/vscode-mssql NOTICES AND INFORMATION BEGIN HERE -========================================= ------------------------------------------- START OF LICENSE ----------------------------------------- -vscode-mssql -Copyright (c) Microsoft Corporation -All rights reserved. -MIT License -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: -Copyright (c) 2016 Sanjay Nagamangalam -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. ------------------------------------------------ END OF LICENSE ------------------------------------------ -========================================= -END OF Microsoft/vscode-mssql NOTICES AND INFORMATION - -%% mmims/language-batchfile NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2017 Michael Mims - -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. -========================================= -END OF mmims/language-batchfile NOTICES AND INFORMATION - -%% octicons-code NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -(c) 2012-2015 GitHub - -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. -========================================= -END OF octicons-code NOTICES AND INFORMATION - -%% octicons-font NOTICES AND INFORMATION BEGIN HERE -========================================= -(c) 2012-2015 GitHub - -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. -========================================= -END OF octicons-font NOTICES AND INFORMATION - -%% PowerShell/EditorSyntax NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) Microsoft Corporation - -All rights reserved. - -MIT License - -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. -========================================= -END OF PowerShell/EditorSyntax NOTICES AND INFORMATION - -%% seti-ui NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) 2014 Jesse Weed - -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. -========================================= -END OF seti-ui NOTICES AND INFORMATION - -%% shaders-tmLanguage NOTICES AND INFORMATION BEGIN HERE -========================================= -MIT License - -Copyright (c) 2017 Tim Jones - -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. -========================================= -END OF shaders-tmLanguage NOTICES AND INFORMATION - -%% textmate/asp.vb.net.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-asp.vb.net.tmbundle project authors - -If not otherwise specified (see below), files in this folder fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/asp.vb.net.tmbundle NOTICES AND INFORMATION - -%% textmate/c.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-c.tmbundle authors - -If not otherwise specified (see below), files in this repository fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/c.tmbundle NOTICES AND INFORMATION - -%% textmate/diff.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-diff.tmbundle project authors - -If not otherwise specified (see below), files in this repository fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/diff.tmbundle NOTICES AND INFORMATION - -%% textmate/git.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2008 Tim Harper - -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. -========================================= -END OF textmate/git.tmbundle NOTICES AND INFORMATION - -%% textmate/groovy.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-groovy.tmbundle project authors - -If not otherwise specified (see below), files in this repository fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/groovy.tmbundle NOTICES AND INFORMATION - -%% textmate/html.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-html.tmbundle project authors - -If not otherwise specified (see below), files in this repository fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/html.tmbundle NOTICES AND INFORMATION - -%% textmate/ini.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-ini.tmbundle project authors - -If not otherwise specified (see below), files in this folder fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/ini.tmbundle NOTICES AND INFORMATION - -%% textmate/javascript.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-javascript.tmbundle project authors - -If not otherwise specified (see below), files in this repository fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/javascript.tmbundle NOTICES AND INFORMATION - -%% textmate/lua.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-lua.tmbundle project authors - -If not otherwise specified (see below), files in this repository fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/lua.tmbundle NOTICES AND INFORMATION - -%% textmate/markdown.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) markdown.tmbundle authors - -If not otherwise specified (see below), files in this repository fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/markdown.tmbundle NOTICES AND INFORMATION - -%% textmate/perl.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-perl.tmbundle project authors - -If not otherwise specified (see below), files in this repository fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/perl.tmbundle NOTICES AND INFORMATION - -%% textmate/ruby.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) textmate-ruby.tmbundle project authors - -If not otherwise specified (see below), files in this folder fall under the following license: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. - -An exception is made for files in readable text which contain their own license information, -or files where an accompanying file exists (in the same directory) with a "-license" suffix added -to the base-name name of the original file, and an extension of txt, html, or similar. For example -"tidy" is accompanied by "tidy-license.txt". -========================================= -END OF textmate/ruby.tmbundle NOTICES AND INFORMATION - -%% textmate/yaml.tmbundle NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) 2015 FichteFoll - -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. -========================================= -END OF textmate/yaml.tmbundle NOTICES AND INFORMATION - -%% TypeScript-TmLanguage NOTICES AND INFORMATION BEGIN HERE -========================================= -Copyright (c) Microsoft Corporation -All rights reserved. - -MIT License - -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. -========================================= -END OF TypeScript-TmLanguage NOTICES AND INFORMATION - -%% vscode-logfile-highlighter NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2015 emilast - -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. -========================================= -END OF vscode-logfile-highlighter NOTICES AND INFORMATION - -%% vscode-swift NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2015 David Owens II - -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. -========================================= +microsoft-vscode + +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION +Do Not Translate or Localize + +This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise. + +1. atom/language-c (https://github.com/atom/language-c) +2. atom/language-clojure (https://github.com/atom/language-clojure) +3. atom/language-coffee-script (https://github.com/atom/language-coffee-script) +4. atom/language-css (https://github.com/atom/language-css) +5. atom/language-java (https://github.com/atom/language-java) +6. atom/language-objective-c (https://github.com/atom/language-objective-c) +7. atom/language-sass version 0.52.0 (https://github.com/atom/language-sass) +8. atom/language-shellscript (https://github.com/atom/language-shellscript) +9. atom/language-xml (https://github.com/atom/language-xml) +10. Benvie/JavaScriptNext.tmLanguage (https://github.com/Microsoft/vscode-JSON.tmLanguage) +11. chjj-marked version 0.3.12 (https://github.com/npmcomponent/chjj-marked) +12. chriskempson/tomorrow-theme (https://github.com/chriskempson/tomorrow-theme) +13. Colorsublime-Themes version 0.1.0 (https://github.com/Colorsublime/Colorsublime-Themes) +14. daaain/Handlebars (https://github.com/daaain/Handlebars) +15. davidrios/jade-tmbundle (https://github.com/davidrios/jade-tmbundle) +16. definitelytyped (https://github.com/DefinitelyTyped/DefinitelyTyped) +17. demyte/language-cshtml (https://github.com/demyte/language-cshtml) +18. dotnet/csharp-tmLanguage version 0.1.0 (https://github.com/dotnet/csharp-tmLanguage) +19. expand-abbreviation version 0.5.8 (https://github.com/emmetio/expand-abbreviation) +20. fadeevab/make.tmbundle (https://github.com/fadeevab/make.tmbundle) +21. freebroccolo/atom-language-swift (https://github.com/freebroccolo/atom-language-swift) +22. HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/) +23. Ikuyadeu/vscode-R (https://github.com/Ikuyadeu/vscode-R) +24. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site) +25. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar) +26. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify) +27. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert) +28. language-docker (https://github.com/moby/moby) +29. language-go version 0.39.0 (https://github.com/atom/language-go) +30. language-less (https://github.com/atom/language-less) +31. language-php (https://github.com/atom/language-php) +32. language-rust version 0.4.9 (https://github.com/zargony/atom-language-rust) +33. MagicStack/MagicPython (https://github.com/MagicStack/MagicPython) +34. Microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/Microsoft/TypeScript-TmLanguage) +35. Microsoft/vscode-mssql (https://github.com/Microsoft/vscode-mssql) +36. mmims/language-batchfile (https://github.com/mmims/language-batchfile) +37. octicons-code version 3.1.0 (https://octicons.github.com) +38. octicons-font version 3.1.0 (https://octicons.github.com) +39. PowerShell/EditorSyntax (https://github.com/powershell/editorsyntax) +40. seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui) +41. shaders-tmLanguage version 0.1.0 (https://github.com/tgjones/shaders-tmLanguage) +42. textmate/asp.vb.net.tmbundle (https://github.com/textmate/asp.vb.net.tmbundle) +43. textmate/c.tmbundle (https://github.com/textmate/c.tmbundle) +44. textmate/diff.tmbundle (https://github.com/textmate/diff.tmbundle) +45. textmate/git.tmbundle (https://github.com/textmate/git.tmbundle) +46. textmate/groovy.tmbundle (https://github.com/textmate/groovy.tmbundle) +47. textmate/html.tmbundle (https://github.com/textmate/html.tmbundle) +48. textmate/ini.tmbundle (https://github.com/textmate/ini.tmbundle) +49. textmate/javascript.tmbundle (https://github.com/textmate/javascript.tmbundle) +50. textmate/lua.tmbundle (https://github.com/textmate/lua.tmbundle) +51. textmate/markdown.tmbundle (https://github.com/textmate/markdown.tmbundle) +52. textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle) +53. textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle) +54. textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle) +55. TypeScript-TmLanguage version 0.1.8 (https://github.com/Microsoft/TypeScript-TmLanguage) +56. vscode-logfile-highlighter version 1.2.0 (https://github.com/emilast/vscode-logfile-highlighter) +57. vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift) + + +%% atom/language-c NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/textmate/c.tmbundle and distributed under the following +license, located in `README.mdown`: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. +========================================= +END OF atom/language-c NOTICES AND INFORMATION + +%% atom/language-clojure NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/mmcgrana/textmate-clojure and distributed under the +following license, located in `LICENSE.md`: + +The MIT License (MIT) + +Copyright (c) 2010- Mark McGranaghan + +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. +========================================= +END OF atom/language-clojure NOTICES AND INFORMATION + +%% atom/language-coffee-script NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/jashkenas/coffee-script-tmbundle and distributed under the +following license, located in `LICENSE`: + +Copyright (c) 2009-2014 Jeremy Ashkenas + +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. +========================================= +END OF atom/language-coffee-script NOTICES AND INFORMATION + +%% atom/language-css NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/textmate/css.tmbundle and distributed under the following +license, located in `README.mdown`: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. +========================================= +END OF atom/language-css NOTICES AND INFORMATION + +%% atom/language-java NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/textmate/java.tmbundle and distributed under the following +license, located in `README.mdown`: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. +========================================= +END OF atom/language-java NOTICES AND INFORMATION + +%% atom/language-objective-c NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/textmate/objective-c.tmbundle and distributed under the following +license, located in `README.mdown`: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. +========================================= +END OF atom/language-objective-c NOTICES AND INFORMATION + +%% atom/language-sass NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/alexsancho/Sass.tmbundle and distributed under the following +license, located in `LICENSE.md`: + +Copyright (c) 2012 Alex Sancho, http://alexsancho.name/ + +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. +========================================= +END OF atom/language-sass NOTICES AND INFORMATION + +%% atom/language-shellscript NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/textmate/shellscript.tmbundle and distributed under the +following license, located in `README.mdown`: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. +========================================= +END OF atom/language-shellscript NOTICES AND INFORMATION + +%% atom/language-xml NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/textmate/xml.tmbundle and distributed under the following +license, located in `README.mdown`: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. +========================================= +END OF atom/language-xml NOTICES AND INFORMATION + +%% Benvie/JavaScriptNext.tmLanguage NOTICES AND INFORMATION BEGIN HERE +========================================= +vscode-JSON.tmLanguage + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +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. +========================================= +END OF Benvie/JavaScriptNext.tmLanguage NOTICES AND INFORMATION + +%% chjj-marked NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/) + +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. +========================================= +END OF chjj-marked NOTICES AND INFORMATION + +%% chriskempson/tomorrow-theme NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (C) 2013 Chris Kempson + +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. +========================================= +END OF chriskempson/tomorrow-theme NOTICES AND INFORMATION + +%% Colorsublime-Themes NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2015 Colorsublime.com + +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. +========================================= +END OF Colorsublime-Themes NOTICES AND INFORMATION + +%% daaain/Handlebars NOTICES AND INFORMATION BEGIN HERE +========================================= +-- Credits + +Adapted from the great sublime-text-handlebars package by Nicholas Westlake. + +Thanks a lot to all the generous contributors (in alphabetical order): @bittersweetryan, @bradcliffe, @calumbrodie, @duncanbeevers, @hlvnst, @jonschlinkert, @Krutius, @samselikoff, @utkarshkukreti, @zeppelin + +-- License + +(The MIT License) + +Copyright (c) daaain/Handlebars project authors + +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. +========================================= +END OF daaain/Handlebars NOTICES AND INFORMATION + +%% davidrios/jade-tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 David Rios + +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 +========================================= +END OF davidrios/jade-tmbundle NOTICES AND INFORMATION + +%% definitelytyped NOTICES AND INFORMATION BEGIN HERE +========================================= +This project is licensed under the MIT license. +Copyrights are respective of each contributor listed at the beginning of each definition file. + +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. +========================================= +END OF definitelytyped NOTICES AND INFORMATION + +%% demyte/language-cshtml NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 James Summerton + +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. +========================================= +END OF demyte/language-cshtml NOTICES AND INFORMATION + +%% dotnet/csharp-tmLanguage NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2016 .NET Foundation + +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. +========================================= +END OF dotnet/csharp-tmLanguage NOTICES AND INFORMATION + +%% expand-abbreviation NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2017 Emmet.io + +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. +========================================= +END OF expand-abbreviation NOTICES AND INFORMATION + +%% fadeevab/make.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-make.tmbundle project authors + +If not otherwise specified (see below), files in this repository fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF fadeevab/make.tmbundle NOTICES AND INFORMATION + +%% freebroccolo/atom-language-swift NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Darin Morrison + +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. +========================================= +END OF freebroccolo/atom-language-swift NOTICES AND INFORMATION + +%% HTML 5.1 W3C Working Draft NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). This software or document includes material copied +from or derived from HTML 5.1 W3C Working Draft (http://www.w3.org/TR/2015/WD-html51-20151008/.) + +THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT +NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF +THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY +PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE +DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF. + +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents +without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders. +========================================= +END OF HTML 5.1 W3C Working Draft NOTICES AND INFORMATION + +%% Ikuyadeu/vscode-R NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2017 Yuki Ueda + +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. +========================================= +END OF Ikuyadeu/vscode-R NOTICES AND INFORMATION + +%% Ionic documentation NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright Drifty Co. http://drifty.com/. + +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF Ionic documentation NOTICES AND INFORMATION + +%% ionide/ionide-fsgrammar NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2015 Krzysztof Cieslak + +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. +========================================= +END OF ionide/ionide-fsgrammar NOTICES AND INFORMATION + +%% js-beautify NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors. + +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. +========================================= +END OF js-beautify NOTICES AND INFORMATION + +%% Jxck/assert NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2011 Jxck + +Originally from node.js (http://nodejs.org) +Copyright Joyent, Inc. + +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. +========================================= +END OF Jxck/assert NOTICES AND INFORMATION + +%% language-docker NOTICES AND INFORMATION BEGIN HERE +========================================= +Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2013-2017 Docker, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +========================================= +END OF language-docker NOTICES AND INFORMATION + +%% language-go NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/rsms/Go.tmbundle and distributed under the following +license, located in `LICENSE`: + +Copyright (c) 2009 Rasmus Andersson + +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. + + +The Go Template grammar was derived from GoSublime located at +https://github.com/DisposaBoy/GoSublime and distributed under the following +license, located in `LICENSE.md`: + +Copyright (c) 2012 The GoSublime Authors + +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. +========================================= +END OF language-go NOTICES AND INFORMATION + +%% language-less NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/textmate/less.tmbundle and distributed under the following +license, located in `LICENSE.md`: + +Copyright (c) 2010 Scott Kyle and Rasmus Andersson + +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. +========================================= +END OF language-less NOTICES AND INFORMATION + +%% language-php NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 GitHub Inc. + +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. + + +This package was derived from a TextMate bundle located at +https://github.com/textmate/php.tmbundle and distributed under the following +license, located in `README.mdown`: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. +========================================= +END OF language-php NOTICES AND INFORMATION + +%% language-rust NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright © `2013` `Andreas Neuhaus` `http://zargony.com/` + +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. +========================================= +END OF language-rust NOTICES AND INFORMATION + +%% MagicStack/MagicPython NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License + +Copyright (c) 2015-present MagicStack Inc. http://magic.io + +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. +========================================= +END OF MagicStack/MagicPython NOTICES AND INFORMATION + +%% Microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) Microsoft Corporation +All rights reserved. + +MIT License + +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. +========================================= +END OF Microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION + +%% Microsoft/vscode-mssql NOTICES AND INFORMATION BEGIN HERE +========================================= +------------------------------------------ START OF LICENSE ----------------------------------------- +vscode-mssql +Copyright (c) Microsoft Corporation +All rights reserved. +MIT License +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: +Copyright (c) 2016 Sanjay Nagamangalam +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. +----------------------------------------------- END OF LICENSE ------------------------------------------ +========================================= +END OF Microsoft/vscode-mssql NOTICES AND INFORMATION + +%% mmims/language-batchfile NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2017 Michael Mims + +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. +========================================= +END OF mmims/language-batchfile NOTICES AND INFORMATION + +%% octicons-code NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +(c) 2012-2015 GitHub + +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. +========================================= +END OF octicons-code NOTICES AND INFORMATION + +%% octicons-font NOTICES AND INFORMATION BEGIN HERE +========================================= +(c) 2012-2015 GitHub + +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. +========================================= +END OF octicons-font NOTICES AND INFORMATION + +%% PowerShell/EditorSyntax NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +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. +========================================= +END OF PowerShell/EditorSyntax NOTICES AND INFORMATION + +%% seti-ui NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2014 Jesse Weed + +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. +========================================= +END OF seti-ui NOTICES AND INFORMATION + +%% shaders-tmLanguage NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2017 Tim Jones + +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. +========================================= +END OF shaders-tmLanguage NOTICES AND INFORMATION + +%% textmate/asp.vb.net.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-asp.vb.net.tmbundle project authors + +If not otherwise specified (see below), files in this folder fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/asp.vb.net.tmbundle NOTICES AND INFORMATION + +%% textmate/c.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-c.tmbundle authors + +If not otherwise specified (see below), files in this repository fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/c.tmbundle NOTICES AND INFORMATION + +%% textmate/diff.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-diff.tmbundle project authors + +If not otherwise specified (see below), files in this repository fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/diff.tmbundle NOTICES AND INFORMATION + +%% textmate/git.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2008 Tim Harper + +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. +========================================= +END OF textmate/git.tmbundle NOTICES AND INFORMATION + +%% textmate/groovy.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-groovy.tmbundle project authors + +If not otherwise specified (see below), files in this repository fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/groovy.tmbundle NOTICES AND INFORMATION + +%% textmate/html.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-html.tmbundle project authors + +If not otherwise specified (see below), files in this repository fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/html.tmbundle NOTICES AND INFORMATION + +%% textmate/ini.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-ini.tmbundle project authors + +If not otherwise specified (see below), files in this folder fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/ini.tmbundle NOTICES AND INFORMATION + +%% textmate/javascript.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-javascript.tmbundle project authors + +If not otherwise specified (see below), files in this repository fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/javascript.tmbundle NOTICES AND INFORMATION + +%% textmate/lua.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-lua.tmbundle project authors + +If not otherwise specified (see below), files in this repository fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/lua.tmbundle NOTICES AND INFORMATION + +%% textmate/markdown.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) markdown.tmbundle authors + +If not otherwise specified (see below), files in this repository fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/markdown.tmbundle NOTICES AND INFORMATION + +%% textmate/perl.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-perl.tmbundle project authors + +If not otherwise specified (see below), files in this repository fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/perl.tmbundle NOTICES AND INFORMATION + +%% textmate/ruby.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) textmate-ruby.tmbundle project authors + +If not otherwise specified (see below), files in this folder fall under the following license: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. + +An exception is made for files in readable text which contain their own license information, +or files where an accompanying file exists (in the same directory) with a "-license" suffix added +to the base-name name of the original file, and an extension of txt, html, or similar. For example +"tidy" is accompanied by "tidy-license.txt". +========================================= +END OF textmate/ruby.tmbundle NOTICES AND INFORMATION + +%% textmate/yaml.tmbundle NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2015 FichteFoll + +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. +========================================= +END OF textmate/yaml.tmbundle NOTICES AND INFORMATION + +%% TypeScript-TmLanguage NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) Microsoft Corporation +All rights reserved. + +MIT License + +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. +========================================= +END OF TypeScript-TmLanguage NOTICES AND INFORMATION + +%% vscode-logfile-highlighter NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2015 emilast + +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. +========================================= +END OF vscode-logfile-highlighter NOTICES AND INFORMATION + +%% vscode-swift NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2015 David Owens II + +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. +========================================= END OF vscode-swift NOTICES AND INFORMATION \ No newline at end of file diff --git a/build/monaco/ThirdPartyNotices.txt b/build/monaco/ThirdPartyNotices.txt index b69ad482463..45eeffb9f32 100644 --- a/build/monaco/ThirdPartyNotices.txt +++ b/build/monaco/ThirdPartyNotices.txt @@ -1,85 +1,85 @@ -THIRD-PARTY SOFTWARE NOTICES AND INFORMATION -Do Not Translate or Localize - -This project incorporates components from the projects listed below. The original copyright notices and the licenses -under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted -herein, whether by implication, estoppel or otherwise. - - - - -%% winjs version 4.4.0 (https://github.com/winjs/winjs) -========================================= -WinJS - -Copyright (c) Microsoft Corporation - -All rights reserved. - -MIT License - -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. - -========================================= -END OF winjs NOTICES AND INFORMATION - - - - -%% string_scorer version 0.1.20 (https://github.com/joshaven/string_score) -========================================= -This software is released under the MIT license: - -Copyright (c) Joshaven Potter - -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. -========================================= -END OF string_scorer NOTICES AND INFORMATION - - - - -%% chjj-marked NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/) - -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. -========================================= -END OF chjj-marked NOTICES AND INFORMATION +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION +Do Not Translate or Localize + +This project incorporates components from the projects listed below. The original copyright notices and the licenses +under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted +herein, whether by implication, estoppel or otherwise. + + + + +%% winjs version 4.4.0 (https://github.com/winjs/winjs) +========================================= +WinJS + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +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. + +========================================= +END OF winjs NOTICES AND INFORMATION + + + + +%% string_scorer version 0.1.20 (https://github.com/joshaven/string_score) +========================================= +This software is released under the MIT license: + +Copyright (c) Joshaven Potter + +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. +========================================= +END OF string_scorer NOTICES AND INFORMATION + + + + +%% chjj-marked NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/) + +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. +========================================= +END OF chjj-marked NOTICES AND INFORMATION diff --git a/build/win32/code.iss b/build/win32/code.iss index 7cadcd9a5c1..9bc3329b03a 100644 --- a/build/win32/code.iss +++ b/build/win32/code.iss @@ -1,1093 +1,1093 @@ -#define LocalizedLanguageFile(Language = "") \ - DirExists(RepoDir + "\licenses") && Language != "" \ - ? ('; LicenseFile: "' + RepoDir + '\licenses\LICENSE-' + Language + '.txt"') \ - : '; LicenseFile: "' + RepoDir + '\LICENSE.txt"' - -[Setup] -AppId={#AppId} -AppName={#NameLong} -AppVerName={#NameVersion} -AppPublisher=Microsoft Corporation -AppPublisherURL=https://code.visualstudio.com/ -AppSupportURL=https://code.visualstudio.com/ -AppUpdatesURL=https://code.visualstudio.com/ -DefaultDirName={pf}\{#DirName} -DefaultGroupName={#NameLong} -AllowNoIcons=yes -OutputDir={#OutputDir} -OutputBaseFilename=VSCodeSetup -Compression=lzma -SolidCompression=yes -AppMutex={code:GetAppMutex} -SetupMutex={#AppMutex}setup -WizardImageFile={#RepoDir}\resources\win32\inno-big.bmp -WizardSmallImageFile={#RepoDir}\resources\win32\inno-small.bmp -SetupIconFile={#RepoDir}\resources\win32\code.ico -UninstallDisplayIcon={app}\{#ExeBasename}.exe -ChangesEnvironment=true -ChangesAssociations=true -MinVersion=6.1.7600 -SourceDir={#SourceDir} -AppVersion={#Version} -VersionInfoVersion={#RawVersion} -ShowLanguageDialog=auto -ArchitecturesAllowed={#ArchitecturesAllowed} -ArchitecturesInstallIn64BitMode={#ArchitecturesInstallIn64BitMode} - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl,{#RepoDir}\build\win32\i18n\messages.en.isl" {#LocalizedLanguageFile} -Name: "german"; MessagesFile: "compiler:Languages\German.isl,{#RepoDir}\build\win32\i18n\messages.de.isl" {#LocalizedLanguageFile("deu")} -Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl,{#RepoDir}\build\win32\i18n\messages.es.isl" {#LocalizedLanguageFile("esp")} -Name: "french"; MessagesFile: "compiler:Languages\French.isl,{#RepoDir}\build\win32\i18n\messages.fr.isl" {#LocalizedLanguageFile("fra")} -Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl,{#RepoDir}\build\win32\i18n\messages.it.isl" {#LocalizedLanguageFile("ita")} -Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl,{#RepoDir}\build\win32\i18n\messages.ja.isl" {#LocalizedLanguageFile("jpn")} -Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl,{#RepoDir}\build\win32\i18n\messages.ru.isl" {#LocalizedLanguageFile("rus")} -Name: "korean"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.ko.isl,{#RepoDir}\build\win32\i18n\messages.ko.isl" {#LocalizedLanguageFile("kor")} -Name: "simplifiedChinese"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.zh-cn.isl,{#RepoDir}\build\win32\i18n\messages.zh-cn.isl" {#LocalizedLanguageFile("chs")} -Name: "traditionalChinese"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.zh-tw.isl,{#RepoDir}\build\win32\i18n\messages.zh-tw.isl" {#LocalizedLanguageFile("cht")} - -[InstallDelete] -Type: filesandordirs; Name: "{app}\resources\app\out"; Check: IsNotUpdate -Type: filesandordirs; Name: "{app}\resources\app\plugins"; Check: IsNotUpdate -Type: filesandordirs; Name: "{app}\resources\app\extensions"; Check: IsNotUpdate -Type: filesandordirs; Name: "{app}\resources\app\node_modules"; Check: IsNotUpdate -Type: filesandordirs; Name: "{app}\resources\app\node_modules.asar.unpacked"; Check: IsNotUpdate -Type: files; Name: "{app}\resources\app\node_modules.asar"; Check: IsNotUpdate -Type: files; Name: "{app}\resources\app\Credits_45.0.2454.85.html"; Check: IsNotUpdate - -[UninstallDelete] -Type: filesandordirs; Name: "{app}\_" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked -Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 -Name: "addcontextmenufiles"; Description: "{cm:AddContextMenuFiles,{#NameShort}}"; GroupDescription: "{cm:Other}"; Flags: unchecked -Name: "addcontextmenufolders"; Description: "{cm:AddContextMenuFolders,{#NameShort}}"; GroupDescription: "{cm:Other}"; Flags: unchecked -Name: "associatewithfiles"; Description: "{cm:AssociateWithFiles,{#NameShort}}"; GroupDescription: "{cm:Other}"; Flags: unchecked -Name: "addtopath"; Description: "{cm:AddToPath}"; GroupDescription: "{cm:Other}" -Name: "runcode"; Description: "{cm:RunAfter,{#NameShort}}"; GroupDescription: "{cm:Other}"; Check: WizardSilent - -[Files] -Source: "*"; Excludes: "\tools,\tools\*"; DestDir: "{code:GetDestDir}"; Flags: ignoreversion recursesubdirs createallsubdirs -Source: "tools\*"; DestDir: "{app}\tools"; Flags: ignoreversion - -[Icons] -Name: "{group}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; AppUserModelID: "{#AppUserId}" -Name: "{commondesktop}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: desktopicon; AppUserModelID: "{#AppUserId}" -Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: quicklaunchicon; AppUserModelID: "{#AppUserId}" - -[Run] -Filename: "{app}\{#ExeBasename}.exe"; Description: "{cm:LaunchProgram,{#NameLong}}"; Tasks: runcode; Flags: nowait postinstall; Check: ShouldRunAfterUpdate -Filename: "{app}\{#ExeBasename}.exe"; Description: "{cm:LaunchProgram,{#NameLong}}"; Flags: nowait postinstall; Check: WizardNotSilent - -[Registry] -Root: HKCR; Subkey: ".ascx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".ascx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ascx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ascx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASCX}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ascx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ascx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ascx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".asp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".asp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.asp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.asp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASP}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.asp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.asp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.asp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".aspx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".aspx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.aspx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.aspx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASPX}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.aspx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.aspx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.aspx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".bash\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".bash\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".bash_login\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".bash_login\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash_login"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_login"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Login}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_login"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_login\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_login\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".bash_logout\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".bash_logout\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash_logout"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_logout"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Logout}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_logout"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_logout\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_logout\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".bash_profile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".bash_profile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash_profile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_profile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_profile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_profile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bash_profile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".bashrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".bashrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bashrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bashrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bashrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bashrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bashrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".bib\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".bib\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bib"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bib"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,BibTeX}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bib"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bib\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bib\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".bowerrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".bowerrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bowerrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bowerrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bower RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bowerrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bowerrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.bowerrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".c\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".c\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.c"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.c"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.c"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.c\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.c\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".cc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".cc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".clj\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".clj\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.clj"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.clj"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Clojure}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.clj"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.clj\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.clj\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".cljs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".cljs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cljs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cljs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ClojureScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cljs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cljs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cljs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".cljx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".cljx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cljx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cljx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CLJX}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cljx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cljx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cljx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".clojure\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".clojure\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.clojure"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.clojure"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Clojure}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.clojure"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.clojure\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.clojure\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".code-workspace\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".code-workspace\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.code-workspace"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.code-workspace"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Code Workspace}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.code"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.code-workspace\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.code-workspace\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".coffee\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".coffee\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.coffee"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.coffee"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CoffeeScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.coffee"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.coffee\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.coffee\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".config\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".config\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.config"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.config"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Configuration}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.config"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.config\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.config\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".cpp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".cpp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cpp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cpp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cpp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cpp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cpp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".cs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".cs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C#}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".cshtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".cshtml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cshtml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cshtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CSHTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cshtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cshtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cshtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".csproj\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".csproj\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.csproj"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.csproj"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C# Project}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.csproj"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.csproj\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.csproj\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".css\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".css\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.css"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.css"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CSS}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.css"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.css\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.css\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".csx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".csx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.csx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.csx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.csx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.csx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.csx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".ctp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".ctp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ctp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ctp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CakePHP Template}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ctp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ctp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ctp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".cxx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".cxx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cxx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cxx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cxx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cxx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.cxx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".dockerfile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".dockerfile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.dockerfile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dockerfile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Dockerfile}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dockerfile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dockerfile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dockerfile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".dot\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".dot\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.dot"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dot"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Dot}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dot"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dot\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dot\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".dtd\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".dtd\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.dtd"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dtd"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Document Type Definition}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dtd"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dtd\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.dtd\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".editorconfig\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".editorconfig\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.editorconfig"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.editorconfig"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Editor Config}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.editorconfig"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.editorconfig\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.editorconfig\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".edn\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".edn\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.edn"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.edn"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Extensible Data Notation}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.edn"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.edn\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.edn\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".eyaml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".eyaml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.eyaml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.eyaml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Hiera Eyaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.eyaml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.eyaml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.eyaml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".eyml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".eyml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.eyml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.eyml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Hiera Eyaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.eyml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.eyml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.eyml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".fs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".fs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.fs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F#}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".fsi\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".fsi\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.fsi"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsi"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F# Signature}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsi"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".fsscript\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".fsscript\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.fsscript"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsscript"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsscript"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsscript\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsscript\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".fsx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".fsx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.fsx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.fsx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".gemspec\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".gemspec\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.gemspec"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gemspec"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Gemspec}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gemspec"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gemspec\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gemspec\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".gitattributes\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".gitattributes\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.gitattributes"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitattributes"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Git Attributes}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitattributes"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitattributes"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitattributes\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitattributes\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".gitconfig\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".gitconfig\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.gitconfig"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitconfig"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Git Config}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitconfig"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitconfig"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitconfig\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitconfig\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".gitignore\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".gitignore\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.gitignore"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitignore"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Git Ignore}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitignore"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitignore"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitignore\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.gitignore\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".go\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".go\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.go"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.go"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Go}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.go"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.go\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.go\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".h\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".h\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.h"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.h"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.h"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.h\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.h\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".handlebars\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".handlebars\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.handlebars"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.handlebars"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Handlebars}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.handlebars"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.handlebars\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.handlebars\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".hbs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".hbs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.hbs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hbs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Handlebars}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hbs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hbs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hbs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".hh\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".hh\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.hh"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hh"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hh"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hh\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hh\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".hpp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".hpp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.hpp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hpp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hpp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hpp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hpp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".htm\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".htm\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.htm"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.htm"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,HTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.htm"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.htm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.htm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".html\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".html\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.html"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.html"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,HTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.html"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.html\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.html\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".hxx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".hxx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.hxx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hxx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hxx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hxx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.hxx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".ini\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".ini\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ini"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ini"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,INI}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ini"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ini\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ini\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".jade\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".jade\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jade"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jade"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Jade}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jade"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jade\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jade\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".jav\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".jav\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jav"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jav"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Java}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jav"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jav\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jav\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".java\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".java\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.java"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.java"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Java}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.java"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.java\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.java\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".js\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".js\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.js"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.js"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.js"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.js\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.js\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".jscsrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".jscsrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jscsrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jscsrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JSCS RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jscsrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jscsrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jscsrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".jshintrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".jshintrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jshintrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jshintrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JSHint RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jshintrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jshintrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jshintrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".jshtm\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".jshtm\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jshtm"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jshtm"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript HTML Template}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jshtm"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jshtm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jshtm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".json\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".json\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.json"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.json"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JSON}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.json"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.json\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.json\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".jsp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".jsp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jsp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jsp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Java Server Pages}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jsp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jsp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.jsp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".less\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".less\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.less"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.less"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,LESS}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.less"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.less\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.less\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".lua\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".lua\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.lua"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.lua"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Lua}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.lua"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.lua\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.lua\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".m\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".m\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.m"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.m"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Objective C}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.m"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.m\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.m\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".makefile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".makefile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.makefile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.makefile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Makefile}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.makefile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.makefile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.makefile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".markdown\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".markdown\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.markdown"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.markdown"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.markdown"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.markdown\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.markdown\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".md\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".md\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.md"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.md"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.md"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.md\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.md\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".mdoc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".mdoc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdoc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdoc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,MDoc}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdoc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdoc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdoc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".mdown\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".mdown\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdown"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdown"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdown"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdown\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdown\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".mdtext\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".mdtext\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdtext"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdtext"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdtext"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdtext\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdtext\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".mdtxt\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".mdtxt\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdtxt"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdtxt"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdtxt"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdtxt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdtxt\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".mdwn\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".mdwn\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdwn"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdwn"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdwn"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdwn\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mdwn\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".mkd\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".mkd\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mkd"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mkd"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mkd"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mkd\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mkd\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".mkdn\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".mkdn\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mkdn"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mkdn"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mkdn"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mkdn\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mkdn\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".ml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".ml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,OCaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".mli\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".mli\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mli"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mli"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,OCaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mli"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mli\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.mli\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".npmignore\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".npmignore\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.npmignore"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.npmignore"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,NPM Ignore}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.npmignore"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.npmignore"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.npmignore\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.npmignore\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".php\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".php\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.php"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.php"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PHP}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.php"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.php\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.php\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".phtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".phtml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.phtml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.phtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PHP HTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.phtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.phtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.phtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".pl\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".pl\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pl"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pl"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pl"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pl\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pl\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".pl6\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".pl6\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pl6"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pl6"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl 6}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pl6"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pl6\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pl6\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".pm\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".pm\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pm"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pm"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl Module}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pm"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".pm6\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".pm6\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pm6"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pm6"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl 6 Module}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pm6"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pm6\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pm6\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".pod\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".pod\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pod"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pod"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl POD}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pod"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pod\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pod\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".pp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".pp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.pp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".profile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".profile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.profile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.profile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.profile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.profile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.profile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".properties\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".properties\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.properties"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.properties"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Properties}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.properties"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.properties\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.properties\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".ps1\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".ps1\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ps1"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ps1"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PowerShell}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ps1"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ps1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ps1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".psd1\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".psd1\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.psd1"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psd1"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PowerShell Module Manifest}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psd1"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psd1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psd1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".psgi\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".psgi\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.psgi"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psgi"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl CGI}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psgi"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psgi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psgi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".psm1\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".psm1\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.psm1"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psm1"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PowerShell Module}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psm1"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psm1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.psm1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".py\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".py\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.py"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.py"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Python}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.py"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.py\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.py\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".r\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".r\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.r"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.r"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,R}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.r"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.r\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.r\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".rb\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".rb\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rb"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rb"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Ruby}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rb"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rb\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rb\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".rhistory\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".rhistory\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rhistory"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rhistory"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,R History}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rhistory"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rhistory\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rhistory\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".rprofile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".rprofile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rprofile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rprofile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,R Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rprofile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rprofile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rprofile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".rs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".rs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Rust}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".rt\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".rt\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rt"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rt"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Rich Text}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rt"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.rt\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".scss\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".scss\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.scss"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.scss"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Sass}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.scss"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.scss\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.scss\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".sh\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".sh\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.sh"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.sh"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SH}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.sh"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.sh\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.sh\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".shtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".shtml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.shtml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.shtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SHTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.shtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.shtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.shtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".sql\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".sql\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.sql"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.sql"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SQL}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.sql"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.sql\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.sql\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".svg\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".svg\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.svg"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.svg"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SVG}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.svg"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.svg\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.svg\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".svgz\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".svgz\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.svgz"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.svgz"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SVGZ}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.svgz"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.svgz\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.svgz\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".t\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".t\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.t"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.t"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.t"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.t\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.t\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".tex\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".tex\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.tex"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.tex"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,LaTeX}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.tex"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.tex\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.tex\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".ts\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".ts\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ts"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ts"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,TypeScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ts"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ts\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.ts\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".txt\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".txt\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.txt"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.txt"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Text}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.txt"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.txt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.txt\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".vb\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".vb\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.vb"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.vb"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Visual Basic}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.vb"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.vb\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.vb\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".wxi\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".wxi\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.wxi"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxi"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,WiX Include}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxi"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".wxl\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".wxl\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.wxl"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxl"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,WiX Localization}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxl"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxl\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxl\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".wxs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".wxs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.wxs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,WiX}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.wxs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".xaml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".xaml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.xaml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.xaml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,XAML}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.xaml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.xaml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.xaml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".xml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".xml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.xml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.xml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,XML}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.xml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.xml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.xml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".yaml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".yaml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.yaml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.yaml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Yaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.yaml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.yaml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.yaml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".yml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".yml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.yml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.yml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Yaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.yml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.yml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.yml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: ".zsh\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: ".zsh\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.zsh"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.zsh"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ZSH}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.zsh"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.zsh\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles -Root: HKCR; Subkey: "{#RegValueName}.zsh\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles - -Root: HKCR; Subkey: "{#RegValueName}SourceFile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,{#NameLong}}"; Flags: uninsdeletekey -Root: HKCR; Subkey: "{#RegValueName}SourceFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico" -Root: HKCR; Subkey: "{#RegValueName}SourceFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1""" - -Root: HKCR; Subkey: "Applications\{#ExeBasename}.exe"; ValueType: none; ValueName: ""; Flags: uninsdeletekey -Root: HKCR; Subkey: "Applications\{#ExeBasename}.exe\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico" -Root: HKCR; Subkey: "Applications\{#ExeBasename}.exe\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1""" - -Root: HKCU; Subkey: "Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}\bin"; Tasks: addtopath; Check: NeedsAddPath(ExpandConstant('{app}\bin')) - -Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\{#RegValueName}"; ValueType: expandsz; ValueName: ""; ValueData: "Open w&ith {#ShellNameShort}"; Tasks: addcontextmenufiles; Flags: uninsdeletekey -Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\{#RegValueName}"; ValueType: expandsz; ValueName: "Icon"; ValueData: "{app}\{#ExeBasename}.exe"; Tasks: addcontextmenufiles -Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\{#RegValueName}\command"; ValueType: expandsz; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: addcontextmenufiles -Root: HKCU; Subkey: "SOFTWARE\Classes\directory\shell\{#RegValueName}"; ValueType: expandsz; ValueName: ""; ValueData: "Open w&ith {#ShellNameShort}"; Tasks: addcontextmenufolders; Flags: uninsdeletekey -Root: HKCU; Subkey: "SOFTWARE\Classes\directory\shell\{#RegValueName}"; ValueType: expandsz; ValueName: "Icon"; ValueData: "{app}\{#ExeBasename}.exe"; Tasks: addcontextmenufolders -Root: HKCU; Subkey: "SOFTWARE\Classes\directory\shell\{#RegValueName}\command"; ValueType: expandsz; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%V"""; Tasks: addcontextmenufolders -Root: HKCU; Subkey: "SOFTWARE\Classes\directory\background\shell\{#RegValueName}"; ValueType: expandsz; ValueName: ""; ValueData: "Open w&ith {#ShellNameShort}"; Tasks: addcontextmenufolders; Flags: uninsdeletekey -Root: HKCU; Subkey: "SOFTWARE\Classes\directory\background\shell\{#RegValueName}"; ValueType: expandsz; ValueName: "Icon"; ValueData: "{app}\{#ExeBasename}.exe"; Tasks: addcontextmenufolders -Root: HKCU; Subkey: "SOFTWARE\Classes\directory\background\shell\{#RegValueName}\command"; ValueType: expandsz; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%V"""; Tasks: addcontextmenufolders -Root: HKCU; Subkey: "SOFTWARE\Classes\Drive\shell\{#RegValueName}"; ValueType: expandsz; ValueName: ""; ValueData: "Open w&ith {#ShellNameShort}"; Tasks: addcontextmenufolders; Flags: uninsdeletekey -Root: HKCU; Subkey: "SOFTWARE\Classes\Drive\shell\{#RegValueName}"; ValueType: expandsz; ValueName: "Icon"; ValueData: "{app}\{#ExeBasename}.exe"; Tasks: addcontextmenufolders -Root: HKCU; Subkey: "SOFTWARE\Classes\Drive\shell\{#RegValueName}\command"; ValueType: expandsz; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%V"""; Tasks: addcontextmenufolders - -[Code] -// Don't allow installing conflicting architectures -function InitializeSetup(): Boolean; -var - RegKey: String; - ThisArch: String; - AltArch: String; -begin - Result := True; - - if IsWin64 then begin - RegKey := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + copy('{#IncompatibleAppId}', 2, 38) + '_is1'; - - if '{#Arch}' = 'ia32' then begin - Result := not RegKeyExists(HKLM64, RegKey); - ThisArch := '32'; - AltArch := '64'; - end else begin - Result := not RegKeyExists(HKLM32, RegKey); - ThisArch := '64'; - AltArch := '32'; - end; - - if not Result then begin - MsgBox('Please uninstall the ' + AltArch + '-bit version of {#NameShort} before installing this ' + ThisArch + '-bit version.', mbInformation, MB_OK); - end; - end; -end; - -function WizardNotSilent(): Boolean; -begin - Result := not WizardSilent(); -end; - -// Updates -function IsBackgroundUpdate(): Boolean; -begin - Result := ExpandConstant('{param:update|false}') <> 'false'; -end; - -function IsNotUpdate(): Boolean; -begin - Result := not IsBackgroundUpdate(); -end; - -// VS Code will create a flag file before the update starts (/update=C:\foo\bar) -// - if the file exists at this point, the user quit Code before the update finished, so don't start Code after update -// - otherwise, the user has accepted to apply the update and Code should start -function LockFileExists(): Boolean; -begin - Result := FileExists(ExpandConstant('{param:update}')) -end; - -function ShouldRunAfterUpdate(): Boolean; -begin - if IsBackgroundUpdate() then - Result := not LockFileExists() - else - Result := True; -end; - -function GetAppMutex(Value: string): string; -begin - if IsBackgroundUpdate() then - Result := '' - else - Result := '{#AppMutex}'; -end; - -function GetDestDir(Value: string): string; -begin - if IsBackgroundUpdate() then - Result := ExpandConstant('{app}\_') - else - Result := ExpandConstant('{app}'); -end; - -function BoolToStr(Value: Boolean): String; -begin - if Value then - Result := 'true' - else - Result := 'false'; -end; - -procedure CurStepChanged(CurStep: TSetupStep); -var - UpdateResultCode: Integer; -begin - if IsBackgroundUpdate() and (CurStep = ssPostInstall) then - begin - CreateMutex('{#AppMutex}-ready'); - - while (CheckForMutexes('{#AppMutex}')) do - begin - Log('Application is still running, waiting'); - Sleep(1000); - end; - - Exec(ExpandConstant('{app}\tools\inno_updater.exe'), ExpandConstant('"{app}\{#ExeBasename}.exe" ' + BoolToStr(LockFileExists())), '', SW_SHOW, ewWaitUntilTerminated, UpdateResultCode); - end; -end; - -// http://stackoverflow.com/a/23838239/261019 -procedure Explode(var Dest: TArrayOfString; Text: String; Separator: String); -var - i, p: Integer; -begin - i := 0; - repeat - SetArrayLength(Dest, i+1); - p := Pos(Separator,Text); - if p > 0 then begin - Dest[i] := Copy(Text, 1, p-1); - Text := Copy(Text, p + Length(Separator), Length(Text)); - i := i + 1; - end else begin - Dest[i] := Text; - Text := ''; - end; - until Length(Text)=0; -end; - -function NeedsAddPath(Param: string): boolean; -var - OrigPath: string; -begin - if not RegQueryStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', OrigPath) - then begin - Result := True; - exit; - end; - Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0; -end; - -procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); -var - Path: string; - VSCodePath: string; - Parts: TArrayOfString; - NewPath: string; - i: Integer; -begin - if not CurUninstallStep = usUninstall then begin - exit; - end; - if not RegQueryStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', Path) - then begin - exit; - end; - NewPath := ''; - VSCodePath := ExpandConstant('{app}\bin') - Explode(Parts, Path, ';'); - for i:=0 to GetArrayLength(Parts)-1 do begin - if CompareText(Parts[i], VSCodePath) <> 0 then begin - NewPath := NewPath + Parts[i]; - - if i < GetArrayLength(Parts) - 1 then begin - NewPath := NewPath + ';'; - end; - end; - end; - RegWriteExpandStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', NewPath); -end; +#define LocalizedLanguageFile(Language = "") \ + DirExists(RepoDir + "\licenses") && Language != "" \ + ? ('; LicenseFile: "' + RepoDir + '\licenses\LICENSE-' + Language + '.txt"') \ + : '; LicenseFile: "' + RepoDir + '\LICENSE.txt"' + +[Setup] +AppId={#AppId} +AppName={#NameLong} +AppVerName={#NameVersion} +AppPublisher=Microsoft Corporation +AppPublisherURL=https://code.visualstudio.com/ +AppSupportURL=https://code.visualstudio.com/ +AppUpdatesURL=https://code.visualstudio.com/ +DefaultDirName={pf}\{#DirName} +DefaultGroupName={#NameLong} +AllowNoIcons=yes +OutputDir={#OutputDir} +OutputBaseFilename=VSCodeSetup +Compression=lzma +SolidCompression=yes +AppMutex={code:GetAppMutex} +SetupMutex={#AppMutex}setup +WizardImageFile={#RepoDir}\resources\win32\inno-big.bmp +WizardSmallImageFile={#RepoDir}\resources\win32\inno-small.bmp +SetupIconFile={#RepoDir}\resources\win32\code.ico +UninstallDisplayIcon={app}\{#ExeBasename}.exe +ChangesEnvironment=true +ChangesAssociations=true +MinVersion=6.1.7600 +SourceDir={#SourceDir} +AppVersion={#Version} +VersionInfoVersion={#RawVersion} +ShowLanguageDialog=auto +ArchitecturesAllowed={#ArchitecturesAllowed} +ArchitecturesInstallIn64BitMode={#ArchitecturesInstallIn64BitMode} + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl,{#RepoDir}\build\win32\i18n\messages.en.isl" {#LocalizedLanguageFile} +Name: "german"; MessagesFile: "compiler:Languages\German.isl,{#RepoDir}\build\win32\i18n\messages.de.isl" {#LocalizedLanguageFile("deu")} +Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl,{#RepoDir}\build\win32\i18n\messages.es.isl" {#LocalizedLanguageFile("esp")} +Name: "french"; MessagesFile: "compiler:Languages\French.isl,{#RepoDir}\build\win32\i18n\messages.fr.isl" {#LocalizedLanguageFile("fra")} +Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl,{#RepoDir}\build\win32\i18n\messages.it.isl" {#LocalizedLanguageFile("ita")} +Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl,{#RepoDir}\build\win32\i18n\messages.ja.isl" {#LocalizedLanguageFile("jpn")} +Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl,{#RepoDir}\build\win32\i18n\messages.ru.isl" {#LocalizedLanguageFile("rus")} +Name: "korean"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.ko.isl,{#RepoDir}\build\win32\i18n\messages.ko.isl" {#LocalizedLanguageFile("kor")} +Name: "simplifiedChinese"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.zh-cn.isl,{#RepoDir}\build\win32\i18n\messages.zh-cn.isl" {#LocalizedLanguageFile("chs")} +Name: "traditionalChinese"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.zh-tw.isl,{#RepoDir}\build\win32\i18n\messages.zh-tw.isl" {#LocalizedLanguageFile("cht")} + +[InstallDelete] +Type: filesandordirs; Name: "{app}\resources\app\out"; Check: IsNotUpdate +Type: filesandordirs; Name: "{app}\resources\app\plugins"; Check: IsNotUpdate +Type: filesandordirs; Name: "{app}\resources\app\extensions"; Check: IsNotUpdate +Type: filesandordirs; Name: "{app}\resources\app\node_modules"; Check: IsNotUpdate +Type: filesandordirs; Name: "{app}\resources\app\node_modules.asar.unpacked"; Check: IsNotUpdate +Type: files; Name: "{app}\resources\app\node_modules.asar"; Check: IsNotUpdate +Type: files; Name: "{app}\resources\app\Credits_45.0.2454.85.html"; Check: IsNotUpdate + +[UninstallDelete] +Type: filesandordirs; Name: "{app}\_" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked +Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 +Name: "addcontextmenufiles"; Description: "{cm:AddContextMenuFiles,{#NameShort}}"; GroupDescription: "{cm:Other}"; Flags: unchecked +Name: "addcontextmenufolders"; Description: "{cm:AddContextMenuFolders,{#NameShort}}"; GroupDescription: "{cm:Other}"; Flags: unchecked +Name: "associatewithfiles"; Description: "{cm:AssociateWithFiles,{#NameShort}}"; GroupDescription: "{cm:Other}"; Flags: unchecked +Name: "addtopath"; Description: "{cm:AddToPath}"; GroupDescription: "{cm:Other}" +Name: "runcode"; Description: "{cm:RunAfter,{#NameShort}}"; GroupDescription: "{cm:Other}"; Check: WizardSilent + +[Files] +Source: "*"; Excludes: "\tools,\tools\*"; DestDir: "{code:GetDestDir}"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "tools\*"; DestDir: "{app}\tools"; Flags: ignoreversion + +[Icons] +Name: "{group}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; AppUserModelID: "{#AppUserId}" +Name: "{commondesktop}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: desktopicon; AppUserModelID: "{#AppUserId}" +Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: quicklaunchicon; AppUserModelID: "{#AppUserId}" + +[Run] +Filename: "{app}\{#ExeBasename}.exe"; Description: "{cm:LaunchProgram,{#NameLong}}"; Tasks: runcode; Flags: nowait postinstall; Check: ShouldRunAfterUpdate +Filename: "{app}\{#ExeBasename}.exe"; Description: "{cm:LaunchProgram,{#NameLong}}"; Flags: nowait postinstall; Check: WizardNotSilent + +[Registry] +Root: HKCR; Subkey: ".ascx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".ascx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ascx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ascx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASCX}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ascx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ascx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ascx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".asp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".asp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.asp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.asp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASP}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.asp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.asp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.asp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".aspx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".aspx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.aspx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.aspx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASPX}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.aspx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.aspx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.aspx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".bash\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".bash\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".bash_login\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".bash_login\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash_login"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_login"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Login}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_login"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_login\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_login\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".bash_logout\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".bash_logout\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash_logout"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_logout"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Logout}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_logout"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_logout\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_logout\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".bash_profile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".bash_profile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash_profile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_profile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_profile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_profile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bash_profile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".bashrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".bashrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bashrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bashrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bashrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bashrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bashrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".bib\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".bib\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bib"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bib"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,BibTeX}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bib"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bib\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bib\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".bowerrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".bowerrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bowerrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bowerrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bower RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bowerrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bowerrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.bowerrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".c\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".c\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.c"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.c"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.c"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.c\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.c\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".cc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".cc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".clj\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".clj\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.clj"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.clj"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Clojure}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.clj"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.clj\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.clj\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".cljs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".cljs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cljs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cljs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ClojureScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cljs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cljs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cljs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".cljx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".cljx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cljx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cljx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CLJX}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cljx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cljx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cljx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".clojure\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".clojure\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.clojure"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.clojure"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Clojure}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.clojure"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.clojure\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.clojure\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".code-workspace\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".code-workspace\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.code-workspace"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.code-workspace"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Code Workspace}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.code"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.code-workspace\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.code-workspace\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".coffee\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".coffee\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.coffee"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.coffee"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CoffeeScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.coffee"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.coffee\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.coffee\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".config\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".config\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.config"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.config"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Configuration}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.config"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.config\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.config\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".cpp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".cpp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cpp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cpp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cpp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cpp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cpp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".cs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".cs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C#}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".cshtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".cshtml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cshtml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cshtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CSHTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cshtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cshtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cshtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".csproj\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".csproj\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.csproj"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.csproj"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C# Project}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.csproj"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.csproj\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.csproj\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".css\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".css\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.css"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.css"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CSS}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.css"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.css\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.css\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".csx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".csx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.csx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.csx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.csx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.csx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.csx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".ctp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".ctp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ctp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ctp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CakePHP Template}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ctp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ctp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ctp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".cxx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".cxx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cxx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cxx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cxx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cxx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.cxx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".dockerfile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".dockerfile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.dockerfile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dockerfile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Dockerfile}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dockerfile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dockerfile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dockerfile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".dot\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".dot\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.dot"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dot"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Dot}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dot"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dot\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dot\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".dtd\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".dtd\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.dtd"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dtd"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Document Type Definition}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dtd"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dtd\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.dtd\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".editorconfig\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".editorconfig\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.editorconfig"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.editorconfig"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Editor Config}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.editorconfig"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.editorconfig\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.editorconfig\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".edn\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".edn\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.edn"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.edn"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Extensible Data Notation}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.edn"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.edn\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.edn\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".eyaml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".eyaml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.eyaml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.eyaml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Hiera Eyaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.eyaml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.eyaml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.eyaml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".eyml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".eyml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.eyml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.eyml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Hiera Eyaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.eyml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.eyml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.eyml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".fs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".fs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.fs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F#}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".fsi\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".fsi\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.fsi"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsi"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F# Signature}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsi"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".fsscript\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".fsscript\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.fsscript"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsscript"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsscript"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsscript\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsscript\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".fsx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".fsx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.fsx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.fsx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".gemspec\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".gemspec\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.gemspec"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gemspec"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Gemspec}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gemspec"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gemspec\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gemspec\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".gitattributes\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".gitattributes\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.gitattributes"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitattributes"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Git Attributes}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitattributes"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitattributes"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitattributes\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitattributes\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".gitconfig\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".gitconfig\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.gitconfig"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitconfig"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Git Config}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitconfig"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitconfig"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitconfig\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitconfig\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".gitignore\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".gitignore\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.gitignore"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitignore"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Git Ignore}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitignore"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitignore"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitignore\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.gitignore\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".go\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".go\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.go"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.go"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Go}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.go"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.go\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.go\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".h\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".h\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.h"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.h"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.h"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.h\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.h\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".handlebars\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".handlebars\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.handlebars"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.handlebars"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Handlebars}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.handlebars"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.handlebars\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.handlebars\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".hbs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".hbs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.hbs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hbs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Handlebars}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hbs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hbs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hbs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".hh\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".hh\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.hh"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hh"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hh"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hh\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hh\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".hpp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".hpp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.hpp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hpp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hpp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hpp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hpp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".htm\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".htm\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.htm"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.htm"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,HTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.htm"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.htm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.htm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".html\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".html\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.html"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.html"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,HTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.html"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.html\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.html\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".hxx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".hxx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.hxx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hxx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hxx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hxx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.hxx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".ini\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".ini\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ini"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ini"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,INI}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ini"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ini\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ini\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".jade\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".jade\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jade"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jade"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Jade}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jade"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jade\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jade\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".jav\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".jav\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jav"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jav"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Java}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jav"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jav\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jav\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".java\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".java\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.java"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.java"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Java}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.java"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.java\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.java\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".js\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".js\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.js"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.js"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.js"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.js\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.js\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".jscsrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".jscsrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jscsrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jscsrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JSCS RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jscsrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jscsrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jscsrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".jshintrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".jshintrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jshintrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jshintrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JSHint RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jshintrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jshintrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jshintrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".jshtm\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".jshtm\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jshtm"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jshtm"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript HTML Template}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jshtm"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jshtm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jshtm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".json\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".json\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.json"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.json"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JSON}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.json"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.json\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.json\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".jsp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".jsp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.jsp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jsp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Java Server Pages}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jsp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jsp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.jsp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".less\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".less\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.less"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.less"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,LESS}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.less"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.less\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.less\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".lua\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".lua\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.lua"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.lua"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Lua}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.lua"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.lua\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.lua\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".m\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".m\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.m"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.m"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Objective C}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.m"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.m\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.m\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".makefile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".makefile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.makefile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.makefile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Makefile}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.makefile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.makefile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.makefile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".markdown\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".markdown\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.markdown"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.markdown"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.markdown"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.markdown\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.markdown\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".md\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".md\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.md"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.md"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.md"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.md\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.md\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".mdoc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".mdoc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdoc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdoc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,MDoc}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdoc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdoc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdoc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".mdown\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".mdown\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdown"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdown"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdown"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdown\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdown\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".mdtext\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".mdtext\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdtext"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdtext"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdtext"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdtext\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdtext\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".mdtxt\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".mdtxt\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdtxt"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdtxt"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdtxt"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdtxt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdtxt\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".mdwn\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".mdwn\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mdwn"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdwn"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdwn"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdwn\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mdwn\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".mkd\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".mkd\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mkd"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mkd"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mkd"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mkd\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mkd\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".mkdn\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".mkdn\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mkdn"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mkdn"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mkdn"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mkdn\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mkdn\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".ml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".ml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,OCaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".mli\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".mli\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.mli"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mli"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,OCaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mli"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mli\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.mli\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".npmignore\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".npmignore\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.npmignore"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.npmignore"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,NPM Ignore}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.npmignore"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.npmignore"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.npmignore\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.npmignore\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".php\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".php\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.php"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.php"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PHP}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.php"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.php\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.php\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".phtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".phtml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.phtml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.phtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PHP HTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.phtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.phtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.phtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".pl\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".pl\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pl"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pl"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pl"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pl\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pl\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".pl6\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".pl6\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pl6"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pl6"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl 6}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pl6"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pl6\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pl6\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".pm\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".pm\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pm"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pm"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl Module}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pm"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".pm6\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".pm6\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pm6"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pm6"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl 6 Module}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pm6"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pm6\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pm6\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".pod\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".pod\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pod"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pod"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl POD}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pod"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pod\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pod\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".pp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".pp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.pp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.pp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".profile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".profile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.profile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.profile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.profile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.profile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.profile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".properties\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".properties\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.properties"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.properties"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Properties}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.properties"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.properties\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.properties\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".ps1\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".ps1\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ps1"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ps1"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PowerShell}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ps1"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ps1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ps1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".psd1\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".psd1\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.psd1"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psd1"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PowerShell Module Manifest}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psd1"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psd1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psd1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".psgi\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".psgi\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.psgi"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psgi"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl CGI}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psgi"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psgi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psgi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".psm1\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".psm1\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.psm1"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psm1"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PowerShell Module}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psm1"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psm1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.psm1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".py\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".py\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.py"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.py"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Python}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.py"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.py\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.py\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".r\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".r\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.r"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.r"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,R}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.r"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.r\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.r\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".rb\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".rb\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rb"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rb"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Ruby}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rb"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rb\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rb\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".rhistory\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".rhistory\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rhistory"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rhistory"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,R History}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rhistory"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rhistory\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rhistory\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".rprofile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".rprofile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rprofile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rprofile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,R Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rprofile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rprofile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rprofile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".rs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".rs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Rust}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".rt\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".rt\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.rt"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rt"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Rich Text}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rt"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.rt\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".scss\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".scss\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.scss"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.scss"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Sass}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.scss"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.scss\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.scss\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".sh\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".sh\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.sh"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.sh"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SH}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.sh"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.sh\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.sh\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".shtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".shtml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.shtml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.shtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SHTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.shtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.shtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.shtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".sql\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".sql\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.sql"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.sql"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SQL}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.sql"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.sql\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.sql\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".svg\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".svg\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.svg"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.svg"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SVG}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.svg"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.svg\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.svg\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".svgz\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".svgz\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.svgz"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.svgz"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SVGZ}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.svgz"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.svgz\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.svgz\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".t\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".t\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.t"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.t"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.t"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.t\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.t\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".tex\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".tex\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.tex"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.tex"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,LaTeX}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.tex"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.tex\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.tex\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".ts\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".ts\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ts"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ts"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,TypeScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ts"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ts\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.ts\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".txt\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".txt\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.txt"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.txt"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Text}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.txt"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.txt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.txt\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".vb\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".vb\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.vb"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.vb"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Visual Basic}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.vb"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.vb\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.vb\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".wxi\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".wxi\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.wxi"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxi"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,WiX Include}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxi"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".wxl\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".wxl\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.wxl"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxl"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,WiX Localization}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxl"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxl\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxl\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".wxs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".wxs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.wxs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,WiX}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.wxs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".xaml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".xaml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.xaml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.xaml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,XAML}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.xaml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.xaml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.xaml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".xml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".xml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.xml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.xml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,XML}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.xml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.xml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.xml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".yaml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".yaml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.yaml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.yaml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Yaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.yaml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.yaml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.yaml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".yml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".yml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.yml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.yml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Yaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.yml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.yml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.yml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: ".zsh\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: ".zsh\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.zsh"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.zsh"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ZSH}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.zsh"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.zsh\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico"; Tasks: associatewithfiles +Root: HKCR; Subkey: "{#RegValueName}.zsh\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles + +Root: HKCR; Subkey: "{#RegValueName}SourceFile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,{#NameLong}}"; Flags: uninsdeletekey +Root: HKCR; Subkey: "{#RegValueName}SourceFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico" +Root: HKCR; Subkey: "{#RegValueName}SourceFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1""" + +Root: HKCR; Subkey: "Applications\{#ExeBasename}.exe"; ValueType: none; ValueName: ""; Flags: uninsdeletekey +Root: HKCR; Subkey: "Applications\{#ExeBasename}.exe\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\code_file.ico" +Root: HKCR; Subkey: "Applications\{#ExeBasename}.exe\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1""" + +Root: HKCU; Subkey: "Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}\bin"; Tasks: addtopath; Check: NeedsAddPath(ExpandConstant('{app}\bin')) + +Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\{#RegValueName}"; ValueType: expandsz; ValueName: ""; ValueData: "Open w&ith {#ShellNameShort}"; Tasks: addcontextmenufiles; Flags: uninsdeletekey +Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\{#RegValueName}"; ValueType: expandsz; ValueName: "Icon"; ValueData: "{app}\{#ExeBasename}.exe"; Tasks: addcontextmenufiles +Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\{#RegValueName}\command"; ValueType: expandsz; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: addcontextmenufiles +Root: HKCU; Subkey: "SOFTWARE\Classes\directory\shell\{#RegValueName}"; ValueType: expandsz; ValueName: ""; ValueData: "Open w&ith {#ShellNameShort}"; Tasks: addcontextmenufolders; Flags: uninsdeletekey +Root: HKCU; Subkey: "SOFTWARE\Classes\directory\shell\{#RegValueName}"; ValueType: expandsz; ValueName: "Icon"; ValueData: "{app}\{#ExeBasename}.exe"; Tasks: addcontextmenufolders +Root: HKCU; Subkey: "SOFTWARE\Classes\directory\shell\{#RegValueName}\command"; ValueType: expandsz; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%V"""; Tasks: addcontextmenufolders +Root: HKCU; Subkey: "SOFTWARE\Classes\directory\background\shell\{#RegValueName}"; ValueType: expandsz; ValueName: ""; ValueData: "Open w&ith {#ShellNameShort}"; Tasks: addcontextmenufolders; Flags: uninsdeletekey +Root: HKCU; Subkey: "SOFTWARE\Classes\directory\background\shell\{#RegValueName}"; ValueType: expandsz; ValueName: "Icon"; ValueData: "{app}\{#ExeBasename}.exe"; Tasks: addcontextmenufolders +Root: HKCU; Subkey: "SOFTWARE\Classes\directory\background\shell\{#RegValueName}\command"; ValueType: expandsz; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%V"""; Tasks: addcontextmenufolders +Root: HKCU; Subkey: "SOFTWARE\Classes\Drive\shell\{#RegValueName}"; ValueType: expandsz; ValueName: ""; ValueData: "Open w&ith {#ShellNameShort}"; Tasks: addcontextmenufolders; Flags: uninsdeletekey +Root: HKCU; Subkey: "SOFTWARE\Classes\Drive\shell\{#RegValueName}"; ValueType: expandsz; ValueName: "Icon"; ValueData: "{app}\{#ExeBasename}.exe"; Tasks: addcontextmenufolders +Root: HKCU; Subkey: "SOFTWARE\Classes\Drive\shell\{#RegValueName}\command"; ValueType: expandsz; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%V"""; Tasks: addcontextmenufolders + +[Code] +// Don't allow installing conflicting architectures +function InitializeSetup(): Boolean; +var + RegKey: String; + ThisArch: String; + AltArch: String; +begin + Result := True; + + if IsWin64 then begin + RegKey := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + copy('{#IncompatibleAppId}', 2, 38) + '_is1'; + + if '{#Arch}' = 'ia32' then begin + Result := not RegKeyExists(HKLM64, RegKey); + ThisArch := '32'; + AltArch := '64'; + end else begin + Result := not RegKeyExists(HKLM32, RegKey); + ThisArch := '64'; + AltArch := '32'; + end; + + if not Result then begin + MsgBox('Please uninstall the ' + AltArch + '-bit version of {#NameShort} before installing this ' + ThisArch + '-bit version.', mbInformation, MB_OK); + end; + end; +end; + +function WizardNotSilent(): Boolean; +begin + Result := not WizardSilent(); +end; + +// Updates +function IsBackgroundUpdate(): Boolean; +begin + Result := ExpandConstant('{param:update|false}') <> 'false'; +end; + +function IsNotUpdate(): Boolean; +begin + Result := not IsBackgroundUpdate(); +end; + +// VS Code will create a flag file before the update starts (/update=C:\foo\bar) +// - if the file exists at this point, the user quit Code before the update finished, so don't start Code after update +// - otherwise, the user has accepted to apply the update and Code should start +function LockFileExists(): Boolean; +begin + Result := FileExists(ExpandConstant('{param:update}')) +end; + +function ShouldRunAfterUpdate(): Boolean; +begin + if IsBackgroundUpdate() then + Result := not LockFileExists() + else + Result := True; +end; + +function GetAppMutex(Value: string): string; +begin + if IsBackgroundUpdate() then + Result := '' + else + Result := '{#AppMutex}'; +end; + +function GetDestDir(Value: string): string; +begin + if IsBackgroundUpdate() then + Result := ExpandConstant('{app}\_') + else + Result := ExpandConstant('{app}'); +end; + +function BoolToStr(Value: Boolean): String; +begin + if Value then + Result := 'true' + else + Result := 'false'; +end; + +procedure CurStepChanged(CurStep: TSetupStep); +var + UpdateResultCode: Integer; +begin + if IsBackgroundUpdate() and (CurStep = ssPostInstall) then + begin + CreateMutex('{#AppMutex}-ready'); + + while (CheckForMutexes('{#AppMutex}')) do + begin + Log('Application is still running, waiting'); + Sleep(1000); + end; + + Exec(ExpandConstant('{app}\tools\inno_updater.exe'), ExpandConstant('"{app}\{#ExeBasename}.exe" ' + BoolToStr(LockFileExists())), '', SW_SHOW, ewWaitUntilTerminated, UpdateResultCode); + end; +end; + +// http://stackoverflow.com/a/23838239/261019 +procedure Explode(var Dest: TArrayOfString; Text: String; Separator: String); +var + i, p: Integer; +begin + i := 0; + repeat + SetArrayLength(Dest, i+1); + p := Pos(Separator,Text); + if p > 0 then begin + Dest[i] := Copy(Text, 1, p-1); + Text := Copy(Text, p + Length(Separator), Length(Text)); + i := i + 1; + end else begin + Dest[i] := Text; + Text := ''; + end; + until Length(Text)=0; +end; + +function NeedsAddPath(Param: string): boolean; +var + OrigPath: string; +begin + if not RegQueryStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', OrigPath) + then begin + Result := True; + exit; + end; + Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0; +end; + +procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); +var + Path: string; + VSCodePath: string; + Parts: TArrayOfString; + NewPath: string; + i: Integer; +begin + if not CurUninstallStep = usUninstall then begin + exit; + end; + if not RegQueryStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', Path) + then begin + exit; + end; + NewPath := ''; + VSCodePath := ExpandConstant('{app}\bin') + Explode(Parts, Path, ';'); + for i:=0 to GetArrayLength(Parts)-1 do begin + if CompareText(Parts[i], VSCodePath) <> 0 then begin + NewPath := NewPath + Parts[i]; + + if i < GetArrayLength(Parts) - 1 then begin + NewPath := NewPath + ';'; + end; + end; + end; + RegWriteExpandStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', NewPath); +end; diff --git a/build/win32/i18n/Default.isl b/build/win32/i18n/Default.isl index 1d3be6eacfa..fdcfbb16568 100644 --- a/build/win32/i18n/Default.isl +++ b/build/win32/i18n/Default.isl @@ -1,337 +1,337 @@ -; *** Inno Setup version 5.5.3+ English messages *** -; -; To download user-contributed translations of this file, go to: -; http://www.jrsoftware.org/files/istrans/ -; -; Note: When translating this text, do not add periods (.) to the end of -; messages that didn't have them already, because on those messages Inno -; Setup adds the periods automatically (appending a period would result in -; two periods being displayed). - -[LangOptions] -; The following three entries are very important. Be sure to read and -; understand the '[LangOptions] section' topic in the help file. -LanguageName=English -LanguageID=$0409 -LanguageCodePage=0 -; If the language you are translating to requires special font faces or -; sizes, uncomment any of the following entries and change them accordingly. -;DialogFontName= -;DialogFontSize=8 -;WelcomeFontName=Verdana -;WelcomeFontSize=12 -;TitleFontName=Arial -;TitleFontSize=29 -;CopyrightFontName=Arial -;CopyrightFontSize=8 - -[Messages] - -; *** Application titles -SetupAppTitle=Setup -SetupWindowTitle=Setup - %1 -UninstallAppTitle=Uninstall -UninstallAppFullTitle=%1 Uninstall - -; *** Misc. common -InformationTitle=Information -ConfirmTitle=Confirm -ErrorTitle=Error - -; *** SetupLdr messages -SetupLdrStartupMessage=This will install %1. Do you wish to continue? -LdrCannotCreateTemp=Unable to create a temporary file. Setup aborted -LdrCannotExecTemp=Unable to execute file in the temporary directory. Setup aborted - -; *** Startup error messages -LastErrorMessage=%1.%n%nError %2: %3 -SetupFileMissing=The file %1 is missing from the installation directory. Please correct the problem or obtain a new copy of the program. -SetupFileCorrupt=The setup files are corrupted. Please obtain a new copy of the program. -SetupFileCorruptOrWrongVer=The setup files are corrupted, or are incompatible with this version of Setup. Please correct the problem or obtain a new copy of the program. -InvalidParameter=An invalid parameter was passed on the command line:%n%n%1 -SetupAlreadyRunning=Setup is already running. -WindowsVersionNotSupported=This program does not support the version of Windows your computer is running. -WindowsServicePackRequired=This program requires %1 Service Pack %2 or later. -NotOnThisPlatform=This program will not run on %1. -OnlyOnThisPlatform=This program must be run on %1. -OnlyOnTheseArchitectures=This program can only be installed on versions of Windows designed for the following processor architectures:%n%n%1 -MissingWOW64APIs=The version of Windows you are running does not include functionality required by Setup to perform a 64-bit installation. To correct this problem, please install Service Pack %1. -WinVersionTooLowError=This program requires %1 version %2 or later. -WinVersionTooHighError=This program cannot be installed on %1 version %2 or later. -AdminPrivilegesRequired=You must be logged in as an administrator when installing this program. -PowerUserPrivilegesRequired=You must be logged in as an administrator or as a member of the Power Users group when installing this program. -SetupAppRunningError=Setup has detected that %1 is currently running.%n%nPlease close all instances of it now, then click OK to continue, or Cancel to exit. -UninstallAppRunningError=Uninstall has detected that %1 is currently running.%n%nPlease close all instances of it now, then click OK to continue, or Cancel to exit. - -; *** Misc. errors -ErrorCreatingDir=Setup was unable to create the directory "%1" -ErrorTooManyFilesInDir=Unable to create a file in the directory "%1" because it contains too many files - -; *** Setup common messages -ExitSetupTitle=Exit Setup -ExitSetupMessage=Setup is not complete. If you exit now, the program will not be installed.%n%nYou may run Setup again at another time to complete the installation.%n%nExit Setup? -AboutSetupMenuItem=&About Setup... -AboutSetupTitle=About Setup -AboutSetupMessage=%1 version %2%n%3%n%n%1 home page:%n%4 -AboutSetupNote= -TranslatorNote= - -; *** Buttons -ButtonBack=< &Back -ButtonNext=&Next > -ButtonInstall=&Install -ButtonOK=OK -ButtonCancel=Cancel -ButtonYes=&Yes -ButtonYesToAll=Yes to &All -ButtonNo=&No -ButtonNoToAll=N&o to All -ButtonFinish=&Finish -ButtonBrowse=&Browse... -ButtonWizardBrowse=B&rowse... -ButtonNewFolder=&Make New Folder - -; *** "Select Language" dialog messages -SelectLanguageTitle=Select Setup Language -SelectLanguageLabel=Select the language to use during the installation: - -; *** Common wizard text -ClickNext=Click Next to continue, or Cancel to exit Setup. -BeveledLabel= -BrowseDialogTitle=Browse For Folder -BrowseDialogLabel=Select a folder in the list below, then click OK. -NewFolderName=New Folder - -; *** "Welcome" wizard page -WelcomeLabel1=Welcome to the [name] Setup Wizard -WelcomeLabel2=This will install [name/ver] on your computer.%n%nIt is recommended that you close all other applications before continuing. - -; *** "Password" wizard page -WizardPassword=Password -PasswordLabel1=This installation is password protected. -PasswordLabel3=Please provide the password, then click Next to continue. Passwords are case-sensitive. -PasswordEditLabel=&Password: -IncorrectPassword=The password you entered is not correct. Please try again. - -; *** "License Agreement" wizard page -WizardLicense=License Agreement -LicenseLabel=Please read the following important information before continuing. -LicenseLabel3=Please read the following License Agreement. You must accept the terms of this agreement before continuing with the installation. -LicenseAccepted=I &accept the agreement -LicenseNotAccepted=I &do not accept the agreement - -; *** "Information" wizard pages -WizardInfoBefore=Information -InfoBeforeLabel=Please read the following important information before continuing. -InfoBeforeClickLabel=When you are ready to continue with Setup, click Next. -WizardInfoAfter=Information -InfoAfterLabel=Please read the following important information before continuing. -InfoAfterClickLabel=When you are ready to continue with Setup, click Next. - -; *** "User Information" wizard page -WizardUserInfo=User Information -UserInfoDesc=Please enter your information. -UserInfoName=&User Name: -UserInfoOrg=&Organization: -UserInfoSerial=&Serial Number: -UserInfoNameRequired=You must enter a name. - -; *** "Select Destination Location" wizard page -WizardSelectDir=Select Destination Location -SelectDirDesc=Where should [name] be installed? -SelectDirLabel3=Setup will install [name] into the following folder. -SelectDirBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse. -DiskSpaceMBLabel=At least [mb] MB of free disk space is required. -CannotInstallToNetworkDrive=Setup cannot install to a network drive. -CannotInstallToUNCPath=Setup cannot install to a UNC path. -InvalidPath=You must enter a full path with drive letter; for example:%n%nC:\APP%n%nor a UNC path in the form:%n%n\\server\share -InvalidDrive=The drive or UNC share you selected does not exist or is not accessible. Please select another. -DiskSpaceWarningTitle=Not Enough Disk Space -DiskSpaceWarning=Setup requires at least %1 KB of free space to install, but the selected drive only has %2 KB available.%n%nDo you want to continue anyway? -DirNameTooLong=The folder name or path is too long. -InvalidDirName=The folder name is not valid. -BadDirName32=Folder names cannot include any of the following characters:%n%n%1 -DirExistsTitle=Folder Exists -DirExists=The folder:%n%n%1%n%nalready exists. Would you like to install to that folder anyway? -DirDoesntExistTitle=Folder Does Not Exist -DirDoesntExist=The folder:%n%n%1%n%ndoes not exist. Would you like the folder to be created? - -; *** "Select Components" wizard page -WizardSelectComponents=Select Components -SelectComponentsDesc=Which components should be installed? -SelectComponentsLabel2=Select the components you want to install; clear the components you do not want to install. Click Next when you are ready to continue. -FullInstallation=Full installation -; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) -CompactInstallation=Compact installation -CustomInstallation=Custom installation -NoUninstallWarningTitle=Components Exist -NoUninstallWarning=Setup has detected that the following components are already installed on your computer:%n%n%1%n%nDeselecting these components will not uninstall them.%n%nWould you like to continue anyway? -ComponentSize1=%1 KB -ComponentSize2=%1 MB -ComponentsDiskSpaceMBLabel=Current selection requires at least [mb] MB of disk space. - -; *** "Select Additional Tasks" wizard page -WizardSelectTasks=Select Additional Tasks -SelectTasksDesc=Which additional tasks should be performed? -SelectTasksLabel2=Select the additional tasks you would like Setup to perform while installing [name], then click Next. - -; *** "Select Start Menu Folder" wizard page -WizardSelectProgramGroup=Select Start Menu Folder -SelectStartMenuFolderDesc=Where should Setup place the program's shortcuts? -SelectStartMenuFolderLabel3=Setup will create the program's shortcuts in the following Start Menu folder. -SelectStartMenuFolderBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse. -MustEnterGroupName=You must enter a folder name. -GroupNameTooLong=The folder name or path is too long. -InvalidGroupName=The folder name is not valid. -BadGroupName=The folder name cannot include any of the following characters:%n%n%1 -NoProgramGroupCheck2=&Don't create a Start Menu folder - -; *** "Ready to Install" wizard page -WizardReady=Ready to Install -ReadyLabel1=Setup is now ready to begin installing [name] on your computer. -ReadyLabel2a=Click Install to continue with the installation, or click Back if you want to review or change any settings. -ReadyLabel2b=Click Install to continue with the installation. -ReadyMemoUserInfo=User information: -ReadyMemoDir=Destination location: -ReadyMemoType=Setup type: -ReadyMemoComponents=Selected components: -ReadyMemoGroup=Start Menu folder: -ReadyMemoTasks=Additional tasks: - -; *** "Preparing to Install" wizard page -WizardPreparing=Preparing to Install -PreparingDesc=Setup is preparing to install [name] on your computer. -PreviousInstallNotCompleted=The installation/removal of a previous program was not completed. You will need to restart your computer to complete that installation.%n%nAfter restarting your computer, run Setup again to complete the installation of [name]. -CannotContinue=Setup cannot continue. Please click Cancel to exit. -ApplicationsFound=The following applications are using files that need to be updated by Setup. It is recommended that you allow Setup to automatically close these applications. -ApplicationsFound2=The following applications are using files that need to be updated by Setup. It is recommended that you allow Setup to automatically close these applications. After the installation has completed, Setup will attempt to restart the applications. -CloseApplications=&Automatically close the applications -DontCloseApplications=&Do not close the applications -ErrorCloseApplications=Setup was unable to automatically close all applications. It is recommended that you close all applications using files that need to be updated by Setup before continuing. - -; *** "Installing" wizard page -WizardInstalling=Installing -InstallingLabel=Please wait while Setup installs [name] on your computer. - -; *** "Setup Completed" wizard page -FinishedHeadingLabel=Completing the [name] Setup Wizard -FinishedLabelNoIcons=Setup has finished installing [name] on your computer. -FinishedLabel=Setup has finished installing [name] on your computer. The application may be launched by selecting the installed shortcuts. -ClickFinish=Click Finish to exit Setup. -FinishedRestartLabel=To complete the installation of [name], Setup must restart your computer. Would you like to restart now? -FinishedRestartMessage=To complete the installation of [name], Setup must restart your computer.%n%nWould you like to restart now? -ShowReadmeCheck=Yes, I would like to view the README file -YesRadio=&Yes, restart the computer now -NoRadio=&No, I will restart the computer later -; used for example as 'Run MyProg.exe' -RunEntryExec=Run %1 -; used for example as 'View Readme.txt' -RunEntryShellExec=View %1 - -; *** "Setup Needs the Next Disk" stuff -ChangeDiskTitle=Setup Needs the Next Disk -SelectDiskLabel2=Please insert Disk %1 and click OK.%n%nIf the files on this disk can be found in a folder other than the one displayed below, enter the correct path or click Browse. -PathLabel=&Path: -FileNotInDir2=The file "%1" could not be located in "%2". Please insert the correct disk or select another folder. -SelectDirectoryLabel=Please specify the location of the next disk. - -; *** Installation phase messages -SetupAborted=Setup was not completed.%n%nPlease correct the problem and run Setup again. -EntryAbortRetryIgnore=Click Retry to try again, Ignore to proceed anyway, or Abort to cancel installation. - -; *** Installation status messages -StatusClosingApplications=Closing applications... -StatusCreateDirs=Creating directories... -StatusExtractFiles=Extracting files... -StatusCreateIcons=Creating shortcuts... -StatusCreateIniEntries=Creating INI entries... -StatusCreateRegistryEntries=Creating registry entries... -StatusRegisterFiles=Registering files... -StatusSavingUninstall=Saving uninstall information... -StatusRunProgram=Finishing installation... -StatusRestartingApplications=Restarting applications... -StatusRollback=Rolling back changes... - -; *** Misc. errors -ErrorInternal2=Internal error: %1 -ErrorFunctionFailedNoCode=%1 failed -ErrorFunctionFailed=%1 failed; code %2 -ErrorFunctionFailedWithMessage=%1 failed; code %2.%n%3 -ErrorExecutingProgram=Unable to execute file:%n%1 - -; *** Registry errors -ErrorRegOpenKey=Error opening registry key:%n%1\%2 -ErrorRegCreateKey=Error creating registry key:%n%1\%2 -ErrorRegWriteKey=Error writing to registry key:%n%1\%2 - -; *** INI errors -ErrorIniEntry=Error creating INI entry in file "%1". - -; *** File copying errors -FileAbortRetryIgnore=Click Retry to try again, Ignore to skip this file (not recommended), or Abort to cancel installation. -FileAbortRetryIgnore2=Click Retry to try again, Ignore to proceed anyway (not recommended), or Abort to cancel installation. -SourceIsCorrupted=The source file is corrupted -SourceDoesntExist=The source file "%1" does not exist -ExistingFileReadOnly=The existing file is marked as read-only.%n%nClick Retry to remove the read-only attribute and try again, Ignore to skip this file, or Abort to cancel installation. -ErrorReadingExistingDest=An error occurred while trying to read the existing file: -FileExists=The file already exists.%n%nWould you like Setup to overwrite it? -ExistingFileNewer=The existing file is newer than the one Setup is trying to install. It is recommended that you keep the existing file.%n%nDo you want to keep the existing file? -ErrorChangingAttr=An error occurred while trying to change the attributes of the existing file: -ErrorCreatingTemp=An error occurred while trying to create a file in the destination directory: -ErrorReadingSource=An error occurred while trying to read the source file: -ErrorCopying=An error occurred while trying to copy a file: -ErrorReplacingExistingFile=An error occurred while trying to replace the existing file: -ErrorRestartReplace=RestartReplace failed: -ErrorRenamingTemp=An error occurred while trying to rename a file in the destination directory: -ErrorRegisterServer=Unable to register the DLL/OCX: %1 -ErrorRegSvr32Failed=RegSvr32 failed with exit code %1 -ErrorRegisterTypeLib=Unable to register the type library: %1 - -; *** Post-installation errors -ErrorOpeningReadme=An error occurred while trying to open the README file. -ErrorRestartingComputer=Setup was unable to restart the computer. Please do this manually. - -; *** Uninstaller messages -UninstallNotFound=File "%1" does not exist. Cannot uninstall. -UninstallOpenError=File "%1" could not be opened. Cannot uninstall -UninstallUnsupportedVer=The uninstall log file "%1" is in a format not recognized by this version of the uninstaller. Cannot uninstall -UninstallUnknownEntry=An unknown entry (%1) was encountered in the uninstall log -ConfirmUninstall=Are you sure you want to completely remove %1 and all of its components? -UninstallOnlyOnWin64=This installation can only be uninstalled on 64-bit Windows. -OnlyAdminCanUninstall=This installation can only be uninstalled by a user with administrative privileges. -UninstallStatusLabel=Please wait while %1 is removed from your computer. -UninstalledAll=%1 was successfully removed from your computer. -UninstalledMost=%1 uninstall complete.%n%nSome elements could not be removed. These can be removed manually. -UninstalledAndNeedsRestart=To complete the uninstallation of %1, your computer must be restarted.%n%nWould you like to restart now? -UninstallDataCorrupted="%1" file is corrupted. Cannot uninstall - -; *** Uninstallation phase messages -ConfirmDeleteSharedFileTitle=Remove Shared File? -ConfirmDeleteSharedFile2=The system indicates that the following shared file is no longer in use by any programs. Would you like for Uninstall to remove this shared file?%n%nIf any programs are still using this file and it is removed, those programs may not function properly. If you are unsure, choose No. Leaving the file on your system will not cause any harm. -SharedFileNameLabel=File name: -SharedFileLocationLabel=Location: -WizardUninstalling=Uninstall Status -StatusUninstalling=Uninstalling %1... - -; *** Shutdown block reasons -ShutdownBlockReasonInstallingApp=Installing %1. -ShutdownBlockReasonUninstallingApp=Uninstalling %1. - -; The custom messages below aren't used by Setup itself, but if you make -; use of them in your scripts, you'll want to translate them. - -[CustomMessages] - -NameAndVersion=%1 version %2 -AdditionalIcons=Additional shortcuts: -CreateDesktopIcon=Create a &desktop shortcut -CreateQuickLaunchIcon=Create a &Quick Launch shortcut -ProgramOnTheWeb=%1 on the Web -UninstallProgram=Uninstall %1 -LaunchProgram=Launch %1 -AssocFileExtension=&Associate %1 with the %2 file extension -AssocingFileExtension=Associating %1 with the %2 file extension... -AutoStartProgramGroupDescription=Startup: -AutoStartProgram=Automatically start %1 -AddonHostProgramNotFound=%1 could not be located in the folder you selected.%n%nDo you want to continue anyway? - +; *** Inno Setup version 5.5.3+ English messages *** +; +; To download user-contributed translations of this file, go to: +; http://www.jrsoftware.org/files/istrans/ +; +; Note: When translating this text, do not add periods (.) to the end of +; messages that didn't have them already, because on those messages Inno +; Setup adds the periods automatically (appending a period would result in +; two periods being displayed). + +[LangOptions] +; The following three entries are very important. Be sure to read and +; understand the '[LangOptions] section' topic in the help file. +LanguageName=English +LanguageID=$0409 +LanguageCodePage=0 +; If the language you are translating to requires special font faces or +; sizes, uncomment any of the following entries and change them accordingly. +;DialogFontName= +;DialogFontSize=8 +;WelcomeFontName=Verdana +;WelcomeFontSize=12 +;TitleFontName=Arial +;TitleFontSize=29 +;CopyrightFontName=Arial +;CopyrightFontSize=8 + +[Messages] + +; *** Application titles +SetupAppTitle=Setup +SetupWindowTitle=Setup - %1 +UninstallAppTitle=Uninstall +UninstallAppFullTitle=%1 Uninstall + +; *** Misc. common +InformationTitle=Information +ConfirmTitle=Confirm +ErrorTitle=Error + +; *** SetupLdr messages +SetupLdrStartupMessage=This will install %1. Do you wish to continue? +LdrCannotCreateTemp=Unable to create a temporary file. Setup aborted +LdrCannotExecTemp=Unable to execute file in the temporary directory. Setup aborted + +; *** Startup error messages +LastErrorMessage=%1.%n%nError %2: %3 +SetupFileMissing=The file %1 is missing from the installation directory. Please correct the problem or obtain a new copy of the program. +SetupFileCorrupt=The setup files are corrupted. Please obtain a new copy of the program. +SetupFileCorruptOrWrongVer=The setup files are corrupted, or are incompatible with this version of Setup. Please correct the problem or obtain a new copy of the program. +InvalidParameter=An invalid parameter was passed on the command line:%n%n%1 +SetupAlreadyRunning=Setup is already running. +WindowsVersionNotSupported=This program does not support the version of Windows your computer is running. +WindowsServicePackRequired=This program requires %1 Service Pack %2 or later. +NotOnThisPlatform=This program will not run on %1. +OnlyOnThisPlatform=This program must be run on %1. +OnlyOnTheseArchitectures=This program can only be installed on versions of Windows designed for the following processor architectures:%n%n%1 +MissingWOW64APIs=The version of Windows you are running does not include functionality required by Setup to perform a 64-bit installation. To correct this problem, please install Service Pack %1. +WinVersionTooLowError=This program requires %1 version %2 or later. +WinVersionTooHighError=This program cannot be installed on %1 version %2 or later. +AdminPrivilegesRequired=You must be logged in as an administrator when installing this program. +PowerUserPrivilegesRequired=You must be logged in as an administrator or as a member of the Power Users group when installing this program. +SetupAppRunningError=Setup has detected that %1 is currently running.%n%nPlease close all instances of it now, then click OK to continue, or Cancel to exit. +UninstallAppRunningError=Uninstall has detected that %1 is currently running.%n%nPlease close all instances of it now, then click OK to continue, or Cancel to exit. + +; *** Misc. errors +ErrorCreatingDir=Setup was unable to create the directory "%1" +ErrorTooManyFilesInDir=Unable to create a file in the directory "%1" because it contains too many files + +; *** Setup common messages +ExitSetupTitle=Exit Setup +ExitSetupMessage=Setup is not complete. If you exit now, the program will not be installed.%n%nYou may run Setup again at another time to complete the installation.%n%nExit Setup? +AboutSetupMenuItem=&About Setup... +AboutSetupTitle=About Setup +AboutSetupMessage=%1 version %2%n%3%n%n%1 home page:%n%4 +AboutSetupNote= +TranslatorNote= + +; *** Buttons +ButtonBack=< &Back +ButtonNext=&Next > +ButtonInstall=&Install +ButtonOK=OK +ButtonCancel=Cancel +ButtonYes=&Yes +ButtonYesToAll=Yes to &All +ButtonNo=&No +ButtonNoToAll=N&o to All +ButtonFinish=&Finish +ButtonBrowse=&Browse... +ButtonWizardBrowse=B&rowse... +ButtonNewFolder=&Make New Folder + +; *** "Select Language" dialog messages +SelectLanguageTitle=Select Setup Language +SelectLanguageLabel=Select the language to use during the installation: + +; *** Common wizard text +ClickNext=Click Next to continue, or Cancel to exit Setup. +BeveledLabel= +BrowseDialogTitle=Browse For Folder +BrowseDialogLabel=Select a folder in the list below, then click OK. +NewFolderName=New Folder + +; *** "Welcome" wizard page +WelcomeLabel1=Welcome to the [name] Setup Wizard +WelcomeLabel2=This will install [name/ver] on your computer.%n%nIt is recommended that you close all other applications before continuing. + +; *** "Password" wizard page +WizardPassword=Password +PasswordLabel1=This installation is password protected. +PasswordLabel3=Please provide the password, then click Next to continue. Passwords are case-sensitive. +PasswordEditLabel=&Password: +IncorrectPassword=The password you entered is not correct. Please try again. + +; *** "License Agreement" wizard page +WizardLicense=License Agreement +LicenseLabel=Please read the following important information before continuing. +LicenseLabel3=Please read the following License Agreement. You must accept the terms of this agreement before continuing with the installation. +LicenseAccepted=I &accept the agreement +LicenseNotAccepted=I &do not accept the agreement + +; *** "Information" wizard pages +WizardInfoBefore=Information +InfoBeforeLabel=Please read the following important information before continuing. +InfoBeforeClickLabel=When you are ready to continue with Setup, click Next. +WizardInfoAfter=Information +InfoAfterLabel=Please read the following important information before continuing. +InfoAfterClickLabel=When you are ready to continue with Setup, click Next. + +; *** "User Information" wizard page +WizardUserInfo=User Information +UserInfoDesc=Please enter your information. +UserInfoName=&User Name: +UserInfoOrg=&Organization: +UserInfoSerial=&Serial Number: +UserInfoNameRequired=You must enter a name. + +; *** "Select Destination Location" wizard page +WizardSelectDir=Select Destination Location +SelectDirDesc=Where should [name] be installed? +SelectDirLabel3=Setup will install [name] into the following folder. +SelectDirBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse. +DiskSpaceMBLabel=At least [mb] MB of free disk space is required. +CannotInstallToNetworkDrive=Setup cannot install to a network drive. +CannotInstallToUNCPath=Setup cannot install to a UNC path. +InvalidPath=You must enter a full path with drive letter; for example:%n%nC:\APP%n%nor a UNC path in the form:%n%n\\server\share +InvalidDrive=The drive or UNC share you selected does not exist or is not accessible. Please select another. +DiskSpaceWarningTitle=Not Enough Disk Space +DiskSpaceWarning=Setup requires at least %1 KB of free space to install, but the selected drive only has %2 KB available.%n%nDo you want to continue anyway? +DirNameTooLong=The folder name or path is too long. +InvalidDirName=The folder name is not valid. +BadDirName32=Folder names cannot include any of the following characters:%n%n%1 +DirExistsTitle=Folder Exists +DirExists=The folder:%n%n%1%n%nalready exists. Would you like to install to that folder anyway? +DirDoesntExistTitle=Folder Does Not Exist +DirDoesntExist=The folder:%n%n%1%n%ndoes not exist. Would you like the folder to be created? + +; *** "Select Components" wizard page +WizardSelectComponents=Select Components +SelectComponentsDesc=Which components should be installed? +SelectComponentsLabel2=Select the components you want to install; clear the components you do not want to install. Click Next when you are ready to continue. +FullInstallation=Full installation +; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) +CompactInstallation=Compact installation +CustomInstallation=Custom installation +NoUninstallWarningTitle=Components Exist +NoUninstallWarning=Setup has detected that the following components are already installed on your computer:%n%n%1%n%nDeselecting these components will not uninstall them.%n%nWould you like to continue anyway? +ComponentSize1=%1 KB +ComponentSize2=%1 MB +ComponentsDiskSpaceMBLabel=Current selection requires at least [mb] MB of disk space. + +; *** "Select Additional Tasks" wizard page +WizardSelectTasks=Select Additional Tasks +SelectTasksDesc=Which additional tasks should be performed? +SelectTasksLabel2=Select the additional tasks you would like Setup to perform while installing [name], then click Next. + +; *** "Select Start Menu Folder" wizard page +WizardSelectProgramGroup=Select Start Menu Folder +SelectStartMenuFolderDesc=Where should Setup place the program's shortcuts? +SelectStartMenuFolderLabel3=Setup will create the program's shortcuts in the following Start Menu folder. +SelectStartMenuFolderBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse. +MustEnterGroupName=You must enter a folder name. +GroupNameTooLong=The folder name or path is too long. +InvalidGroupName=The folder name is not valid. +BadGroupName=The folder name cannot include any of the following characters:%n%n%1 +NoProgramGroupCheck2=&Don't create a Start Menu folder + +; *** "Ready to Install" wizard page +WizardReady=Ready to Install +ReadyLabel1=Setup is now ready to begin installing [name] on your computer. +ReadyLabel2a=Click Install to continue with the installation, or click Back if you want to review or change any settings. +ReadyLabel2b=Click Install to continue with the installation. +ReadyMemoUserInfo=User information: +ReadyMemoDir=Destination location: +ReadyMemoType=Setup type: +ReadyMemoComponents=Selected components: +ReadyMemoGroup=Start Menu folder: +ReadyMemoTasks=Additional tasks: + +; *** "Preparing to Install" wizard page +WizardPreparing=Preparing to Install +PreparingDesc=Setup is preparing to install [name] on your computer. +PreviousInstallNotCompleted=The installation/removal of a previous program was not completed. You will need to restart your computer to complete that installation.%n%nAfter restarting your computer, run Setup again to complete the installation of [name]. +CannotContinue=Setup cannot continue. Please click Cancel to exit. +ApplicationsFound=The following applications are using files that need to be updated by Setup. It is recommended that you allow Setup to automatically close these applications. +ApplicationsFound2=The following applications are using files that need to be updated by Setup. It is recommended that you allow Setup to automatically close these applications. After the installation has completed, Setup will attempt to restart the applications. +CloseApplications=&Automatically close the applications +DontCloseApplications=&Do not close the applications +ErrorCloseApplications=Setup was unable to automatically close all applications. It is recommended that you close all applications using files that need to be updated by Setup before continuing. + +; *** "Installing" wizard page +WizardInstalling=Installing +InstallingLabel=Please wait while Setup installs [name] on your computer. + +; *** "Setup Completed" wizard page +FinishedHeadingLabel=Completing the [name] Setup Wizard +FinishedLabelNoIcons=Setup has finished installing [name] on your computer. +FinishedLabel=Setup has finished installing [name] on your computer. The application may be launched by selecting the installed shortcuts. +ClickFinish=Click Finish to exit Setup. +FinishedRestartLabel=To complete the installation of [name], Setup must restart your computer. Would you like to restart now? +FinishedRestartMessage=To complete the installation of [name], Setup must restart your computer.%n%nWould you like to restart now? +ShowReadmeCheck=Yes, I would like to view the README file +YesRadio=&Yes, restart the computer now +NoRadio=&No, I will restart the computer later +; used for example as 'Run MyProg.exe' +RunEntryExec=Run %1 +; used for example as 'View Readme.txt' +RunEntryShellExec=View %1 + +; *** "Setup Needs the Next Disk" stuff +ChangeDiskTitle=Setup Needs the Next Disk +SelectDiskLabel2=Please insert Disk %1 and click OK.%n%nIf the files on this disk can be found in a folder other than the one displayed below, enter the correct path or click Browse. +PathLabel=&Path: +FileNotInDir2=The file "%1" could not be located in "%2". Please insert the correct disk or select another folder. +SelectDirectoryLabel=Please specify the location of the next disk. + +; *** Installation phase messages +SetupAborted=Setup was not completed.%n%nPlease correct the problem and run Setup again. +EntryAbortRetryIgnore=Click Retry to try again, Ignore to proceed anyway, or Abort to cancel installation. + +; *** Installation status messages +StatusClosingApplications=Closing applications... +StatusCreateDirs=Creating directories... +StatusExtractFiles=Extracting files... +StatusCreateIcons=Creating shortcuts... +StatusCreateIniEntries=Creating INI entries... +StatusCreateRegistryEntries=Creating registry entries... +StatusRegisterFiles=Registering files... +StatusSavingUninstall=Saving uninstall information... +StatusRunProgram=Finishing installation... +StatusRestartingApplications=Restarting applications... +StatusRollback=Rolling back changes... + +; *** Misc. errors +ErrorInternal2=Internal error: %1 +ErrorFunctionFailedNoCode=%1 failed +ErrorFunctionFailed=%1 failed; code %2 +ErrorFunctionFailedWithMessage=%1 failed; code %2.%n%3 +ErrorExecutingProgram=Unable to execute file:%n%1 + +; *** Registry errors +ErrorRegOpenKey=Error opening registry key:%n%1\%2 +ErrorRegCreateKey=Error creating registry key:%n%1\%2 +ErrorRegWriteKey=Error writing to registry key:%n%1\%2 + +; *** INI errors +ErrorIniEntry=Error creating INI entry in file "%1". + +; *** File copying errors +FileAbortRetryIgnore=Click Retry to try again, Ignore to skip this file (not recommended), or Abort to cancel installation. +FileAbortRetryIgnore2=Click Retry to try again, Ignore to proceed anyway (not recommended), or Abort to cancel installation. +SourceIsCorrupted=The source file is corrupted +SourceDoesntExist=The source file "%1" does not exist +ExistingFileReadOnly=The existing file is marked as read-only.%n%nClick Retry to remove the read-only attribute and try again, Ignore to skip this file, or Abort to cancel installation. +ErrorReadingExistingDest=An error occurred while trying to read the existing file: +FileExists=The file already exists.%n%nWould you like Setup to overwrite it? +ExistingFileNewer=The existing file is newer than the one Setup is trying to install. It is recommended that you keep the existing file.%n%nDo you want to keep the existing file? +ErrorChangingAttr=An error occurred while trying to change the attributes of the existing file: +ErrorCreatingTemp=An error occurred while trying to create a file in the destination directory: +ErrorReadingSource=An error occurred while trying to read the source file: +ErrorCopying=An error occurred while trying to copy a file: +ErrorReplacingExistingFile=An error occurred while trying to replace the existing file: +ErrorRestartReplace=RestartReplace failed: +ErrorRenamingTemp=An error occurred while trying to rename a file in the destination directory: +ErrorRegisterServer=Unable to register the DLL/OCX: %1 +ErrorRegSvr32Failed=RegSvr32 failed with exit code %1 +ErrorRegisterTypeLib=Unable to register the type library: %1 + +; *** Post-installation errors +ErrorOpeningReadme=An error occurred while trying to open the README file. +ErrorRestartingComputer=Setup was unable to restart the computer. Please do this manually. + +; *** Uninstaller messages +UninstallNotFound=File "%1" does not exist. Cannot uninstall. +UninstallOpenError=File "%1" could not be opened. Cannot uninstall +UninstallUnsupportedVer=The uninstall log file "%1" is in a format not recognized by this version of the uninstaller. Cannot uninstall +UninstallUnknownEntry=An unknown entry (%1) was encountered in the uninstall log +ConfirmUninstall=Are you sure you want to completely remove %1 and all of its components? +UninstallOnlyOnWin64=This installation can only be uninstalled on 64-bit Windows. +OnlyAdminCanUninstall=This installation can only be uninstalled by a user with administrative privileges. +UninstallStatusLabel=Please wait while %1 is removed from your computer. +UninstalledAll=%1 was successfully removed from your computer. +UninstalledMost=%1 uninstall complete.%n%nSome elements could not be removed. These can be removed manually. +UninstalledAndNeedsRestart=To complete the uninstallation of %1, your computer must be restarted.%n%nWould you like to restart now? +UninstallDataCorrupted="%1" file is corrupted. Cannot uninstall + +; *** Uninstallation phase messages +ConfirmDeleteSharedFileTitle=Remove Shared File? +ConfirmDeleteSharedFile2=The system indicates that the following shared file is no longer in use by any programs. Would you like for Uninstall to remove this shared file?%n%nIf any programs are still using this file and it is removed, those programs may not function properly. If you are unsure, choose No. Leaving the file on your system will not cause any harm. +SharedFileNameLabel=File name: +SharedFileLocationLabel=Location: +WizardUninstalling=Uninstall Status +StatusUninstalling=Uninstalling %1... + +; *** Shutdown block reasons +ShutdownBlockReasonInstallingApp=Installing %1. +ShutdownBlockReasonUninstallingApp=Uninstalling %1. + +; The custom messages below aren't used by Setup itself, but if you make +; use of them in your scripts, you'll want to translate them. + +[CustomMessages] + +NameAndVersion=%1 version %2 +AdditionalIcons=Additional shortcuts: +CreateDesktopIcon=Create a &desktop shortcut +CreateQuickLaunchIcon=Create a &Quick Launch shortcut +ProgramOnTheWeb=%1 on the Web +UninstallProgram=Uninstall %1 +LaunchProgram=Launch %1 +AssocFileExtension=&Associate %1 with the %2 file extension +AssocingFileExtension=Associating %1 with the %2 file extension... +AutoStartProgramGroupDescription=Startup: +AutoStartProgram=Automatically start %1 +AddonHostProgramNotFound=%1 could not be located in the folder you selected.%n%nDo you want to continue anyway? + diff --git a/build/win32/i18n/Default.ko.isl b/build/win32/i18n/Default.ko.isl index a2480b4e6f8..a7c38d12b9f 100644 --- a/build/win32/i18n/Default.ko.isl +++ b/build/win32/i18n/Default.ko.isl @@ -1,298 +1,298 @@ -; *** Inno Setup version 5.5.3+ Korean messages *** -; -; To download user-contributed translations of this file, go to: -; http://www.jrsoftware.org/files/istrans/ -; -; Note: When translating this text, do not add periods (.) to the end of -; messages that didn't have them already, because on those messages Inno -; Setup adds the periods automatically (appending a period would result in -; two periods being displayed). -[LangOptions] -; The following three entries are very important. Be sure to read and -; understand the '[LangOptions] section' topic in the help file. -LanguageName=Korean -LanguageID=$0412 -LanguageCodePage=949 -; If the language you are translating to requires special font faces or -; sizes, uncomment any of the following entries and change them accordingly. -;DialogFontName= -;DialogFontSize=8 -;WelcomeFontName=Verdana -;WelcomeFontSize=12 -;TitleFontName=Arial -;TitleFontSize=29 -;CopyrightFontName=Arial -;CopyrightFontSize=8 -[Messages] -; *** Application titles -SetupAppTitle=¼³ġ -SetupWindowTitle=¼³ġ - %1 -UninstallAppTitle=Á¦°Å -UninstallAppFullTitle=%1 Á¦°Å -; *** Misc. common -InformationTitle=Á¤º¸ -ConfirmTitle=ȮÀÎ -ErrorTitle=¿À·ù -; *** SetupLdr messages -SetupLdrStartupMessage=±׷¯¸é %1ÀÌ(°¡) ¼³ġµ˴ϴÙ. °è¼ÓÇϽðڽÀ´ϱî? -LdrCannotCreateTemp=Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´ϴÙ. ¼³ġ ÇÁ·α׷¥ÀÌ ÁߴܵǾú½À´ϴÙ. -LdrCannotExecTemp=Àӽà µð·ºÅ͸®¿¡¼­ ÆÄÀÏÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´ϴÙ. ¼³ġ ÇÁ·α׷¥ÀÌ ÁߴܵǾú½À´ϴÙ. -; *** Startup error messages -LastErrorMessage=%1.%n%n¿À·ù %2: %3 -SetupFileMissing=ÆÄÀÏ %1ÀÌ(°¡) ¼³ġ µð·ºÅ͸®¿¡¼­ ´©¶ôµǾú½À´ϴÙ. ¹®Á¦¸¦ ÇذáÇϰųª ÇÁ·α׷¥À» »õ·Î ¹ÞÀ¸¼¼¿ä. -SetupFileCorrupt=¼³ġ ÆÄÀÏÀÌ ¼ջóµǾú½À´ϴÙ. ÇÁ·α׷¥À» »õ·Î ¹ÞÀ¸¼¼¿ä. -SetupFileCorruptOrWrongVer=¼³ġ ÆÄÀÏÀÌ ¼ջóµǾú°ųª ÀÌ ¹öÀüÀÇ ¼³ġ ÇÁ·α׷¥°ú ȣȯµÇÁö ¾ʽÀ´ϴÙ. ¹®Á¦¸¦ ÇذáÇϰųª ÇÁ·α׷¥À» »õ·Î ¹ÞÀ¸¼¼¿ä. -InvalidParameter=¸í·ÉÁٿ¡ À߸øµÈ ¸Ű³ º¯¼ö°¡ Àü´޵Ê:%n%n%1 -SetupAlreadyRunning=¼³ġ ÇÁ·α׷¥ÀÌ À̹Ì ½ÇÇà ÁßÀԴϴÙ. -WindowsVersionNotSupported=ÀÌ ÇÁ·α׷¥Àº ÄÄǻÅͿ¡¼­ ½ÇÇà ÁßÀÎ ¹öÀüÀÇ Windows¸¦ Áö¿øÇÏÁö ¾ʽÀ´ϴÙ. -WindowsServicePackRequired=ÀÌ ÇÁ·α׷¥À» ¼³ġÇϷÁ¸é %1 ¼­ºñ½º ÆÑ %2 À̻óÀÌ ÇʿäÇմϴÙ. -NotOnThisPlatform=ÀÌ ÇÁ·α׷¥Àº %1¿¡¼­ ½ÇÇàµÇÁö ¾ʽÀ´ϴÙ. -OnlyOnThisPlatform=ÀÌ ÇÁ·α׷¥Àº %1¿¡¼­ ½ÇÇàÇؾß ÇմϴÙ. -OnlyOnTheseArchitectures=ÀÌ ÇÁ·α׷¥Àº ÇÁ·μ¼¼­ ¾ÆŰÅØó %n%n%1¿ëÀ¸·Î ¼³°èµÈ Windows ¹öÀü¿¡¼­¸¸ ¼³ġÇÒ ¼ö ÀֽÀ´ϴÙ. -MissingWOW64APIs=½ÇÇà ÁßÀÎ Windows ¹öÀü¿¡´Â ¼³ġ ÇÁ·α׷¥¿¡¼­ 64ºñƮ¸¦ ¼³ġÇϴ µ¥ ÇʿäÇÑ ±â´ÉÀÌ ¾ø½À´ϴÙ. ÀÌ ¹®Á¦¸¦ ÇذáÇϷÁ¸é ¼­ºñ½º ÆÑ %1À»(¸¦) ¼³ġÇϼ¼¿ä. -WinVersionTooLowError=ÀÌ ÇÁ·α׷¥À» ¼³ġÇϷÁ¸é %1 ¹öÀü %2 À̻óÀÌ ÇʿäÇմϴÙ. -WinVersionTooHighError=ÀÌ ÇÁ·α׷¥Àº %1 ¹öÀü %2 À̻󿡼­´Â ¼³ġÇÒ ¼ö ¾ø½À´ϴÙ. -AdminPrivilegesRequired=ÀÌ ÇÁ·α׷¥À» ¼³ġÇÒ ¶§´Â °ü¸®ÀڷÎ ·α×ÀÎÇؾß ÇմϴÙ. -PowerUserPrivilegesRequired=ÀÌ ÇÁ·α׷¥À» ¼³ġÇÒ ¶§´Â °ü¸®Àڳª °í±Þ »ç¿ëÀÚ ±׷ìÀÇ ±¸¼º¿øÀ¸·Î ·α×ÀÎÇؾß ÇմϴÙ. -SetupAppRunningError=¼³ġ ÇÁ·α׷¥¿¡¼­ %1(ÀÌ)°¡ ÇöÀç ½ÇÇà ÁßÀÓÀ» °¨ÁöÇ߽À´ϴÙ.%n%nÀÌ Ç׸ñÀÇ ¸ðµç ÀνºÅϽº¸¦ Áö±Ý ´ݰí °è¼ÓÇϷÁ¸é [ȮÀÎ]À», Á¾·áÇϷÁ¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä. -UninstallAppRunningError=Á¦°Å À۾÷¿¡¼­ %1(ÀÌ)°¡ ÇöÀç ½ÇÇà ÁßÀÓÀ» °¨ÁöÇ߽À´ϴÙ.%n%nÀÌ Ç׸ñÀÇ ¸ðµç ÀνºÅϽº¸¦ Áö±Ý ´ݰí °è¼ÓÇϷÁ¸é [ȮÀÎ]À», Á¾·áÇϷÁ¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä. -; *** Misc. errors -ErrorCreatingDir=¼³ġ ÇÁ·α׷¥¿¡¼­ µð·ºÅ͸® "%1"À»(¸¦) ¸¸µé ¼ö ¾ø½À´ϴÙ. -ErrorTooManyFilesInDir=µð·ºÅ͸® "%1"¿¡ ÆÄÀÏÀÌ ³ʹ« ¸¹À¸¹ǷÎ ÀÌ µð·ºÅ͸®¿¡ ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´ϴÙ. -; *** Setup common messages -ExitSetupTitle=¼³ġ Á¾·á -ExitSetupMessage=¼³ġ°¡ ¿ϷáµÇÁö ¾ʾҽÀ´ϴÙ. Áö±Ý Á¾·áÇϸé ÇÁ·α׷¥ÀÌ ¼³ġµÇÁö ¾ʽÀ´ϴÙ.%n%n³ªÁ߿¡ ¼³ġ ÇÁ·α׷¥À» ´ٽà ½ÇÇàÇϿ© ¼³ġ¸¦ ³¡³¾ ¼ö ÀֽÀ´ϴÙ.%n%n¼³ġ ÇÁ·α׷¥À» Á¾·áÇϽðڽÀ´ϱî? -AboutSetupMenuItem=¼³ġ ÇÁ·α׷¥ Á¤º¸(&A)... -AboutSetupTitle=¼³ġ ÇÁ·α׷¥ Á¤º¸ -AboutSetupMessage=%1 ¹öÀü %2%n%3%n%n%1 ȨÆäÀÌÁö:%n%4 -AboutSetupNote= -TranslatorNote= -; *** Buttons -ButtonBack=< µڷÎ(&B) -ButtonNext=´ÙÀ½(&N) > -ButtonInstall=¼³ġ(&I) -ButtonOK=ȮÀÎ -ButtonCancel=Ãë¼Ò -ButtonYes=¿¹(&Y) -ButtonYesToAll=¸ðµÎ ¿¹(&A) -ButtonNo=¾ƴϿä(&N) -ButtonNoToAll=¸ðµÎ ¾ƴϿä(&O) -ButtonFinish=¸¶ħ(&F) -ButtonBrowse=ã¾ƺ¸±â(&B)... -ButtonWizardBrowse=ã¾ƺ¸±â(&R) -ButtonNewFolder=»õ Æú´õ ¸¸µé±â(&M) -; *** "Select Language" dialog messages -SelectLanguageTitle=¼³ġ ¾ð¾î ¼±Åà -SelectLanguageLabel=¼³ġ Á߿¡ »ç¿ëÇÒ ¾ð¾ ¼±ÅÃÇϼ¼¿ä. -; *** Common wizard text -ClickNext=°è¼ÓÇϷÁ¸é [´ÙÀ½]À» Ŭ¸¯Çϰí ¼³ġ ÇÁ·α׷¥À» Á¾·áÇϷÁ¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä. -BeveledLabel= -BrowseDialogTitle=Æú´õ ã¾ƺ¸±â -BrowseDialogLabel=¾Ʒ¡ ¸ñ·Ͽ¡¼­ Æú´õ¸¦ ¼±ÅÃÇÑ ´ÙÀ½ [ȮÀÎ]À» Ŭ¸¯Çϼ¼¿ä. -NewFolderName=»õ Æú´õ -; *** "Welcome" wizard page -WelcomeLabel1=[name] ¼³ġ ¸¶¹ý»ç ½ÃÀÛ -WelcomeLabel2=ÀÌ ¸¶¹ý»ç´Â ÄÄǻÅͿ¡ [name/ver]À»(¸¦) ¼³ġÇմϴÙ.%n%n°è¼ÓÇϱâ Àü¿¡ ´ٸ¥ ¸ðµç ÀÀ¿ë ÇÁ·α׷¥À» ´ݴ °ÍÀÌ ÁÁ½À´ϴÙ. -; *** "Password" wizard page -WizardPassword=¾Ïȣ -PasswordLabel1=ÀÌ ¼³ġ´Â ¾Ïȣ·Î º¸ȣµǰí ÀֽÀ´ϴÙ. -PasswordLabel3=°è¼ÓÇϷÁ¸é ¾Ïȣ¸¦ ÀԷÂÇÑ ´ÙÀ½ [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. ¾Ïȣ´Â ´ë¼ҹ®Àڸ¦ ±¸ºÐÇմϴÙ. -PasswordEditLabel=¾Ïȣ(&P): -IncorrectPassword=ÀԷÂÇÑ ¾Ïȣ°¡ À߸øµǾú½À´ϴÙ. ´ٽà ½õµÇϼ¼¿ä. -; *** "License Agreement" wizard page -WizardLicense=»ç¿ë±Ç °è¾à -LicenseLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ Á߿äÇÑ Á¤º¸¸¦ Àоî º¸¼¼¿ä. -LicenseLabel3=´ÙÀ½ »ç¿ë±Ç °è¾àÀ» Àоî Áּ¼¿ä. ¼³ġ¸¦ °è¼ÓÇϷÁ¸é ¸ÕÀú ÀÌ °è¾à Á¶°ǿ¡ µ¿ÀÇÇؾß ÇմϴÙ. -LicenseAccepted=°è¾࿡ µ¿ÀÇÇÔ(&A) -LicenseNotAccepted=°è¾࿡ µ¿ÀÇ ¾È ÇÔ(&D) -; *** "Information" wizard pages -WizardInfoBefore=Á¤º¸ -InfoBeforeLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ Á߿äÇÑ Á¤º¸¸¦ Àоî º¸¼¼¿ä. -InfoBeforeClickLabel=¼³ġ¸¦ °è¼Ó ÁøÇàÇÒ Áغñ°¡ µǸé [´ÙÀ½]À» Ŭ¸¯ÇմϴÙ. -WizardInfoAfter=Á¤º¸ -InfoAfterLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ Á߿äÇÑ Á¤º¸¸¦ Àоî º¸¼¼¿ä. -InfoAfterClickLabel=¼³ġ¸¦ °è¼Ó ÁøÇàÇÒ Áغñ°¡ µǸé [´ÙÀ½]À» Ŭ¸¯ÇմϴÙ. -; *** "User Information" wizard page -WizardUserInfo=»ç¿ëÀÚ Á¤º¸ -UserInfoDesc=Á¤º¸¸¦ ÀԷÂÇϼ¼¿ä. -UserInfoName=»ç¿ëÀÚ À̸§(&U): -UserInfoOrg=Á¶Á÷(&O): -UserInfoSerial=ÀϷà ¹øȣ(&S): -UserInfoNameRequired=À̸§À» ÀԷÂÇؾß ÇմϴÙ. -; *** "Select Destination Location" wizard page -WizardSelectDir=´ë»ó À§ġ ¼±Åà -SelectDirDesc=[name]À»(¸¦) ¾îµð¿¡ ¼³ġÇϽðڽÀ´ϱî? -SelectDirLabel3=¼³ġ ÇÁ·α׷¥¿¡¼­ [name]À»(¸¦) ´ÙÀ½ Æú´õ¿¡ ¼³ġÇմϴÙ. -SelectDirBrowseLabel=°è¼ÓÇϷÁ¸é [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. ´ٸ¥ Æú´õ¸¦ ¼±ÅÃÇϷÁ¸é [ã¾ƺ¸±â]¸¦ Ŭ¸¯Çϼ¼¿ä. -DiskSpaceMBLabel=Àû¾ [mb]MBÀÇ ¿©À¯ µð½ºũ °ø°£ÀÌ ÇʿäÇմϴÙ. -CannotInstallToNetworkDrive=¼³ġ ÇÁ·α׷¥Àº ³×Ʈ¿öũ µå¶óÀ̺꿡 ¼³ġÇÒ ¼ö ¾ø½À´ϴÙ. -CannotInstallToUNCPath=¼³ġ ÇÁ·α׷¥Àº UNC °æ·ο¡ ¼³ġÇÒ ¼ö ¾ø½À´ϴÙ. -InvalidPath=µå¶óÀ̺ê ¹®ÀڿÍ ÇԲ² Àüü °æ·θ¦ ÀԷÂÇؾß ÇմϴÙ. ¿¹:%n%nC:\APP%n%n¶Ǵ ´ÙÀ½ ÇüÅÂÀÇ UNC °æ·Î:%n%n\\server\share -InvalidDrive=¼±ÅÃÇÑ µå¶óÀ̺곪 UNC °øÀ¯°¡ ¾ø°ųª ÀÌ µÎ Ç׸ñ¿¡ ¾׼¼½ºÇÒ ¼ö ¾ø½À´ϴÙ. ´ٸ¥ µå¶óÀ̺곪 UNC °øÀ¯¸¦ ¼±ÅÃÇϼ¼¿ä. -DiskSpaceWarningTitle=µð½ºũ °ø°£ ºÎÁ· -DiskSpaceWarning=¼³ġ ÇÁ·α׷¥À» ¼³ġÇϷÁ¸é ¿©À¯ ¼³ġ °ø°£ÀÌ Àû¾ %1KB°¡ ÇʿäÇÏÁö¸¸ ¼±ÅÃÇÑ µå¶óÀ̺êÀÇ °¡¿ë °ø°£Àº %2KB¹ۿ¡ ¾ø½À´ϴÙ.%n%n±׷¡µµ °è¼ÓÇϽðڽÀ´ϱî? -DirNameTooLong=Æú´õ À̸§ ¶Ǵ °æ·ΰ¡ ³ʹ« ±é´ϴÙ. -InvalidDirName=Æú´õ À̸§ÀÌ À߸øµǾú½À´ϴÙ. -BadDirName32=Æú´õ À̸§¿¡´Â %n%n%1 ¹®Àڸ¦ »ç¿ëÇÒ ¼ö ¾ø½À´ϴÙ. -DirExistsTitle=Æú´õ ÀÖÀ½ -DirExists=Æú´õ %n%n%1%n%nÀÌ(°¡) À̹Ì ÀֽÀ´ϴÙ. ±׷¡µµ Çشç Æú´õ¿¡ ¼³ġÇϽðڽÀ´ϱî? -DirDoesntExistTitle=Æú´õ ¾øÀ½ -DirDoesntExist=Æú´õ %n%n%1%n%nÀÌ(°¡) ¾ø½À´ϴÙ. Æú´õ¸¦ ¸¸µå½ðڽÀ´ϱî? -; *** "Select Components" wizard page -WizardSelectComponents=±¸¼º ¿ä¼Ò ¼±Åà -SelectComponentsDesc=¾ ±¸¼º ¿ä¼Ҹ¦ ¼³ġÇϽðڽÀ´ϱî? -SelectComponentsLabel2=¼³ġÇÒ ±¸¼º ¿ä¼Ҵ ¼±ÅÃÇϰí ¼³ġÇÏÁö ¾ÊÀ» ±¸¼º ¿ä¼Ҵ Áö¿켼¿ä. °è¼Ó ÁøÇàÇÒ Áغñ°¡ µǸé [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. -FullInstallation=Àüü ¼³ġ -; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) -CompactInstallation=Compact ¼³ġ -CustomInstallation=»ç¿ëÀÚ ÁöÁ¤ ¼³ġ -NoUninstallWarningTitle=±¸¼º ¿ä¼Ұ¡ ÀÖÀ½ -NoUninstallWarning=¼³ġ ÇÁ·α׷¥¿¡¼­ ±¸¼º ¿ä¼Ò %n%n%1%n%nÀÌ(°¡) ÄÄǻÅͿ¡ À̹Ì ¼³ġµǾî ÀÖÀ½À» °¨ÁöÇ߽À´ϴÙ. À̷¯ÇÑ ±¸¼º ¿ä¼Ҵ ¼±Åà Ãë¼ÒÇصµ Á¦°ŵÇÁö ¾ʽÀ´ϴÙ.%n%n±׷¡µµ °è¼ÓÇϽðڽÀ´ϱî? -ComponentSize1=%1KB -ComponentSize2=%1MB -ComponentsDiskSpaceMBLabel=ÇöÀç ¼±ÅÃÀ» À§Çؼ­´Â Àû¾ [mb]MBÀÇ µð½ºũ °ø°£ÀÌ ÇʿäÇմϴÙ. -; *** "Select Additional Tasks" wizard page -WizardSelectTasks=Ã߰¡ À۾÷ ¼±Åà -SelectTasksDesc=¾ À۾÷À» Ã߰¡·Î ¼öÇàÇϽðڽÀ´ϱî? -SelectTasksLabel2=¼³ġ ÇÁ·α׷¥¿¡¼­ [name]À»(¸¦) ¼³ġÇϴ µ¿¾È ¼öÇàÇÒ Ã߰¡ À۾÷À» ¼±ÅÃÇÑ ÈÄ [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. -; *** "Select Start Menu Folder" wizard page -WizardSelectProgramGroup=½ÃÀÛ ¸޴º Æú´õ ¼±Åà -SelectStartMenuFolderDesc=¼³ġ ÇÁ·α׷¥¿¡¼­ ÇÁ·α׷¥ÀÇ ¹ٷÎ °¡±⸦ ¾îµð¿¡ ¸¸µ鵵·Ï ÇϽðڽÀ´ϱî? -SelectStartMenuFolderLabel3=¼³ġ ÇÁ·α׷¥¿¡¼­ ÇÁ·α׷¥ÀÇ ¹ٷÎ °¡±⸦ ´ÙÀ½ ½ÃÀÛ ¸޴º Æú´õ¿¡ ¸¸µì´ϴÙ. -SelectStartMenuFolderBrowseLabel=°è¼ÓÇϷÁ¸é [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. ´ٸ¥ Æú´õ¸¦ ¼±ÅÃÇϷÁ¸é [ã¾ƺ¸±â]¸¦ Ŭ¸¯Çϼ¼¿ä. -MustEnterGroupName=Æú´õ À̸§À» ÀԷÂÇؾß ÇմϴÙ. -GroupNameTooLong=Æú´õ À̸§ ¶Ǵ °æ·ΰ¡ ³ʹ« ±é´ϴÙ. -InvalidGroupName=Æú´õ À̸§ÀÌ À߸øµǾú½À´ϴÙ. -BadGroupName=Æú´õ À̸§¿¡´Â %n%n%1 ¹®Àڸ¦ »ç¿ëÇÒ ¼ö ¾ø½À´ϴÙ. -NoProgramGroupCheck2=½ÃÀÛ ¸޴º Æú´õ¸¦ ¸¸µéÁö ¾ÊÀ½(&D) -; *** "Ready to Install" wizard page -WizardReady=¼³ġ ÁغñµÊ -ReadyLabel1=ÀÌÁ¦ ¼³ġ ÇÁ·α׷¥ÀÌ ÄÄǻÅͿ¡ [name] ¼³ġ¸¦ ½ÃÀÛÇÒ Áغñ°¡ µǾú½À´ϴÙ. -ReadyLabel2a=¼³ġ¸¦ °è¼ÓÇϷÁ¸é [¼³ġ]¸¦ Ŭ¸¯Çϰí, ¼³Á¤À» °ËÅäÇϰųª º¯°æÇϷÁ¸é [µڷÎ]¸¦ Ŭ¸¯Çϼ¼¿ä. -ReadyLabel2b=¼³ġ¸¦ °è¼ÓÇϷÁ¸é [¼³ġ]¸¦ Ŭ¸¯Çϼ¼¿ä. -ReadyMemoUserInfo=»ç¿ëÀÚ Á¤º¸: -ReadyMemoDir=´ë»ó À§ġ: -ReadyMemoType=¼³ġ À¯Çü: -ReadyMemoComponents=¼±ÅÃÇÑ ±¸¼º ¿ä¼Ò: -ReadyMemoGroup=½ÃÀÛ ¸޴º Æú´õ: -ReadyMemoTasks=Ã߰¡ À۾÷: -; *** "Preparing to Install" wizard page -WizardPreparing=¼³ġ Áغñ Áß -PreparingDesc=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅͿ¡ [name] ¼³ġ¸¦ ÁغñÇϰí ÀֽÀ´ϴÙ. -PreviousInstallNotCompleted=ÀÌÀü ÇÁ·α׷¥ÀÇ ¼³ġ/Á¦°Å À۾÷ÀÌ ¿ϷáµÇÁö ¾ʾҽÀ´ϴÙ. Çشç ¼³ġ¸¦ ¿ϷáÇϷÁ¸é ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇؾß ÇմϴÙ.%n%nÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇÑ ÈÄ [name] ¼³ġ¸¦ ¿ϷáÇϷÁ¸é ¼³ġ ÇÁ·α׷¥À» ´ٽà ½ÇÇàÇϼ¼¿ä. -CannotContinue=¼³ġ ÇÁ·α׷¥À» °è¼ÓÇÒ ¼ö ¾ø½À´ϴÙ. Á¾·áÇϷÁ¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä. -ApplicationsFound=¼³ġ ÇÁ·α׷¥¿¡¼­ ¾÷µ¥ÀÌƮÇؾß Çϴ ÆÄÀÏÀÌ ´ÙÀ½ ÀÀ¿ë ÇÁ·α׷¥¿¡ »ç¿ëµǰí ÀֽÀ´ϴÙ. ¼³ġ ÇÁ·α׷¥¿¡¼­ À̷¯ÇÑ ÀÀ¿ë ÇÁ·α׷¥À» Àڵ¿À¸·Î ´ݵµ·Ï Çã¿ëÇϴ °ÍÀÌ ÁÁ½À´ϴÙ. -ApplicationsFound2=¼³ġ ÇÁ·α׷¥¿¡¼­ ¾÷µ¥ÀÌƮÇؾß Çϴ ÆÄÀÏÀÌ ´ÙÀ½ ÀÀ¿ë ÇÁ·α׷¥¿¡ »ç¿ëµǰí ÀֽÀ´ϴÙ. ¼³ġ ÇÁ·α׷¥¿¡¼­ À̷¯ÇÑ ÀÀ¿ë ÇÁ·α׷¥À» Àڵ¿À¸·Î ´ݵµ·Ï Çã¿ëÇϴ °ÍÀÌ ÁÁ½À´ϴÙ. ¼³ġ°¡ ¿ϷáµǸé ¼³ġ ÇÁ·α׷¥¿¡¼­ ÀÀ¿ë ÇÁ·α׷¥À» ´ٽà ½ÃÀÛÇϷÁ°í ½õµÇմϴÙ. -CloseApplications=ÀÀ¿ë ÇÁ·α׷¥ Àڵ¿ ´ݱâ(&A) -DontCloseApplications=ÀÀ¿ë ÇÁ·α׷¥À» ´ÝÁö ¾ÊÀ½(&D) -ErrorCloseApplications=¼³ġ ÇÁ·α׷¥¿¡¼­ ÀϺÎ ÀÀ¿ë ÇÁ·α׷¥À» Àڵ¿À¸·Î ´ÝÀ» ¼ö ¾ø½À´ϴÙ. °è¼ÓÇϱâ Àü¿¡ ¼³ġ ÇÁ·α׷¥¿¡¼­ ¾÷µ¥ÀÌƮÇؾß Çϴ ÆÄÀÏÀ» »ç¿ëÇϴ ÀÀ¿ë ÇÁ·α׷¥À» ¸ðµÎ ´ݴ °ÍÀÌ ÁÁ½À´ϴÙ. -; *** "Installing" wizard page -WizardInstalling=¼³ġ Áß -InstallingLabel=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅͿ¡ [name]À»(¸¦) ¼³ġÇϴ µ¿¾È ±â´ٷÁ Áּ¼¿ä. -; *** "Setup Completed" wizard page -FinishedHeadingLabel=[name] ¼³Á¤ ¸¶¹ý»縦 ¿ϷáÇϴ Áß -FinishedLabelNoIcons=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅͿ¡ [name]À»(¸¦) ¼³ġÇ߽À´ϴÙ. -FinishedLabel=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅͿ¡ [name]À»(¸¦) ¼³ġÇ߽À´ϴÙ. ¼³ġÇÑ ¹ٷÎ °¡±⸦ ¼±ÅÃÇϿ© Çشç ÀÀ¿ë ÇÁ·α׷¥À» ½ÃÀÛÇÒ ¼ö ÀֽÀ´ϴÙ. -ClickFinish=¼³ġ ÇÁ·α׷¥À» Á¾·áÇϷÁ¸é [¸¶ħ]À» Ŭ¸¯Çϼ¼¿ä. -FinishedRestartLabel=[name] ¼³ġ¸¦ ¿ϷáÇϷÁ¸é ¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇؾß ÇմϴÙ. Áö±Ý ´ٽà ½ÃÀÛÇϽðڽÀ´ϱî? -FinishedRestartMessage=[name] ¼³ġ¸¦ ¿ϷáÇϷÁ¸é ¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇؾß ÇմϴÙ.%n%nÁö±Ý ´ٽà ½ÃÀÛÇϽðڽÀ´ϱî? -ShowReadmeCheck=¿¹, README ÆÄÀÏÀ» º¸°ڽÀ´ϴÙ. -YesRadio=¿¹, ÄÄǻÅ͸¦ Áö±Ý ´ٽà ½ÃÀÛÇϰڽÀ´ϴÙ(&Y). -NoRadio=¾ƴϿä, ÄÄǻÅ͸¦ ³ªÁ߿¡ ´ٽà ½ÃÀÛÇϰڽÀ´ϴÙ(&N). -; used for example as 'Run MyProg.exe' -RunEntryExec=%1 ½ÇÇà -; used for example as 'View Readme.txt' -RunEntryShellExec=%1 º¸±â -; *** "Setup Needs the Next Disk" stuff -ChangeDiskTitle=¼³ġ ÇÁ·α׷¥¿¡¼­ ´ÙÀ½ µð½ºũ°¡ ÇʿäÇÔ -SelectDiskLabel2=µð½ºũ %1À»(¸¦) »ðÀÔÇÑ ´ÙÀ½ [ȮÀÎ]À» Ŭ¸¯Çϼ¼¿ä.%n%nÀÌ µð½ºũÀÇ ÆÄÀÏÀÌ ¾Ʒ¡ ǥ½õÈ Æú´õ°¡ ¾ƴÑ ´ٸ¥ Æú´õ¿¡ ÀÖÀ¸¸é ¿ùٸ¥ °æ·θ¦ ÀԷÂÇϰųª [ã¾ƺ¸±â]¸¦ Ŭ¸¯Çϼ¼¿ä. -PathLabel=°æ·Î(&P): -FileNotInDir2="%2"¿¡¼­ ÆÄÀÏ "%1"À»(¸¦) ãÀ» ¼ö ¾ø½À´ϴÙ. ¿ùٸ¥ µð½ºũ¸¦ »ðÀÔÇϰųª ´ٸ¥ Æú´õ¸¦ ¼±ÅÃÇϼ¼¿ä. -SelectDirectoryLabel=´ÙÀ½ µð½ºũÀÇ À§ġ¸¦ ÁöÁ¤Çϼ¼¿ä. -; *** Installation phase messages -SetupAborted=¼³ġ¸¦ ¿ϷáÇÏÁö ¸øÇ߽À´ϴÙ.%n%n¹®Á¦¸¦ ÇذáÇÑ ´ÙÀ½ ¼³ġ ÇÁ·α׷¥À» ´ٽà ½ÇÇàÇϼ¼¿ä. -EntryAbortRetryIgnore=´ٽà ½õµÇϷÁ¸é [´ٽà ½õµ]¸¦, ±׷¡µµ °è¼ÓÇϷÁ¸é [¹«½Ã]¸¦, ¼³ġ¸¦ Ãë¼ÒÇϷÁ¸é [ÁߴÜ]À» Ŭ¸¯Çϼ¼¿ä. -; *** Installation status messages -StatusClosingApplications=ÀÀ¿ë ÇÁ·α׷¥À» ´ݴ Áß... -StatusCreateDirs=µð·ºÅ͸®¸¦ ¸¸µå´Â Áß... -StatusExtractFiles=ÆÄÀÏÀ» ÃßÃâÇϴ Áß... -StatusCreateIcons=¹ٷÎ °¡±⸦ ¸¸µå´Â Áß... -StatusCreateIniEntries=INI Ç׸ñÀ» ¸¸µå´Â Áß... -StatusCreateRegistryEntries=·¹Áö½ºƮ¸® Ç׸ñÀ» ¸¸µå´Â Áß... -StatusRegisterFiles=ÆÄÀÏÀ» µî·ÏÇϴ Áß... -StatusSavingUninstall=Á¦°Å Á¤º¸¸¦ ÀúÀåÇϴ Áß... -StatusRunProgram=¼³ġ¸¦ ¿ϷáÇϴ Áß... -StatusRestartingApplications=ÀÀ¿ë ÇÁ·α׷¥À» ´ٽà ½ÃÀÛÇϴ Áß... -StatusRollback=º¯°æ »çÇ×À» ·ѹéÇϴ Áß... -; *** Misc. errors -ErrorInternal2=³»ºÎ ¿À·ù: %1 -ErrorFunctionFailedNoCode=%1 ½ÇÆÐ -ErrorFunctionFailed=%1 ½ÇÆÐ, Äڵå %2 -ErrorFunctionFailedWithMessage=%1 ½ÇÆÐ, Äڵå %2.%n%3 -ErrorExecutingProgram=ÆÄÀÏÀ» ½ÇÇàÇÒ ¼ö ¾øÀ½:%n%1 -; *** Registry errors -ErrorRegOpenKey=·¹Áö½ºƮ¸® ۸¦ ¿©´Â Áß ¿À·ù ¹߻ý:%n%1\%2 -ErrorRegCreateKey=·¹Áö½ºƮ¸® ۸¦ ¸¸µå´Â Áß ¿À·ù ¹߻ý:%n%1\%2 -ErrorRegWriteKey=·¹Áö½ºƮ¸® Ű¿¡ ±â·ÏÇϴ Áß ¿À·ù ¹߻ý:%n%1\%2 -; *** INI errors -ErrorIniEntry=ÆÄÀÏ "%1"¿¡ INI Ç׸ñÀ» ¸¸µå´Â Á߿¡ ¿À·ù°¡ ¹߻ýÇ߽À´ϴÙ. -; *** File copying errors -FileAbortRetryIgnore=´ٽà ½õµÇϷÁ¸é [´ٽà ½õµ]¸¦, ÀÌ ÆÄÀÏÀ» °dzʶٷÁ¸é [¹«½Ã](±ÇÀåµÇÁö ¾ÊÀ½)¸¦, ¼³ġ¸¦ Ãë¼ÒÇϷÁ¸é [ÁߴÜ]À» Ŭ¸¯Çϼ¼¿ä. -FileAbortRetryIgnore2=´ٽà ½õµÇϷÁ¸é [´ٽà ½õµ]¸¦, ±׷¡µµ °è¼ÓÇϷÁ¸é [¹«½Ã](±ÇÀåµÇÁö ¾ÊÀ½)¸¦, ¼³ġ¸¦ Ãë¼ÒÇϷÁ¸é [ÁߴÜ]À» Ŭ¸¯Çϼ¼¿ä. -SourceIsCorrupted=¿øº» ÆÄÀÏÀÌ ¼ջóµǾú½À´ϴÙ. -SourceDoesntExist=¿øº» ÆÄÀÏ "%1"ÀÌ(°¡) ¾ø½À´ϴÙ. -ExistingFileReadOnly=±âÁ¸ ÆÄÀÏÀÌ Àбâ Àü¿ëÀ¸·Î ǥ½õǾî ÀֽÀ´ϴÙ.%n%nÀбâ Àü¿ë Ư¼ºÀ» Á¦°ÅÇϰí ´ٽà ½õµÇϷÁ¸é [´ٽà ½õµ]¸¦, ÀÌ ÆÄÀÏÀ» °dzʶٷÁ¸é [¹«½Ã]¸¦, ¼³ġ¸¦ Ãë¼ÒÇϷÁ¸é [ÁߴÜ]À» Ŭ¸¯Çϼ¼¿ä. -ErrorReadingExistingDest=±âÁ¸ ÆÄÀÏÀ» Àд Áß ¿À·ù ¹߻ý: -FileExists=Çشç ÆÄÀÏÀÌ À̹Ì ÀֽÀ´ϴÙ.%n%n¼³ġ ÇÁ·α׷¥¿¡¼­ ÀÌ ÆÄÀÏÀ» µ¤¾µµ·Ï ÇϽðڽÀ´ϱî? -ExistingFileNewer=±âÁ¸ ÆÄÀÏÀÌ ¼³ġ ÇÁ·α׷¥¿¡¼­ ¼³ġÇϷÁ´Â ÆÄÀϺ¸´Ù ÃֽÅÀԴϴÙ. ±âÁ¸ ÆÄÀÏÀ» À¯ÁöÇÒ °ÍÀ» ±ÇÀåÇմϴÙ.%n%n±âÁ¸ ÆÄÀÏÀ» À¯ÁöÇϽðڽÀ´ϱî? -ErrorChangingAttr=±âÁ¸ ÆÄÀÏÀÇ Ư¼ºÀ» º¯°æÇϴ Áß ¿À·ù ¹߻ý: -ErrorCreatingTemp=´ë»ó µð·ºÅ͸®¿¡ ÆÄÀÏÀ» ¸¸µå´Â Áß ¿À·ù ¹߻ý: -ErrorReadingSource=¿øº» ÆÄÀÏÀ» Àд Áß ¿À·ù ¹߻ý: -ErrorCopying=ÆÄÀÏÀ» º¹»çÇϴ Áß ¿À·ù ¹߻ý: -ErrorReplacingExistingFile=±âÁ¸ ÆÄÀÏÀ» ¹ٲٴ Áß ¿À·ù ¹߻ý: -ErrorRestartReplace=RestartReplace ½ÇÆÐ: -ErrorRenamingTemp=´ë»ó µð·ºÅ͸®¿¡ Àִ ÆÄÀÏ À̸§À» ¹ٲٴ Áß ¿À·ù ¹߻ý: -ErrorRegisterServer=DLL/OCX¸¦ µî·ÏÇÒ ¼ö ¾øÀ½: %1 -ErrorRegSvr32Failed=Á¾·á Äڵå %1°ú(¿Í) ÇԲ² RegSvr32 ½ÇÆÐ -ErrorRegisterTypeLib=Çü½Ä ¶óÀ̺귯¸®¸¦ µî·ÏÇÒ ¼ö ¾øÀ½: %1 -; *** Post-installation errors -ErrorOpeningReadme=README ÆÄÀÏÀ» ¿©´Â Á߿¡ ¿À·ù°¡ ¹߻ýÇ߽À´ϴÙ. -ErrorRestartingComputer=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇÒ ¼ö ¾ø½À´ϴÙ. ¼öµ¿À¸·Î ÁøÇàÇϼ¼¿ä. -; *** Uninstaller messages -UninstallNotFound=ÆÄÀÏ "%1"ÀÌ(°¡) ¾ø½À´ϴÙ. Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. -UninstallOpenError=ÆÄÀÏ "%1"À»(¸¦) ¿­ ¼ö ¾ø½À´ϴÙ. Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. -UninstallUnsupportedVer=Á¦°Å ·α× ÆÄÀÏ "%1"ÀÌ(°¡) ÀÌ ¹öÀüÀÇ Á¦°Å ÇÁ·α׷¥¿¡¼­ ÀνÄÇÏÁö ¸øÇϴ Çü½ÄÀԴϴÙ. Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. -UninstallUnknownEntry=Á¦°Å ·α׿¡¼­ ¾Ë ¼ö ¾ø´Â Ç׸ñ(%1)ÀÌ ¹߰ߵǾú½À´ϴÙ. -ConfirmUninstall=%1°ú(¿Í) Çشç ±¸¼º ¿ä¼Ҹ¦ ¸ðµÎ ¿ÏÀüÈ÷ Á¦°ÅÇϽðڽÀ´ϱî? -UninstallOnlyOnWin64=ÀÌ ¼³ġ´Â 64ºñƮ Windows¿¡¼­¸¸ Á¦°ÅÇÒ ¼ö ÀֽÀ´ϴÙ. -OnlyAdminCanUninstall=ÀÌ ¼³ġ´Â °ü¸®ÀÚ ±ÇÇÑÀÌ Àִ »ç¿ëÀڸ¸ Á¦°ÅÇÒ ¼ö ÀֽÀ´ϴÙ. -UninstallStatusLabel=ÄÄǻÅͿ¡¼­ %1À»(¸¦) Á¦°ÅÇϴ µ¿¾È ±â´ٷÁ Áּ¼¿ä. -UninstalledAll=ÄÄǻÅͿ¡¼­ %1À»(¸¦) Á¦°ÅÇ߽À´ϴÙ. -UninstalledMost=%1 Á¦°Ű¡ ¿ϷáµǾú½À´ϴÙ.%n%nÀϺÎ ¿ä¼Ҵ Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. À̷¯ÇÑ Ç׸ñÀº ¼öµ¿À¸·Î Á¦°ÅÇÒ ¼ö ÀֽÀ´ϴÙ. -UninstalledAndNeedsRestart=%1 Á¦°Ÿ¦ ¿ϷáÇϷÁ¸é ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇؾß ÇմϴÙ.%n%nÁö±Ý ´ٽà ½ÃÀÛÇϽðڽÀ´ϱî? -UninstallDataCorrupted="%1" ÆÄÀÏÀÌ ¼ջóµǾú½À´ϴÙ. Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. -; *** Uninstallation phase messages -ConfirmDeleteSharedFileTitle=°øÀ¯ ÆÄÀÏÀ» Á¦°ÅÇϽðڽÀ´ϱî? -ConfirmDeleteSharedFile2=½ýºÅۿ¡¼­´Â ÀÌÁ¦ ´ÙÀ½ °øÀ¯ ÆÄÀÏÀ» »ç¿ëÇϴ ÇÁ·α׷¥ÀÌ ¾ø´Â °ÍÀ¸·Î ǥ½õ˴ϴÙ. Á¦°Å À۾÷À» ÅëÇØ ÀÌ °øÀ¯ ÆÄÀÏÀ» Á¦°ÅÇϽðڽÀ´ϱî?%n%n¾ÆÁ÷ ÀÌ ÆÄÀÏÀ» »ç¿ëÇϴ ÇÁ·α׷¥ÀÌ Àִµ¥ ÀÌ ÆÄÀÏÀ» Á¦°ÅÇϸé Çشç ÇÁ·α׷¥ÀÌ ¿ùٸ£°Ô À۵¿ÇÏÁö ¾ÊÀ» ¼ö ÀֽÀ´ϴÙ. Àß ¸𸣴 °æ¿ì [¾ƴϿä]¸¦ ¼±ÅÃÇϼ¼¿ä. ½ýºÅۿ¡ ÆÄÀÏÀ» ±״ë·Î µξ ¾ƹ«·± ¹®Á¦°¡ ¹߻ýÇÏÁö ¾ʽÀ´ϴÙ. -SharedFileNameLabel=ÆÄÀÏ À̸§: -SharedFileLocationLabel=À§ġ: -WizardUninstalling=Á¦°Å »óÅ -StatusUninstalling=%1À»(¸¦) Á¦°ÅÇϴ Áß... -; *** Shutdown block reasons -ShutdownBlockReasonInstallingApp=%1À»(¸¦) ¼³ġÇϴ ÁßÀԴϴÙ. -ShutdownBlockReasonUninstallingApp=%1À»(¸¦) Á¦°ÅÇϴ ÁßÀԴϴÙ. -; The custom messages below aren't used by Setup itself, but if you make -; use of them in your scripts, you'll want to translate them. -[CustomMessages] -NameAndVersion=%1 ¹öÀü %2 -AdditionalIcons=Ã߰¡ ¹ٷÎ °¡±â: -CreateDesktopIcon=¹ÙÅÁ ȭ¸é ¹ٷÎ °¡±â ¸¸µé±â(&D) -CreateQuickLaunchIcon=ºü¸¥ ½ÇÇà ¹ٷÎ °¡±â ¸¸µé±â(&Q) -ProgramOnTheWeb=%1 À¥ Á¤º¸ -UninstallProgram=%1 Á¦°Å -LaunchProgram=%1 ½ÃÀÛ -AssocFileExtension=%1À»(¸¦) %2 ÆÄÀÏ ȮÀå¸í°ú ¿¬°á(&A) -AssocingFileExtension=%1À»(¸¦) %2 ÆÄÀÏ ȮÀå¸í°ú ¿¬°á Áß... -AutoStartProgramGroupDescription=½ÃÀÛ: -AutoStartProgram=%1 Àڵ¿ ½ÃÀÛ +; *** Inno Setup version 5.5.3+ Korean messages *** +; +; To download user-contributed translations of this file, go to: +; http://www.jrsoftware.org/files/istrans/ +; +; Note: When translating this text, do not add periods (.) to the end of +; messages that didn't have them already, because on those messages Inno +; Setup adds the periods automatically (appending a period would result in +; two periods being displayed). +[LangOptions] +; The following three entries are very important. Be sure to read and +; understand the '[LangOptions] section' topic in the help file. +LanguageName=Korean +LanguageID=$0412 +LanguageCodePage=949 +; If the language you are translating to requires special font faces or +; sizes, uncomment any of the following entries and change them accordingly. +;DialogFontName= +;DialogFontSize=8 +;WelcomeFontName=Verdana +;WelcomeFontSize=12 +;TitleFontName=Arial +;TitleFontSize=29 +;CopyrightFontName=Arial +;CopyrightFontSize=8 +[Messages] +; *** Application titles +SetupAppTitle=¼³ġ +SetupWindowTitle=¼³ġ - %1 +UninstallAppTitle=Á¦°Å +UninstallAppFullTitle=%1 Á¦°Å +; *** Misc. common +InformationTitle=Á¤º¸ +ConfirmTitle=ȮÀÎ +ErrorTitle=¿À·ù +; *** SetupLdr messages +SetupLdrStartupMessage=±׷¯¸é %1ÀÌ(°¡) ¼³ġµ˴ϴÙ. °è¼ÓÇϽðڽÀ´ϱî? +LdrCannotCreateTemp=Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´ϴÙ. ¼³ġ ÇÁ·α׷¥ÀÌ ÁߴܵǾú½À´ϴÙ. +LdrCannotExecTemp=Àӽà µð·ºÅ͸®¿¡¼­ ÆÄÀÏÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´ϴÙ. ¼³ġ ÇÁ·α׷¥ÀÌ ÁߴܵǾú½À´ϴÙ. +; *** Startup error messages +LastErrorMessage=%1.%n%n¿À·ù %2: %3 +SetupFileMissing=ÆÄÀÏ %1ÀÌ(°¡) ¼³ġ µð·ºÅ͸®¿¡¼­ ´©¶ôµǾú½À´ϴÙ. ¹®Á¦¸¦ ÇذáÇϰųª ÇÁ·α׷¥À» »õ·Î ¹ÞÀ¸¼¼¿ä. +SetupFileCorrupt=¼³ġ ÆÄÀÏÀÌ ¼ջóµǾú½À´ϴÙ. ÇÁ·α׷¥À» »õ·Î ¹ÞÀ¸¼¼¿ä. +SetupFileCorruptOrWrongVer=¼³ġ ÆÄÀÏÀÌ ¼ջóµǾú°ųª ÀÌ ¹öÀüÀÇ ¼³ġ ÇÁ·α׷¥°ú ȣȯµÇÁö ¾ʽÀ´ϴÙ. ¹®Á¦¸¦ ÇذáÇϰųª ÇÁ·α׷¥À» »õ·Î ¹ÞÀ¸¼¼¿ä. +InvalidParameter=¸í·ÉÁٿ¡ À߸øµÈ ¸Ű³ º¯¼ö°¡ Àü´޵Ê:%n%n%1 +SetupAlreadyRunning=¼³ġ ÇÁ·α׷¥ÀÌ À̹Ì ½ÇÇà ÁßÀԴϴÙ. +WindowsVersionNotSupported=ÀÌ ÇÁ·α׷¥Àº ÄÄǻÅͿ¡¼­ ½ÇÇà ÁßÀÎ ¹öÀüÀÇ Windows¸¦ Áö¿øÇÏÁö ¾ʽÀ´ϴÙ. +WindowsServicePackRequired=ÀÌ ÇÁ·α׷¥À» ¼³ġÇϷÁ¸é %1 ¼­ºñ½º ÆÑ %2 À̻óÀÌ ÇʿäÇմϴÙ. +NotOnThisPlatform=ÀÌ ÇÁ·α׷¥Àº %1¿¡¼­ ½ÇÇàµÇÁö ¾ʽÀ´ϴÙ. +OnlyOnThisPlatform=ÀÌ ÇÁ·α׷¥Àº %1¿¡¼­ ½ÇÇàÇؾß ÇմϴÙ. +OnlyOnTheseArchitectures=ÀÌ ÇÁ·α׷¥Àº ÇÁ·μ¼¼­ ¾ÆŰÅØó %n%n%1¿ëÀ¸·Î ¼³°èµÈ Windows ¹öÀü¿¡¼­¸¸ ¼³ġÇÒ ¼ö ÀֽÀ´ϴÙ. +MissingWOW64APIs=½ÇÇà ÁßÀÎ Windows ¹öÀü¿¡´Â ¼³ġ ÇÁ·α׷¥¿¡¼­ 64ºñƮ¸¦ ¼³ġÇϴ µ¥ ÇʿäÇÑ ±â´ÉÀÌ ¾ø½À´ϴÙ. ÀÌ ¹®Á¦¸¦ ÇذáÇϷÁ¸é ¼­ºñ½º ÆÑ %1À»(¸¦) ¼³ġÇϼ¼¿ä. +WinVersionTooLowError=ÀÌ ÇÁ·α׷¥À» ¼³ġÇϷÁ¸é %1 ¹öÀü %2 À̻óÀÌ ÇʿäÇմϴÙ. +WinVersionTooHighError=ÀÌ ÇÁ·α׷¥Àº %1 ¹öÀü %2 À̻󿡼­´Â ¼³ġÇÒ ¼ö ¾ø½À´ϴÙ. +AdminPrivilegesRequired=ÀÌ ÇÁ·α׷¥À» ¼³ġÇÒ ¶§´Â °ü¸®ÀڷÎ ·α×ÀÎÇؾß ÇմϴÙ. +PowerUserPrivilegesRequired=ÀÌ ÇÁ·α׷¥À» ¼³ġÇÒ ¶§´Â °ü¸®Àڳª °í±Þ »ç¿ëÀÚ ±׷ìÀÇ ±¸¼º¿øÀ¸·Î ·α×ÀÎÇؾß ÇմϴÙ. +SetupAppRunningError=¼³ġ ÇÁ·α׷¥¿¡¼­ %1(ÀÌ)°¡ ÇöÀç ½ÇÇà ÁßÀÓÀ» °¨ÁöÇ߽À´ϴÙ.%n%nÀÌ Ç׸ñÀÇ ¸ðµç ÀνºÅϽº¸¦ Áö±Ý ´ݰí °è¼ÓÇϷÁ¸é [ȮÀÎ]À», Á¾·áÇϷÁ¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä. +UninstallAppRunningError=Á¦°Å À۾÷¿¡¼­ %1(ÀÌ)°¡ ÇöÀç ½ÇÇà ÁßÀÓÀ» °¨ÁöÇ߽À´ϴÙ.%n%nÀÌ Ç׸ñÀÇ ¸ðµç ÀνºÅϽº¸¦ Áö±Ý ´ݰí °è¼ÓÇϷÁ¸é [ȮÀÎ]À», Á¾·áÇϷÁ¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä. +; *** Misc. errors +ErrorCreatingDir=¼³ġ ÇÁ·α׷¥¿¡¼­ µð·ºÅ͸® "%1"À»(¸¦) ¸¸µé ¼ö ¾ø½À´ϴÙ. +ErrorTooManyFilesInDir=µð·ºÅ͸® "%1"¿¡ ÆÄÀÏÀÌ ³ʹ« ¸¹À¸¹ǷÎ ÀÌ µð·ºÅ͸®¿¡ ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´ϴÙ. +; *** Setup common messages +ExitSetupTitle=¼³ġ Á¾·á +ExitSetupMessage=¼³ġ°¡ ¿ϷáµÇÁö ¾ʾҽÀ´ϴÙ. Áö±Ý Á¾·áÇϸé ÇÁ·α׷¥ÀÌ ¼³ġµÇÁö ¾ʽÀ´ϴÙ.%n%n³ªÁ߿¡ ¼³ġ ÇÁ·α׷¥À» ´ٽà ½ÇÇàÇϿ© ¼³ġ¸¦ ³¡³¾ ¼ö ÀֽÀ´ϴÙ.%n%n¼³ġ ÇÁ·α׷¥À» Á¾·áÇϽðڽÀ´ϱî? +AboutSetupMenuItem=¼³ġ ÇÁ·α׷¥ Á¤º¸(&A)... +AboutSetupTitle=¼³ġ ÇÁ·α׷¥ Á¤º¸ +AboutSetupMessage=%1 ¹öÀü %2%n%3%n%n%1 ȨÆäÀÌÁö:%n%4 +AboutSetupNote= +TranslatorNote= +; *** Buttons +ButtonBack=< µڷÎ(&B) +ButtonNext=´ÙÀ½(&N) > +ButtonInstall=¼³ġ(&I) +ButtonOK=ȮÀÎ +ButtonCancel=Ãë¼Ò +ButtonYes=¿¹(&Y) +ButtonYesToAll=¸ðµÎ ¿¹(&A) +ButtonNo=¾ƴϿä(&N) +ButtonNoToAll=¸ðµÎ ¾ƴϿä(&O) +ButtonFinish=¸¶ħ(&F) +ButtonBrowse=ã¾ƺ¸±â(&B)... +ButtonWizardBrowse=ã¾ƺ¸±â(&R) +ButtonNewFolder=»õ Æú´õ ¸¸µé±â(&M) +; *** "Select Language" dialog messages +SelectLanguageTitle=¼³ġ ¾ð¾î ¼±Åà +SelectLanguageLabel=¼³ġ Á߿¡ »ç¿ëÇÒ ¾ð¾ ¼±ÅÃÇϼ¼¿ä. +; *** Common wizard text +ClickNext=°è¼ÓÇϷÁ¸é [´ÙÀ½]À» Ŭ¸¯Çϰí ¼³ġ ÇÁ·α׷¥À» Á¾·áÇϷÁ¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä. +BeveledLabel= +BrowseDialogTitle=Æú´õ ã¾ƺ¸±â +BrowseDialogLabel=¾Ʒ¡ ¸ñ·Ͽ¡¼­ Æú´õ¸¦ ¼±ÅÃÇÑ ´ÙÀ½ [ȮÀÎ]À» Ŭ¸¯Çϼ¼¿ä. +NewFolderName=»õ Æú´õ +; *** "Welcome" wizard page +WelcomeLabel1=[name] ¼³ġ ¸¶¹ý»ç ½ÃÀÛ +WelcomeLabel2=ÀÌ ¸¶¹ý»ç´Â ÄÄǻÅͿ¡ [name/ver]À»(¸¦) ¼³ġÇմϴÙ.%n%n°è¼ÓÇϱâ Àü¿¡ ´ٸ¥ ¸ðµç ÀÀ¿ë ÇÁ·α׷¥À» ´ݴ °ÍÀÌ ÁÁ½À´ϴÙ. +; *** "Password" wizard page +WizardPassword=¾Ïȣ +PasswordLabel1=ÀÌ ¼³ġ´Â ¾Ïȣ·Î º¸ȣµǰí ÀֽÀ´ϴÙ. +PasswordLabel3=°è¼ÓÇϷÁ¸é ¾Ïȣ¸¦ ÀԷÂÇÑ ´ÙÀ½ [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. ¾Ïȣ´Â ´ë¼ҹ®Àڸ¦ ±¸ºÐÇմϴÙ. +PasswordEditLabel=¾Ïȣ(&P): +IncorrectPassword=ÀԷÂÇÑ ¾Ïȣ°¡ À߸øµǾú½À´ϴÙ. ´ٽà ½õµÇϼ¼¿ä. +; *** "License Agreement" wizard page +WizardLicense=»ç¿ë±Ç °è¾à +LicenseLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ Á߿äÇÑ Á¤º¸¸¦ Àоî º¸¼¼¿ä. +LicenseLabel3=´ÙÀ½ »ç¿ë±Ç °è¾àÀ» Àоî Áּ¼¿ä. ¼³ġ¸¦ °è¼ÓÇϷÁ¸é ¸ÕÀú ÀÌ °è¾à Á¶°ǿ¡ µ¿ÀÇÇؾß ÇմϴÙ. +LicenseAccepted=°è¾࿡ µ¿ÀÇÇÔ(&A) +LicenseNotAccepted=°è¾࿡ µ¿ÀÇ ¾È ÇÔ(&D) +; *** "Information" wizard pages +WizardInfoBefore=Á¤º¸ +InfoBeforeLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ Á߿äÇÑ Á¤º¸¸¦ Àоî º¸¼¼¿ä. +InfoBeforeClickLabel=¼³ġ¸¦ °è¼Ó ÁøÇàÇÒ Áغñ°¡ µǸé [´ÙÀ½]À» Ŭ¸¯ÇմϴÙ. +WizardInfoAfter=Á¤º¸ +InfoAfterLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ Á߿äÇÑ Á¤º¸¸¦ Àоî º¸¼¼¿ä. +InfoAfterClickLabel=¼³ġ¸¦ °è¼Ó ÁøÇàÇÒ Áغñ°¡ µǸé [´ÙÀ½]À» Ŭ¸¯ÇմϴÙ. +; *** "User Information" wizard page +WizardUserInfo=»ç¿ëÀÚ Á¤º¸ +UserInfoDesc=Á¤º¸¸¦ ÀԷÂÇϼ¼¿ä. +UserInfoName=»ç¿ëÀÚ À̸§(&U): +UserInfoOrg=Á¶Á÷(&O): +UserInfoSerial=ÀϷà ¹øȣ(&S): +UserInfoNameRequired=À̸§À» ÀԷÂÇؾß ÇմϴÙ. +; *** "Select Destination Location" wizard page +WizardSelectDir=´ë»ó À§ġ ¼±Åà +SelectDirDesc=[name]À»(¸¦) ¾îµð¿¡ ¼³ġÇϽðڽÀ´ϱî? +SelectDirLabel3=¼³ġ ÇÁ·α׷¥¿¡¼­ [name]À»(¸¦) ´ÙÀ½ Æú´õ¿¡ ¼³ġÇմϴÙ. +SelectDirBrowseLabel=°è¼ÓÇϷÁ¸é [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. ´ٸ¥ Æú´õ¸¦ ¼±ÅÃÇϷÁ¸é [ã¾ƺ¸±â]¸¦ Ŭ¸¯Çϼ¼¿ä. +DiskSpaceMBLabel=Àû¾ [mb]MBÀÇ ¿©À¯ µð½ºũ °ø°£ÀÌ ÇʿäÇմϴÙ. +CannotInstallToNetworkDrive=¼³ġ ÇÁ·α׷¥Àº ³×Ʈ¿öũ µå¶óÀ̺꿡 ¼³ġÇÒ ¼ö ¾ø½À´ϴÙ. +CannotInstallToUNCPath=¼³ġ ÇÁ·α׷¥Àº UNC °æ·ο¡ ¼³ġÇÒ ¼ö ¾ø½À´ϴÙ. +InvalidPath=µå¶óÀ̺ê ¹®ÀڿÍ ÇԲ² Àüü °æ·θ¦ ÀԷÂÇؾß ÇմϴÙ. ¿¹:%n%nC:\APP%n%n¶Ǵ ´ÙÀ½ ÇüÅÂÀÇ UNC °æ·Î:%n%n\\server\share +InvalidDrive=¼±ÅÃÇÑ µå¶óÀ̺곪 UNC °øÀ¯°¡ ¾ø°ųª ÀÌ µÎ Ç׸ñ¿¡ ¾׼¼½ºÇÒ ¼ö ¾ø½À´ϴÙ. ´ٸ¥ µå¶óÀ̺곪 UNC °øÀ¯¸¦ ¼±ÅÃÇϼ¼¿ä. +DiskSpaceWarningTitle=µð½ºũ °ø°£ ºÎÁ· +DiskSpaceWarning=¼³ġ ÇÁ·α׷¥À» ¼³ġÇϷÁ¸é ¿©À¯ ¼³ġ °ø°£ÀÌ Àû¾ %1KB°¡ ÇʿäÇÏÁö¸¸ ¼±ÅÃÇÑ µå¶óÀ̺êÀÇ °¡¿ë °ø°£Àº %2KB¹ۿ¡ ¾ø½À´ϴÙ.%n%n±׷¡µµ °è¼ÓÇϽðڽÀ´ϱî? +DirNameTooLong=Æú´õ À̸§ ¶Ǵ °æ·ΰ¡ ³ʹ« ±é´ϴÙ. +InvalidDirName=Æú´õ À̸§ÀÌ À߸øµǾú½À´ϴÙ. +BadDirName32=Æú´õ À̸§¿¡´Â %n%n%1 ¹®Àڸ¦ »ç¿ëÇÒ ¼ö ¾ø½À´ϴÙ. +DirExistsTitle=Æú´õ ÀÖÀ½ +DirExists=Æú´õ %n%n%1%n%nÀÌ(°¡) À̹Ì ÀֽÀ´ϴÙ. ±׷¡µµ Çشç Æú´õ¿¡ ¼³ġÇϽðڽÀ´ϱî? +DirDoesntExistTitle=Æú´õ ¾øÀ½ +DirDoesntExist=Æú´õ %n%n%1%n%nÀÌ(°¡) ¾ø½À´ϴÙ. Æú´õ¸¦ ¸¸µå½ðڽÀ´ϱî? +; *** "Select Components" wizard page +WizardSelectComponents=±¸¼º ¿ä¼Ò ¼±Åà +SelectComponentsDesc=¾ ±¸¼º ¿ä¼Ҹ¦ ¼³ġÇϽðڽÀ´ϱî? +SelectComponentsLabel2=¼³ġÇÒ ±¸¼º ¿ä¼Ҵ ¼±ÅÃÇϰí ¼³ġÇÏÁö ¾ÊÀ» ±¸¼º ¿ä¼Ҵ Áö¿켼¿ä. °è¼Ó ÁøÇàÇÒ Áغñ°¡ µǸé [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. +FullInstallation=Àüü ¼³ġ +; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) +CompactInstallation=Compact ¼³ġ +CustomInstallation=»ç¿ëÀÚ ÁöÁ¤ ¼³ġ +NoUninstallWarningTitle=±¸¼º ¿ä¼Ұ¡ ÀÖÀ½ +NoUninstallWarning=¼³ġ ÇÁ·α׷¥¿¡¼­ ±¸¼º ¿ä¼Ò %n%n%1%n%nÀÌ(°¡) ÄÄǻÅͿ¡ À̹Ì ¼³ġµǾî ÀÖÀ½À» °¨ÁöÇ߽À´ϴÙ. À̷¯ÇÑ ±¸¼º ¿ä¼Ҵ ¼±Åà Ãë¼ÒÇصµ Á¦°ŵÇÁö ¾ʽÀ´ϴÙ.%n%n±׷¡µµ °è¼ÓÇϽðڽÀ´ϱî? +ComponentSize1=%1KB +ComponentSize2=%1MB +ComponentsDiskSpaceMBLabel=ÇöÀç ¼±ÅÃÀ» À§Çؼ­´Â Àû¾ [mb]MBÀÇ µð½ºũ °ø°£ÀÌ ÇʿäÇմϴÙ. +; *** "Select Additional Tasks" wizard page +WizardSelectTasks=Ã߰¡ À۾÷ ¼±Åà +SelectTasksDesc=¾ À۾÷À» Ã߰¡·Î ¼öÇàÇϽðڽÀ´ϱî? +SelectTasksLabel2=¼³ġ ÇÁ·α׷¥¿¡¼­ [name]À»(¸¦) ¼³ġÇϴ µ¿¾È ¼öÇàÇÒ Ã߰¡ À۾÷À» ¼±ÅÃÇÑ ÈÄ [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. +; *** "Select Start Menu Folder" wizard page +WizardSelectProgramGroup=½ÃÀÛ ¸޴º Æú´õ ¼±Åà +SelectStartMenuFolderDesc=¼³ġ ÇÁ·α׷¥¿¡¼­ ÇÁ·α׷¥ÀÇ ¹ٷÎ °¡±⸦ ¾îµð¿¡ ¸¸µ鵵·Ï ÇϽðڽÀ´ϱî? +SelectStartMenuFolderLabel3=¼³ġ ÇÁ·α׷¥¿¡¼­ ÇÁ·α׷¥ÀÇ ¹ٷÎ °¡±⸦ ´ÙÀ½ ½ÃÀÛ ¸޴º Æú´õ¿¡ ¸¸µì´ϴÙ. +SelectStartMenuFolderBrowseLabel=°è¼ÓÇϷÁ¸é [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. ´ٸ¥ Æú´õ¸¦ ¼±ÅÃÇϷÁ¸é [ã¾ƺ¸±â]¸¦ Ŭ¸¯Çϼ¼¿ä. +MustEnterGroupName=Æú´õ À̸§À» ÀԷÂÇؾß ÇմϴÙ. +GroupNameTooLong=Æú´õ À̸§ ¶Ǵ °æ·ΰ¡ ³ʹ« ±é´ϴÙ. +InvalidGroupName=Æú´õ À̸§ÀÌ À߸øµǾú½À´ϴÙ. +BadGroupName=Æú´õ À̸§¿¡´Â %n%n%1 ¹®Àڸ¦ »ç¿ëÇÒ ¼ö ¾ø½À´ϴÙ. +NoProgramGroupCheck2=½ÃÀÛ ¸޴º Æú´õ¸¦ ¸¸µéÁö ¾ÊÀ½(&D) +; *** "Ready to Install" wizard page +WizardReady=¼³ġ ÁغñµÊ +ReadyLabel1=ÀÌÁ¦ ¼³ġ ÇÁ·α׷¥ÀÌ ÄÄǻÅͿ¡ [name] ¼³ġ¸¦ ½ÃÀÛÇÒ Áغñ°¡ µǾú½À´ϴÙ. +ReadyLabel2a=¼³ġ¸¦ °è¼ÓÇϷÁ¸é [¼³ġ]¸¦ Ŭ¸¯Çϰí, ¼³Á¤À» °ËÅäÇϰųª º¯°æÇϷÁ¸é [µڷÎ]¸¦ Ŭ¸¯Çϼ¼¿ä. +ReadyLabel2b=¼³ġ¸¦ °è¼ÓÇϷÁ¸é [¼³ġ]¸¦ Ŭ¸¯Çϼ¼¿ä. +ReadyMemoUserInfo=»ç¿ëÀÚ Á¤º¸: +ReadyMemoDir=´ë»ó À§ġ: +ReadyMemoType=¼³ġ À¯Çü: +ReadyMemoComponents=¼±ÅÃÇÑ ±¸¼º ¿ä¼Ò: +ReadyMemoGroup=½ÃÀÛ ¸޴º Æú´õ: +ReadyMemoTasks=Ã߰¡ À۾÷: +; *** "Preparing to Install" wizard page +WizardPreparing=¼³ġ Áغñ Áß +PreparingDesc=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅͿ¡ [name] ¼³ġ¸¦ ÁغñÇϰí ÀֽÀ´ϴÙ. +PreviousInstallNotCompleted=ÀÌÀü ÇÁ·α׷¥ÀÇ ¼³ġ/Á¦°Å À۾÷ÀÌ ¿ϷáµÇÁö ¾ʾҽÀ´ϴÙ. Çشç ¼³ġ¸¦ ¿ϷáÇϷÁ¸é ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇؾß ÇմϴÙ.%n%nÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇÑ ÈÄ [name] ¼³ġ¸¦ ¿ϷáÇϷÁ¸é ¼³ġ ÇÁ·α׷¥À» ´ٽà ½ÇÇàÇϼ¼¿ä. +CannotContinue=¼³ġ ÇÁ·α׷¥À» °è¼ÓÇÒ ¼ö ¾ø½À´ϴÙ. Á¾·áÇϷÁ¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä. +ApplicationsFound=¼³ġ ÇÁ·α׷¥¿¡¼­ ¾÷µ¥ÀÌƮÇؾß Çϴ ÆÄÀÏÀÌ ´ÙÀ½ ÀÀ¿ë ÇÁ·α׷¥¿¡ »ç¿ëµǰí ÀֽÀ´ϴÙ. ¼³ġ ÇÁ·α׷¥¿¡¼­ À̷¯ÇÑ ÀÀ¿ë ÇÁ·α׷¥À» Àڵ¿À¸·Î ´ݵµ·Ï Çã¿ëÇϴ °ÍÀÌ ÁÁ½À´ϴÙ. +ApplicationsFound2=¼³ġ ÇÁ·α׷¥¿¡¼­ ¾÷µ¥ÀÌƮÇؾß Çϴ ÆÄÀÏÀÌ ´ÙÀ½ ÀÀ¿ë ÇÁ·α׷¥¿¡ »ç¿ëµǰí ÀֽÀ´ϴÙ. ¼³ġ ÇÁ·α׷¥¿¡¼­ À̷¯ÇÑ ÀÀ¿ë ÇÁ·α׷¥À» Àڵ¿À¸·Î ´ݵµ·Ï Çã¿ëÇϴ °ÍÀÌ ÁÁ½À´ϴÙ. ¼³ġ°¡ ¿ϷáµǸé ¼³ġ ÇÁ·α׷¥¿¡¼­ ÀÀ¿ë ÇÁ·α׷¥À» ´ٽà ½ÃÀÛÇϷÁ°í ½õµÇմϴÙ. +CloseApplications=ÀÀ¿ë ÇÁ·α׷¥ Àڵ¿ ´ݱâ(&A) +DontCloseApplications=ÀÀ¿ë ÇÁ·α׷¥À» ´ÝÁö ¾ÊÀ½(&D) +ErrorCloseApplications=¼³ġ ÇÁ·α׷¥¿¡¼­ ÀϺÎ ÀÀ¿ë ÇÁ·α׷¥À» Àڵ¿À¸·Î ´ÝÀ» ¼ö ¾ø½À´ϴÙ. °è¼ÓÇϱâ Àü¿¡ ¼³ġ ÇÁ·α׷¥¿¡¼­ ¾÷µ¥ÀÌƮÇؾß Çϴ ÆÄÀÏÀ» »ç¿ëÇϴ ÀÀ¿ë ÇÁ·α׷¥À» ¸ðµÎ ´ݴ °ÍÀÌ ÁÁ½À´ϴÙ. +; *** "Installing" wizard page +WizardInstalling=¼³ġ Áß +InstallingLabel=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅͿ¡ [name]À»(¸¦) ¼³ġÇϴ µ¿¾È ±â´ٷÁ Áּ¼¿ä. +; *** "Setup Completed" wizard page +FinishedHeadingLabel=[name] ¼³Á¤ ¸¶¹ý»縦 ¿ϷáÇϴ Áß +FinishedLabelNoIcons=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅͿ¡ [name]À»(¸¦) ¼³ġÇ߽À´ϴÙ. +FinishedLabel=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅͿ¡ [name]À»(¸¦) ¼³ġÇ߽À´ϴÙ. ¼³ġÇÑ ¹ٷÎ °¡±⸦ ¼±ÅÃÇϿ© Çشç ÀÀ¿ë ÇÁ·α׷¥À» ½ÃÀÛÇÒ ¼ö ÀֽÀ´ϴÙ. +ClickFinish=¼³ġ ÇÁ·α׷¥À» Á¾·áÇϷÁ¸é [¸¶ħ]À» Ŭ¸¯Çϼ¼¿ä. +FinishedRestartLabel=[name] ¼³ġ¸¦ ¿ϷáÇϷÁ¸é ¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇؾß ÇմϴÙ. Áö±Ý ´ٽà ½ÃÀÛÇϽðڽÀ´ϱî? +FinishedRestartMessage=[name] ¼³ġ¸¦ ¿ϷáÇϷÁ¸é ¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇؾß ÇմϴÙ.%n%nÁö±Ý ´ٽà ½ÃÀÛÇϽðڽÀ´ϱî? +ShowReadmeCheck=¿¹, README ÆÄÀÏÀ» º¸°ڽÀ´ϴÙ. +YesRadio=¿¹, ÄÄǻÅ͸¦ Áö±Ý ´ٽà ½ÃÀÛÇϰڽÀ´ϴÙ(&Y). +NoRadio=¾ƴϿä, ÄÄǻÅ͸¦ ³ªÁ߿¡ ´ٽà ½ÃÀÛÇϰڽÀ´ϴÙ(&N). +; used for example as 'Run MyProg.exe' +RunEntryExec=%1 ½ÇÇà +; used for example as 'View Readme.txt' +RunEntryShellExec=%1 º¸±â +; *** "Setup Needs the Next Disk" stuff +ChangeDiskTitle=¼³ġ ÇÁ·α׷¥¿¡¼­ ´ÙÀ½ µð½ºũ°¡ ÇʿäÇÔ +SelectDiskLabel2=µð½ºũ %1À»(¸¦) »ðÀÔÇÑ ´ÙÀ½ [ȮÀÎ]À» Ŭ¸¯Çϼ¼¿ä.%n%nÀÌ µð½ºũÀÇ ÆÄÀÏÀÌ ¾Ʒ¡ ǥ½õÈ Æú´õ°¡ ¾ƴÑ ´ٸ¥ Æú´õ¿¡ ÀÖÀ¸¸é ¿ùٸ¥ °æ·θ¦ ÀԷÂÇϰųª [ã¾ƺ¸±â]¸¦ Ŭ¸¯Çϼ¼¿ä. +PathLabel=°æ·Î(&P): +FileNotInDir2="%2"¿¡¼­ ÆÄÀÏ "%1"À»(¸¦) ãÀ» ¼ö ¾ø½À´ϴÙ. ¿ùٸ¥ µð½ºũ¸¦ »ðÀÔÇϰųª ´ٸ¥ Æú´õ¸¦ ¼±ÅÃÇϼ¼¿ä. +SelectDirectoryLabel=´ÙÀ½ µð½ºũÀÇ À§ġ¸¦ ÁöÁ¤Çϼ¼¿ä. +; *** Installation phase messages +SetupAborted=¼³ġ¸¦ ¿ϷáÇÏÁö ¸øÇ߽À´ϴÙ.%n%n¹®Á¦¸¦ ÇذáÇÑ ´ÙÀ½ ¼³ġ ÇÁ·α׷¥À» ´ٽà ½ÇÇàÇϼ¼¿ä. +EntryAbortRetryIgnore=´ٽà ½õµÇϷÁ¸é [´ٽà ½õµ]¸¦, ±׷¡µµ °è¼ÓÇϷÁ¸é [¹«½Ã]¸¦, ¼³ġ¸¦ Ãë¼ÒÇϷÁ¸é [ÁߴÜ]À» Ŭ¸¯Çϼ¼¿ä. +; *** Installation status messages +StatusClosingApplications=ÀÀ¿ë ÇÁ·α׷¥À» ´ݴ Áß... +StatusCreateDirs=µð·ºÅ͸®¸¦ ¸¸µå´Â Áß... +StatusExtractFiles=ÆÄÀÏÀ» ÃßÃâÇϴ Áß... +StatusCreateIcons=¹ٷÎ °¡±⸦ ¸¸µå´Â Áß... +StatusCreateIniEntries=INI Ç׸ñÀ» ¸¸µå´Â Áß... +StatusCreateRegistryEntries=·¹Áö½ºƮ¸® Ç׸ñÀ» ¸¸µå´Â Áß... +StatusRegisterFiles=ÆÄÀÏÀ» µî·ÏÇϴ Áß... +StatusSavingUninstall=Á¦°Å Á¤º¸¸¦ ÀúÀåÇϴ Áß... +StatusRunProgram=¼³ġ¸¦ ¿ϷáÇϴ Áß... +StatusRestartingApplications=ÀÀ¿ë ÇÁ·α׷¥À» ´ٽà ½ÃÀÛÇϴ Áß... +StatusRollback=º¯°æ »çÇ×À» ·ѹéÇϴ Áß... +; *** Misc. errors +ErrorInternal2=³»ºÎ ¿À·ù: %1 +ErrorFunctionFailedNoCode=%1 ½ÇÆÐ +ErrorFunctionFailed=%1 ½ÇÆÐ, Äڵå %2 +ErrorFunctionFailedWithMessage=%1 ½ÇÆÐ, Äڵå %2.%n%3 +ErrorExecutingProgram=ÆÄÀÏÀ» ½ÇÇàÇÒ ¼ö ¾øÀ½:%n%1 +; *** Registry errors +ErrorRegOpenKey=·¹Áö½ºƮ¸® ۸¦ ¿©´Â Áß ¿À·ù ¹߻ý:%n%1\%2 +ErrorRegCreateKey=·¹Áö½ºƮ¸® ۸¦ ¸¸µå´Â Áß ¿À·ù ¹߻ý:%n%1\%2 +ErrorRegWriteKey=·¹Áö½ºƮ¸® Ű¿¡ ±â·ÏÇϴ Áß ¿À·ù ¹߻ý:%n%1\%2 +; *** INI errors +ErrorIniEntry=ÆÄÀÏ "%1"¿¡ INI Ç׸ñÀ» ¸¸µå´Â Á߿¡ ¿À·ù°¡ ¹߻ýÇ߽À´ϴÙ. +; *** File copying errors +FileAbortRetryIgnore=´ٽà ½õµÇϷÁ¸é [´ٽà ½õµ]¸¦, ÀÌ ÆÄÀÏÀ» °dzʶٷÁ¸é [¹«½Ã](±ÇÀåµÇÁö ¾ÊÀ½)¸¦, ¼³ġ¸¦ Ãë¼ÒÇϷÁ¸é [ÁߴÜ]À» Ŭ¸¯Çϼ¼¿ä. +FileAbortRetryIgnore2=´ٽà ½õµÇϷÁ¸é [´ٽà ½õµ]¸¦, ±׷¡µµ °è¼ÓÇϷÁ¸é [¹«½Ã](±ÇÀåµÇÁö ¾ÊÀ½)¸¦, ¼³ġ¸¦ Ãë¼ÒÇϷÁ¸é [ÁߴÜ]À» Ŭ¸¯Çϼ¼¿ä. +SourceIsCorrupted=¿øº» ÆÄÀÏÀÌ ¼ջóµǾú½À´ϴÙ. +SourceDoesntExist=¿øº» ÆÄÀÏ "%1"ÀÌ(°¡) ¾ø½À´ϴÙ. +ExistingFileReadOnly=±âÁ¸ ÆÄÀÏÀÌ Àбâ Àü¿ëÀ¸·Î ǥ½õǾî ÀֽÀ´ϴÙ.%n%nÀбâ Àü¿ë Ư¼ºÀ» Á¦°ÅÇϰí ´ٽà ½õµÇϷÁ¸é [´ٽà ½õµ]¸¦, ÀÌ ÆÄÀÏÀ» °dzʶٷÁ¸é [¹«½Ã]¸¦, ¼³ġ¸¦ Ãë¼ÒÇϷÁ¸é [ÁߴÜ]À» Ŭ¸¯Çϼ¼¿ä. +ErrorReadingExistingDest=±âÁ¸ ÆÄÀÏÀ» Àд Áß ¿À·ù ¹߻ý: +FileExists=Çشç ÆÄÀÏÀÌ À̹Ì ÀֽÀ´ϴÙ.%n%n¼³ġ ÇÁ·α׷¥¿¡¼­ ÀÌ ÆÄÀÏÀ» µ¤¾µµ·Ï ÇϽðڽÀ´ϱî? +ExistingFileNewer=±âÁ¸ ÆÄÀÏÀÌ ¼³ġ ÇÁ·α׷¥¿¡¼­ ¼³ġÇϷÁ´Â ÆÄÀϺ¸´Ù ÃֽÅÀԴϴÙ. ±âÁ¸ ÆÄÀÏÀ» À¯ÁöÇÒ °ÍÀ» ±ÇÀåÇմϴÙ.%n%n±âÁ¸ ÆÄÀÏÀ» À¯ÁöÇϽðڽÀ´ϱî? +ErrorChangingAttr=±âÁ¸ ÆÄÀÏÀÇ Ư¼ºÀ» º¯°æÇϴ Áß ¿À·ù ¹߻ý: +ErrorCreatingTemp=´ë»ó µð·ºÅ͸®¿¡ ÆÄÀÏÀ» ¸¸µå´Â Áß ¿À·ù ¹߻ý: +ErrorReadingSource=¿øº» ÆÄÀÏÀ» Àд Áß ¿À·ù ¹߻ý: +ErrorCopying=ÆÄÀÏÀ» º¹»çÇϴ Áß ¿À·ù ¹߻ý: +ErrorReplacingExistingFile=±âÁ¸ ÆÄÀÏÀ» ¹ٲٴ Áß ¿À·ù ¹߻ý: +ErrorRestartReplace=RestartReplace ½ÇÆÐ: +ErrorRenamingTemp=´ë»ó µð·ºÅ͸®¿¡ Àִ ÆÄÀÏ À̸§À» ¹ٲٴ Áß ¿À·ù ¹߻ý: +ErrorRegisterServer=DLL/OCX¸¦ µî·ÏÇÒ ¼ö ¾øÀ½: %1 +ErrorRegSvr32Failed=Á¾·á Äڵå %1°ú(¿Í) ÇԲ² RegSvr32 ½ÇÆÐ +ErrorRegisterTypeLib=Çü½Ä ¶óÀ̺귯¸®¸¦ µî·ÏÇÒ ¼ö ¾øÀ½: %1 +; *** Post-installation errors +ErrorOpeningReadme=README ÆÄÀÏÀ» ¿©´Â Á߿¡ ¿À·ù°¡ ¹߻ýÇ߽À´ϴÙ. +ErrorRestartingComputer=¼³ġ ÇÁ·α׷¥¿¡¼­ ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇÒ ¼ö ¾ø½À´ϴÙ. ¼öµ¿À¸·Î ÁøÇàÇϼ¼¿ä. +; *** Uninstaller messages +UninstallNotFound=ÆÄÀÏ "%1"ÀÌ(°¡) ¾ø½À´ϴÙ. Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. +UninstallOpenError=ÆÄÀÏ "%1"À»(¸¦) ¿­ ¼ö ¾ø½À´ϴÙ. Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. +UninstallUnsupportedVer=Á¦°Å ·α× ÆÄÀÏ "%1"ÀÌ(°¡) ÀÌ ¹öÀüÀÇ Á¦°Å ÇÁ·α׷¥¿¡¼­ ÀνÄÇÏÁö ¸øÇϴ Çü½ÄÀԴϴÙ. Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. +UninstallUnknownEntry=Á¦°Å ·α׿¡¼­ ¾Ë ¼ö ¾ø´Â Ç׸ñ(%1)ÀÌ ¹߰ߵǾú½À´ϴÙ. +ConfirmUninstall=%1°ú(¿Í) Çشç ±¸¼º ¿ä¼Ҹ¦ ¸ðµÎ ¿ÏÀüÈ÷ Á¦°ÅÇϽðڽÀ´ϱî? +UninstallOnlyOnWin64=ÀÌ ¼³ġ´Â 64ºñƮ Windows¿¡¼­¸¸ Á¦°ÅÇÒ ¼ö ÀֽÀ´ϴÙ. +OnlyAdminCanUninstall=ÀÌ ¼³ġ´Â °ü¸®ÀÚ ±ÇÇÑÀÌ Àִ »ç¿ëÀڸ¸ Á¦°ÅÇÒ ¼ö ÀֽÀ´ϴÙ. +UninstallStatusLabel=ÄÄǻÅͿ¡¼­ %1À»(¸¦) Á¦°ÅÇϴ µ¿¾È ±â´ٷÁ Áּ¼¿ä. +UninstalledAll=ÄÄǻÅͿ¡¼­ %1À»(¸¦) Á¦°ÅÇ߽À´ϴÙ. +UninstalledMost=%1 Á¦°Ű¡ ¿ϷáµǾú½À´ϴÙ.%n%nÀϺÎ ¿ä¼Ҵ Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. À̷¯ÇÑ Ç׸ñÀº ¼öµ¿À¸·Î Á¦°ÅÇÒ ¼ö ÀֽÀ´ϴÙ. +UninstalledAndNeedsRestart=%1 Á¦°Ÿ¦ ¿ϷáÇϷÁ¸é ÄÄǻÅ͸¦ ´ٽà ½ÃÀÛÇؾß ÇմϴÙ.%n%nÁö±Ý ´ٽà ½ÃÀÛÇϽðڽÀ´ϱî? +UninstallDataCorrupted="%1" ÆÄÀÏÀÌ ¼ջóµǾú½À´ϴÙ. Á¦°ÅÇÒ ¼ö ¾ø½À´ϴÙ. +; *** Uninstallation phase messages +ConfirmDeleteSharedFileTitle=°øÀ¯ ÆÄÀÏÀ» Á¦°ÅÇϽðڽÀ´ϱî? +ConfirmDeleteSharedFile2=½ýºÅۿ¡¼­´Â ÀÌÁ¦ ´ÙÀ½ °øÀ¯ ÆÄÀÏÀ» »ç¿ëÇϴ ÇÁ·α׷¥ÀÌ ¾ø´Â °ÍÀ¸·Î ǥ½õ˴ϴÙ. Á¦°Å À۾÷À» ÅëÇØ ÀÌ °øÀ¯ ÆÄÀÏÀ» Á¦°ÅÇϽðڽÀ´ϱî?%n%n¾ÆÁ÷ ÀÌ ÆÄÀÏÀ» »ç¿ëÇϴ ÇÁ·α׷¥ÀÌ Àִµ¥ ÀÌ ÆÄÀÏÀ» Á¦°ÅÇϸé Çشç ÇÁ·α׷¥ÀÌ ¿ùٸ£°Ô À۵¿ÇÏÁö ¾ÊÀ» ¼ö ÀֽÀ´ϴÙ. Àß ¸𸣴 °æ¿ì [¾ƴϿä]¸¦ ¼±ÅÃÇϼ¼¿ä. ½ýºÅۿ¡ ÆÄÀÏÀ» ±״ë·Î µξ ¾ƹ«·± ¹®Á¦°¡ ¹߻ýÇÏÁö ¾ʽÀ´ϴÙ. +SharedFileNameLabel=ÆÄÀÏ À̸§: +SharedFileLocationLabel=À§ġ: +WizardUninstalling=Á¦°Å »óÅ +StatusUninstalling=%1À»(¸¦) Á¦°ÅÇϴ Áß... +; *** Shutdown block reasons +ShutdownBlockReasonInstallingApp=%1À»(¸¦) ¼³ġÇϴ ÁßÀԴϴÙ. +ShutdownBlockReasonUninstallingApp=%1À»(¸¦) Á¦°ÅÇϴ ÁßÀԴϴÙ. +; The custom messages below aren't used by Setup itself, but if you make +; use of them in your scripts, you'll want to translate them. +[CustomMessages] +NameAndVersion=%1 ¹öÀü %2 +AdditionalIcons=Ã߰¡ ¹ٷÎ °¡±â: +CreateDesktopIcon=¹ÙÅÁ ȭ¸é ¹ٷÎ °¡±â ¸¸µé±â(&D) +CreateQuickLaunchIcon=ºü¸¥ ½ÇÇà ¹ٷÎ °¡±â ¸¸µé±â(&Q) +ProgramOnTheWeb=%1 À¥ Á¤º¸ +UninstallProgram=%1 Á¦°Å +LaunchProgram=%1 ½ÃÀÛ +AssocFileExtension=%1À»(¸¦) %2 ÆÄÀÏ ȮÀå¸í°ú ¿¬°á(&A) +AssocingFileExtension=%1À»(¸¦) %2 ÆÄÀÏ ȮÀå¸í°ú ¿¬°á Áß... +AutoStartProgramGroupDescription=½ÃÀÛ: +AutoStartProgram=%1 Àڵ¿ ½ÃÀÛ AddonHostProgramNotFound=¼±ÅÃÇÑ Æú´õ¿¡¼­ %1À»(¸¦) ãÀ» ¼ö ¾ø½À´ϴÙ.%n%n±׷¡µµ °è¼ÓÇϽðڽÀ´ϱî? \ No newline at end of file diff --git a/build/win32/i18n/Default.zh-cn.isl b/build/win32/i18n/Default.zh-cn.isl index ab37ae8ad6f..e384e83d30d 100644 --- a/build/win32/i18n/Default.zh-cn.isl +++ b/build/win32/i18n/Default.zh-cn.isl @@ -1,298 +1,298 @@ -; *** Inno Setup version 5.5.3+ Simplified Chinese messages *** -; -; To download user-contributed translations of this file, go to: -; http://www.jrsoftware.org/files/istrans/ -; -; Note: When translating this text, do not add periods (.) to the end of -; messages that didn't have them already, because on those messages Inno -; Setup adds the periods automatically (appending a period would result in -; two periods being displayed). -[LangOptions] -; The following three entries are very important. Be sure to read and -; understand the '[LangOptions] section' topic in the help file. -LanguageName=Simplified Chinese -LanguageID=$0804 -LanguageCodePage=936 -; If the language you are translating to requires special font faces or -; sizes, uncomment any of the following entries and change them accordingly. -;DialogFontName= -;DialogFontSize=8 -;WelcomeFontName=Verdana -;WelcomeFontSize=12 -;TitleFontName=Arial -;TitleFontSize=29 -;CopyrightFontName=Arial -;CopyrightFontSize=8 -[Messages] -; *** Application titles -SetupAppTitle=°²װ³ÌÐò -SetupWindowTitle=°²װ³ÌÐò - %1 -UninstallAppTitle=жÔØ -UninstallAppFullTitle=%1 жÔØ -; *** Misc. common -InformationTitle=ÐÅϢ -ConfirmTitle=ȷÈÏ -ErrorTitle=´íÎó -; *** SetupLdr messages -SetupLdrStartupMessage=Õ⽫°²װ %1¡£ÊǷñҪ¼ÌÐø? -LdrCannotCreateTemp=Î޷¨´´½¨ÁÙʱÎļþ¡£°²װ³ÌÐòÒÑÖÐֹ -LdrCannotExecTemp=Î޷¨ÔÚÁÙʱĿ¼ÖÐִÐÐÎļþ¡£°²װ³ÌÐòÒÑÖÐֹ -; *** Startup error messages -LastErrorMessage=%1¡£%n%n´íÎó %2: %3 -SetupFileMissing=°²װĿ¼ȱʧÎļþ %1¡£Çë¸üÕý¸ÃÎÊÌâ»ò»ñȡ¸ÃÎÊÌâµÄи±±¾¡£ -SetupFileCorrupt=°²װ³ÌÐòÎļþ¼ÐÒÑË𻵡£Çë»ñȡ¸óÌÐòµÄи±±¾¡£ -SetupFileCorruptOrWrongVer=°²װ³ÌÐòÎļþ¼ÐÒÑË𻵻òÓë´˰²װ³ÌÐò°汾²»¼æÈݡ£Çë¸üÕý¸ÃÎÊÌâ»ò»ñȡ¸óÌÐòµÄи±±¾¡£ -InvalidParameter=ÃüÁîÐÐ %n%n%1 Éϴ«µÝÁËһ¸öÎÞЧ²ÎÊý -SetupAlreadyRunning=°²װ³ÌÐòÒÑÔÚÔËÐС£ -WindowsVersionNotSupported=´˳ÌÐò²»֧³ÖÄã¼ÆËã»úÕýÔËÐеÄ Windows °汾¡£ -WindowsServicePackRequired=´˳ÌÐòÐèҪ %1 ·þÎñ°ü %2 »ò¸ü¸߰汾¡£ -NotOnThisPlatform=´˳ÌÐ򽫲»ÔÚ %1 ÉÏÔËÐС£ -OnlyOnThisPlatform=´˳ÌÐò±ØÐëÔÚ %1 ÉÏÔËÐС£ -OnlyOnTheseArchitectures=´˳ÌÐò½ö¿ɰ²װÔÚΪÒÔÏ´¦ÀíÆ÷Ìåϵ½ṹÉè¼ƵÄ Windows °汾ÉÏ:%n%n%1 -MissingWOW64APIs=ÄãÕýÔËÐеÄ Windows °汾²»°üº¬°²װ³ÌÐòִÐÐ 64 λ°²װËùÐèµĹ¦Äܡ£Ҫ¸üÕý´ËÎÊÌ⣬Ç밲װ·þÎñ°ü %1¡£ -WinVersionTooLowError=´˳ÌÐòÐèҪ %1 °汾 %2 »ò¸ü¸߰汾¡£ -WinVersionTooHighError=´˳ÌÐò²»Äܰ²װÔÚ %1 °汾 %2 »ò¸ü¸ߵİ汾Éϡ£ -AdminPrivilegesRequired=Ôڰ²װ´˳ÌÐòʱ±ØÐë×÷Ϊ¹ÜÀíԱµÇ¼¡£ -PowerUserPrivilegesRequired=°²װ´˳ÌÐòʱ±ØÐëÒԹÜÀíԱ»ò Power User ×é³ÉԱÉí·ݵǼ¡£ -SetupAppRunningError=°²װ³ÌÐò¼ì²⵽ %1 µ±ǰÕýÔÚÔËÐС£%n%nÇëÁ¢¼´¹رÕËüµÄËùÓÐʵÀý£¬Ȼº󵥻÷¡°ȷ¶¨¡±ÒԼÌÐø£¬»򵥻÷¡°ȡÏû¡±ÒÔÍ˳ö¡£ -UninstallAppRunningError=жÔؼì²⵽ %1 µ±ǰÕýÔÚÔËÐС£%n%nÇëÁ¢¼´¹رÕËüµÄËùÓÐʵÀý£¬Ȼº󵥻÷¡°ȷ¶¨¡±ÒԼÌÐø»򵥻÷¡°ȡÏû¡±ÒÔÍ˳ö¡£ -; *** Misc. errors -ErrorCreatingDir=°²װ³ÌÐòÎ޷¨´´½¨Ŀ¼¡°%1¡± -ErrorTooManyFilesInDir=Î޷¨ÔÚĿ¼¡°%1¡±Öд´½¨Îļþ£¬ÒòΪËü°üº¬̫¶àÎļþ -; *** Setup common messages -ExitSetupTitle=Í˳ö°²װ³ÌÐò -ExitSetupMessage=°²װ³ÌÐòδÍê³ɡ£Èç¹ûÁ¢¼´Í˳ö£¬½«²»»ᰲװ¸óÌÐò¡£%n%n¿ÉÔÚÆäËûʱ¼äÔٴÎÔËÐа²װ³ÌÐòÒÔÍê³ɰ²װ¡£%n%nÊǷñÍ˳ö°²װ³ÌÐò? -AboutSetupMenuItem=¹ØÓڰ²װ³ÌÐò(&A)... -AboutSetupTitle=¹ØÓڰ²װ³ÌÐò -AboutSetupMessage=%1 °汾 %2%n%3%n%n%1 Ö÷ҳ:%n%4 -AboutSetupNote= -TranslatorNote= -; *** Buttons -ButtonBack=< ÉÏһ²½(&B) -ButtonNext=ÏÂһ²½(&N) > -ButtonInstall=°²װ(&I) -ButtonOK=ȷ¶¨ -ButtonCancel=ȡÏû -ButtonYes=ÊÇ(&Y) -ButtonYesToAll=½ÓÊÜȫ²¿(&A) -ButtonNo=·ñ(&N) -ButtonNoToAll=·ñ¶¨ȫ²¿(&O) -ButtonFinish=Íê³É(&F) -ButtonBrowse=ä¯ÀÀ(&B)... -ButtonWizardBrowse=ä¯ÀÀ(&R)... -ButtonNewFolder=н¨Îļþ¼Ð(&M) -; *** "Select Language" dialog messages -SelectLanguageTitle=ѡÔñ°²װ³ÌÐòÓïÑÔ -SelectLanguageLabel=ѡÔñ°²װʱҪʹÓõÄÓïÑÔ: -; *** Common wizard text -ClickNext=µ¥»÷¡°ÏÂһ²½¡±ÒԼÌÐø£¬»򵥻÷¡°ȡÏû¡±ÒÔÍ˳ö°²װ³ÌÐò¡£ -BeveledLabel= -BrowseDialogTitle=ä¯ÀÀ²éÕÒÎļþ¼Ð -BrowseDialogLabel=ÔÚÒÔÏÂÁбíÖÐѡÔñһ¸öÎļþ¼У¬Ȼº󵥻÷¡°ȷ¶¨¡±¡£ -NewFolderName=н¨Îļþ¼Ð -; *** "Welcome" wizard page -WelcomeLabel1=»¶ӭʹÓà [name] °²װÏòµ¼ -WelcomeLabel2=Õ⽫ÔڼÆËã»úÉϰ²װ [name/ver]¡£%n%n½¨Òé¹رÕËùÓÐÆäËûӦÓóÌÐòÔټÌÐø¡£ -; *** "Password" wizard page -WizardPassword=ÃÜÂë -PasswordLabel1=´˰²װÊÜÃÜÂ뱣»¤¡£ -PasswordLabel3=ÇëÌṩÃÜÂ룬Ȼº󵥻÷¡°ÏÂһ²½¡±ÒԼÌÐø¡£ÃÜÂëÇø·ִóСд¡£ -PasswordEditLabel=ÃÜÂë(&P): -IncorrectPassword=ÊäÈëµÄÃÜÂ벻Õýȷ¡£ÇëÖØÊԡ£ -; *** "License Agreement" wizard page -WizardLicense=Ðí¿ÉЭÒé -LicenseLabel=ÇëÔڼÌÐø²Ù×÷ǰÔĶÁÒÔÏÂÖØҪÐÅϢ¡£ -LicenseLabel3=ÇëÔĶÁÒÔÏÂÐí¿ÉЭÒ顣±ØÐë½ÓÊܴËЭÒéÌõ¿î²ſɼÌÐø°²װ¡£ -LicenseAccepted=ÎҽÓÊÜЭÒé(&A) -LicenseNotAccepted=ÎҲ»½ÓÊÜЭÒé(&D) -; *** "Information" wizard pages -WizardInfoBefore=ÐÅϢ -InfoBeforeLabel=ÇëÔڼÌÐø²Ù×÷ǰÔĶÁÒÔÏÂÖØҪÐÅϢ¡£ -InfoBeforeClickLabel=׼±¸ºüÌÐø°²װº󣬵¥»÷¡°ÏÂһ²½¡±¡£ -WizardInfoAfter=ÐÅϢ -InfoAfterLabel=ÇëÔڼÌÐø²Ù×÷ǰÔĶÁÒÔÏÂÖØҪÐÅϢ¡£ -InfoAfterClickLabel=׼±¸ºüÌÐø°²װº󣬵¥»÷¡°ÏÂһ²½¡±¡£ -; *** "User Information" wizard page -WizardUserInfo=Óû§ÐÅϢ -UserInfoDesc=ÇëÊäÈëÄãµÄÐÅϢ¡£ -UserInfoName=Óû§Ãû(&U): -UserInfoOrg=×é֯(&O): -UserInfoSerial=ÐòÁкÅ(&S): -UserInfoNameRequired=±ØÐëÊäÈëÃû³ơ£ -; *** "Select Destination Location" wizard page -WizardSelectDir=ѡÔñĿ±êλÖà -SelectDirDesc=Ӧ½« [name] °²װµ½ÄÄÀï? -SelectDirLabel3=°²װ³ÌÐò»Ὣ [name] °²װµ½ÒÔÏÂÎļþ¼С£ -SelectDirBrowseLabel=ÈôҪ¼ÌÐø£¬µ¥»÷¡°ÏÂһ²½¡±¡£Èç¹ûÏëѡÔñÆäËûÎļþ¼У¬µ¥»÷¡°ä¯ÀÀ¡±¡£ -DiskSpaceMBLabel=ÐèҪÖÁÉÙ [mb] MB ¿ÉÓôÅÅ̿ռ䡣 -CannotInstallToNetworkDrive=°²װ³ÌÐòÎ޷¨°²װµ½ÍøÂçÇý¶¯Æ÷¡£ -CannotInstallToUNCPath=°²װ³ÌÐòÎ޷¨°²װµ½ UNC ·¾¶¡£ -InvalidPath=±ØÐëÊäÈë´øÇý¶¯Æ÷ºŵÄÍêÕû·¾¶(ÀýÈç:%n%nC:\APP%n%n)»òÒÔϸñʽµÄ UNC ·¾¶:%n%n\\server\share -InvalidDrive=ËùѡÇý¶¯Æ÷»ò UNC ¹²Ïí²»´æÔڻ򲻿ɷÃÎʡ£ÇëÁíÍâѡÔñ¡£ -DiskSpaceWarningTitle=´ÅÅ̿ռ䲻×ã -DiskSpaceWarning=°²װ³ÌÐòÐèҪÖÁÉÙ %1 KB ¿ÉÓÿռäÀ´°²װ£¬µ«ËùѡÇý¶¯Æ÷½öÓÐ %2 KB ¿ÉÓÿռ䡣%n%nÊǷñÈÔҪ¼ÌÐø? -DirNameTooLong=Îļþ¼ÐÃû³ƻò·¾¶̫³¤¡£ -InvalidDirName=Îļþ¼ÐÃû³ÆÎÞЧ¡£ -BadDirName32=Îļþ¼ÐÃû²»Äܰüº¬ÒÔÏÂÈÎһ×ַû:%n%n%1 -DirExistsTitle=Îļþ¼дæÔÚ -DirExists=Îļþ¼Ð:%n%n%1%n%nÒѴæÔڡ£ÊǷñÈÔҪ°²װµ½¸ÃÎļþ¼Ð? -DirDoesntExistTitle=Îļþ¼в»´æÔÚ -DirDoesntExist=Îļþ¼Ð:%n%n%1%n%n²»´æÔڡ£ÊǷñҪ´´½¨¸ÃÎļþ¼Ð? -; *** "Select Components" wizard page -WizardSelectComponents=ѡÔñ×é¼þ -SelectComponentsDesc=Ӧ°²װÄÄЩ×é¼þ? -SelectComponentsLabel2=ѡÔñϣÍû°²װµÄ×é¼þ£»Çå³ý²»ϣÍû°²װµÄ×é¼þ¡£׼±¸¾ÍÐ÷º󵥻÷¡°ÏÂһ²½¡±ÒԼÌÐø¡£ -FullInstallation=Íêȫ°²װ -; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) -CompactInstallation=¼ò½లװ -CustomInstallation=×Զ¨Ò尲װ -NoUninstallWarningTitle=×é¼þ´æÔÚ -NoUninstallWarning=°²װ³ÌÐò¼ì²⵽¼ÆËã»úÉÏÒѰ²װÒÔÏÂ×é¼þ:%n%n%1%n%nȡÏûѡÔñÕâЩ×é¼þ½«²»»áжÔØËüÃǡ£%n%nÊǷñÈÔҪ¼ÌÐø? -ComponentSize1=%1 KB -ComponentSize2=%1 MB -ComponentsDiskSpaceMBLabel=µ±ǰѡÔñÐèҪÖÁÉÙ [mb] MB ´ÅÅ̿ռ䡣 -; *** "Select Additional Tasks" wizard page -WizardSelectTasks=ѡÔñÆäËûÈÎÎñ -SelectTasksDesc=ӦִÐÐÄÄЩÆäËûÈÎÎñ? -SelectTasksLabel2=ѡÔñ°²װ [name] ʱϣÍû°²װ³ÌÐòÀ´ִÐеÄÆäËûÈÎÎñ£¬Ȼº󵥻÷¡°ÏÂһ²½¡±¡£ -; *** "Select Start Menu Folder" wizard page -WizardSelectProgramGroup=ѡÔñ¿ªʼ²˵¥Îļþ¼Ð -SelectStartMenuFolderDesc=°²װ³ÌÐòӦ½«³ÌÐòµĿì½ݷ½ʽ·ÅÖõ½ÄÄÀï? -SelectStartMenuFolderLabel3=°²װ³ÌÐò½«ÔÚÒÔÏ¿ªʼ²˵¥Îļþ¼ÐÖд´½¨¸óÌÐòµĿì½ݷ½ʽ¡£ -SelectStartMenuFolderBrowseLabel=ÈôҪ¼ÌÐø£¬µ¥»÷¡°ÏÂһ²½¡±¡£Èç¹ûÏëѡÔñÆäËûÎļþ¼У¬µ¥»÷¡°ä¯ÀÀ¡±¡£ -MustEnterGroupName=±ØÐëÊäÈëÎļþ¼ÐÃû¡£ -GroupNameTooLong=Îļþ¼ÐÃû³ƻò·¾¶̫³¤¡£ -InvalidGroupName=Îļþ¼ÐÃû³ÆÎÞЧ¡£ -BadGroupName=Îļþ¼ÐÃû²»Äܱ£»¤ÒÔÏÂÈÎһ×ַû:%n%n%1 -NoProgramGroupCheck2=²»´´½¨¿ªʼ²˵¥Îļþ¼Ð(&D) -; *** "Ready to Install" wizard page -WizardReady=°²װ׼±¸¾ÍÐ÷ -ReadyLabel1=°²װ³ÌÐòÏÖÒÑ׼±¸ºÃÔڼÆËã»úÉϰ²װ [name]¡£ -ReadyLabel2a=µ¥»÷¡°°²װ¡±ÒԼÌÐø°²װ£¬ÈçÏë²鿴»ò¸ü¸ÄÈκÎÉèÖÃÔ򵥻÷"·µ»Ø"¡£ -ReadyLabel2b=µ¥»÷¡°°²װ¡±ÒԼÌÐø°²װ¡£ -ReadyMemoUserInfo=Óû§ÐÅϢ: -ReadyMemoDir=Ŀ±êλÖÃ: -ReadyMemoType=°²װ³ÌÐòÀàÐÍ: -ReadyMemoComponents=Ëùѡ×é¼þ: -ReadyMemoGroup=¿ªʼ²˵¥Îļþ¼Ð: -ReadyMemoTasks=ÆäËûÈÎÎñ: -; *** "Preparing to Install" wizard page -WizardPreparing=ÕýÔÚ׼±¸°²װ -PreparingDesc=°²װ³ÌÐòÕý׼±¸ÔڼÆËã»úÉϰ²װ [name]¡£ -PreviousInstallNotCompleted=ÉÏһ¸ö³ÌÐòµİ²װ/ɾ³ýδÍê³ɡ£ÐèÖØÆô¼ÆËã»úÒÔÍê³ɸð²װ¡£%n%nÖØÆô¼ÆËã»úºó£¬ÖØÐÂÔËÐа²װ³ÌÐòÒÔÍê³É [name] µİ²װ¡£ -CannotContinue=°²װ³ÌÐòÎ޷¨¼ÌÐø¡£Ç뵥»÷"ȡÏû"ÒÔÍ˳ö¡£ -ApplicationsFound=ÒÔÏÂӦÓóÌÐòÕýÔÚʹÓÃÐèҪͨ¹ý°²װ³ÌÐò½øÐиüеÄÎļþ¡£½¨ÒéÔÊÐí°²װ³ÌÐò×Զ¯¹رÕÕâЩӦÓóÌÐò¡£ -ApplicationsFound2=ÒÔÏÂӦÓóÌÐòÕýÔÚʹÓÃÐèҪͨ¹ý°²װ³ÌÐò½øÐиüеÄÎļþ¡£½¨ÒéÔÊÐí°²װ³ÌÐò×Զ¯¹رÕÕâЩӦÓóÌÐò¡£Íê³ɰ²װº󣬰²װ³ÌÐ򽫳¢ÊÔÖØÆôӦÓóÌÐò¡£ -CloseApplications=×Զ¯¹رÕӦÓóÌÐò(&A) -DontCloseApplications=²»¹رÕӦÓóÌÐò(&D) -ErrorCloseApplications=°²װ³ÌÐòÎ޷¨×Զ¯¹رÕËùÓÐӦÓóÌÐ򡣽¨ÒéÔڼÌÐø²Ù×÷֮ǰÏȹرÕËùÓÐʹÓÃÐèͨ¹ý°²װ³ÌÐò½øÐиüеÄÎļþµÄӦÓóÌÐò¡£ -; *** "Installing" wizard page -WizardInstalling=ÕýÔڰ²װ -InstallingLabel=°²װ³ÌÐòÕýÔڼÆËã»úÉϰ²װ [name]£¬ÇëÉԵȡ£ -; *** "Setup Completed" wizard page -FinishedHeadingLabel=Íê³É [name] °²װÏòµ¼ -FinishedLabelNoIcons=°²װ³ÌÐòÒÑÔڼÆËã»úÉÏÍê³ɰ²װ [name]¡£ -FinishedLabel=°²װ³ÌÐòÒÑÔڼÆËã»úÉÏÍê³ɰ²װ [name]¡£ͨ¹ýѡÔñ°²װµĿì½ݷ½ʽ¿ÉÒÔÆô¶¯¸ÃӦÓóÌÐò¡£ -ClickFinish=µ¥»÷¡°Íê³ɡ±ÒÔÍ˳ö°²װ³ÌÐò¡£ -FinishedRestartLabel=ҪÍê³É [name] µİ²װ£¬°²װ³ÌÐò±ØÐëÖØÆô¼ÆËã»ú¡£ÊǷñҪÁ¢¼´ÖØÆô? -FinishedRestartMessage=ҪÍê³É [name] µİ²װ£¬°²װ³ÌÐò±ØÐëÖØÆô¼ÆËã»ú¡£%n%nÊǷñҪÁ¢¼´ÖØÆô? -ShowReadmeCheck=Êǣ¬ÎÒϣÍû²鿴 README Îļþ -YesRadio=Êǣ¬Á¢¼´ÖØÆô¼ÆËã»ú(&Y) -NoRadio=·ñ£¬Îҽ«ÉԺóÖØÆô¼ÆËã»ú(&N) -; used for example as 'Run MyProg.exe' -RunEntryExec=ÔËÐÐ %1 -; used for example as 'View Readme.txt' -RunEntryShellExec=²鿴 %1 -; *** "Setup Needs the Next Disk" stuff -ChangeDiskTitle=°²װ³ÌÐòÐèҪÏÂһ¸ö´ÅÅÌ -SelectDiskLabel2=Çë²åÈë´ÅÅÌ %1 ²¢µã»÷¡°ȷ¶¨¡±¡£%n%nÈç¹û´˴ÅÅÌÉϵÄÎļþ¿ÉÔÚÒÔÏÂÎļþ¼ÐÍâµÄÆäËûÎļþ¼ÐÖÐÕҵ½£¬ÇëÊäÈëÕýȷ·¾¶»򵥻÷¡°ä¯ÀÀ¡±¡£ -PathLabel=·¾¶(&P): -FileNotInDir2=Ôڡ°%2¡±ÖÐÎ޷¨¶¨λÎļþ¡°%1¡±¡£Çë²åÈëÕýȷµĴÅÅ̻òѡÔñÆäËûÎļþ¼С£ -SelectDirectoryLabel=Çëָ¶¨ÏÂһ¸ö´ÅÅ̵ÄλÖᣠ-; *** Installation phase messages -SetupAborted=°²װ³ÌÐòδÍê³ɡ£%n%nÇë¸üÕýÎÊÌⲢÖØÐÂÔËÐа²װ³ÌÐò¡£ -EntryAbortRetryIgnore=µ¥»÷¡°ÖØÊԡ±ÒÔÔٴγ¢Êԣ¬µ¥»÷¡°ºöÂԡ±ÒԼÌÐø£¬»򵥻÷¡°ÖÐֹ¡±ÒÔȡÏû°²װ¡£ -; *** Installation status messages -StatusClosingApplications=ÕýÔڹرÕӦÓóÌÐò... -StatusCreateDirs=ÕýÔڴ´½¨Ŀ¼... -StatusExtractFiles=ÕýÔڽâѹËõÎļþ... -StatusCreateIcons=ÕýÔڴ´½¨¿ì½ݷ½ʽ... -StatusCreateIniEntries=ÕýÔڴ´½¨ INI Ïî... -StatusCreateRegistryEntries=ÕýÔڴ´½¨ע²á±íÏî... -StatusRegisterFiles=ÕýÔÚע²áÎļþ... -StatusSavingUninstall=ÕýÔڱ£´æжÔØÐÅϢ... -StatusRunProgram=ÕýÔÚÍê³ɰ²װ... -StatusRestartingApplications=ÕýÔÚÖØÆôӦÓóÌÐò... -StatusRollback=ÕýÔڻØÍ˸ü¸Ä... -; *** Misc. errors -ErrorInternal2=Äڲ¿´íÎó: %1 -ErrorFunctionFailedNoCode=%1 ʧ°Ü -ErrorFunctionFailed=%1 ʧ°ܣ»´úÂë %2 -ErrorFunctionFailedWithMessage=%1 ʧ°ܣ»´úÂë %2¡£%n%3 -ErrorExecutingProgram=Î޷¨ִÐÐÎļþ:%n%1 -; *** Registry errors -ErrorRegOpenKey=´ò¿ªע²á±íÏîʱ³ö´í:%n%1\%2 -ErrorRegCreateKey=´´½¨ע²á±íÏîʱ³ö´í:%n%1\%2 -ErrorRegWriteKey=дÈëע²á±íÏîʱ³ö´í:%n%1\%2 -; *** INI errors -ErrorIniEntry=ÔÚÎļþ¡°%1¡±Öд´½¨ INI Ïîʱ³ö´í¡£ -; *** File copying errors -FileAbortRetryIgnore=µ¥»÷¡°ÖØÊԡ±ÒÔÔٴβÙ×÷£¬µ¥»÷¡°ºöÂԡ±ÒÔÌø¹ý´ËÎļþ(²»½¨Òé´˲Ù×÷)£¬»򵥻÷¡°ÖÐֹ¡±ÒÔȡÏû°²װ¡£ -FileAbortRetryIgnore2=µ¥»÷¡°ÖØÊԡ±ÒÔÔٴβÙ×÷£¬µ¥»÷¡°ºöÂԡ±ÒԼÌÐø(²»½¨Òé´˲Ù×÷)£¬»򵥻÷¡°ÖÐֹ¡±ÒÔȡÏû°²װ¡£ -SourceIsCorrupted=ԴÎļþÒÑË𻵠-SourceDoesntExist=ԴÎļþ¡°%1¡±²»´æÔÚ -ExistingFileReadOnly=ÏÖÓÐÎļþ±»±ê¼ÇΪֻ¶Á״̬¡£%n%nµ¥»÷¡°ÖØÊԡ±ÒÔɾ³ýֻ¶ÁÌØÐԲ¢ÖØÊԣ¬µ¥»÷¡°ºöÂԡ±ÒÔÌø¹ý´ËÎļþ£¬»򵥻÷¡°ÖÐֹ¡±ÒÔȡÏû°²װ¡£ -ErrorReadingExistingDest=³¢ÊԶÁȡÏÖÓÐÎļþʱ³ö´í: -FileExists=¸ÃÎļþÒѴæÔڡ£%n%nÊǷñҪ°²װ³ÌÐ򸲸ÇËü? -ExistingFileNewer=ÏÖÓÐÎļþ±Ȱ²װ³ÌÐòÕý³¢Ê԰²װµÄÎļþ¸üС£½¨Ò鱣ÁôÏÖÓÐÎļþ¡£%n%nÊǷñҪ±£ÁôÏÖÓÐÎļþ? -ErrorChangingAttr=³¢ÊԸü¸ÄÏÖÓÐÎļþÌØÐԳö´í: -ErrorCreatingTemp=³¢ÊÔÔÚĿ±êĿ¼´´½¨Îļþʱ³ö´í: -ErrorReadingSource=³¢ÊԶÁȡԴÎļþʱ³ö´í: -ErrorCopying=³¢ÊԸ´ÖÆÎļþʱ³ö´í: -ErrorReplacingExistingFile=³¢ÊÔÌ滻ÏÖÓÐÎļþʱ³ö´í: -ErrorRestartReplace=RestartReplace ʧ°Ü: -ErrorRenamingTemp=³¢ÊÔÔÚĿ±êĿ¼ÖØÃüÃûÎļþʱ³ö´í: -ErrorRegisterServer=Î޷¨ע²á DLL/OCX: %1 -ErrorRegSvr32Failed=RegSvr32 ʧ°ܣ¬Í˳ö´úÂëΪ %1 -ErrorRegisterTypeLib=Î޷¨ע²áÀàÐͿâ: %1 -; *** Post-installation errors -ErrorOpeningReadme=³¢ÊԴò¿ª README Îļþʱ³ö´í¡£ -ErrorRestartingComputer=°²װ³ÌÐòÎ޷¨ÖØÆô¼ÆËã»ú¡£ÇëÊֶ¯ִÐд˲Ù×÷¡£ -; *** Uninstaller messages -UninstallNotFound=Îļþ¡°%1¡±²»´æÔڡ£Î޷¨°²װ¡£ -UninstallOpenError=Î޷¨´ò¿ªÎļþ¡°%1¡±¡£Î޷¨жÔØ -UninstallUnsupportedVer=жÔØÈÕ־¡°%1¡±µĸñʽÎ޷¨±»´˰汾µÄжÔسÌÐòʶ±ð¡£Î޷¨жÔØ -UninstallUnknownEntry=жÔØÈÕ־Öз¢ÏÖδ֪ÌõĿ(%1) -ConfirmUninstall=ȷ¶¨Ҫ³¹µ×ɾ³ý %1 ºͼ°Æäȫ²¿×é¼þ? -UninstallOnlyOnWin64=½ö¿ÉÔÚ 64 λ Windows ÉÏжÔش˰²װ¡£ -OnlyAdminCanUninstall=½ö¾ßÓйÜÀíȨÏ޵ÄÓû§²ſÉжÔش˰²װ¡£ -UninstallStatusLabel=Õý´ӼÆËã»úɾ³ý %1£¬ÇëÉԵȡ£ -UninstalledAll=Òѳɹ¦´ӼÆËã»úÉÏɾ³ý %1¡£ -UninstalledMost=%1 жÔØÍê³ɡ£%n%nÎ޷¨ɾ³ýһЩԪËء£¿ɽ«ÆäÊֶ¯ɾ³ý¡£ -UninstalledAndNeedsRestart=ҪÍê³É %1 µÄжÔأ¬±ØÐëÖØÆô¼ÆËã»ú¡£%n%nÊǷñҪÁ¢¼´ÖØÆô? -UninstallDataCorrupted=¡°%1¡±ÎļþÒÑË𻵡£Î޷¨жÔØ -; *** Uninstallation phase messages -ConfirmDeleteSharedFileTitle=ɾ³ý¹²ÏíÎļþ? -ConfirmDeleteSharedFile2=ϵͳ±íʾÒÔϹ²ÏíÎļþ²»Ôٱ»ÈκγÌÐòʹÓá£ÊǷñҪжÔØɾ³ý´˹²ÏíÎļþ?%n%nÈç¹ûÔÚÓгÌÐòÈÔÔÚʹÓôËÎļþ¶øËü±»ɾ³ý£¬Ôò³ÌÐò¿ÉÄܲ»»áÕý³£ÔËÐС£Èç¹û²»ȷ¶¨£¬ÇëѡÔ񡰷񡱡£½«ÎļþÁôסϵͳÉϲ»»áÔì³ÉÈκÎÎÊÌ⡣ -SharedFileNameLabel=ÎļþÃû: -SharedFileLocationLabel=λÖÃ: -WizardUninstalling=жÔØ״̬ -StatusUninstalling=ÕýÔÚжÔØ %1... -; *** Shutdown block reasons -ShutdownBlockReasonInstallingApp=ÕýÔڰ²װ %1¡£ -ShutdownBlockReasonUninstallingApp=ÕýÔÚжÔØ %1¡£ -; The custom messages below aren't used by Setup itself, but if you make -; use of them in your scripts, you'll want to translate them. -[CustomMessages] -NameAndVersion=%1 °汾 %2 -AdditionalIcons=ÆäËû¿ì½ݷ½ʽ: -CreateDesktopIcon=´´½¨×ÀÃæ¿ì½ݷ½ʽ(&D) -CreateQuickLaunchIcon=´´½¨¿ìËÙÆô¶¯¿ì½ݷ½ʽ(&Q) -ProgramOnTheWeb=Web ÉϵÄ %1 -UninstallProgram=жÔØ %1 -LaunchProgram=Æô¶¯ %1 -AssocFileExtension=½« %1 Óë %2 ÎļþÀ©չÃû¹ØÁª(&A) -AssocingFileExtension=Õý½« %1 Óë %2 ÎļþÀ©չÃû¹ØÁª... -AutoStartProgramGroupDescription=Æô¶¯: -AutoStartProgram=×Զ¯Æô¶¯ %1 +; *** Inno Setup version 5.5.3+ Simplified Chinese messages *** +; +; To download user-contributed translations of this file, go to: +; http://www.jrsoftware.org/files/istrans/ +; +; Note: When translating this text, do not add periods (.) to the end of +; messages that didn't have them already, because on those messages Inno +; Setup adds the periods automatically (appending a period would result in +; two periods being displayed). +[LangOptions] +; The following three entries are very important. Be sure to read and +; understand the '[LangOptions] section' topic in the help file. +LanguageName=Simplified Chinese +LanguageID=$0804 +LanguageCodePage=936 +; If the language you are translating to requires special font faces or +; sizes, uncomment any of the following entries and change them accordingly. +;DialogFontName= +;DialogFontSize=8 +;WelcomeFontName=Verdana +;WelcomeFontSize=12 +;TitleFontName=Arial +;TitleFontSize=29 +;CopyrightFontName=Arial +;CopyrightFontSize=8 +[Messages] +; *** Application titles +SetupAppTitle=°²װ³ÌÐò +SetupWindowTitle=°²װ³ÌÐò - %1 +UninstallAppTitle=жÔØ +UninstallAppFullTitle=%1 жÔØ +; *** Misc. common +InformationTitle=ÐÅϢ +ConfirmTitle=ȷÈÏ +ErrorTitle=´íÎó +; *** SetupLdr messages +SetupLdrStartupMessage=Õ⽫°²װ %1¡£ÊǷñҪ¼ÌÐø? +LdrCannotCreateTemp=Î޷¨´´½¨ÁÙʱÎļþ¡£°²װ³ÌÐòÒÑÖÐֹ +LdrCannotExecTemp=Î޷¨ÔÚÁÙʱĿ¼ÖÐִÐÐÎļþ¡£°²װ³ÌÐòÒÑÖÐֹ +; *** Startup error messages +LastErrorMessage=%1¡£%n%n´íÎó %2: %3 +SetupFileMissing=°²װĿ¼ȱʧÎļþ %1¡£Çë¸üÕý¸ÃÎÊÌâ»ò»ñȡ¸ÃÎÊÌâµÄи±±¾¡£ +SetupFileCorrupt=°²װ³ÌÐòÎļþ¼ÐÒÑË𻵡£Çë»ñȡ¸óÌÐòµÄи±±¾¡£ +SetupFileCorruptOrWrongVer=°²װ³ÌÐòÎļþ¼ÐÒÑË𻵻òÓë´˰²װ³ÌÐò°汾²»¼æÈݡ£Çë¸üÕý¸ÃÎÊÌâ»ò»ñȡ¸óÌÐòµÄи±±¾¡£ +InvalidParameter=ÃüÁîÐÐ %n%n%1 Éϴ«µÝÁËһ¸öÎÞЧ²ÎÊý +SetupAlreadyRunning=°²װ³ÌÐòÒÑÔÚÔËÐС£ +WindowsVersionNotSupported=´˳ÌÐò²»֧³ÖÄã¼ÆËã»úÕýÔËÐеÄ Windows °汾¡£ +WindowsServicePackRequired=´˳ÌÐòÐèҪ %1 ·þÎñ°ü %2 »ò¸ü¸߰汾¡£ +NotOnThisPlatform=´˳ÌÐ򽫲»ÔÚ %1 ÉÏÔËÐС£ +OnlyOnThisPlatform=´˳ÌÐò±ØÐëÔÚ %1 ÉÏÔËÐС£ +OnlyOnTheseArchitectures=´˳ÌÐò½ö¿ɰ²װÔÚΪÒÔÏ´¦ÀíÆ÷Ìåϵ½ṹÉè¼ƵÄ Windows °汾ÉÏ:%n%n%1 +MissingWOW64APIs=ÄãÕýÔËÐеÄ Windows °汾²»°üº¬°²װ³ÌÐòִÐÐ 64 λ°²װËùÐèµĹ¦Äܡ£Ҫ¸üÕý´ËÎÊÌ⣬Ç밲װ·þÎñ°ü %1¡£ +WinVersionTooLowError=´˳ÌÐòÐèҪ %1 °汾 %2 »ò¸ü¸߰汾¡£ +WinVersionTooHighError=´˳ÌÐò²»Äܰ²װÔÚ %1 °汾 %2 »ò¸ü¸ߵİ汾Éϡ£ +AdminPrivilegesRequired=Ôڰ²װ´˳ÌÐòʱ±ØÐë×÷Ϊ¹ÜÀíԱµÇ¼¡£ +PowerUserPrivilegesRequired=°²װ´˳ÌÐòʱ±ØÐëÒԹÜÀíԱ»ò Power User ×é³ÉԱÉí·ݵǼ¡£ +SetupAppRunningError=°²װ³ÌÐò¼ì²⵽ %1 µ±ǰÕýÔÚÔËÐС£%n%nÇëÁ¢¼´¹رÕËüµÄËùÓÐʵÀý£¬Ȼº󵥻÷¡°ȷ¶¨¡±ÒԼÌÐø£¬»򵥻÷¡°ȡÏû¡±ÒÔÍ˳ö¡£ +UninstallAppRunningError=жÔؼì²⵽ %1 µ±ǰÕýÔÚÔËÐС£%n%nÇëÁ¢¼´¹رÕËüµÄËùÓÐʵÀý£¬Ȼº󵥻÷¡°ȷ¶¨¡±ÒԼÌÐø»򵥻÷¡°ȡÏû¡±ÒÔÍ˳ö¡£ +; *** Misc. errors +ErrorCreatingDir=°²װ³ÌÐòÎ޷¨´´½¨Ŀ¼¡°%1¡± +ErrorTooManyFilesInDir=Î޷¨ÔÚĿ¼¡°%1¡±Öд´½¨Îļþ£¬ÒòΪËü°üº¬̫¶àÎļþ +; *** Setup common messages +ExitSetupTitle=Í˳ö°²װ³ÌÐò +ExitSetupMessage=°²װ³ÌÐòδÍê³ɡ£Èç¹ûÁ¢¼´Í˳ö£¬½«²»»ᰲװ¸óÌÐò¡£%n%n¿ÉÔÚÆäËûʱ¼äÔٴÎÔËÐа²װ³ÌÐòÒÔÍê³ɰ²װ¡£%n%nÊǷñÍ˳ö°²װ³ÌÐò? +AboutSetupMenuItem=¹ØÓڰ²װ³ÌÐò(&A)... +AboutSetupTitle=¹ØÓڰ²װ³ÌÐò +AboutSetupMessage=%1 °汾 %2%n%3%n%n%1 Ö÷ҳ:%n%4 +AboutSetupNote= +TranslatorNote= +; *** Buttons +ButtonBack=< ÉÏһ²½(&B) +ButtonNext=ÏÂһ²½(&N) > +ButtonInstall=°²װ(&I) +ButtonOK=ȷ¶¨ +ButtonCancel=ȡÏû +ButtonYes=ÊÇ(&Y) +ButtonYesToAll=½ÓÊÜȫ²¿(&A) +ButtonNo=·ñ(&N) +ButtonNoToAll=·ñ¶¨ȫ²¿(&O) +ButtonFinish=Íê³É(&F) +ButtonBrowse=ä¯ÀÀ(&B)... +ButtonWizardBrowse=ä¯ÀÀ(&R)... +ButtonNewFolder=н¨Îļþ¼Ð(&M) +; *** "Select Language" dialog messages +SelectLanguageTitle=ѡÔñ°²װ³ÌÐòÓïÑÔ +SelectLanguageLabel=ѡÔñ°²װʱҪʹÓõÄÓïÑÔ: +; *** Common wizard text +ClickNext=µ¥»÷¡°ÏÂһ²½¡±ÒԼÌÐø£¬»򵥻÷¡°ȡÏû¡±ÒÔÍ˳ö°²װ³ÌÐò¡£ +BeveledLabel= +BrowseDialogTitle=ä¯ÀÀ²éÕÒÎļþ¼Ð +BrowseDialogLabel=ÔÚÒÔÏÂÁбíÖÐѡÔñһ¸öÎļþ¼У¬Ȼº󵥻÷¡°ȷ¶¨¡±¡£ +NewFolderName=н¨Îļþ¼Ð +; *** "Welcome" wizard page +WelcomeLabel1=»¶ӭʹÓà [name] °²װÏòµ¼ +WelcomeLabel2=Õ⽫ÔڼÆËã»úÉϰ²װ [name/ver]¡£%n%n½¨Òé¹رÕËùÓÐÆäËûӦÓóÌÐòÔټÌÐø¡£ +; *** "Password" wizard page +WizardPassword=ÃÜÂë +PasswordLabel1=´˰²װÊÜÃÜÂ뱣»¤¡£ +PasswordLabel3=ÇëÌṩÃÜÂ룬Ȼº󵥻÷¡°ÏÂһ²½¡±ÒԼÌÐø¡£ÃÜÂëÇø·ִóСд¡£ +PasswordEditLabel=ÃÜÂë(&P): +IncorrectPassword=ÊäÈëµÄÃÜÂ벻Õýȷ¡£ÇëÖØÊԡ£ +; *** "License Agreement" wizard page +WizardLicense=Ðí¿ÉЭÒé +LicenseLabel=ÇëÔڼÌÐø²Ù×÷ǰÔĶÁÒÔÏÂÖØҪÐÅϢ¡£ +LicenseLabel3=ÇëÔĶÁÒÔÏÂÐí¿ÉЭÒ顣±ØÐë½ÓÊܴËЭÒéÌõ¿î²ſɼÌÐø°²װ¡£ +LicenseAccepted=ÎҽÓÊÜЭÒé(&A) +LicenseNotAccepted=ÎҲ»½ÓÊÜЭÒé(&D) +; *** "Information" wizard pages +WizardInfoBefore=ÐÅϢ +InfoBeforeLabel=ÇëÔڼÌÐø²Ù×÷ǰÔĶÁÒÔÏÂÖØҪÐÅϢ¡£ +InfoBeforeClickLabel=׼±¸ºüÌÐø°²װº󣬵¥»÷¡°ÏÂһ²½¡±¡£ +WizardInfoAfter=ÐÅϢ +InfoAfterLabel=ÇëÔڼÌÐø²Ù×÷ǰÔĶÁÒÔÏÂÖØҪÐÅϢ¡£ +InfoAfterClickLabel=׼±¸ºüÌÐø°²װº󣬵¥»÷¡°ÏÂһ²½¡±¡£ +; *** "User Information" wizard page +WizardUserInfo=Óû§ÐÅϢ +UserInfoDesc=ÇëÊäÈëÄãµÄÐÅϢ¡£ +UserInfoName=Óû§Ãû(&U): +UserInfoOrg=×é֯(&O): +UserInfoSerial=ÐòÁкÅ(&S): +UserInfoNameRequired=±ØÐëÊäÈëÃû³ơ£ +; *** "Select Destination Location" wizard page +WizardSelectDir=ѡÔñĿ±êλÖà +SelectDirDesc=Ӧ½« [name] °²װµ½ÄÄÀï? +SelectDirLabel3=°²װ³ÌÐò»Ὣ [name] °²װµ½ÒÔÏÂÎļþ¼С£ +SelectDirBrowseLabel=ÈôҪ¼ÌÐø£¬µ¥»÷¡°ÏÂһ²½¡±¡£Èç¹ûÏëѡÔñÆäËûÎļþ¼У¬µ¥»÷¡°ä¯ÀÀ¡±¡£ +DiskSpaceMBLabel=ÐèҪÖÁÉÙ [mb] MB ¿ÉÓôÅÅ̿ռ䡣 +CannotInstallToNetworkDrive=°²װ³ÌÐòÎ޷¨°²װµ½ÍøÂçÇý¶¯Æ÷¡£ +CannotInstallToUNCPath=°²װ³ÌÐòÎ޷¨°²װµ½ UNC ·¾¶¡£ +InvalidPath=±ØÐëÊäÈë´øÇý¶¯Æ÷ºŵÄÍêÕû·¾¶(ÀýÈç:%n%nC:\APP%n%n)»òÒÔϸñʽµÄ UNC ·¾¶:%n%n\\server\share +InvalidDrive=ËùѡÇý¶¯Æ÷»ò UNC ¹²Ïí²»´æÔڻ򲻿ɷÃÎʡ£ÇëÁíÍâѡÔñ¡£ +DiskSpaceWarningTitle=´ÅÅ̿ռ䲻×ã +DiskSpaceWarning=°²װ³ÌÐòÐèҪÖÁÉÙ %1 KB ¿ÉÓÿռäÀ´°²װ£¬µ«ËùѡÇý¶¯Æ÷½öÓÐ %2 KB ¿ÉÓÿռ䡣%n%nÊǷñÈÔҪ¼ÌÐø? +DirNameTooLong=Îļþ¼ÐÃû³ƻò·¾¶̫³¤¡£ +InvalidDirName=Îļþ¼ÐÃû³ÆÎÞЧ¡£ +BadDirName32=Îļþ¼ÐÃû²»Äܰüº¬ÒÔÏÂÈÎһ×ַû:%n%n%1 +DirExistsTitle=Îļþ¼дæÔÚ +DirExists=Îļþ¼Ð:%n%n%1%n%nÒѴæÔڡ£ÊǷñÈÔҪ°²װµ½¸ÃÎļþ¼Ð? +DirDoesntExistTitle=Îļþ¼в»´æÔÚ +DirDoesntExist=Îļþ¼Ð:%n%n%1%n%n²»´æÔڡ£ÊǷñҪ´´½¨¸ÃÎļþ¼Ð? +; *** "Select Components" wizard page +WizardSelectComponents=ѡÔñ×é¼þ +SelectComponentsDesc=Ӧ°²װÄÄЩ×é¼þ? +SelectComponentsLabel2=ѡÔñϣÍû°²װµÄ×é¼þ£»Çå³ý²»ϣÍû°²װµÄ×é¼þ¡£׼±¸¾ÍÐ÷º󵥻÷¡°ÏÂһ²½¡±ÒԼÌÐø¡£ +FullInstallation=Íêȫ°²װ +; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) +CompactInstallation=¼ò½లװ +CustomInstallation=×Զ¨Ò尲װ +NoUninstallWarningTitle=×é¼þ´æÔÚ +NoUninstallWarning=°²װ³ÌÐò¼ì²⵽¼ÆËã»úÉÏÒѰ²װÒÔÏÂ×é¼þ:%n%n%1%n%nȡÏûѡÔñÕâЩ×é¼þ½«²»»áжÔØËüÃǡ£%n%nÊǷñÈÔҪ¼ÌÐø? +ComponentSize1=%1 KB +ComponentSize2=%1 MB +ComponentsDiskSpaceMBLabel=µ±ǰѡÔñÐèҪÖÁÉÙ [mb] MB ´ÅÅ̿ռ䡣 +; *** "Select Additional Tasks" wizard page +WizardSelectTasks=ѡÔñÆäËûÈÎÎñ +SelectTasksDesc=ӦִÐÐÄÄЩÆäËûÈÎÎñ? +SelectTasksLabel2=ѡÔñ°²װ [name] ʱϣÍû°²װ³ÌÐòÀ´ִÐеÄÆäËûÈÎÎñ£¬Ȼº󵥻÷¡°ÏÂһ²½¡±¡£ +; *** "Select Start Menu Folder" wizard page +WizardSelectProgramGroup=ѡÔñ¿ªʼ²˵¥Îļþ¼Ð +SelectStartMenuFolderDesc=°²װ³ÌÐòӦ½«³ÌÐòµĿì½ݷ½ʽ·ÅÖõ½ÄÄÀï? +SelectStartMenuFolderLabel3=°²װ³ÌÐò½«ÔÚÒÔÏ¿ªʼ²˵¥Îļþ¼ÐÖд´½¨¸óÌÐòµĿì½ݷ½ʽ¡£ +SelectStartMenuFolderBrowseLabel=ÈôҪ¼ÌÐø£¬µ¥»÷¡°ÏÂһ²½¡±¡£Èç¹ûÏëѡÔñÆäËûÎļþ¼У¬µ¥»÷¡°ä¯ÀÀ¡±¡£ +MustEnterGroupName=±ØÐëÊäÈëÎļþ¼ÐÃû¡£ +GroupNameTooLong=Îļþ¼ÐÃû³ƻò·¾¶̫³¤¡£ +InvalidGroupName=Îļþ¼ÐÃû³ÆÎÞЧ¡£ +BadGroupName=Îļþ¼ÐÃû²»Äܱ£»¤ÒÔÏÂÈÎһ×ַû:%n%n%1 +NoProgramGroupCheck2=²»´´½¨¿ªʼ²˵¥Îļþ¼Ð(&D) +; *** "Ready to Install" wizard page +WizardReady=°²װ׼±¸¾ÍÐ÷ +ReadyLabel1=°²װ³ÌÐòÏÖÒÑ׼±¸ºÃÔڼÆËã»úÉϰ²װ [name]¡£ +ReadyLabel2a=µ¥»÷¡°°²װ¡±ÒԼÌÐø°²װ£¬ÈçÏë²鿴»ò¸ü¸ÄÈκÎÉèÖÃÔ򵥻÷"·µ»Ø"¡£ +ReadyLabel2b=µ¥»÷¡°°²װ¡±ÒԼÌÐø°²װ¡£ +ReadyMemoUserInfo=Óû§ÐÅϢ: +ReadyMemoDir=Ŀ±êλÖÃ: +ReadyMemoType=°²װ³ÌÐòÀàÐÍ: +ReadyMemoComponents=Ëùѡ×é¼þ: +ReadyMemoGroup=¿ªʼ²˵¥Îļþ¼Ð: +ReadyMemoTasks=ÆäËûÈÎÎñ: +; *** "Preparing to Install" wizard page +WizardPreparing=ÕýÔÚ׼±¸°²װ +PreparingDesc=°²װ³ÌÐòÕý׼±¸ÔڼÆËã»úÉϰ²װ [name]¡£ +PreviousInstallNotCompleted=ÉÏһ¸ö³ÌÐòµİ²װ/ɾ³ýδÍê³ɡ£ÐèÖØÆô¼ÆËã»úÒÔÍê³ɸð²װ¡£%n%nÖØÆô¼ÆËã»úºó£¬ÖØÐÂÔËÐа²װ³ÌÐòÒÔÍê³É [name] µİ²װ¡£ +CannotContinue=°²װ³ÌÐòÎ޷¨¼ÌÐø¡£Ç뵥»÷"ȡÏû"ÒÔÍ˳ö¡£ +ApplicationsFound=ÒÔÏÂӦÓóÌÐòÕýÔÚʹÓÃÐèҪͨ¹ý°²װ³ÌÐò½øÐиüеÄÎļþ¡£½¨ÒéÔÊÐí°²װ³ÌÐò×Զ¯¹رÕÕâЩӦÓóÌÐò¡£ +ApplicationsFound2=ÒÔÏÂӦÓóÌÐòÕýÔÚʹÓÃÐèҪͨ¹ý°²װ³ÌÐò½øÐиüеÄÎļþ¡£½¨ÒéÔÊÐí°²װ³ÌÐò×Զ¯¹رÕÕâЩӦÓóÌÐò¡£Íê³ɰ²װº󣬰²װ³ÌÐ򽫳¢ÊÔÖØÆôӦÓóÌÐò¡£ +CloseApplications=×Զ¯¹رÕӦÓóÌÐò(&A) +DontCloseApplications=²»¹رÕӦÓóÌÐò(&D) +ErrorCloseApplications=°²װ³ÌÐòÎ޷¨×Զ¯¹رÕËùÓÐӦÓóÌÐ򡣽¨ÒéÔڼÌÐø²Ù×÷֮ǰÏȹرÕËùÓÐʹÓÃÐèͨ¹ý°²װ³ÌÐò½øÐиüеÄÎļþµÄӦÓóÌÐò¡£ +; *** "Installing" wizard page +WizardInstalling=ÕýÔڰ²װ +InstallingLabel=°²װ³ÌÐòÕýÔڼÆËã»úÉϰ²װ [name]£¬ÇëÉԵȡ£ +; *** "Setup Completed" wizard page +FinishedHeadingLabel=Íê³É [name] °²װÏòµ¼ +FinishedLabelNoIcons=°²װ³ÌÐòÒÑÔڼÆËã»úÉÏÍê³ɰ²װ [name]¡£ +FinishedLabel=°²װ³ÌÐòÒÑÔڼÆËã»úÉÏÍê³ɰ²װ [name]¡£ͨ¹ýѡÔñ°²װµĿì½ݷ½ʽ¿ÉÒÔÆô¶¯¸ÃӦÓóÌÐò¡£ +ClickFinish=µ¥»÷¡°Íê³ɡ±ÒÔÍ˳ö°²װ³ÌÐò¡£ +FinishedRestartLabel=ҪÍê³É [name] µİ²װ£¬°²װ³ÌÐò±ØÐëÖØÆô¼ÆËã»ú¡£ÊǷñҪÁ¢¼´ÖØÆô? +FinishedRestartMessage=ҪÍê³É [name] µİ²װ£¬°²װ³ÌÐò±ØÐëÖØÆô¼ÆËã»ú¡£%n%nÊǷñҪÁ¢¼´ÖØÆô? +ShowReadmeCheck=Êǣ¬ÎÒϣÍû²鿴 README Îļþ +YesRadio=Êǣ¬Á¢¼´ÖØÆô¼ÆËã»ú(&Y) +NoRadio=·ñ£¬Îҽ«ÉԺóÖØÆô¼ÆËã»ú(&N) +; used for example as 'Run MyProg.exe' +RunEntryExec=ÔËÐÐ %1 +; used for example as 'View Readme.txt' +RunEntryShellExec=²鿴 %1 +; *** "Setup Needs the Next Disk" stuff +ChangeDiskTitle=°²װ³ÌÐòÐèҪÏÂһ¸ö´ÅÅÌ +SelectDiskLabel2=Çë²åÈë´ÅÅÌ %1 ²¢µã»÷¡°ȷ¶¨¡±¡£%n%nÈç¹û´˴ÅÅÌÉϵÄÎļþ¿ÉÔÚÒÔÏÂÎļþ¼ÐÍâµÄÆäËûÎļþ¼ÐÖÐÕҵ½£¬ÇëÊäÈëÕýȷ·¾¶»򵥻÷¡°ä¯ÀÀ¡±¡£ +PathLabel=·¾¶(&P): +FileNotInDir2=Ôڡ°%2¡±ÖÐÎ޷¨¶¨λÎļþ¡°%1¡±¡£Çë²åÈëÕýȷµĴÅÅ̻òѡÔñÆäËûÎļþ¼С£ +SelectDirectoryLabel=Çëָ¶¨ÏÂһ¸ö´ÅÅ̵ÄλÖᣠ+; *** Installation phase messages +SetupAborted=°²װ³ÌÐòδÍê³ɡ£%n%nÇë¸üÕýÎÊÌⲢÖØÐÂÔËÐа²װ³ÌÐò¡£ +EntryAbortRetryIgnore=µ¥»÷¡°ÖØÊԡ±ÒÔÔٴγ¢Êԣ¬µ¥»÷¡°ºöÂԡ±ÒԼÌÐø£¬»򵥻÷¡°ÖÐֹ¡±ÒÔȡÏû°²װ¡£ +; *** Installation status messages +StatusClosingApplications=ÕýÔڹرÕӦÓóÌÐò... +StatusCreateDirs=ÕýÔڴ´½¨Ŀ¼... +StatusExtractFiles=ÕýÔڽâѹËõÎļþ... +StatusCreateIcons=ÕýÔڴ´½¨¿ì½ݷ½ʽ... +StatusCreateIniEntries=ÕýÔڴ´½¨ INI Ïî... +StatusCreateRegistryEntries=ÕýÔڴ´½¨ע²á±íÏî... +StatusRegisterFiles=ÕýÔÚע²áÎļþ... +StatusSavingUninstall=ÕýÔڱ£´æжÔØÐÅϢ... +StatusRunProgram=ÕýÔÚÍê³ɰ²װ... +StatusRestartingApplications=ÕýÔÚÖØÆôӦÓóÌÐò... +StatusRollback=ÕýÔڻØÍ˸ü¸Ä... +; *** Misc. errors +ErrorInternal2=Äڲ¿´íÎó: %1 +ErrorFunctionFailedNoCode=%1 ʧ°Ü +ErrorFunctionFailed=%1 ʧ°ܣ»´úÂë %2 +ErrorFunctionFailedWithMessage=%1 ʧ°ܣ»´úÂë %2¡£%n%3 +ErrorExecutingProgram=Î޷¨ִÐÐÎļþ:%n%1 +; *** Registry errors +ErrorRegOpenKey=´ò¿ªע²á±íÏîʱ³ö´í:%n%1\%2 +ErrorRegCreateKey=´´½¨ע²á±íÏîʱ³ö´í:%n%1\%2 +ErrorRegWriteKey=дÈëע²á±íÏîʱ³ö´í:%n%1\%2 +; *** INI errors +ErrorIniEntry=ÔÚÎļþ¡°%1¡±Öд´½¨ INI Ïîʱ³ö´í¡£ +; *** File copying errors +FileAbortRetryIgnore=µ¥»÷¡°ÖØÊԡ±ÒÔÔٴβÙ×÷£¬µ¥»÷¡°ºöÂԡ±ÒÔÌø¹ý´ËÎļþ(²»½¨Òé´˲Ù×÷)£¬»򵥻÷¡°ÖÐֹ¡±ÒÔȡÏû°²װ¡£ +FileAbortRetryIgnore2=µ¥»÷¡°ÖØÊԡ±ÒÔÔٴβÙ×÷£¬µ¥»÷¡°ºöÂԡ±ÒԼÌÐø(²»½¨Òé´˲Ù×÷)£¬»򵥻÷¡°ÖÐֹ¡±ÒÔȡÏû°²װ¡£ +SourceIsCorrupted=ԴÎļþÒÑË𻵠+SourceDoesntExist=ԴÎļþ¡°%1¡±²»´æÔÚ +ExistingFileReadOnly=ÏÖÓÐÎļþ±»±ê¼ÇΪֻ¶Á״̬¡£%n%nµ¥»÷¡°ÖØÊԡ±ÒÔɾ³ýֻ¶ÁÌØÐԲ¢ÖØÊԣ¬µ¥»÷¡°ºöÂԡ±ÒÔÌø¹ý´ËÎļþ£¬»򵥻÷¡°ÖÐֹ¡±ÒÔȡÏû°²װ¡£ +ErrorReadingExistingDest=³¢ÊԶÁȡÏÖÓÐÎļþʱ³ö´í: +FileExists=¸ÃÎļþÒѴæÔڡ£%n%nÊǷñҪ°²װ³ÌÐ򸲸ÇËü? +ExistingFileNewer=ÏÖÓÐÎļþ±Ȱ²װ³ÌÐòÕý³¢Ê԰²װµÄÎļþ¸üС£½¨Ò鱣ÁôÏÖÓÐÎļþ¡£%n%nÊǷñҪ±£ÁôÏÖÓÐÎļþ? +ErrorChangingAttr=³¢ÊԸü¸ÄÏÖÓÐÎļþÌØÐԳö´í: +ErrorCreatingTemp=³¢ÊÔÔÚĿ±êĿ¼´´½¨Îļþʱ³ö´í: +ErrorReadingSource=³¢ÊԶÁȡԴÎļþʱ³ö´í: +ErrorCopying=³¢ÊԸ´ÖÆÎļþʱ³ö´í: +ErrorReplacingExistingFile=³¢ÊÔÌ滻ÏÖÓÐÎļþʱ³ö´í: +ErrorRestartReplace=RestartReplace ʧ°Ü: +ErrorRenamingTemp=³¢ÊÔÔÚĿ±êĿ¼ÖØÃüÃûÎļþʱ³ö´í: +ErrorRegisterServer=Î޷¨ע²á DLL/OCX: %1 +ErrorRegSvr32Failed=RegSvr32 ʧ°ܣ¬Í˳ö´úÂëΪ %1 +ErrorRegisterTypeLib=Î޷¨ע²áÀàÐͿâ: %1 +; *** Post-installation errors +ErrorOpeningReadme=³¢ÊԴò¿ª README Îļþʱ³ö´í¡£ +ErrorRestartingComputer=°²װ³ÌÐòÎ޷¨ÖØÆô¼ÆËã»ú¡£ÇëÊֶ¯ִÐд˲Ù×÷¡£ +; *** Uninstaller messages +UninstallNotFound=Îļþ¡°%1¡±²»´æÔڡ£Î޷¨°²װ¡£ +UninstallOpenError=Î޷¨´ò¿ªÎļþ¡°%1¡±¡£Î޷¨жÔØ +UninstallUnsupportedVer=жÔØÈÕ־¡°%1¡±µĸñʽÎ޷¨±»´˰汾µÄжÔسÌÐòʶ±ð¡£Î޷¨жÔØ +UninstallUnknownEntry=жÔØÈÕ־Öз¢ÏÖδ֪ÌõĿ(%1) +ConfirmUninstall=ȷ¶¨Ҫ³¹µ×ɾ³ý %1 ºͼ°Æäȫ²¿×é¼þ? +UninstallOnlyOnWin64=½ö¿ÉÔÚ 64 λ Windows ÉÏжÔش˰²װ¡£ +OnlyAdminCanUninstall=½ö¾ßÓйÜÀíȨÏ޵ÄÓû§²ſÉжÔش˰²װ¡£ +UninstallStatusLabel=Õý´ӼÆËã»úɾ³ý %1£¬ÇëÉԵȡ£ +UninstalledAll=Òѳɹ¦´ӼÆËã»úÉÏɾ³ý %1¡£ +UninstalledMost=%1 жÔØÍê³ɡ£%n%nÎ޷¨ɾ³ýһЩԪËء£¿ɽ«ÆäÊֶ¯ɾ³ý¡£ +UninstalledAndNeedsRestart=ҪÍê³É %1 µÄжÔأ¬±ØÐëÖØÆô¼ÆËã»ú¡£%n%nÊǷñҪÁ¢¼´ÖØÆô? +UninstallDataCorrupted=¡°%1¡±ÎļþÒÑË𻵡£Î޷¨жÔØ +; *** Uninstallation phase messages +ConfirmDeleteSharedFileTitle=ɾ³ý¹²ÏíÎļþ? +ConfirmDeleteSharedFile2=ϵͳ±íʾÒÔϹ²ÏíÎļþ²»Ôٱ»ÈκγÌÐòʹÓá£ÊǷñҪжÔØɾ³ý´˹²ÏíÎļþ?%n%nÈç¹ûÔÚÓгÌÐòÈÔÔÚʹÓôËÎļþ¶øËü±»ɾ³ý£¬Ôò³ÌÐò¿ÉÄܲ»»áÕý³£ÔËÐС£Èç¹û²»ȷ¶¨£¬ÇëѡÔ񡰷񡱡£½«ÎļþÁôסϵͳÉϲ»»áÔì³ÉÈκÎÎÊÌ⡣ +SharedFileNameLabel=ÎļþÃû: +SharedFileLocationLabel=λÖÃ: +WizardUninstalling=жÔØ״̬ +StatusUninstalling=ÕýÔÚжÔØ %1... +; *** Shutdown block reasons +ShutdownBlockReasonInstallingApp=ÕýÔڰ²װ %1¡£ +ShutdownBlockReasonUninstallingApp=ÕýÔÚжÔØ %1¡£ +; The custom messages below aren't used by Setup itself, but if you make +; use of them in your scripts, you'll want to translate them. +[CustomMessages] +NameAndVersion=%1 °汾 %2 +AdditionalIcons=ÆäËû¿ì½ݷ½ʽ: +CreateDesktopIcon=´´½¨×ÀÃæ¿ì½ݷ½ʽ(&D) +CreateQuickLaunchIcon=´´½¨¿ìËÙÆô¶¯¿ì½ݷ½ʽ(&Q) +ProgramOnTheWeb=Web ÉϵÄ %1 +UninstallProgram=жÔØ %1 +LaunchProgram=Æô¶¯ %1 +AssocFileExtension=½« %1 Óë %2 ÎļþÀ©չÃû¹ØÁª(&A) +AssocingFileExtension=Õý½« %1 Óë %2 ÎļþÀ©չÃû¹ØÁª... +AutoStartProgramGroupDescription=Æô¶¯: +AutoStartProgram=×Զ¯Æô¶¯ %1 AddonHostProgramNotFound=Î޷¨ÔÚËùѡÎļþ¼ÐÖж¨λ %1¡£%n%nÊǷñÈÔҪ¼ÌÐø? \ No newline at end of file diff --git a/build/win32/i18n/Default.zh-tw.isl b/build/win32/i18n/Default.zh-tw.isl index 2a56389a94b..4746349e191 100644 --- a/build/win32/i18n/Default.zh-tw.isl +++ b/build/win32/i18n/Default.zh-tw.isl @@ -1,298 +1,298 @@ -; *** Inno Setup version 5.5.3+ Traditional Chinese messages *** -; -; To download user-contributed translations of this file, go to: -; http://www.jrsoftware.org/files/istrans/ -; -; Note: When translating this text, do not add periods (.) to the end of -; messages that didn't have them already, because on those messages Inno -; Setup adds the periods automatically (appending a period would result in -; two periods being displayed). -[LangOptions] -; The following three entries are very important. Be sure to read and -; understand the '[LangOptions] section' topic in the help file. -LanguageName=Traditional Chinese -LanguageID=$0404 -LanguageCodePage=950 -; If the language you are translating to requires special font faces or -; sizes, uncomment any of the following entries and change them accordingly. -;DialogFontName= -;DialogFontSize=8 -;WelcomeFontName=Verdana -;WelcomeFontSize=12 -;TitleFontName=Arial -;TitleFontSize=29 -;CopyrightFontName=Arial -;CopyrightFontSize=8 -[Messages] -; *** Application titles -SetupAppTitle=¦w¸˵{¦¡ -SetupWindowTitle=¦w¸˵{¦¡ - %1 -UninstallAppTitle=¸Ѱ£¦w¸Ë -UninstallAppFullTitle=%1 ¸Ѱ£¦w¸Ë -; *** Misc. common -InformationTitle=¸ê°T -ConfirmTitle=½T»{ -ErrorTitle=¿ù»~ -; *** SetupLdr messages -SetupLdrStartupMessage=³o·|¦w¸Ë %1¡C­nÄ~Äò¶Ü? -LdrCannotCreateTemp=µLªk«إ߼ȦsÀɡC¦w¸ˤw¤¤¤î -LdrCannotExecTemp=µLªk°õ¦æ¼Ȧs¥ؿý¤¤ªºÀɮסC¦w¸ˤw¤¤¤î -; *** Startup error messages -LastErrorMessage=%1¡C%n%n¿ù»~ %2: %3 -SetupFileMissing=¦w¸˥ؿý¤¤¯ʤÖÀɮ× %1¡C½Эץ¿°ÝÃD¡A©έ«·s¨ú±oµ{¦¡ªº·s½ƥ»¡C -SetupFileCorrupt=¦w¸˵{¦¡Àɮפw·l·´¡C½Э«·s¨ú±o¸ӵ{¦¡ªº½ƥ»¡C -SetupFileCorruptOrWrongVer=¦w¸˵{¦¡Àɮפw·l·´¡A©Τ£¬ۮe©ó»P¦¹ª©ªº¦w¸˵{¦¡¡C½Эץ¿°ÝÃD¡A©έ«·s¨ú±oµ{¦¡ªº·s½ƥ»¡C -InvalidParameter=¦b©R¥O¦C¤W¶ǻ¼¤FµL®Īº°ѼÆ:%n%n%1 -SetupAlreadyRunning=¦w¸˵{¦¡¤w¦b°õ¦椤¡C -WindowsVersionNotSupported=¦¹µ{¦¡¤£¤䴩¹q¸£©Ұõ¦檺 Windows ª©¥»¡C -WindowsServicePackRequired=¦¹µ{¦¡»ݭn %1 Service Pack %2 ©Χó·sª©¥»¡C -NotOnThisPlatform=¦¹µ{¦¡¤£·|¦b %1 ¤W°õ¦æ¡C -OnlyOnThisPlatform=¦¹µ{¦¡¥²¶·¦b %1 ¤W°õ¦æ¡C -OnlyOnTheseArchitectures=¦¹µ{¦¡¥u¥i¦w¸˦b±M¬°¤U¦C³B²z¾¹¬[ºc³]­pªº Windows ª©¥»¤W:%n%n%1 -MissingWOW64APIs=±z°õ¦檺 Windows ª©¥»¤£§t¦w¸˵{¦¡°õ¦æ 64 ¦줸¦w¸˩һݪº¥\¯à¡C­Y­n­ץ¿¦¹°ÝÃD¡A½Цw¸Ë Service Pack %1¡C -WinVersionTooLowError=¦¹µ{¦¡»ݭn %1 ª© %2 ©Χó·sª©¥»¡C -WinVersionTooHighError=¦¹µ{¦¡µLªk¦w¸˦b %1 ª© %2 ©Χó·sª©¥»¤W¡C -AdminPrivilegesRequired=¦w¸˦¹µ{¦¡®ɡA¥²¶·¥H¨t²κ޲z­û¨­¤Àµn¤J¡C -PowerUserPrivilegesRequired=·í±z¦w¸˦¹µ{¦¡®ɡA¥²¶·¥H¨t²κ޲z­û©Î Power Users ¸s²ժº¦¨­û¨­¤Àµn¤J¡C -SetupAppRunningError=¦w¸ˮɰ»´ú¨ì %1 ¥ثe¥¿¦b°õ¦椤¡C%n%n½ХߧYÃö³¬¨ä©Ҧ³°õ¦æ­ÓÅé¡C­Y­nÄ~Äò¡A½Ыö¤@¤U [½T©w]; ­Y­nµ²§ô¡A½Ыö¤@¤U [¨ú®ø]¡C -UninstallAppRunningError=¸Ѱ£¦w¸ˮɰ»´ú¨ì %1 ¥ثe¥¿¦b°õ¦椤¡C%n%n½ХߧYÃö³¬¨ä©Ҧ³°õ¦æ­ÓÅé¡C­Y­nÄ~Äò¡A½Ыö¤@¤U [½T©w]; ­Y­nµ²§ô¡A½Ыö¤@¤U [¨ú®ø]¡C -; *** Misc. errors -ErrorCreatingDir=¦w¸˵{¦¡µLªk«إߥؿý "%1" -ErrorTooManyFilesInDir=¦]¬°¥ؿý "%1" ¥]§t¤ӦhÀɮסA©ҥHµLªk¦b¨䤤«إßÀɮ× -; *** Setup common messages -ExitSetupTitle=µ²§ô¦w¸Ë -ExitSetupMessage=¦w¸˥¼§¹¦¨¡C­Y¥ߧYµ²§ô¡A±N¤£·|¦w¸˵{¦¡¡C%n%n±z¥i¥Hµy«á¦A°õ¦æ¦w¸˵{¦¡¨ӧ¹¦¨¦w¸ˡC%n%n­nµ²§ô¦w¸˶Ü? -AboutSetupMenuItem=Ãö©ó¦w¸˵{¦¡(&A)... -AboutSetupTitle=Ãö©ó¦w¸˵{¦¡ -AboutSetupMessage=%1 ª© %2%n%3%n%n%1 ­º­¶:%n%4 -AboutSetupNote= -TranslatorNote= -; *** Buttons -ButtonBack=< ¤W¤@¨B(&B) -ButtonNext=¤U¤@¨B(&N) > -ButtonInstall=¦w¸Ë(&I) -ButtonOK=½T©w -ButtonCancel=¨ú®ø -ButtonYes=¬O(&Y) -ButtonYesToAll=¥þ³¡¬ҬO(&A) -ButtonNo=§_(&N) -ButtonNoToAll=¥þ³¡¬ҧ_(&O) -ButtonFinish=§¹¦¨(&F) -ButtonBrowse=ÂsÄý(&B)... -ButtonWizardBrowse=ÂsÄý(&R)... -ButtonNewFolder=«إ߷s¸ê®Ƨ¨(&M) -; *** "Select Language" dialog messages -SelectLanguageTitle=¿ï¨ú¦w¸˵{¦¡»y¨¥ -SelectLanguageLabel=¿ï¨ú¦w¸˴Á¶¡©ҭn¨ϥΪº»y¨¥: -; *** Common wizard text -ClickNext=­Y­nÄ~Äò¡A½Ыö¤@¤U [¤U¤@¨B]; ­Y­nµ²§ô¦w¸ˡA½Ыö¤@¤U [¨ú®ø]¡C -BeveledLabel= -BrowseDialogTitle=ÂsÄý¸ê®Ƨ¨ -BrowseDialogLabel=½бq¤U¦C²M³椤¿ï¨ú¸ê®Ƨ¨¡AµM«á«ö¤@¤U [½T©w]¡C -NewFolderName=·s¼W¸ê®Ƨ¨ -; *** "Welcome" wizard page -WelcomeLabel1=Åwªï¨ϥÎ [name] ¦w¸˺ëÆF -WelcomeLabel2=³o·|¦b±zªº¹q¸£¤W¦w¸Ë [name/ver]¡C%n%n«Øij±z¥ýÃö³¬©Ҧ³¨ä¥LÀ³¥ε{¦¡¡AµM«á¦AÄ~Äò¡C -; *** "Password" wizard page -WizardPassword=±K½X -PasswordLabel1=¦¹¦w¸˨ü±K½X«OÅ@¡C -PasswordLabel3=½д£¨ѱK½X¡AµM«á«ö¤@¤U [¤U¤@¨B] ¥HÄ~Äò¡C±K½X°ϤÀ¤j¤p¼g¡C -PasswordEditLabel=±K½X(&P): -IncorrectPassword=¿é¤Jªº±K½X¤£¥¿½T¡C½ЦA¸դ@¦¸¡C -; *** "License Agreement" wizard page -WizardLicense=±ÂÅv¦X¬ù -LicenseLabel=½Хý¾\Ū¤U¦C­«­n¸ê°T¦AÄ~Äò¡C -LicenseLabel3=½о\Ū¤U¦C±ÂÅv¦X¬ù¡C±z¥²¶·±µ¨ü¦¹¦X¬ù±ø´ڡA¤~¯àÄ~Äò¦w¸ˡC -LicenseAccepted=§ڱµ¨ü¦X¬ù(&A) -LicenseNotAccepted=§ڤ£±µ¨ü¦X¬ù(&D) -; *** "Information" wizard pages -WizardInfoBefore=¸ê°T -InfoBeforeLabel=½Хý¾\Ū¤U¦C­«­n¸ê°T¦AÄ~Äò¡C -InfoBeforeClickLabel=·í±z·dzƦn­nÄ~Äò¦w¸ˮɡA½Ыö¤@¤U [¤U¤@¨B]¡C -WizardInfoAfter=¸ê°T -InfoAfterLabel=½Хý¾\Ū¤U¦C­«­n¸ê°T¦AÄ~Äò¡C -InfoAfterClickLabel=·í±z·dzƦn­nÄ~Äò¦w¸ˮɡA½Ыö¤@¤U [¤U¤@¨B]¡C -; *** "User Information" wizard page -WizardUserInfo=¨ϥΪ̸ê°T -UserInfoDesc=½пé¤J±zªº¸ê°T¡C -UserInfoName=¨ϥΪ̦WºÙ(&U): -UserInfoOrg=²Õ´(&O): -UserInfoSerial=§Ǹ¹(&S): -UserInfoNameRequired=¥²¶·¿é¤J¦Wº١C -; *** "Select Destination Location" wizard page -WizardSelectDir=¿ï¨ú¥تº¦a¦ì¸m -SelectDirDesc=À³±N [name] ¦w¸˦b¦ó³B? -SelectDirLabel3=¦w¸˵{¦¡·|±N [name] ¦w¸˦b¤U¦C¸ê®Ƨ¨¤¤¡C -SelectDirBrowseLabel=­Y­nÄ~Äò¡A½Ыö¤@¤U [¤U¤@¨B]¡C­Y±z·Q¿ï¨ú¤£¦Pªº¸ê®Ƨ¨¡A½Ыö¤@¤U [ÂsÄý]¡C -DiskSpaceMBLabel=¦ܤֶ·¦³ [mb] MB ªº¥i¥κϺЪŶ¡¡C -CannotInstallToNetworkDrive=¦w¸˵{¦¡µLªk¦w¸˨ìºô¸ôºϺо÷¡C -CannotInstallToUNCPath=¦w¸˵{¦¡µLªk¦w¸˨ì UNC ¸ô®|¡C -InvalidPath=¥²¶·¿é¤J¥]§tºϺо÷¥N¸¹ªº§¹¾ã¸ô®|¡A¨Ҧp:%n%nC:\APP%n%n©οé¤J¤U¦C®榡ªº UNC ¸ô®|:%n%n\\¦øªA¾¹\¦@¥Î -InvalidDrive=¿ï¨úªººϺо÷©Î UNC ¦@¥Τ£¦s¦b©εLªk¦s¨ú¡C½пï¨ú¨ä¥LºϺо÷©Î UNC ¦@¥ΡC -DiskSpaceWarningTitle=ºϺЪŶ¡¤£¨¬ -DiskSpaceWarning=¦w¸˵{¦¡¦ܤֻݭn %1 KB ªº¥i¥ΪŶ¡¤~¯à¦w¸ˡA¦ý©ҿïºϺо÷ªº¥i¥ΪŶ¡¥u¦³ %2 KB¡C%n%n¤´­nÄ~Äò¶Ü? -DirNameTooLong=¸ê®Ƨ¨¦Wº٩θô®|¹Lªø¡C -InvalidDirName=¦¹¸ê®Ƨ¨¦WºٵL®ġC -BadDirName32=¸ê®Ƨ¨¦Wº٤£±o¥]§t¤U¦C¥ô¤@¦r¤¸:%n%n%1 -DirExistsTitle=¸ê®Ƨ¨¤w¦s¦b -DirExists=¤w¦³¸ê®Ƨ¨ %n%n%1%n%n¡C¤´­n¦w¸˨ì¸Ӹê®Ƨ¨¶Ü? -DirDoesntExistTitle=¸ê®Ƨ¨¤£¦s¦b -DirDoesntExist=¸ê®Ƨ¨ %n%n%1%n%n ¤£¦s¦b¡C­n«إ߸Ӹê®Ƨ¨¶Ü? -; *** "Select Components" wizard page -WizardSelectComponents=¿ï¨ú¤¸¥ó -SelectComponentsDesc=À³¦w¸˭þ¨Ǥ¸¥ó? -SelectComponentsLabel2=¿ï¨ú±z­n¦w¸˪º¤¸¥ó; ²M°£±z¤£­n¦w¸˪º¤¸¥ó¡C·í±z·dzƦn­nÄ~Äò®ɡA½Ыö¤@¤U [¤U¤@¨B]¡C -FullInstallation=§¹¾ã¦w¸Ë -; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) -CompactInstallation=ºë²¦w¸Ë -CustomInstallation=¦ۭq¦w¸Ë -NoUninstallWarningTitle=¤w¦³¦¹¤¸¥ó -NoUninstallWarning=¦w¸˵{¦¡°»´ú¨ì±zªº¹q¸£¤w¦w¸ˤF¤U¦C¤¸¥ó:%n%n%1%n%n±N³o¨Ǥ¸¥ó¨ú®ø¿ï¨ú¨ä£·|¨Ϥ¸¥ó¸Ѱ£¦w¸ˡC%n%n¤´­nÄ~Äò¶Ü? -ComponentSize1=%1 KB -ComponentSize2=%1 MB -ComponentsDiskSpaceMBLabel=¥ثeªº¿ï¾ܦܤֻݭn [mb] MB ªººϺЪŶ¡¡C -; *** "Select Additional Tasks" wizard page -WizardSelectTasks=¿ï¨ú¨ä¥L¤u§@ -SelectTasksDesc=Áٶ·°õ¦æ­þ¨Ǩä¥L¤u§@? -SelectTasksLabel2=½пï¨ú¦w¸˵{¦¡¦b¦w¸Ë [name] ®ɡA¶·ÃB¥~°õ¦檺¨ä¥L¤u§@¡AµM«á«ö¤@¤U [¤U¤@¨B]¡C -; *** "Select Start Menu Folder" wizard page -WizardSelectProgramGroup=¿ï¨ú [¶}©l] ¥\¯àªí¸ê®Ƨ¨ -SelectStartMenuFolderDesc=¦w¸˵{¦¡À³±Nµ{¦¡±¶®|¸m©ó¦ó³B? -SelectStartMenuFolderLabel3=¦w¸˵{¦¡±N¦b¤U¦C [¶}©l] ¥\¯àªí¸ê®Ƨ¨¤¤«إߵ{¦¡±¶®|¡C -SelectStartMenuFolderBrowseLabel=­Y­nÄ~Äò¡A½Ыö¤@¤U [¤U¤@¨B]¡C­Y±z·Q¿ï¨ú¤£¦Pªº¸ê®Ƨ¨¡A½Ыö¤@¤U [ÂsÄý]¡C -MustEnterGroupName=¥²¶·¿é¤J¸ê®Ƨ¨¦Wº١C -GroupNameTooLong=¸ê®Ƨ¨¦Wº٩θô®|¹Lªø¡C -InvalidGroupName=¦¹¸ê®Ƨ¨¦WºٵL®ġC -BadGroupName=¸ê®Ƨ¨¦Wº٤£±o¥]§t¤U¦C¥ô¤@¦r¤¸:%n%n%1 -NoProgramGroupCheck2=¤£­n«إß [¶}©l] ¥\¯àªí¸ê®Ƨ¨(&D) -; *** "Ready to Install" wizard page -WizardReady=¤w¥i¶}©l¦w¸Ë -ReadyLabel1=¦w¸˵{¦¡²{¦b¤w¥i¶}©l±N [name] ¦w¸˨ì±zªº¹q¸£¤W¡C -ReadyLabel2a=­Y­nÄ~Äò¦w¸ˡA½Ыö¤@¤U [¦w¸Ë]; ­Y­nÀ˾\©ÎÅܧó¥ô¦ó³]©w¡A½Ыö¤@¤U [¤W¤@¨B]¡C -ReadyLabel2b=­Y­nÄ~Äò¦w¸ˡA½Ыö¤@¤U [¦w¸Ë]¡C -ReadyMemoUserInfo=¨ϥΪ̸ê°T: -ReadyMemoDir=¥تº¦a¦ì¸m: -ReadyMemoType=¦w¸ËÃþ«¬: -ReadyMemoComponents=¿ï¨úªº¤¸¥ó: -ReadyMemoGroup=[¶}©l] ¥\¯àªí¸ê®Ƨ¨: -ReadyMemoTasks=¨ä¥L¤u§@: -; *** "Preparing to Install" wizard page -WizardPreparing=¥¿¦b·dzƦw¸Ë -PreparingDesc=¦w¸˵{¦¡¥¿¦b·dzƱN [name] ¦w¸˨ì±zªº¹q¸£¤W¡C -PreviousInstallNotCompleted=¤W¤@­ӵ{¦¡ªº¦w¸Ë/²¾°£©|¥¼§¹¦¨¡C¥²¶·­«·s±Ұʹq¸£¡A¤~¯৹¦¨¸Ӧw¸ˡC%n%n½Цb­«·s±Ұʹq¸£¤§«á¡A­«·s°õ¦æ¦w¸˵{¦¡¡A¥H§¹¦¨ [name] ªº¦w¸ˡC -CannotContinue=¦w¸˵{¦¡µLªkÄ~Äò¡C½Ыö¤@¤U [¨ú®ø] ¥Hµ²§ô¡C -ApplicationsFound=¦w¸˵{¦¡¥²¶·§ó·s¤U¦CÀ³¥ε{¦¡¥¿¦b¨ϥΪº¤@¨ÇÀɮסC«Øij±z¤¹³\¦w¸˵{¦¡¦۰ÊÃö³¬³o¨ÇÀ³¥ε{¦¡¡C -ApplicationsFound2=¦w¸˵{¦¡¥²¶·§ó·s¤U¦CÀ³¥ε{¦¡¥¿¦b¨ϥΪº¤@¨ÇÀɮסC«Øij±z¤¹³\¦w¸˵{¦¡¦۰ÊÃö³¬³o¨ÇÀ³¥ε{¦¡¡C·í¦w¸˧¹¦¨¤§«á¡A¦w¸˵{¦¡±N·|¹Á¸խ«·s±Ұʳo¨ÇÀ³¥ε{¦¡¡C -CloseApplications=¦۰ÊÃö³¬À³¥ε{¦¡(&A) -DontCloseApplications=¤£­nÃö³¬À³¥ε{¦¡(&D) -ErrorCloseApplications=¦w¸˵{¦¡µLªk¦۰ÊÃö³¬©Ҧ³À³¥ε{¦¡¡C«Øij±zÃö³¬©Ҧ³¥¿¦b¨ϥΦw¸˵{¦¡¥²¶·§ó·s¤§ÀɮתºÀ³¥ε{¦¡¡AµM«á¦AÄ~Äò¡C -; *** "Installing" wizard page -WizardInstalling=¦w¸ˤ¤ -InstallingLabel=½еy­ԡA¦w¸˵{¦¡¥¿¦b±N [name] ¦w¸˨ì±zªº¹q¸£¤W¡C -; *** "Setup Completed" wizard page -FinishedHeadingLabel=¥¿¦b§¹¦¨ [name] ¦w¸˺ëÆF -FinishedLabelNoIcons=¦w¸˵{¦¡¤w§¹¦¨±z¹q¸£¤W [name] ªº¦w¸ˡC -FinishedLabel=¦w¸˵{¦¡¤w§¹¦¨±z¹q¸£¤W [name] ªº¦w¸ˡC±z¥i¥H¿ï¨ú©Ҧw¸˪º±¶®|¨ӱҰÊÀ³¥ε{¦¡¡C -ClickFinish=½Ыö¤@¤U [§¹¦¨]¡A¥Hµ²§ô¦w¸ˡC -FinishedRestartLabel=¦w¸˵{¦¡¥²¶·­«·s±Ұʱzªº¹q¸£¡A¤~¯৹¦¨ [name] ªº¦w¸ˡC­n¥ߧY­«·s±ҰʶÜ? -FinishedRestartMessage=¦w¸˵{¦¡¥²¶·­«·s±Ұʱzªº¹q¸£¡A¤~¯৹¦¨ [name] ªº¦w¸ˡC%n%n­n¥ߧY­«·s±ҰʶÜ? -ShowReadmeCheck=¬O¡A§ڭnÀ˵øŪ§ÚÀɮ× -YesRadio=¬O¡A¥ߧY­«·s±Ұʹq¸£(&Y) -NoRadio=§_¡Aµy­ԦA­«·s±Ұʹq¸£(&N) -; used for example as 'Run MyProg.exe' -RunEntryExec=°õ¦æ %1 -; used for example as 'View Readme.txt' -RunEntryShellExec=À˵ø %1 -; *** "Setup Needs the Next Disk" stuff -ChangeDiskTitle=¦w¸˵{¦¡»ݭn¤U¤@±iºϤù¡C -SelectDiskLabel2=½д¡¤JºϤù %1¡AµM«á«ö¤@¤U [½T©w]¡C%n%n­Y¦¹ºϤù¤WªºÀɮץi¥H¦b¤U¦CÅã¥ܤ§¸ê®Ƨ¨¥H¥~ªº¸ê®Ƨ¨¤¤§ä¨ì¡A½пé¤J¥¿½Tªº¸ô®|¡A©Ϋö¤@¤U [ÂsÄý]¡C -PathLabel=¸ô®|(&P): -FileNotInDir2=¦b "%2" ¤¤§䤣¨ìÀɮ× "%1"¡C½д¡¤J¥¿½TªººϤù¡A©οï¨ú¨ä¥L¸ê®Ƨ¨¡C -SelectDirectoryLabel=½Ыü©w¤U¤@±iºϤùªº¦ì¸m¡C -; *** Installation phase messages -SetupAborted=¦w¸˥¼¦w¦¨¡C%n%n½Эץ¿°ÝÃD¡A¦A­«·s°õ¦æ¦w¸˵{¦¡¡C -EntryAbortRetryIgnore=­Y­n¦A¸դ@¦¸¡A½Ыö¤@¤U [­«¸Õ]; ­Y­nÄ~Äò¡A½Ыö¤@¤U [©¿²¤]; ­Y­n¨ú®ø¦w¸ˡA½Ыö¤@¤U [¤¤¤î]¡C -; *** Installation status messages -StatusClosingApplications=¥¿¦bÃö³¬À³¥ε{¦¡... -StatusCreateDirs=¥¿¦b«إߥؿý... -StatusExtractFiles=¥¿¦b¸ÑÀ£ÁYÀɮ×... -StatusCreateIcons=¥¿¦b«إ߱¶®|... -StatusCreateIniEntries=¥¿¦b«إß INI ¶µ¥Ø... -StatusCreateRegistryEntries=¥¿¦b«إߵn¿ý¶µ¥Ø... -StatusRegisterFiles=¥¿¦bµn¿ýÀɮ×... -StatusSavingUninstall=¥¿¦bÀx¦s¸Ѱ£¦w¸˸ê°T... -StatusRunProgram=¥¿¦b§¹¦¨¦w¸Ë... -StatusRestartingApplications=¥¿¦b­«·s±ҰÊÀ³¥ε{¦¡... -StatusRollback=¥¿¦b´_­ìÅܧó... -; *** Misc. errors -ErrorInternal2=¤º³¡¿ù»~: %1 -ErrorFunctionFailedNoCode=%1 ¥¢±Ñ -ErrorFunctionFailed=%1 ¥¢±Ñ; ¥N½X %2 -ErrorFunctionFailedWithMessage=%1 ¥¢±Ñ; ¥N½X %2¡C%n%3 -ErrorExecutingProgram=µLªk°õ¦æÀɮ×:%n%1 -; *** Registry errors -ErrorRegOpenKey=¶}±ҵn¿ý¾÷½X®ɵo¥Ϳù»~:%n%1\%2 -ErrorRegCreateKey=«إߵn¿ý¾÷½X®ɵo¥Ϳù»~:%n%1\%2 -ErrorRegWriteKey=¼g¤Jµn¿ý¾÷½X®ɵo¥Ϳù»~:%n%1\%2 -; *** INI errors -ErrorIniEntry=¦bÀɮ× "%1" ¤¤«إß INI ¶µ¥خɵo¥Ϳù»~¡C -; *** File copying errors -FileAbortRetryIgnore=­Y­n¦A¸դ@¦¸¡A½Ыö¤@¤U [­«¸Õ]; ­Y­n²¤¹L¦¹ÀɮסA½Ыö¤@¤U [©¿²¤] (¤£«Øij¨ϥÎ); ­Y­n¨ú®ø¦w¸ˡA½Ыö¤@¤U [¤¤¤î]¡C -FileAbortRetryIgnore2=­Y­n¦A¸դ@¦¸¡A½Ыö¤@¤U [­«¸Õ]; ­Y­nÄ~Äò¡A½Ыö¤@¤U [©¿²¤] (¤£«Øij¨ϥÎ); ­Y­n¨ú®ø¦w¸ˡA½Ыö¤@¤U [¤¤¤î]¡C -SourceIsCorrupted=­ì©lµ{¦¡Àɤw·l·´ -SourceDoesntExist=­ì©lµ{¦¡ÀÉ "%1" ¤£¦s¦b -ExistingFileReadOnly=²{¦³Àɮפw¼аO¬°°ßŪ¡C%n%n­Y­n²¾°£°ßŪÄݩʡAµM«á¦A¸դ@¦¸¡A½Ыö¤@¤U [­«¸Õ]; ­Y­n²¤¹L¦¹ÀɮסA½Ыö¤@¤U [©¿²¤]; ­Y­n¨ú®ø¦w¸ˡA½Ыö¤@¤U [¤¤¤î]¡C -ErrorReadingExistingDest=¹Á¸ÕŪ¨ú²{¦³Àɮ׮ɵo¥Ϳù»~: -FileExists=¤w¦³¦¹ÀɮסC%n%n­n¥Ѧw¸˵{¦¡¥[¥HÂмg¶Ü? -ExistingFileNewer=²{¦³Àɮ׸û¦w¸˵{¦¡¹Á¸զw¸˪ºÀɮ׷s¡C«Øij±z«O¯d²{¦³ÀɮסC%n%n­n«O¯d²{¦³ªºÀɮ׶Ü? -ErrorChangingAttr=¹Á¸ÕÅܧó²{¦³ÀɮתºÄݩʮɵo¥Ϳù»~: -ErrorCreatingTemp=¹Á¸զb¥تº¦a¥ؿý¤¤«إßÀɮ׮ɵo¥Ϳù»~: -ErrorReadingSource=¹Á¸ÕŪ¨ú­ì©lµ{¦¡Àɮɵo¥Ϳù»~: -ErrorCopying=¹Á¸սƻsÀɮ׮ɵo¥Ϳù»~: -ErrorReplacingExistingFile=¹Á¸ըú¥N²{¦³Àɮ׮ɵo¥Ϳù»~: -ErrorRestartReplace=RestartReplace ¥¢±Ñ: -ErrorRenamingTemp=¹Á¸խ«·s©R¦W¥تº¦a¥ؿý¤¤ªºÀɮ׮ɵo¥Ϳù»~: -ErrorRegisterServer=µLªkµn¿ý DLL/OCX: %1 -ErrorRegSvr32Failed=RegSvr32 ¥¢±ѡAµ²§ô¥N½X¬° %1 -ErrorRegisterTypeLib=µLªkµn¿ýÃþ«¬µ{¦¡®w: %1 -; *** Post-installation errors -ErrorOpeningReadme=¹Á¸ն}±ÒŪ§ÚÀɮ׮ɵo¥Ϳù»~¡C -ErrorRestartingComputer=¦w¸˵{¦¡µLªk­«·s±Ұʹq¸£¡C½Фâ°ʰõ¦榹§@·~¡C -; *** Uninstaller messages -UninstallNotFound=¨S¦³Àɮ× "%1"¡CµLªk¸Ѱ£¦w¸ˡC -UninstallOpenError=µLªk¶}±ÒÀɮ× "%1"¡CµLªk¸Ѱ£¦w¸Ë -UninstallUnsupportedVer=¦¹ª©¸Ѱ£¦w¸˵{¦¡µLªk¿ëÃѸѰ£¦w¸˰O¿ýÀÉ "%1" ªº®榡¡CµLªk¸Ѱ£¦w¸Ë -UninstallUnknownEntry=¦b¸Ѱ£¦w¸˰O¿ý¤¤§ä¨줣©úªº¶µ¥Ø (%1) -ConfirmUninstall=½T©w­n§¹¥þ²¾°£ %1 ¤Ψä©Ҧ³¤¸¥ó¶Ü? -UninstallOnlyOnWin64=¥u¥i¦b 64 ¦줸 Windows ¤W¸Ѱ£¦w¸˦¹¦w¸ˡC -OnlyAdminCanUninstall=¥u¦³¨ã³ƨt²κ޲zÅv­­ªº¨ϥΪ̡A¤~¯à¸Ѱ£¦w¸˦¹¦w¸ˡC -UninstallStatusLabel=¥¿¦b±q±zªº¹q¸£²¾°£ %1¡A½еy­ԡC -UninstalledAll=¤w¦¨¥\±q±zªº¹q¸£²¾°£ %1¡C -UninstalledMost=¸Ѱ£¦w¸Ë %1 ¤w§¹¦¨¡C%n%n¦³³¡¤À¶µ¥صLªk²¾°£¡C±z¥i¥H¤â°ʥ[¥H²¾°£¡C -UninstalledAndNeedsRestart=­Y­n§¹¦¨ %1 ªº¸Ѱ£¦w¸ˡA¥²¶·­«·s±Ұʱzªº¹q¸£¡C%n%n­n¥ߧY­«·s±ҰʶÜ? -UninstallDataCorrupted="%1" Àɮפw·l·´¡CµLªk¸Ѱ£¦w¸Ë -; *** Uninstallation phase messages -ConfirmDeleteSharedFileTitle=­n²¾°£¦@¥ÎÀɮ׶Ü? -ConfirmDeleteSharedFile2=¨t²Ϋü¥X¤wµL¥ô¦óµ{¦¡¦b¨ϥΤU¦C¦@¥ÎÀɮסC±z­n¸Ѱ£¦w¸ˡA¥H²¾°£¦¹¦@¥ÎÀɮ׶Ü?%n%n¦p¦³¥ô¦óµ{¦¡¤´¦b¨ϥΦ¹ÀɮצӱN¸ÓÀɮײ¾°£¡A³o¨ǵ{¦¡¥i¯àµLªk¥¿±`¹B§@¡C­Y¤£½T©w¡A½пï¾Ü [§_]¡C±NÀɮ׫O¯d¦b¨t²ΤW¨ä£·|³y¦¨¥ô¦󤣨}¼vÅT¡C -SharedFileNameLabel=ÀɮצWºÙ: -SharedFileLocationLabel=¦ì¸m: -WizardUninstalling=¸Ѱ£¦w¸˪¬ºA -StatusUninstalling=¥¿¦b¸Ѱ£¦w¸Ë %1... -; *** Shutdown block reasons -ShutdownBlockReasonInstallingApp=¥¿¦b¦w¸Ë %1¡C -ShutdownBlockReasonUninstallingApp=¥¿¦b¸Ѱ£¦w¸Ë %1¡C -; The custom messages below aren't used by Setup itself, but if you make -; use of them in your scripts, you'll want to translate them. -[CustomMessages] -NameAndVersion=%1 ª© %2 -AdditionalIcons=¨ä¥L±¶®|: -CreateDesktopIcon=«إ߮ୱ±¶®|(&D) -CreateQuickLaunchIcon=«إߧֳt±Ұʱ¶®|(&Q) -ProgramOnTheWeb=Web ¤Wªº %1 -UninstallProgram=¸Ѱ£¦w¸Ë %1 -LaunchProgram=±ҰÊ %1 -AssocFileExtension=ÃöÁp %1 »P %2 °ÆÀɦW(&A) -AssocingFileExtension=¥¿¦b«إß %1 »P %2 °ÆÀɦWªºÃöÁp¡K -AutoStartProgramGroupDescription=±ҰÊ: -AutoStartProgram=¦۰ʱҰÊ %1 +; *** Inno Setup version 5.5.3+ Traditional Chinese messages *** +; +; To download user-contributed translations of this file, go to: +; http://www.jrsoftware.org/files/istrans/ +; +; Note: When translating this text, do not add periods (.) to the end of +; messages that didn't have them already, because on those messages Inno +; Setup adds the periods automatically (appending a period would result in +; two periods being displayed). +[LangOptions] +; The following three entries are very important. Be sure to read and +; understand the '[LangOptions] section' topic in the help file. +LanguageName=Traditional Chinese +LanguageID=$0404 +LanguageCodePage=950 +; If the language you are translating to requires special font faces or +; sizes, uncomment any of the following entries and change them accordingly. +;DialogFontName= +;DialogFontSize=8 +;WelcomeFontName=Verdana +;WelcomeFontSize=12 +;TitleFontName=Arial +;TitleFontSize=29 +;CopyrightFontName=Arial +;CopyrightFontSize=8 +[Messages] +; *** Application titles +SetupAppTitle=¦w¸˵{¦¡ +SetupWindowTitle=¦w¸˵{¦¡ - %1 +UninstallAppTitle=¸Ѱ£¦w¸Ë +UninstallAppFullTitle=%1 ¸Ѱ£¦w¸Ë +; *** Misc. common +InformationTitle=¸ê°T +ConfirmTitle=½T»{ +ErrorTitle=¿ù»~ +; *** SetupLdr messages +SetupLdrStartupMessage=³o·|¦w¸Ë %1¡C­nÄ~Äò¶Ü? +LdrCannotCreateTemp=µLªk«إ߼ȦsÀɡC¦w¸ˤw¤¤¤î +LdrCannotExecTemp=µLªk°õ¦æ¼Ȧs¥ؿý¤¤ªºÀɮסC¦w¸ˤw¤¤¤î +; *** Startup error messages +LastErrorMessage=%1¡C%n%n¿ù»~ %2: %3 +SetupFileMissing=¦w¸˥ؿý¤¤¯ʤÖÀɮ× %1¡C½Эץ¿°ÝÃD¡A©έ«·s¨ú±oµ{¦¡ªº·s½ƥ»¡C +SetupFileCorrupt=¦w¸˵{¦¡Àɮפw·l·´¡C½Э«·s¨ú±o¸ӵ{¦¡ªº½ƥ»¡C +SetupFileCorruptOrWrongVer=¦w¸˵{¦¡Àɮפw·l·´¡A©Τ£¬ۮe©ó»P¦¹ª©ªº¦w¸˵{¦¡¡C½Эץ¿°ÝÃD¡A©έ«·s¨ú±oµ{¦¡ªº·s½ƥ»¡C +InvalidParameter=¦b©R¥O¦C¤W¶ǻ¼¤FµL®Īº°ѼÆ:%n%n%1 +SetupAlreadyRunning=¦w¸˵{¦¡¤w¦b°õ¦椤¡C +WindowsVersionNotSupported=¦¹µ{¦¡¤£¤䴩¹q¸£©Ұõ¦檺 Windows ª©¥»¡C +WindowsServicePackRequired=¦¹µ{¦¡»ݭn %1 Service Pack %2 ©Χó·sª©¥»¡C +NotOnThisPlatform=¦¹µ{¦¡¤£·|¦b %1 ¤W°õ¦æ¡C +OnlyOnThisPlatform=¦¹µ{¦¡¥²¶·¦b %1 ¤W°õ¦æ¡C +OnlyOnTheseArchitectures=¦¹µ{¦¡¥u¥i¦w¸˦b±M¬°¤U¦C³B²z¾¹¬[ºc³]­pªº Windows ª©¥»¤W:%n%n%1 +MissingWOW64APIs=±z°õ¦檺 Windows ª©¥»¤£§t¦w¸˵{¦¡°õ¦æ 64 ¦줸¦w¸˩һݪº¥\¯à¡C­Y­n­ץ¿¦¹°ÝÃD¡A½Цw¸Ë Service Pack %1¡C +WinVersionTooLowError=¦¹µ{¦¡»ݭn %1 ª© %2 ©Χó·sª©¥»¡C +WinVersionTooHighError=¦¹µ{¦¡µLªk¦w¸˦b %1 ª© %2 ©Χó·sª©¥»¤W¡C +AdminPrivilegesRequired=¦w¸˦¹µ{¦¡®ɡA¥²¶·¥H¨t²κ޲z­û¨­¤Àµn¤J¡C +PowerUserPrivilegesRequired=·í±z¦w¸˦¹µ{¦¡®ɡA¥²¶·¥H¨t²κ޲z­û©Î Power Users ¸s²ժº¦¨­û¨­¤Àµn¤J¡C +SetupAppRunningError=¦w¸ˮɰ»´ú¨ì %1 ¥ثe¥¿¦b°õ¦椤¡C%n%n½ХߧYÃö³¬¨ä©Ҧ³°õ¦æ­ÓÅé¡C­Y­nÄ~Äò¡A½Ыö¤@¤U [½T©w]; ­Y­nµ²§ô¡A½Ыö¤@¤U [¨ú®ø]¡C +UninstallAppRunningError=¸Ѱ£¦w¸ˮɰ»´ú¨ì %1 ¥ثe¥¿¦b°õ¦椤¡C%n%n½ХߧYÃö³¬¨ä©Ҧ³°õ¦æ­ÓÅé¡C­Y­nÄ~Äò¡A½Ыö¤@¤U [½T©w]; ­Y­nµ²§ô¡A½Ыö¤@¤U [¨ú®ø]¡C +; *** Misc. errors +ErrorCreatingDir=¦w¸˵{¦¡µLªk«إߥؿý "%1" +ErrorTooManyFilesInDir=¦]¬°¥ؿý "%1" ¥]§t¤ӦhÀɮסA©ҥHµLªk¦b¨䤤«إßÀɮ× +; *** Setup common messages +ExitSetupTitle=µ²§ô¦w¸Ë +ExitSetupMessage=¦w¸˥¼§¹¦¨¡C­Y¥ߧYµ²§ô¡A±N¤£·|¦w¸˵{¦¡¡C%n%n±z¥i¥Hµy«á¦A°õ¦æ¦w¸˵{¦¡¨ӧ¹¦¨¦w¸ˡC%n%n­nµ²§ô¦w¸˶Ü? +AboutSetupMenuItem=Ãö©ó¦w¸˵{¦¡(&A)... +AboutSetupTitle=Ãö©ó¦w¸˵{¦¡ +AboutSetupMessage=%1 ª© %2%n%3%n%n%1 ­º­¶:%n%4 +AboutSetupNote= +TranslatorNote= +; *** Buttons +ButtonBack=< ¤W¤@¨B(&B) +ButtonNext=¤U¤@¨B(&N) > +ButtonInstall=¦w¸Ë(&I) +ButtonOK=½T©w +ButtonCancel=¨ú®ø +ButtonYes=¬O(&Y) +ButtonYesToAll=¥þ³¡¬ҬO(&A) +ButtonNo=§_(&N) +ButtonNoToAll=¥þ³¡¬ҧ_(&O) +ButtonFinish=§¹¦¨(&F) +ButtonBrowse=ÂsÄý(&B)... +ButtonWizardBrowse=ÂsÄý(&R)... +ButtonNewFolder=«إ߷s¸ê®Ƨ¨(&M) +; *** "Select Language" dialog messages +SelectLanguageTitle=¿ï¨ú¦w¸˵{¦¡»y¨¥ +SelectLanguageLabel=¿ï¨ú¦w¸˴Á¶¡©ҭn¨ϥΪº»y¨¥: +; *** Common wizard text +ClickNext=­Y­nÄ~Äò¡A½Ыö¤@¤U [¤U¤@¨B]; ­Y­nµ²§ô¦w¸ˡA½Ыö¤@¤U [¨ú®ø]¡C +BeveledLabel= +BrowseDialogTitle=ÂsÄý¸ê®Ƨ¨ +BrowseDialogLabel=½бq¤U¦C²M³椤¿ï¨ú¸ê®Ƨ¨¡AµM«á«ö¤@¤U [½T©w]¡C +NewFolderName=·s¼W¸ê®Ƨ¨ +; *** "Welcome" wizard page +WelcomeLabel1=Åwªï¨ϥÎ [name] ¦w¸˺ëÆF +WelcomeLabel2=³o·|¦b±zªº¹q¸£¤W¦w¸Ë [name/ver]¡C%n%n«Øij±z¥ýÃö³¬©Ҧ³¨ä¥LÀ³¥ε{¦¡¡AµM«á¦AÄ~Äò¡C +; *** "Password" wizard page +WizardPassword=±K½X +PasswordLabel1=¦¹¦w¸˨ü±K½X«OÅ@¡C +PasswordLabel3=½д£¨ѱK½X¡AµM«á«ö¤@¤U [¤U¤@¨B] ¥HÄ~Äò¡C±K½X°ϤÀ¤j¤p¼g¡C +PasswordEditLabel=±K½X(&P): +IncorrectPassword=¿é¤Jªº±K½X¤£¥¿½T¡C½ЦA¸դ@¦¸¡C +; *** "License Agreement" wizard page +WizardLicense=±ÂÅv¦X¬ù +LicenseLabel=½Хý¾\Ū¤U¦C­«­n¸ê°T¦AÄ~Äò¡C +LicenseLabel3=½о\Ū¤U¦C±ÂÅv¦X¬ù¡C±z¥²¶·±µ¨ü¦¹¦X¬ù±ø´ڡA¤~¯àÄ~Äò¦w¸ˡC +LicenseAccepted=§ڱµ¨ü¦X¬ù(&A) +LicenseNotAccepted=§ڤ£±µ¨ü¦X¬ù(&D) +; *** "Information" wizard pages +WizardInfoBefore=¸ê°T +InfoBeforeLabel=½Хý¾\Ū¤U¦C­«­n¸ê°T¦AÄ~Äò¡C +InfoBeforeClickLabel=·í±z·dzƦn­nÄ~Äò¦w¸ˮɡA½Ыö¤@¤U [¤U¤@¨B]¡C +WizardInfoAfter=¸ê°T +InfoAfterLabel=½Хý¾\Ū¤U¦C­«­n¸ê°T¦AÄ~Äò¡C +InfoAfterClickLabel=·í±z·dzƦn­nÄ~Äò¦w¸ˮɡA½Ыö¤@¤U [¤U¤@¨B]¡C +; *** "User Information" wizard page +WizardUserInfo=¨ϥΪ̸ê°T +UserInfoDesc=½пé¤J±zªº¸ê°T¡C +UserInfoName=¨ϥΪ̦WºÙ(&U): +UserInfoOrg=²Õ´(&O): +UserInfoSerial=§Ǹ¹(&S): +UserInfoNameRequired=¥²¶·¿é¤J¦Wº١C +; *** "Select Destination Location" wizard page +WizardSelectDir=¿ï¨ú¥تº¦a¦ì¸m +SelectDirDesc=À³±N [name] ¦w¸˦b¦ó³B? +SelectDirLabel3=¦w¸˵{¦¡·|±N [name] ¦w¸˦b¤U¦C¸ê®Ƨ¨¤¤¡C +SelectDirBrowseLabel=­Y­nÄ~Äò¡A½Ыö¤@¤U [¤U¤@¨B]¡C­Y±z·Q¿ï¨ú¤£¦Pªº¸ê®Ƨ¨¡A½Ыö¤@¤U [ÂsÄý]¡C +DiskSpaceMBLabel=¦ܤֶ·¦³ [mb] MB ªº¥i¥κϺЪŶ¡¡C +CannotInstallToNetworkDrive=¦w¸˵{¦¡µLªk¦w¸˨ìºô¸ôºϺо÷¡C +CannotInstallToUNCPath=¦w¸˵{¦¡µLªk¦w¸˨ì UNC ¸ô®|¡C +InvalidPath=¥²¶·¿é¤J¥]§tºϺо÷¥N¸¹ªº§¹¾ã¸ô®|¡A¨Ҧp:%n%nC:\APP%n%n©οé¤J¤U¦C®榡ªº UNC ¸ô®|:%n%n\\¦øªA¾¹\¦@¥Î +InvalidDrive=¿ï¨úªººϺо÷©Î UNC ¦@¥Τ£¦s¦b©εLªk¦s¨ú¡C½пï¨ú¨ä¥LºϺо÷©Î UNC ¦@¥ΡC +DiskSpaceWarningTitle=ºϺЪŶ¡¤£¨¬ +DiskSpaceWarning=¦w¸˵{¦¡¦ܤֻݭn %1 KB ªº¥i¥ΪŶ¡¤~¯à¦w¸ˡA¦ý©ҿïºϺо÷ªº¥i¥ΪŶ¡¥u¦³ %2 KB¡C%n%n¤´­nÄ~Äò¶Ü? +DirNameTooLong=¸ê®Ƨ¨¦Wº٩θô®|¹Lªø¡C +InvalidDirName=¦¹¸ê®Ƨ¨¦WºٵL®ġC +BadDirName32=¸ê®Ƨ¨¦Wº٤£±o¥]§t¤U¦C¥ô¤@¦r¤¸:%n%n%1 +DirExistsTitle=¸ê®Ƨ¨¤w¦s¦b +DirExists=¤w¦³¸ê®Ƨ¨ %n%n%1%n%n¡C¤´­n¦w¸˨ì¸Ӹê®Ƨ¨¶Ü? +DirDoesntExistTitle=¸ê®Ƨ¨¤£¦s¦b +DirDoesntExist=¸ê®Ƨ¨ %n%n%1%n%n ¤£¦s¦b¡C­n«إ߸Ӹê®Ƨ¨¶Ü? +; *** "Select Components" wizard page +WizardSelectComponents=¿ï¨ú¤¸¥ó +SelectComponentsDesc=À³¦w¸˭þ¨Ǥ¸¥ó? +SelectComponentsLabel2=¿ï¨ú±z­n¦w¸˪º¤¸¥ó; ²M°£±z¤£­n¦w¸˪º¤¸¥ó¡C·í±z·dzƦn­nÄ~Äò®ɡA½Ыö¤@¤U [¤U¤@¨B]¡C +FullInstallation=§¹¾ã¦w¸Ë +; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) +CompactInstallation=ºë²¦w¸Ë +CustomInstallation=¦ۭq¦w¸Ë +NoUninstallWarningTitle=¤w¦³¦¹¤¸¥ó +NoUninstallWarning=¦w¸˵{¦¡°»´ú¨ì±zªº¹q¸£¤w¦w¸ˤF¤U¦C¤¸¥ó:%n%n%1%n%n±N³o¨Ǥ¸¥ó¨ú®ø¿ï¨ú¨ä£·|¨Ϥ¸¥ó¸Ѱ£¦w¸ˡC%n%n¤´­nÄ~Äò¶Ü? +ComponentSize1=%1 KB +ComponentSize2=%1 MB +ComponentsDiskSpaceMBLabel=¥ثeªº¿ï¾ܦܤֻݭn [mb] MB ªººϺЪŶ¡¡C +; *** "Select Additional Tasks" wizard page +WizardSelectTasks=¿ï¨ú¨ä¥L¤u§@ +SelectTasksDesc=Áٶ·°õ¦æ­þ¨Ǩä¥L¤u§@? +SelectTasksLabel2=½пï¨ú¦w¸˵{¦¡¦b¦w¸Ë [name] ®ɡA¶·ÃB¥~°õ¦檺¨ä¥L¤u§@¡AµM«á«ö¤@¤U [¤U¤@¨B]¡C +; *** "Select Start Menu Folder" wizard page +WizardSelectProgramGroup=¿ï¨ú [¶}©l] ¥\¯àªí¸ê®Ƨ¨ +SelectStartMenuFolderDesc=¦w¸˵{¦¡À³±Nµ{¦¡±¶®|¸m©ó¦ó³B? +SelectStartMenuFolderLabel3=¦w¸˵{¦¡±N¦b¤U¦C [¶}©l] ¥\¯àªí¸ê®Ƨ¨¤¤«إߵ{¦¡±¶®|¡C +SelectStartMenuFolderBrowseLabel=­Y­nÄ~Äò¡A½Ыö¤@¤U [¤U¤@¨B]¡C­Y±z·Q¿ï¨ú¤£¦Pªº¸ê®Ƨ¨¡A½Ыö¤@¤U [ÂsÄý]¡C +MustEnterGroupName=¥²¶·¿é¤J¸ê®Ƨ¨¦Wº١C +GroupNameTooLong=¸ê®Ƨ¨¦Wº٩θô®|¹Lªø¡C +InvalidGroupName=¦¹¸ê®Ƨ¨¦WºٵL®ġC +BadGroupName=¸ê®Ƨ¨¦Wº٤£±o¥]§t¤U¦C¥ô¤@¦r¤¸:%n%n%1 +NoProgramGroupCheck2=¤£­n«إß [¶}©l] ¥\¯àªí¸ê®Ƨ¨(&D) +; *** "Ready to Install" wizard page +WizardReady=¤w¥i¶}©l¦w¸Ë +ReadyLabel1=¦w¸˵{¦¡²{¦b¤w¥i¶}©l±N [name] ¦w¸˨ì±zªº¹q¸£¤W¡C +ReadyLabel2a=­Y­nÄ~Äò¦w¸ˡA½Ыö¤@¤U [¦w¸Ë]; ­Y­nÀ˾\©ÎÅܧó¥ô¦ó³]©w¡A½Ыö¤@¤U [¤W¤@¨B]¡C +ReadyLabel2b=­Y­nÄ~Äò¦w¸ˡA½Ыö¤@¤U [¦w¸Ë]¡C +ReadyMemoUserInfo=¨ϥΪ̸ê°T: +ReadyMemoDir=¥تº¦a¦ì¸m: +ReadyMemoType=¦w¸ËÃþ«¬: +ReadyMemoComponents=¿ï¨úªº¤¸¥ó: +ReadyMemoGroup=[¶}©l] ¥\¯àªí¸ê®Ƨ¨: +ReadyMemoTasks=¨ä¥L¤u§@: +; *** "Preparing to Install" wizard page +WizardPreparing=¥¿¦b·dzƦw¸Ë +PreparingDesc=¦w¸˵{¦¡¥¿¦b·dzƱN [name] ¦w¸˨ì±zªº¹q¸£¤W¡C +PreviousInstallNotCompleted=¤W¤@­ӵ{¦¡ªº¦w¸Ë/²¾°£©|¥¼§¹¦¨¡C¥²¶·­«·s±Ұʹq¸£¡A¤~¯৹¦¨¸Ӧw¸ˡC%n%n½Цb­«·s±Ұʹq¸£¤§«á¡A­«·s°õ¦æ¦w¸˵{¦¡¡A¥H§¹¦¨ [name] ªº¦w¸ˡC +CannotContinue=¦w¸˵{¦¡µLªkÄ~Äò¡C½Ыö¤@¤U [¨ú®ø] ¥Hµ²§ô¡C +ApplicationsFound=¦w¸˵{¦¡¥²¶·§ó·s¤U¦CÀ³¥ε{¦¡¥¿¦b¨ϥΪº¤@¨ÇÀɮסC«Øij±z¤¹³\¦w¸˵{¦¡¦۰ÊÃö³¬³o¨ÇÀ³¥ε{¦¡¡C +ApplicationsFound2=¦w¸˵{¦¡¥²¶·§ó·s¤U¦CÀ³¥ε{¦¡¥¿¦b¨ϥΪº¤@¨ÇÀɮסC«Øij±z¤¹³\¦w¸˵{¦¡¦۰ÊÃö³¬³o¨ÇÀ³¥ε{¦¡¡C·í¦w¸˧¹¦¨¤§«á¡A¦w¸˵{¦¡±N·|¹Á¸խ«·s±Ұʳo¨ÇÀ³¥ε{¦¡¡C +CloseApplications=¦۰ÊÃö³¬À³¥ε{¦¡(&A) +DontCloseApplications=¤£­nÃö³¬À³¥ε{¦¡(&D) +ErrorCloseApplications=¦w¸˵{¦¡µLªk¦۰ÊÃö³¬©Ҧ³À³¥ε{¦¡¡C«Øij±zÃö³¬©Ҧ³¥¿¦b¨ϥΦw¸˵{¦¡¥²¶·§ó·s¤§ÀɮתºÀ³¥ε{¦¡¡AµM«á¦AÄ~Äò¡C +; *** "Installing" wizard page +WizardInstalling=¦w¸ˤ¤ +InstallingLabel=½еy­ԡA¦w¸˵{¦¡¥¿¦b±N [name] ¦w¸˨ì±zªº¹q¸£¤W¡C +; *** "Setup Completed" wizard page +FinishedHeadingLabel=¥¿¦b§¹¦¨ [name] ¦w¸˺ëÆF +FinishedLabelNoIcons=¦w¸˵{¦¡¤w§¹¦¨±z¹q¸£¤W [name] ªº¦w¸ˡC +FinishedLabel=¦w¸˵{¦¡¤w§¹¦¨±z¹q¸£¤W [name] ªº¦w¸ˡC±z¥i¥H¿ï¨ú©Ҧw¸˪º±¶®|¨ӱҰÊÀ³¥ε{¦¡¡C +ClickFinish=½Ыö¤@¤U [§¹¦¨]¡A¥Hµ²§ô¦w¸ˡC +FinishedRestartLabel=¦w¸˵{¦¡¥²¶·­«·s±Ұʱzªº¹q¸£¡A¤~¯৹¦¨ [name] ªº¦w¸ˡC­n¥ߧY­«·s±ҰʶÜ? +FinishedRestartMessage=¦w¸˵{¦¡¥²¶·­«·s±Ұʱzªº¹q¸£¡A¤~¯৹¦¨ [name] ªº¦w¸ˡC%n%n­n¥ߧY­«·s±ҰʶÜ? +ShowReadmeCheck=¬O¡A§ڭnÀ˵øŪ§ÚÀɮ× +YesRadio=¬O¡A¥ߧY­«·s±Ұʹq¸£(&Y) +NoRadio=§_¡Aµy­ԦA­«·s±Ұʹq¸£(&N) +; used for example as 'Run MyProg.exe' +RunEntryExec=°õ¦æ %1 +; used for example as 'View Readme.txt' +RunEntryShellExec=À˵ø %1 +; *** "Setup Needs the Next Disk" stuff +ChangeDiskTitle=¦w¸˵{¦¡»ݭn¤U¤@±iºϤù¡C +SelectDiskLabel2=½д¡¤JºϤù %1¡AµM«á«ö¤@¤U [½T©w]¡C%n%n­Y¦¹ºϤù¤WªºÀɮץi¥H¦b¤U¦CÅã¥ܤ§¸ê®Ƨ¨¥H¥~ªº¸ê®Ƨ¨¤¤§ä¨ì¡A½пé¤J¥¿½Tªº¸ô®|¡A©Ϋö¤@¤U [ÂsÄý]¡C +PathLabel=¸ô®|(&P): +FileNotInDir2=¦b "%2" ¤¤§䤣¨ìÀɮ× "%1"¡C½д¡¤J¥¿½TªººϤù¡A©οï¨ú¨ä¥L¸ê®Ƨ¨¡C +SelectDirectoryLabel=½Ыü©w¤U¤@±iºϤùªº¦ì¸m¡C +; *** Installation phase messages +SetupAborted=¦w¸˥¼¦w¦¨¡C%n%n½Эץ¿°ÝÃD¡A¦A­«·s°õ¦æ¦w¸˵{¦¡¡C +EntryAbortRetryIgnore=­Y­n¦A¸դ@¦¸¡A½Ыö¤@¤U [­«¸Õ]; ­Y­nÄ~Äò¡A½Ыö¤@¤U [©¿²¤]; ­Y­n¨ú®ø¦w¸ˡA½Ыö¤@¤U [¤¤¤î]¡C +; *** Installation status messages +StatusClosingApplications=¥¿¦bÃö³¬À³¥ε{¦¡... +StatusCreateDirs=¥¿¦b«إߥؿý... +StatusExtractFiles=¥¿¦b¸ÑÀ£ÁYÀɮ×... +StatusCreateIcons=¥¿¦b«إ߱¶®|... +StatusCreateIniEntries=¥¿¦b«إß INI ¶µ¥Ø... +StatusCreateRegistryEntries=¥¿¦b«إߵn¿ý¶µ¥Ø... +StatusRegisterFiles=¥¿¦bµn¿ýÀɮ×... +StatusSavingUninstall=¥¿¦bÀx¦s¸Ѱ£¦w¸˸ê°T... +StatusRunProgram=¥¿¦b§¹¦¨¦w¸Ë... +StatusRestartingApplications=¥¿¦b­«·s±ҰÊÀ³¥ε{¦¡... +StatusRollback=¥¿¦b´_­ìÅܧó... +; *** Misc. errors +ErrorInternal2=¤º³¡¿ù»~: %1 +ErrorFunctionFailedNoCode=%1 ¥¢±Ñ +ErrorFunctionFailed=%1 ¥¢±Ñ; ¥N½X %2 +ErrorFunctionFailedWithMessage=%1 ¥¢±Ñ; ¥N½X %2¡C%n%3 +ErrorExecutingProgram=µLªk°õ¦æÀɮ×:%n%1 +; *** Registry errors +ErrorRegOpenKey=¶}±ҵn¿ý¾÷½X®ɵo¥Ϳù»~:%n%1\%2 +ErrorRegCreateKey=«إߵn¿ý¾÷½X®ɵo¥Ϳù»~:%n%1\%2 +ErrorRegWriteKey=¼g¤Jµn¿ý¾÷½X®ɵo¥Ϳù»~:%n%1\%2 +; *** INI errors +ErrorIniEntry=¦bÀɮ× "%1" ¤¤«إß INI ¶µ¥خɵo¥Ϳù»~¡C +; *** File copying errors +FileAbortRetryIgnore=­Y­n¦A¸դ@¦¸¡A½Ыö¤@¤U [­«¸Õ]; ­Y­n²¤¹L¦¹ÀɮסA½Ыö¤@¤U [©¿²¤] (¤£«Øij¨ϥÎ); ­Y­n¨ú®ø¦w¸ˡA½Ыö¤@¤U [¤¤¤î]¡C +FileAbortRetryIgnore2=­Y­n¦A¸դ@¦¸¡A½Ыö¤@¤U [­«¸Õ]; ­Y­nÄ~Äò¡A½Ыö¤@¤U [©¿²¤] (¤£«Øij¨ϥÎ); ­Y­n¨ú®ø¦w¸ˡA½Ыö¤@¤U [¤¤¤î]¡C +SourceIsCorrupted=­ì©lµ{¦¡Àɤw·l·´ +SourceDoesntExist=­ì©lµ{¦¡ÀÉ "%1" ¤£¦s¦b +ExistingFileReadOnly=²{¦³Àɮפw¼аO¬°°ßŪ¡C%n%n­Y­n²¾°£°ßŪÄݩʡAµM«á¦A¸դ@¦¸¡A½Ыö¤@¤U [­«¸Õ]; ­Y­n²¤¹L¦¹ÀɮסA½Ыö¤@¤U [©¿²¤]; ­Y­n¨ú®ø¦w¸ˡA½Ыö¤@¤U [¤¤¤î]¡C +ErrorReadingExistingDest=¹Á¸ÕŪ¨ú²{¦³Àɮ׮ɵo¥Ϳù»~: +FileExists=¤w¦³¦¹ÀɮסC%n%n­n¥Ѧw¸˵{¦¡¥[¥HÂмg¶Ü? +ExistingFileNewer=²{¦³Àɮ׸û¦w¸˵{¦¡¹Á¸զw¸˪ºÀɮ׷s¡C«Øij±z«O¯d²{¦³ÀɮסC%n%n­n«O¯d²{¦³ªºÀɮ׶Ü? +ErrorChangingAttr=¹Á¸ÕÅܧó²{¦³ÀɮתºÄݩʮɵo¥Ϳù»~: +ErrorCreatingTemp=¹Á¸զb¥تº¦a¥ؿý¤¤«إßÀɮ׮ɵo¥Ϳù»~: +ErrorReadingSource=¹Á¸ÕŪ¨ú­ì©lµ{¦¡Àɮɵo¥Ϳù»~: +ErrorCopying=¹Á¸սƻsÀɮ׮ɵo¥Ϳù»~: +ErrorReplacingExistingFile=¹Á¸ըú¥N²{¦³Àɮ׮ɵo¥Ϳù»~: +ErrorRestartReplace=RestartReplace ¥¢±Ñ: +ErrorRenamingTemp=¹Á¸խ«·s©R¦W¥تº¦a¥ؿý¤¤ªºÀɮ׮ɵo¥Ϳù»~: +ErrorRegisterServer=µLªkµn¿ý DLL/OCX: %1 +ErrorRegSvr32Failed=RegSvr32 ¥¢±ѡAµ²§ô¥N½X¬° %1 +ErrorRegisterTypeLib=µLªkµn¿ýÃþ«¬µ{¦¡®w: %1 +; *** Post-installation errors +ErrorOpeningReadme=¹Á¸ն}±ÒŪ§ÚÀɮ׮ɵo¥Ϳù»~¡C +ErrorRestartingComputer=¦w¸˵{¦¡µLªk­«·s±Ұʹq¸£¡C½Фâ°ʰõ¦榹§@·~¡C +; *** Uninstaller messages +UninstallNotFound=¨S¦³Àɮ× "%1"¡CµLªk¸Ѱ£¦w¸ˡC +UninstallOpenError=µLªk¶}±ÒÀɮ× "%1"¡CµLªk¸Ѱ£¦w¸Ë +UninstallUnsupportedVer=¦¹ª©¸Ѱ£¦w¸˵{¦¡µLªk¿ëÃѸѰ£¦w¸˰O¿ýÀÉ "%1" ªº®榡¡CµLªk¸Ѱ£¦w¸Ë +UninstallUnknownEntry=¦b¸Ѱ£¦w¸˰O¿ý¤¤§ä¨줣©úªº¶µ¥Ø (%1) +ConfirmUninstall=½T©w­n§¹¥þ²¾°£ %1 ¤Ψä©Ҧ³¤¸¥ó¶Ü? +UninstallOnlyOnWin64=¥u¥i¦b 64 ¦줸 Windows ¤W¸Ѱ£¦w¸˦¹¦w¸ˡC +OnlyAdminCanUninstall=¥u¦³¨ã³ƨt²κ޲zÅv­­ªº¨ϥΪ̡A¤~¯à¸Ѱ£¦w¸˦¹¦w¸ˡC +UninstallStatusLabel=¥¿¦b±q±zªº¹q¸£²¾°£ %1¡A½еy­ԡC +UninstalledAll=¤w¦¨¥\±q±zªº¹q¸£²¾°£ %1¡C +UninstalledMost=¸Ѱ£¦w¸Ë %1 ¤w§¹¦¨¡C%n%n¦³³¡¤À¶µ¥صLªk²¾°£¡C±z¥i¥H¤â°ʥ[¥H²¾°£¡C +UninstalledAndNeedsRestart=­Y­n§¹¦¨ %1 ªº¸Ѱ£¦w¸ˡA¥²¶·­«·s±Ұʱzªº¹q¸£¡C%n%n­n¥ߧY­«·s±ҰʶÜ? +UninstallDataCorrupted="%1" Àɮפw·l·´¡CµLªk¸Ѱ£¦w¸Ë +; *** Uninstallation phase messages +ConfirmDeleteSharedFileTitle=­n²¾°£¦@¥ÎÀɮ׶Ü? +ConfirmDeleteSharedFile2=¨t²Ϋü¥X¤wµL¥ô¦óµ{¦¡¦b¨ϥΤU¦C¦@¥ÎÀɮסC±z­n¸Ѱ£¦w¸ˡA¥H²¾°£¦¹¦@¥ÎÀɮ׶Ü?%n%n¦p¦³¥ô¦óµ{¦¡¤´¦b¨ϥΦ¹ÀɮצӱN¸ÓÀɮײ¾°£¡A³o¨ǵ{¦¡¥i¯àµLªk¥¿±`¹B§@¡C­Y¤£½T©w¡A½пï¾Ü [§_]¡C±NÀɮ׫O¯d¦b¨t²ΤW¨ä£·|³y¦¨¥ô¦󤣨}¼vÅT¡C +SharedFileNameLabel=ÀɮצWºÙ: +SharedFileLocationLabel=¦ì¸m: +WizardUninstalling=¸Ѱ£¦w¸˪¬ºA +StatusUninstalling=¥¿¦b¸Ѱ£¦w¸Ë %1... +; *** Shutdown block reasons +ShutdownBlockReasonInstallingApp=¥¿¦b¦w¸Ë %1¡C +ShutdownBlockReasonUninstallingApp=¥¿¦b¸Ѱ£¦w¸Ë %1¡C +; The custom messages below aren't used by Setup itself, but if you make +; use of them in your scripts, you'll want to translate them. +[CustomMessages] +NameAndVersion=%1 ª© %2 +AdditionalIcons=¨ä¥L±¶®|: +CreateDesktopIcon=«إ߮ୱ±¶®|(&D) +CreateQuickLaunchIcon=«إߧֳt±Ұʱ¶®|(&Q) +ProgramOnTheWeb=Web ¤Wªº %1 +UninstallProgram=¸Ѱ£¦w¸Ë %1 +LaunchProgram=±ҰÊ %1 +AssocFileExtension=ÃöÁp %1 »P %2 °ÆÀɦW(&A) +AssocingFileExtension=¥¿¦b«إß %1 »P %2 °ÆÀɦWªºÃöÁp¡K +AutoStartProgramGroupDescription=±ҰÊ: +AutoStartProgram=¦۰ʱҰÊ %1 AddonHostProgramNotFound=¦b¿ï¨úªº¸ê®Ƨ¨¤¤§䤣¨ì %1¡C%n%n¤´­nÄ~Äò¶Ü? \ No newline at end of file diff --git a/build/win32/i18n/messages.de.isl b/build/win32/i18n/messages.de.isl index 537ac692558..755652bcdbe 100644 --- a/build/win32/i18n/messages.de.isl +++ b/build/win32/i18n/messages.de.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=Aktion "Mit %1 öffnen" dem Dateikontextmenü von Windows-Explorer hinzufügen -AddContextMenuFolders=Aktion "Mit %1 öffnen" dem Verzeichniskontextmenü von Windows-Explorer hinzufügen -AssociateWithFiles=%1 als Editor für unterstützte Dateitypen registrieren -AddToPath=Zu PATH hinzufügen (nach dem Neustart verfügbar) -RunAfter=%1 nach der Installation ausführen -Other=Andere: +[CustomMessages] +AddContextMenuFiles=Aktion "Mit %1 öffnen" dem Dateikontextmenü von Windows-Explorer hinzufügen +AddContextMenuFolders=Aktion "Mit %1 öffnen" dem Verzeichniskontextmenü von Windows-Explorer hinzufügen +AssociateWithFiles=%1 als Editor für unterstützte Dateitypen registrieren +AddToPath=Zu PATH hinzufügen (nach dem Neustart verfügbar) +RunAfter=%1 nach der Installation ausführen +Other=Andere: SourceFile=%1-Quelldatei \ No newline at end of file diff --git a/build/win32/i18n/messages.en.isl b/build/win32/i18n/messages.en.isl index 13ff0eb4816..4bd6c75ad43 100644 --- a/build/win32/i18n/messages.en.isl +++ b/build/win32/i18n/messages.en.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=Add "Open with %1" action to Windows Explorer file context menu -AddContextMenuFolders=Add "Open with %1" action to Windows Explorer directory context menu -AssociateWithFiles=Register %1 as an editor for supported file types -AddToPath=Add to PATH (available after restart) -RunAfter=Run %1 after installation -Other=Other: +[CustomMessages] +AddContextMenuFiles=Add "Open with %1" action to Windows Explorer file context menu +AddContextMenuFolders=Add "Open with %1" action to Windows Explorer directory context menu +AssociateWithFiles=Register %1 as an editor for supported file types +AddToPath=Add to PATH (available after restart) +RunAfter=Run %1 after installation +Other=Other: SourceFile=%1 Source File \ No newline at end of file diff --git a/build/win32/i18n/messages.es.isl b/build/win32/i18n/messages.es.isl index dc8cae23f77..e8d5af64b61 100644 --- a/build/win32/i18n/messages.es.isl +++ b/build/win32/i18n/messages.es.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=Agregar la acción "Abrir con %1" al menú contextual de archivo del Explorador de Windows -AddContextMenuFolders=Agregar la acción "Abrir con %1" al menú contextual de directorio del Explorador de Windows -AssociateWithFiles=Registrar %1 como editor para tipos de archivo admitidos -AddToPath=Agregar a PATH (disponible después de reiniciar) -RunAfter=Ejecutar %1 después de la instalación -Other=Otros: +[CustomMessages] +AddContextMenuFiles=Agregar la acción "Abrir con %1" al menú contextual de archivo del Explorador de Windows +AddContextMenuFolders=Agregar la acción "Abrir con %1" al menú contextual de directorio del Explorador de Windows +AssociateWithFiles=Registrar %1 como editor para tipos de archivo admitidos +AddToPath=Agregar a PATH (disponible después de reiniciar) +RunAfter=Ejecutar %1 después de la instalación +Other=Otros: SourceFile=Archivo de origen %1 \ No newline at end of file diff --git a/build/win32/i18n/messages.fr.isl b/build/win32/i18n/messages.fr.isl index 429d85a485c..3e17036f806 100644 --- a/build/win32/i18n/messages.fr.isl +++ b/build/win32/i18n/messages.fr.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=Ajouter l'action "Ouvrir avec %1" au menu contextuel de fichier de l'Explorateur Windows -AddContextMenuFolders=Ajouter l'action "Ouvrir avec %1" au menu contextuel de répertoire de l'Explorateur Windows -AssociateWithFiles=Inscrire %1 en tant qu'éditeur pour les types de fichier pris en charge -AddToPath=Ajouter à PATH (disponible après le redémarrage) -RunAfter=Exécuter %1 après l'installation -Other=Autre : +[CustomMessages] +AddContextMenuFiles=Ajouter l'action "Ouvrir avec %1" au menu contextuel de fichier de l'Explorateur Windows +AddContextMenuFolders=Ajouter l'action "Ouvrir avec %1" au menu contextuel de répertoire de l'Explorateur Windows +AssociateWithFiles=Inscrire %1 en tant qu'éditeur pour les types de fichier pris en charge +AddToPath=Ajouter à PATH (disponible après le redémarrage) +RunAfter=Exécuter %1 après l'installation +Other=Autre : SourceFile=Fichier source %1 \ No newline at end of file diff --git a/build/win32/i18n/messages.hu.isl b/build/win32/i18n/messages.hu.isl index 120bf8fc27b..f141ad1b24a 100644 --- a/build/win32/i18n/messages.hu.isl +++ b/build/win32/i18n/messages.hu.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles="Megnyitás a következõvel: %1" parancs hozzáadása a fájlok helyi menüjéhez a Windows Intézõben -AddContextMenuFolders="Megnyitás a következõvel: %1" parancs hozzáadása a mappák helyi menüjéhez a Windows Intézõben -AssociateWithFiles=%1 regisztrálása szerkesztõként a támogatott fájltípusokhoz -AddToPath=Hozzáadás a PATH-hoz (újraindítás után lesz elérhetõ) -RunAfter=%1 indítása a telepítés után -Other=Egyéb: +[CustomMessages] +AddContextMenuFiles="Megnyitás a következõvel: %1" parancs hozzáadása a fájlok helyi menüjéhez a Windows Intézõben +AddContextMenuFolders="Megnyitás a következõvel: %1" parancs hozzáadása a mappák helyi menüjéhez a Windows Intézõben +AssociateWithFiles=%1 regisztrálása szerkesztõként a támogatott fájltípusokhoz +AddToPath=Hozzáadás a PATH-hoz (újraindítás után lesz elérhetõ) +RunAfter=%1 indítása a telepítés után +Other=Egyéb: SourceFile=%1 forrásfájl \ No newline at end of file diff --git a/build/win32/i18n/messages.it.isl b/build/win32/i18n/messages.it.isl index d838b8c3e47..7ad8a0622d4 100644 --- a/build/win32/i18n/messages.it.isl +++ b/build/win32/i18n/messages.it.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=Aggiungi azione "Apri con %1" al menu di scelta rapida file di Esplora risorse -AddContextMenuFolders=Aggiungi azione "Apri con %1" al menu di scelta rapida directory di Esplora risorse -AssociateWithFiles=Registra %1 come editor per i tipi di file supportati -AddToPath=Aggiungi a PATH (disponibile dopo il riavvio) -RunAfter=Esegui %1 dopo l'installazione -Other=Altro: +[CustomMessages] +AddContextMenuFiles=Aggiungi azione "Apri con %1" al menu di scelta rapida file di Esplora risorse +AddContextMenuFolders=Aggiungi azione "Apri con %1" al menu di scelta rapida directory di Esplora risorse +AssociateWithFiles=Registra %1 come editor per i tipi di file supportati +AddToPath=Aggiungi a PATH (disponibile dopo il riavvio) +RunAfter=Esegui %1 dopo l'installazione +Other=Altro: SourceFile=File di origine %1 \ No newline at end of file diff --git a/build/win32/i18n/messages.ja.isl b/build/win32/i18n/messages.ja.isl index 8a4b1240c96..3a16aaa204e 100644 --- a/build/win32/i18n/messages.ja.isl +++ b/build/win32/i18n/messages.ja.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=ƒGƒNƒXƒvƒ��[ƒ‰�[‚̃tƒ@ƒCƒ‹ ƒRƒ“ƒeƒLƒXƒg ƒ�ƒjƒ…�[‚É [%1 ‚ŊJ‚­] ƒAƒNƒVƒ‡ƒ“‚ð’ljÁ‚·‚é -AddContextMenuFolders=ƒGƒNƒXƒvƒ��[ƒ‰�[‚̃fƒBƒŒƒNƒgƒŠ ƒRƒ“ƒeƒLƒXƒg ƒ�ƒjƒ…�[‚É [%1 ‚ŊJ‚­] ƒAƒNƒVƒ‡ƒ“‚ð’ljÁ‚·‚é -AssociateWithFiles=ƒTƒ|�[ƒg‚³‚ê‚Ă¢‚éƒtƒ@ƒCƒ‹‚̎í—ނ̃GƒfƒBƒ^�[‚Ƃµ‚āA%1 ‚ð“o˜^‚·‚é -AddToPath=PATH ‚ւ̒ljÁ�i�ċN“®Œã‚Ɏg—p‰”\�j -RunAfter=ƒCƒ“ƒXƒg�[ƒ‹Œã‚É %1 ‚ðŽÀ�s‚·‚é -Other=‚»‚̑¼: +[CustomMessages] +AddContextMenuFiles=ƒGƒNƒXƒvƒ��[ƒ‰�[‚̃tƒ@ƒCƒ‹ ƒRƒ“ƒeƒLƒXƒg ƒ�ƒjƒ…�[‚É [%1 ‚ŊJ‚­] ƒAƒNƒVƒ‡ƒ“‚ð’ljÁ‚·‚é +AddContextMenuFolders=ƒGƒNƒXƒvƒ��[ƒ‰�[‚̃fƒBƒŒƒNƒgƒŠ ƒRƒ“ƒeƒLƒXƒg ƒ�ƒjƒ…�[‚É [%1 ‚ŊJ‚­] ƒAƒNƒVƒ‡ƒ“‚ð’ljÁ‚·‚é +AssociateWithFiles=ƒTƒ|�[ƒg‚³‚ê‚Ă¢‚éƒtƒ@ƒCƒ‹‚̎í—ނ̃GƒfƒBƒ^�[‚Ƃµ‚āA%1 ‚ð“o˜^‚·‚é +AddToPath=PATH ‚ւ̒ljÁ�i�ċN“®Œã‚Ɏg—p‰”\�j +RunAfter=ƒCƒ“ƒXƒg�[ƒ‹Œã‚É %1 ‚ðŽÀ�s‚·‚é +Other=‚»‚̑¼: SourceFile=%1 ƒ\�[ƒX ƒtƒ@ƒCƒ‹ \ No newline at end of file diff --git a/build/win32/i18n/messages.ko.isl b/build/win32/i18n/messages.ko.isl index 096ce0a663b..28860c36b63 100644 --- a/build/win32/i18n/messages.ko.isl +++ b/build/win32/i18n/messages.ko.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles="%1(À¸)·Î ¿­±â" À۾÷À» Windows Ž»ö±â ÆÄÀÏÀÇ »óȲ¿¡ ¸´Â ¸޴º¿¡ Ã߰¡ -AddContextMenuFolders="%1(À¸)·Î ¿­±â" À۾÷À» Windows Ž»ö±â µð·ºÅ͸®ÀÇ »óȲ¿¡ ¸´Â ¸޴º¿¡ Ã߰¡ -AssociateWithFiles=%1À»(¸¦) Áö¿øµǴ ÆÄÀÏ Çü½Ŀ¡ ´ëÇÑ ÆíÁý±â·Î µî·ÏÇմϴÙ. -AddToPath=PATH¿¡ Ã߰¡(´ٽà ½ÃÀÛÇÑ ÈÄ »ç¿ë °¡´É) -RunAfter=¼³ġ ÈÄ %1 ½ÇÇà -Other=±âŸ: +[CustomMessages] +AddContextMenuFiles="%1(À¸)·Î ¿­±â" À۾÷À» Windows Ž»ö±â ÆÄÀÏÀÇ »óȲ¿¡ ¸´Â ¸޴º¿¡ Ã߰¡ +AddContextMenuFolders="%1(À¸)·Î ¿­±â" À۾÷À» Windows Ž»ö±â µð·ºÅ͸®ÀÇ »óȲ¿¡ ¸´Â ¸޴º¿¡ Ã߰¡ +AssociateWithFiles=%1À»(¸¦) Áö¿øµǴ ÆÄÀÏ Çü½Ŀ¡ ´ëÇÑ ÆíÁý±â·Î µî·ÏÇմϴÙ. +AddToPath=PATH¿¡ Ã߰¡(´ٽà ½ÃÀÛÇÑ ÈÄ »ç¿ë °¡´É) +RunAfter=¼³ġ ÈÄ %1 ½ÇÇà +Other=±âŸ: SourceFile=%1 ¿øº» ÆÄÀÏ \ No newline at end of file diff --git a/build/win32/i18n/messages.pt-br.isl b/build/win32/i18n/messages.pt-br.isl index 7021e814e8f..d534637f8b6 100644 --- a/build/win32/i18n/messages.pt-br.isl +++ b/build/win32/i18n/messages.pt-br.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=Adicione a ação "Abrir com %1" ao menu de contexto de arquivo do Windows Explorer -AddContextMenuFolders=Adicione a ação "Abrir com %1" ao menu de contexto de diretório do Windows Explorer -AssociateWithFiles=Registre %1 como um editor para tipos de arquivos suportados -AddToPath=Adicione em PATH (disponível após reiniciar) -RunAfter=Executar %1 após a instalação -Other=Outros: +[CustomMessages] +AddContextMenuFiles=Adicione a ação "Abrir com %1" ao menu de contexto de arquivo do Windows Explorer +AddContextMenuFolders=Adicione a ação "Abrir com %1" ao menu de contexto de diretório do Windows Explorer +AssociateWithFiles=Registre %1 como um editor para tipos de arquivos suportados +AddToPath=Adicione em PATH (disponível após reiniciar) +RunAfter=Executar %1 após a instalação +Other=Outros: SourceFile=Arquivo Fonte %1 \ No newline at end of file diff --git a/build/win32/i18n/messages.ru.isl b/build/win32/i18n/messages.ru.isl index 72905526e4b..4d834663627 100644 --- a/build/win32/i18n/messages.ru.isl +++ b/build/win32/i18n/messages.ru.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=Äîáàâèòü äåéñòâèå "Îòêðûòü ñ ïîìîùüþ %1" â êîíòåêñòíîå ìåíþ ôàéëà ïðîâîäíèêà Windows -AddContextMenuFolders=Äîáàâèòü äåéñòâèå "Îòêðûòü ñ ïîìîùüþ %1" â êîíòåêñòíîå ìåíþ êàòàëîãà ïðîâîäíèêà -AssociateWithFiles=Çàðåãèñòðèðîâàòü %1 â êà÷åñòâå ðåäàêòîðà äëÿ ïîääåðæèâàåìûõ òèïîâ ôàéëîâ -AddToPath=Äîáàâèòü â PATH (äîñòóïíî ïîñëå ïåðåçàãðóçêè) -RunAfter=Çàïóñòèòü %1 ïîñëå óñòàíîâêè -Other=Äðóãîå: +[CustomMessages] +AddContextMenuFiles=Äîáàâèòü äåéñòâèå "Îòêðûòü ñ ïîìîùüþ %1" â êîíòåêñòíîå ìåíþ ôàéëà ïðîâîäíèêà Windows +AddContextMenuFolders=Äîáàâèòü äåéñòâèå "Îòêðûòü ñ ïîìîùüþ %1" â êîíòåêñòíîå ìåíþ êàòàëîãà ïðîâîäíèêà +AssociateWithFiles=Çàðåãèñòðèðîâàòü %1 â êà÷åñòâå ðåäàêòîðà äëÿ ïîääåðæèâàåìûõ òèïîâ ôàéëîâ +AddToPath=Äîáàâèòü â PATH (äîñòóïíî ïîñëå ïåðåçàãðóçêè) +RunAfter=Çàïóñòèòü %1 ïîñëå óñòàíîâêè +Other=Äðóãîå: SourceFile=Èñõîäíûé ôàéë %1 \ No newline at end of file diff --git a/build/win32/i18n/messages.tr.isl b/build/win32/i18n/messages.tr.isl index 4e8e7bbd19b..dc241d924c7 100644 --- a/build/win32/i18n/messages.tr.isl +++ b/build/win32/i18n/messages.tr.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=Windows Gezgini baðlam menüsüne "%1 Ýle Aç" eylemini ekle -AddContextMenuFolders=Windows Gezgini dizin baðlam menüsüne "%1 Ýle Aç" eylemini ekle -AssociateWithFiles=%1 uygulamasýný desteklenen dosya türleri için bir düzenleyici olarak kayýt et -AddToPath=PATH'e ekle (yeniden baþlattýktan sonra kullanýlabilir) -RunAfter=Kurulumdan sonra %1 uygulamasýný çalýþtýr. -Other=Diðer: +[CustomMessages] +AddContextMenuFiles=Windows Gezgini baðlam menüsüne "%1 Ýle Aç" eylemini ekle +AddContextMenuFolders=Windows Gezgini dizin baðlam menüsüne "%1 Ýle Aç" eylemini ekle +AssociateWithFiles=%1 uygulamasýný desteklenen dosya türleri için bir düzenleyici olarak kayýt et +AddToPath=PATH'e ekle (yeniden baþlattýktan sonra kullanýlabilir) +RunAfter=Kurulumdan sonra %1 uygulamasýný çalýþtýr. +Other=Diðer: SourceFile=%1 Kaynak Dosyasý \ No newline at end of file diff --git a/build/win32/i18n/messages.zh-cn.isl b/build/win32/i18n/messages.zh-cn.isl index 2a82a1239af..349fc2ccc29 100644 --- a/build/win32/i18n/messages.zh-cn.isl +++ b/build/win32/i18n/messages.zh-cn.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=½«¡°ͨ¹ý %1 ´򿪡±²Ù×÷Ìí¼ӵ½ Windows ×ÊԴ¹ÜÀíÆ÷ÎļþÉÏÏÂÎIJ˵¥ -AddContextMenuFolders=½«¡°ͨ¹ý %1 ´򿪡±²Ù×÷Ìí¼ӵ½ Windows ×ÊԴ¹ÜÀíÆ÷Ŀ¼ÉÏÏÂÎIJ˵¥ -AssociateWithFiles=½« %1 ע²áΪÊÜ֧³ֵÄÎļþÀàÐ͵ı༭Æ÷ -AddToPath=Ìí¼ӵ½ PATH (ÖØÆôºóÉúЧ) -RunAfter=°²װºóÔËÐÐ %1 -Other=ÆäËû: +[CustomMessages] +AddContextMenuFiles=½«¡°ͨ¹ý %1 ´򿪡±²Ù×÷Ìí¼ӵ½ Windows ×ÊԴ¹ÜÀíÆ÷ÎļþÉÏÏÂÎIJ˵¥ +AddContextMenuFolders=½«¡°ͨ¹ý %1 ´򿪡±²Ù×÷Ìí¼ӵ½ Windows ×ÊԴ¹ÜÀíÆ÷Ŀ¼ÉÏÏÂÎIJ˵¥ +AssociateWithFiles=½« %1 ע²áΪÊÜ֧³ֵÄÎļþÀàÐ͵ı༭Æ÷ +AddToPath=Ìí¼ӵ½ PATH (ÖØÆôºóÉúЧ) +RunAfter=°²װºóÔËÐÐ %1 +Other=ÆäËû: SourceFile=%1 ԴÎļþ \ No newline at end of file diff --git a/build/win32/i18n/messages.zh-tw.isl b/build/win32/i18n/messages.zh-tw.isl index dd2943c9dc6..7c3f84aa131 100644 --- a/build/win32/i18n/messages.zh-tw.isl +++ b/build/win32/i18n/messages.zh-tw.isl @@ -1,8 +1,8 @@ -[CustomMessages] -AddContextMenuFiles=±N [¥H %1 ¶}±Ò] °ʧ@¥[¤J Windows Àɮ×Á`ºÞÀɮתº¾ާ@¥\¯àªí¤¤ -AddContextMenuFolders=±N [¥H %1 ¶}±Ò] °ʧ@¥[¤J Windows Àɮ×Á`ºޥؿýªº¾ާ@¥\¯àªí¤¤ -AssociateWithFiles=°w¹ï¤䴩ªºÀɮ×Ãþ«¬±N %1 µù¥U¬°½s¿边 -AddToPath=¥[¤J PATH ¤¤ (­«·s±Ұʫá¥ͮÄ) -RunAfter=¦w¸˫á°õ¦æ %1 -Other=¨ä¥L: +[CustomMessages] +AddContextMenuFiles=±N [¥H %1 ¶}±Ò] °ʧ@¥[¤J Windows Àɮ×Á`ºÞÀɮתº¾ާ@¥\¯àªí¤¤ +AddContextMenuFolders=±N [¥H %1 ¶}±Ò] °ʧ@¥[¤J Windows Àɮ×Á`ºޥؿýªº¾ާ@¥\¯àªí¤¤ +AssociateWithFiles=°w¹ï¤䴩ªºÀɮ×Ãþ«¬±N %1 µù¥U¬°½s¿边 +AddToPath=¥[¤J PATH ¤¤ (­«·s±Ұʫá¥ͮÄ) +RunAfter=¦w¸˫á°õ¦æ %1 +Other=¨ä¥L: SourceFile=%1 ¨ӷ½Àɮ× \ No newline at end of file diff --git a/extensions/css/server/.vscode/launch.json b/extensions/css/server/.vscode/launch.json index 624ac31332f..5753befac8b 100644 --- a/extensions/css/server/.vscode/launch.json +++ b/extensions/css/server/.vscode/launch.json @@ -1,33 +1,33 @@ -{ - "version": "0.1.0", - // List of configurations. Add new configurations or edit existing ones. - "configurations": [ - { - "name": "Attach", - "type": "node", - "request": "attach", - "port": 6044, - "protocol": "inspector", - "sourceMaps": true, - "outFiles": ["${workspaceFolder}/out/**/*.js"] - }, - { - "name": "Unit Tests", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/../../../node_modules/mocha/bin/_mocha", - "stopOnEntry": false, - "args": [ - "--timeout", - "999999", - "--colors" - ], - "cwd": "${workspaceFolder}", - "runtimeExecutable": null, - "runtimeArgs": [], - "env": {}, - "sourceMaps": true, - "outFiles": ["${workspaceFolder}/out/**/*.js"] - } - ] +{ + "version": "0.1.0", + // List of configurations. Add new configurations or edit existing ones. + "configurations": [ + { + "name": "Attach", + "type": "node", + "request": "attach", + "port": 6044, + "protocol": "inspector", + "sourceMaps": true, + "outFiles": ["${workspaceFolder}/out/**/*.js"] + }, + { + "name": "Unit Tests", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/../../../node_modules/mocha/bin/_mocha", + "stopOnEntry": false, + "args": [ + "--timeout", + "999999", + "--colors" + ], + "cwd": "${workspaceFolder}", + "runtimeExecutable": null, + "runtimeArgs": [], + "env": {}, + "sourceMaps": true, + "outFiles": ["${workspaceFolder}/out/**/*.js"] + } + ] } \ No newline at end of file diff --git a/extensions/html/server/.vscode/launch.json b/extensions/html/server/.vscode/launch.json index b22e91c41ef..9f95bea9e05 100644 --- a/extensions/html/server/.vscode/launch.json +++ b/extensions/html/server/.vscode/launch.json @@ -1,33 +1,33 @@ -{ - "version": "0.1.0", - // List of configurations. Add new configurations or edit existing ones. - "configurations": [ - { - "name": "Attach", - "type": "node", - "request": "attach", - "port": 6045, - "protocol": "inspector", - "sourceMaps": true, - "outFiles": ["${workspaceFolder}/out/**/*.js"] - }, - { - "name": "Unit Tests", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/../../../node_modules/mocha/bin/_mocha", - "stopOnEntry": false, - "args": [ - "--timeout", - "999999", - "--colors" - ], - "cwd": "${workspaceFolder}", - "runtimeExecutable": null, - "runtimeArgs": [], - "env": {}, - "sourceMaps": true, - "outFiles": ["${workspaceFolder}/out/**/*.js"] - } - ] +{ + "version": "0.1.0", + // List of configurations. Add new configurations or edit existing ones. + "configurations": [ + { + "name": "Attach", + "type": "node", + "request": "attach", + "port": 6045, + "protocol": "inspector", + "sourceMaps": true, + "outFiles": ["${workspaceFolder}/out/**/*.js"] + }, + { + "name": "Unit Tests", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/../../../node_modules/mocha/bin/_mocha", + "stopOnEntry": false, + "args": [ + "--timeout", + "999999", + "--colors" + ], + "cwd": "${workspaceFolder}", + "runtimeExecutable": null, + "runtimeArgs": [], + "env": {}, + "sourceMaps": true, + "outFiles": ["${workspaceFolder}/out/**/*.js"] + } + ] } \ No newline at end of file diff --git a/extensions/json/server/.vscode/launch.json b/extensions/json/server/.vscode/launch.json index 764c1456f17..b564bb85693 100644 --- a/extensions/json/server/.vscode/launch.json +++ b/extensions/json/server/.vscode/launch.json @@ -1,32 +1,32 @@ -{ - "version": "0.1.0", - // List of configurations. Add new configurations or edit existing ones. - "configurations": [ - { - "name": "Attach", - "type": "node", - "request": "attach", - "port": 6004, - "sourceMaps": true, - "outDir": "${workspaceFolder}/out" - }, - { - "name": "Unit Tests", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/../../../node_modules/mocha/bin/_mocha", - "stopOnEntry": false, - "args": [ - "--timeout", - "999999", - "--colors" - ], - "cwd": "${workspaceFolder}", - "runtimeExecutable": null, - "runtimeArgs": [], - "env": {}, - "sourceMaps": true, - "outDir": "${workspaceFolder}/out" - } - ] +{ + "version": "0.1.0", + // List of configurations. Add new configurations or edit existing ones. + "configurations": [ + { + "name": "Attach", + "type": "node", + "request": "attach", + "port": 6004, + "sourceMaps": true, + "outDir": "${workspaceFolder}/out" + }, + { + "name": "Unit Tests", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/../../../node_modules/mocha/bin/_mocha", + "stopOnEntry": false, + "args": [ + "--timeout", + "999999", + "--colors" + ], + "cwd": "${workspaceFolder}", + "runtimeExecutable": null, + "runtimeArgs": [], + "env": {}, + "sourceMaps": true, + "outDir": "${workspaceFolder}/out" + } + ] } \ No newline at end of file diff --git a/extensions/markdown/media/ViewSource.svg b/extensions/markdown/media/ViewSource.svg index 85a001dccc2..fccdf83d467 100644 --- a/extensions/markdown/media/ViewSource.svg +++ b/extensions/markdown/media/ViewSource.svg @@ -1,3 +1,3 @@ - + ]> \ No newline at end of file diff --git a/extensions/theme-defaults/fileicons/images/RootFolderOpen_16x.svg b/extensions/theme-defaults/fileicons/images/RootFolderOpen_16x.svg index 0635da09c6c..20460ec997b 100755 --- a/extensions/theme-defaults/fileicons/images/RootFolderOpen_16x.svg +++ b/extensions/theme-defaults/fileicons/images/RootFolderOpen_16x.svg @@ -1 +1 @@ - + diff --git a/extensions/theme-defaults/fileicons/images/RootFolderOpen_16x_inverse.svg b/extensions/theme-defaults/fileicons/images/RootFolderOpen_16x_inverse.svg index 6cdaf01bf0a..d1a0fb04b70 100755 --- a/extensions/theme-defaults/fileicons/images/RootFolderOpen_16x_inverse.svg +++ b/extensions/theme-defaults/fileicons/images/RootFolderOpen_16x_inverse.svg @@ -1 +1 @@ - + diff --git a/extensions/theme-defaults/fileicons/images/RootFolder_16x.svg b/extensions/theme-defaults/fileicons/images/RootFolder_16x.svg index add37b337dd..9a049f6237a 100755 --- a/extensions/theme-defaults/fileicons/images/RootFolder_16x.svg +++ b/extensions/theme-defaults/fileicons/images/RootFolder_16x.svg @@ -1 +1 @@ - + diff --git a/extensions/theme-defaults/fileicons/images/RootFolder_16x_inverse.svg b/extensions/theme-defaults/fileicons/images/RootFolder_16x_inverse.svg index 69c903efed0..03721272942 100755 --- a/extensions/theme-defaults/fileicons/images/RootFolder_16x_inverse.svg +++ b/extensions/theme-defaults/fileicons/images/RootFolder_16x_inverse.svg @@ -1 +1 @@ - + diff --git a/extensions/vscode-api-tests/.vscodeignore b/extensions/vscode-api-tests/.vscodeignore index d9d9698a317..eb6a48615c7 100644 --- a/extensions/vscode-api-tests/.vscodeignore +++ b/extensions/vscode-api-tests/.vscodeignore @@ -1,6 +1,6 @@ -.vscode/** -typings/** -**/*.ts -**/*.map -.gitignore -tsconfig.json +.vscode/** +typings/** +**/*.ts +**/*.map +.gitignore +tsconfig.json diff --git a/extensions/yaml/.gitignore b/extensions/yaml/.gitignore index 08b25532d6c..3c3629e647f 100644 --- a/extensions/yaml/.gitignore +++ b/extensions/yaml/.gitignore @@ -1 +1 @@ -node_modules +node_modules diff --git a/resources/win32/bin/code.cmd b/resources/win32/bin/code.cmd index 85d97eb39eb..4f31b474695 100644 --- a/resources/win32/bin/code.cmd +++ b/resources/win32/bin/code.cmd @@ -1,6 +1,6 @@ -@echo off -setlocal -set VSCODE_DEV= -set ELECTRON_RUN_AS_NODE=1 -call "%~dp0..\@@NAME@@.exe" "%~dp0..\resources\app\out\cli.js" %* +@echo off +setlocal +set VSCODE_DEV= +set ELECTRON_RUN_AS_NODE=1 +call "%~dp0..\@@NAME@@.exe" "%~dp0..\resources\app\out\cli.js" %* endlocal \ No newline at end of file diff --git a/scripts/code.bat b/scripts/code.bat index 05d482c6176..58d5ca2d6e0 100644 --- a/scripts/code.bat +++ b/scripts/code.bat @@ -1,52 +1,52 @@ -@echo off -setlocal - -title VSCode Dev - -pushd %~dp0\.. - -:: Node modules -if not exist node_modules call yarn - -for /f "tokens=2 delims=:," %%a in ('findstr /R /C:"\"nameShort\":.*" product.json') do set NAMESHORT=%%~a -set NAMESHORT=%NAMESHORT: "=% -set NAMESHORT=%NAMESHORT:"=%.exe -set CODE=".build\electron\%NAMESHORT%" - -:: Download Electron if needed -node build\lib\electron.js -if %errorlevel% neq 0 node .\node_modules\gulp\bin\gulp.js electron - -:: Manage build-in extensions -if "%1"=="--builtin" goto builtin - -:: Sync built-in extensions -node build\lib\builtInExtensions.js - -:: Build -if not exist out node .\node_modules\gulp\bin\gulp.js compile - -:: Configuration -set NODE_ENV=development -set VSCODE_DEV=1 -set VSCODE_CLI=1 -set ELECTRON_DEFAULT_ERROR_MODE=1 -set ELECTRON_ENABLE_LOGGING=1 -set ELECTRON_ENABLE_STACK_DUMPING=1 - -:: Launch Code - -:: Use the following to get v8 tracing: -:: %CODE% --js-flags="--trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces" . %* - -%CODE% . %* -goto end - -:builtin -%CODE% build/builtin - -:end - -popd - +@echo off +setlocal + +title VSCode Dev + +pushd %~dp0\.. + +:: Node modules +if not exist node_modules call yarn + +for /f "tokens=2 delims=:," %%a in ('findstr /R /C:"\"nameShort\":.*" product.json') do set NAMESHORT=%%~a +set NAMESHORT=%NAMESHORT: "=% +set NAMESHORT=%NAMESHORT:"=%.exe +set CODE=".build\electron\%NAMESHORT%" + +:: Download Electron if needed +node build\lib\electron.js +if %errorlevel% neq 0 node .\node_modules\gulp\bin\gulp.js electron + +:: Manage build-in extensions +if "%1"=="--builtin" goto builtin + +:: Sync built-in extensions +node build\lib\builtInExtensions.js + +:: Build +if not exist out node .\node_modules\gulp\bin\gulp.js compile + +:: Configuration +set NODE_ENV=development +set VSCODE_DEV=1 +set VSCODE_CLI=1 +set ELECTRON_DEFAULT_ERROR_MODE=1 +set ELECTRON_ENABLE_LOGGING=1 +set ELECTRON_ENABLE_STACK_DUMPING=1 + +:: Launch Code + +:: Use the following to get v8 tracing: +:: %CODE% --js-flags="--trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces" . %* + +%CODE% . %* +goto end + +:builtin +%CODE% build/builtin + +:end + +popd + endlocal \ No newline at end of file diff --git a/scripts/npm.bat b/scripts/npm.bat index 51f4fdd139a..bcd71804d8a 100644 --- a/scripts/npm.bat +++ b/scripts/npm.bat @@ -1,2 +1,2 @@ -@echo off -yarn %* +@echo off +yarn %* diff --git a/src/vs/base/test/node/extfs/fixtures/examples/company.jxs b/src/vs/base/test/node/extfs/fixtures/examples/company.jxs index 107f3438401..ca4a62bf248 100644 --- a/src/vs/base/test/node/extfs/fixtures/examples/company.jxs +++ b/src/vs/base/test/node/extfs/fixtures/examples/company.jxs @@ -1,23 +1,23 @@ -'use strict'; -/// -var Workforce; -(function (Workforce_1) { - var Company = (function () { - function Company() { - } - return Company; - })(); - (function (property, Workforce, IEmployee) { - if (property === void 0) { property = employees; } - if (IEmployee === void 0) { IEmployee = []; } - property; - calculateMonthlyExpenses(); - { - var result = 0; - for (var i = 0; i < employees.length; i++) { - result += employees[i].calculatePay(); - } - return result; - } - }); -})(Workforce || (Workforce = {})); +'use strict'; +/// +var Workforce; +(function (Workforce_1) { + var Company = (function () { + function Company() { + } + return Company; + })(); + (function (property, Workforce, IEmployee) { + if (property === void 0) { property = employees; } + if (IEmployee === void 0) { IEmployee = []; } + property; + calculateMonthlyExpenses(); + { + var result = 0; + for (var i = 0; i < employees.length; i++) { + result += employees[i].calculatePay(); + } + return result; + } + }); +})(Workforce || (Workforce = {})); diff --git a/src/vs/base/test/node/extfs/fixtures/examples/conway.jxs b/src/vs/base/test/node/extfs/fixtures/examples/conway.jxs index 56c75b08951..306c906ce6f 100644 --- a/src/vs/base/test/node/extfs/fixtures/examples/conway.jxs +++ b/src/vs/base/test/node/extfs/fixtures/examples/conway.jxs @@ -1,117 +1,117 @@ -'use strict'; -var Conway; -(function (Conway) { - var Cell = (function () { - function Cell() { - } - return Cell; - })(); - (function (property, number, property, number, property, boolean) { - if (property === void 0) { property = row; } - if (property === void 0) { property = col; } - if (property === void 0) { property = live; } - }); - var GameOfLife = (function () { - function GameOfLife() { - } - return GameOfLife; - })(); - (function () { - property; - gridSize = 50; - property; - canvasSize = 600; - property; - lineColor = '#cdcdcd'; - property; - liveColor = '#666'; - property; - deadColor = '#eee'; - property; - initialLifeProbability = 0.5; - property; - animationRate = 60; - property; - cellSize = 0; - property; - context: ICanvasRenderingContext2D; - property; - world = createWorld(); - circleOfLife(); - function createWorld() { - return travelWorld(function (cell) { - cell.live = Math.random() < initialLifeProbability; - return cell; - }); - } - function circleOfLife() { - world = travelWorld(function (cell) { - cell = world[cell.row][cell.col]; - draw(cell); - return resolveNextGeneration(cell); - }); - setTimeout(function () { circleOfLife(); }, animationRate); - } - function resolveNextGeneration(cell) { - var count = countNeighbors(cell); - var newCell = new Cell(cell.row, cell.col, cell.live); - if (count < 2 || count > 3) - newCell.live = false; - else if (count == 3) - newCell.live = true; - return newCell; - } - function countNeighbors(cell) { - var neighbors = 0; - for (var row = -1; row <= 1; row++) { - for (var col = -1; col <= 1; col++) { - if (row == 0 && col == 0) - continue; - if (isAlive(cell.row + row, cell.col + col)) { - neighbors++; - } - } - } - return neighbors; - } - function isAlive(row, col) { - // todo - need to guard with world[row] exists? - if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) - return false; - return world[row][col].live; - } - function travelWorld(callback) { - var result = []; - for (var row = 0; row < gridSize; row++) { - var rowData = []; - for (var col = 0; col < gridSize; col++) { - rowData.push(callback(new Cell(row, col, false))); - } - result.push(rowData); - } - return result; - } - function draw(cell) { - if (context == null) - context = createDrawingContext(); - if (cellSize == 0) - cellSize = canvasSize / gridSize; - context.strokeStyle = lineColor; - context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - context.fillStyle = cell.live ? liveColor : deadColor; - context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - } - function createDrawingContext() { - var canvas = document.getElementById('conway-canvas'); - if (canvas == null) { - canvas = document.createElement('canvas'); - canvas.id = "conway-canvas"; - canvas.width = canvasSize; - canvas.height = canvasSize; - document.body.appendChild(canvas); - } - return canvas.getContext('2d'); - } - }); -})(Conway || (Conway = {})); -var game = new Conway.GameOfLife(); +'use strict'; +var Conway; +(function (Conway) { + var Cell = (function () { + function Cell() { + } + return Cell; + })(); + (function (property, number, property, number, property, boolean) { + if (property === void 0) { property = row; } + if (property === void 0) { property = col; } + if (property === void 0) { property = live; } + }); + var GameOfLife = (function () { + function GameOfLife() { + } + return GameOfLife; + })(); + (function () { + property; + gridSize = 50; + property; + canvasSize = 600; + property; + lineColor = '#cdcdcd'; + property; + liveColor = '#666'; + property; + deadColor = '#eee'; + property; + initialLifeProbability = 0.5; + property; + animationRate = 60; + property; + cellSize = 0; + property; + context: ICanvasRenderingContext2D; + property; + world = createWorld(); + circleOfLife(); + function createWorld() { + return travelWorld(function (cell) { + cell.live = Math.random() < initialLifeProbability; + return cell; + }); + } + function circleOfLife() { + world = travelWorld(function (cell) { + cell = world[cell.row][cell.col]; + draw(cell); + return resolveNextGeneration(cell); + }); + setTimeout(function () { circleOfLife(); }, animationRate); + } + function resolveNextGeneration(cell) { + var count = countNeighbors(cell); + var newCell = new Cell(cell.row, cell.col, cell.live); + if (count < 2 || count > 3) + newCell.live = false; + else if (count == 3) + newCell.live = true; + return newCell; + } + function countNeighbors(cell) { + var neighbors = 0; + for (var row = -1; row <= 1; row++) { + for (var col = -1; col <= 1; col++) { + if (row == 0 && col == 0) + continue; + if (isAlive(cell.row + row, cell.col + col)) { + neighbors++; + } + } + } + return neighbors; + } + function isAlive(row, col) { + // todo - need to guard with world[row] exists? + if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) + return false; + return world[row][col].live; + } + function travelWorld(callback) { + var result = []; + for (var row = 0; row < gridSize; row++) { + var rowData = []; + for (var col = 0; col < gridSize; col++) { + rowData.push(callback(new Cell(row, col, false))); + } + result.push(rowData); + } + return result; + } + function draw(cell) { + if (context == null) + context = createDrawingContext(); + if (cellSize == 0) + cellSize = canvasSize / gridSize; + context.strokeStyle = lineColor; + context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + context.fillStyle = cell.live ? liveColor : deadColor; + context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + } + function createDrawingContext() { + var canvas = document.getElementById('conway-canvas'); + if (canvas == null) { + canvas = document.createElement('canvas'); + canvas.id = "conway-canvas"; + canvas.width = canvasSize; + canvas.height = canvasSize; + document.body.appendChild(canvas); + } + return canvas.getContext('2d'); + } + }); +})(Conway || (Conway = {})); +var game = new Conway.GameOfLife(); diff --git a/src/vs/base/test/node/extfs/fixtures/examples/employee.jxs b/src/vs/base/test/node/extfs/fixtures/examples/employee.jxs index 1f4cc1b1ea7..69c58aa5c87 100644 --- a/src/vs/base/test/node/extfs/fixtures/examples/employee.jxs +++ b/src/vs/base/test/node/extfs/fixtures/examples/employee.jxs @@ -1,38 +1,38 @@ -'use strict'; -var Workforce; -(function (Workforce) { - var Employee = (function () { - function Employee() { - } - return Employee; - })(); - (property); - name: string, property; - basepay: number; - implements; - IEmployee; - { - name; - basepay; - } - var SalesEmployee = (function () { - function SalesEmployee() { - } - return SalesEmployee; - })(); - (); - Employee(name, basepay); - { - function calculatePay() { - var multiplier = (document.getElementById("mult")), as = any, value; - return _super.calculatePay.call(this) * multiplier + bonus; - } - } - var employee = new Employee('Bob', 1000); - var salesEmployee = new SalesEmployee('Jim', 800, 400); - salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee -})(Workforce || (Workforce = {})); -extern; -var $; -var s = Workforce.salesEmployee.calculatePay(); -$('#results').text(s); +'use strict'; +var Workforce; +(function (Workforce) { + var Employee = (function () { + function Employee() { + } + return Employee; + })(); + (property); + name: string, property; + basepay: number; + implements; + IEmployee; + { + name; + basepay; + } + var SalesEmployee = (function () { + function SalesEmployee() { + } + return SalesEmployee; + })(); + (); + Employee(name, basepay); + { + function calculatePay() { + var multiplier = (document.getElementById("mult")), as = any, value; + return _super.calculatePay.call(this) * multiplier + bonus; + } + } + var employee = new Employee('Bob', 1000); + var salesEmployee = new SalesEmployee('Jim', 800, 400); + salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee +})(Workforce || (Workforce = {})); +extern; +var $; +var s = Workforce.salesEmployee.calculatePay(); +$('#results').text(s); diff --git a/src/vs/base/test/node/extfs/fixtures/examples/small.jxs b/src/vs/base/test/node/extfs/fixtures/examples/small.jxs index ba777851242..5e57b4c9439 100644 --- a/src/vs/base/test/node/extfs/fixtures/examples/small.jxs +++ b/src/vs/base/test/node/extfs/fixtures/examples/small.jxs @@ -1,24 +1,24 @@ -'use strict'; -var M; -(function (M) { - var C = (function () { - function C() { - } - return C; - })(); - (function (x, property, number) { - if (property === void 0) { property = w; } - var local = 1; - // unresolved symbol because x is local - //self.x++; - self.w--; // ok because w is a property - property; - f = function (y) { - return y + x + local + w + self.w; - }; - function sum(z) { - return z + f(z) + w + self.w; - } - }); -})(M || (M = {})); -var c = new M.C(12, 5); +'use strict'; +var M; +(function (M) { + var C = (function () { + function C() { + } + return C; + })(); + (function (x, property, number) { + if (property === void 0) { property = w; } + var local = 1; + // unresolved symbol because x is local + //self.x++; + self.w--; // ok because w is a property + property; + f = function (y) { + return y + x + local + w + self.w; + }; + function sum(z) { + return z + f(z) + w + self.w; + } + }); +})(M || (M = {})); +var c = new M.C(12, 5); diff --git a/src/vs/base/test/node/extfs/fixtures/index.html b/src/vs/base/test/node/extfs/fixtures/index.html index c037f44fb6c..bccd24d9272 100644 --- a/src/vs/base/test/node/extfs/fixtures/index.html +++ b/src/vs/base/test/node/extfs/fixtures/index.html @@ -1,121 +1,121 @@ - - - - - Strada - - - - - - - - -

TypeScript

-
- - -
- - -
- -
Press 'run' to execute code...
-
...write your results into #results...
-
- - - + + + + + Strada + + + + + + + + +

TypeScript

+
+ + +
+ + +
+ +
Press 'run' to execute code...
+
...write your results into #results...
+
+ + + diff --git a/src/vs/base/test/node/mime/fixtures/some.cp1252.txt b/src/vs/base/test/node/mime/fixtures/some.cp1252.txt index 509a0d7a824..f40494d17e0 100644 --- a/src/vs/base/test/node/mime/fixtures/some.cp1252.txt +++ b/src/vs/base/test/node/mime/fixtures/some.cp1252.txt @@ -1,23 +1,23 @@ -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Data.Odbc; -using System.IO; -using System.Net.Mail; -using System.Text.RegularExpressions; -using System.DirectoryServices; -using System.Diagnostics; -using System.Resources; -using System.Globalization; -using System.Reflection; -using System.Runtime.Serialization.Formatters.Binary; -using System.Runtime.Serialization; - - -ObjectCount = LoadObjects("Öffentlicher Ordner"); - +using System; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; +using System.Data; +using System.Data.OleDb; +using System.Data.Odbc; +using System.IO; +using System.Net.Mail; +using System.Text.RegularExpressions; +using System.DirectoryServices; +using System.Diagnostics; +using System.Resources; +using System.Globalization; +using System.Reflection; +using System.Runtime.Serialization.Formatters.Binary; +using System.Runtime.Serialization; + + +ObjectCount = LoadObjects("Öffentlicher Ordner"); + Private = "Persönliche Information" \ No newline at end of file diff --git a/src/vs/base/test/node/mime/fixtures/some.css.qwoff b/src/vs/base/test/node/mime/fixtures/some.css.qwoff index 1a988422de7..cbd1fe228a2 100644 --- a/src/vs/base/test/node/mime/fixtures/some.css.qwoff +++ b/src/vs/base/test/node/mime/fixtures/some.css.qwoff @@ -1,35 +1,35 @@ -/*---------------------------------------------------------- -The base color for this template is #5c87b2. If you'd like -to use a different color start by replacing all instances of -#5c87b2 with your new color. -----------------------------------------------------------*/ -body -{ - background-color: #5c87b2; - font-size: .75em; - font-family: Segoe UI, Verdana, Helvetica, Sans-Serif; - margin: 8px; - padding: 0; - color: #696969; -} - -h1, h2, h3, h4, h5, h6 -{ - color: #000; - font-size: 40px; - margin: 0px; -} - -textarea -{ - font-family: Consolas -} - -#results -{ - margin-top: 2em; - margin-left: 2em; - color: black; - font-size: medium; -} - +/*---------------------------------------------------------- +The base color for this template is #5c87b2. If you'd like +to use a different color start by replacing all instances of +#5c87b2 with your new color. +----------------------------------------------------------*/ +body +{ + background-color: #5c87b2; + font-size: .75em; + font-family: Segoe UI, Verdana, Helvetica, Sans-Serif; + margin: 8px; + padding: 0; + color: #696969; +} + +h1, h2, h3, h4, h5, h6 +{ + color: #000; + font-size: 40px; + margin: 0px; +} + +textarea +{ + font-family: Consolas +} + +#results +{ + margin-top: 2em; + margin-left: 2em; + color: black; + font-size: medium; +} + diff --git a/src/vs/base/test/node/mime/fixtures/some.json.png b/src/vs/base/test/node/mime/fixtures/some.json.png index 5d9b42114ef..995a3273ae2 100644 --- a/src/vs/base/test/node/mime/fixtures/some.json.png +++ b/src/vs/base/test/node/mime/fixtures/some.json.png @@ -1,11 +1,11 @@ -{ - "type": "typescript", - - "sources": [ - "examples/company.ts", - "examples/conway.ts", - "examples/employee.ts", - "examples/large.ts", - "examples/small.ts" - ] +{ + "type": "typescript", + + "sources": [ + "examples/company.ts", + "examples/conway.ts", + "examples/employee.ts", + "examples/large.ts", + "examples/small.ts" + ] } \ No newline at end of file diff --git a/src/vs/base/test/node/mime/fixtures/some.xml.png b/src/vs/base/test/node/mime/fixtures/some.xml.png index c65a5b57edb..1a5b8e2915e 100644 --- a/src/vs/base/test/node/mime/fixtures/some.xml.png +++ b/src/vs/base/test/node/mime/fixtures/some.xml.png @@ -1,3 +1,3 @@ - - + + \ No newline at end of file diff --git a/src/vs/editor/contrib/find/images/cancelSelectionFind-inverse.svg b/src/vs/editor/contrib/find/images/cancelSelectionFind-inverse.svg index 0059c15d5ac..d776fcde98a 100644 --- a/src/vs/editor/contrib/find/images/cancelSelectionFind-inverse.svg +++ b/src/vs/editor/contrib/find/images/cancelSelectionFind-inverse.svg @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/src/vs/editor/contrib/find/images/next-inverse.svg b/src/vs/editor/contrib/find/images/next-inverse.svg index 7498a498bb6..50482917af1 100644 --- a/src/vs/editor/contrib/find/images/next-inverse.svg +++ b/src/vs/editor/contrib/find/images/next-inverse.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/src/vs/editor/contrib/find/images/next.svg b/src/vs/editor/contrib/find/images/next.svg index 4b176879f90..a2a011453aa 100644 --- a/src/vs/editor/contrib/find/images/next.svg +++ b/src/vs/editor/contrib/find/images/next.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/src/vs/editor/contrib/find/images/previous-inverse.svg b/src/vs/editor/contrib/find/images/previous-inverse.svg index 0aabf393d9c..8ff41da5daf 100644 --- a/src/vs/editor/contrib/find/images/previous-inverse.svg +++ b/src/vs/editor/contrib/find/images/previous-inverse.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/src/vs/editor/contrib/find/images/previous.svg b/src/vs/editor/contrib/find/images/previous.svg index f7acf0acbd9..3c8b367a934 100644 --- a/src/vs/editor/contrib/find/images/previous.svg +++ b/src/vs/editor/contrib/find/images/previous.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/src/vs/editor/contrib/find/images/replace-all-inverse.svg b/src/vs/editor/contrib/find/images/replace-all-inverse.svg index 2744a6a4e81..45312b60899 100644 --- a/src/vs/editor/contrib/find/images/replace-all-inverse.svg +++ b/src/vs/editor/contrib/find/images/replace-all-inverse.svg @@ -1,11 +1,11 @@ - - - - - - - - + + + + + + + + diff --git a/src/vs/editor/contrib/find/images/replace-all.svg b/src/vs/editor/contrib/find/images/replace-all.svg index 4c55b91d0e9..4254f7c6d10 100644 --- a/src/vs/editor/contrib/find/images/replace-all.svg +++ b/src/vs/editor/contrib/find/images/replace-all.svg @@ -1,11 +1,11 @@ - - - - - - - - + + + + + + + + diff --git a/src/vs/editor/contrib/find/images/replace-inverse.svg b/src/vs/editor/contrib/find/images/replace-inverse.svg index a15ad9b4af1..9a59e263780 100644 --- a/src/vs/editor/contrib/find/images/replace-inverse.svg +++ b/src/vs/editor/contrib/find/images/replace-inverse.svg @@ -1,13 +1,13 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/vs/editor/contrib/find/images/replace.svg b/src/vs/editor/contrib/find/images/replace.svg index 14da77d2198..8b1eb0de23c 100644 --- a/src/vs/editor/contrib/find/images/replace.svg +++ b/src/vs/editor/contrib/find/images/replace.svg @@ -1,13 +1,13 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/vs/workbench/browser/parts/editor/media/stackview-inverse.svg b/src/vs/workbench/browser/parts/editor/media/stackview-inverse.svg index 81b9987b983..8d9a603ae85 100755 --- a/src/vs/workbench/browser/parts/editor/media/stackview-inverse.svg +++ b/src/vs/workbench/browser/parts/editor/media/stackview-inverse.svg @@ -1,20 +1,20 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/src/vs/workbench/browser/parts/editor/media/stackview.svg b/src/vs/workbench/browser/parts/editor/media/stackview.svg index 9ae35b11a33..9ea38002d90 100755 --- a/src/vs/workbench/browser/parts/editor/media/stackview.svg +++ b/src/vs/workbench/browser/parts/editor/media/stackview.svg @@ -1,20 +1,20 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/src/vs/workbench/browser/parts/notifications/media/error-inverse.svg b/src/vs/workbench/browser/parts/notifications/media/error-inverse.svg index 90b7c5eb7d3..51e9dc81b99 100755 --- a/src/vs/workbench/browser/parts/notifications/media/error-inverse.svg +++ b/src/vs/workbench/browser/parts/notifications/media/error-inverse.svg @@ -1,26 +1,26 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/src/vs/workbench/browser/parts/notifications/media/error.svg b/src/vs/workbench/browser/parts/notifications/media/error.svg index 4c1a9bdfc2f..04b66689011 100755 --- a/src/vs/workbench/browser/parts/notifications/media/error.svg +++ b/src/vs/workbench/browser/parts/notifications/media/error.svg @@ -1,25 +1,25 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/src/vs/workbench/browser/parts/notifications/media/info-inverse.svg b/src/vs/workbench/browser/parts/notifications/media/info-inverse.svg index 90c08b5ecd6..64b801a63be 100755 --- a/src/vs/workbench/browser/parts/notifications/media/info-inverse.svg +++ b/src/vs/workbench/browser/parts/notifications/media/info-inverse.svg @@ -1,17 +1,17 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/vs/workbench/browser/parts/notifications/media/info.svg b/src/vs/workbench/browser/parts/notifications/media/info.svg index 3f7bd615e28..3c603528a74 100755 --- a/src/vs/workbench/browser/parts/notifications/media/info.svg +++ b/src/vs/workbench/browser/parts/notifications/media/info.svg @@ -1,17 +1,17 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/vs/workbench/browser/parts/notifications/media/warning-inverse.svg b/src/vs/workbench/browser/parts/notifications/media/warning-inverse.svg index af06ebfcbb5..a7f4afbcc9c 100755 --- a/src/vs/workbench/browser/parts/notifications/media/warning-inverse.svg +++ b/src/vs/workbench/browser/parts/notifications/media/warning-inverse.svg @@ -1,15 +1,15 @@ - - - - -StatusWarning_16x - - - - - + + + + +StatusWarning_16x + + + + + diff --git a/src/vs/workbench/browser/parts/notifications/media/warning.svg b/src/vs/workbench/browser/parts/notifications/media/warning.svg index b07e766ea90..6d8cffe913e 100755 --- a/src/vs/workbench/browser/parts/notifications/media/warning.svg +++ b/src/vs/workbench/browser/parts/notifications/media/warning.svg @@ -1,15 +1,15 @@ - - - - -StatusWarning_16x - - - - - + + + + +StatusWarning_16x + + + + + diff --git a/src/vs/workbench/parts/debug/browser/media/continue.svg b/src/vs/workbench/parts/debug/browser/media/continue.svg index c605d45ef98..33affa1a519 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue.svg @@ -1,3 +1,3 @@ - + ]> \ No newline at end of file diff --git a/src/vs/workbench/parts/extensions/browser/media/EmptyStar.svg b/src/vs/workbench/parts/extensions/browser/media/EmptyStar.svg index f1e005907de..ac80953032b 100644 --- a/src/vs/workbench/parts/extensions/browser/media/EmptyStar.svg +++ b/src/vs/workbench/parts/extensions/browser/media/EmptyStar.svg @@ -1,92 +1,92 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vs/workbench/parts/extensions/browser/media/FullStarLight.svg b/src/vs/workbench/parts/extensions/browser/media/FullStarLight.svg index 19c7da2e959..9a20fb91c63 100644 --- a/src/vs/workbench/parts/extensions/browser/media/FullStarLight.svg +++ b/src/vs/workbench/parts/extensions/browser/media/FullStarLight.svg @@ -1,92 +1,92 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vs/workbench/parts/extensions/browser/media/HalfStarLight.svg b/src/vs/workbench/parts/extensions/browser/media/HalfStarLight.svg index cd84fdd9799..81dbb91844a 100644 --- a/src/vs/workbench/parts/extensions/browser/media/HalfStarLight.svg +++ b/src/vs/workbench/parts/extensions/browser/media/HalfStarLight.svg @@ -1,91 +1,91 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vs/workbench/parts/extensions/electron-browser/media/extensions-dark.svg b/src/vs/workbench/parts/extensions/electron-browser/media/extensions-dark.svg index d413b56be32..4a1571a3c5c 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/media/extensions-dark.svg +++ b/src/vs/workbench/parts/extensions/electron-browser/media/extensions-dark.svg @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/src/vs/workbench/parts/files/electron-browser/media/AddFile_inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/AddFile_inverse.svg index 77855eb9daf..18b8c02c134 100644 --- a/src/vs/workbench/parts/files/electron-browser/media/AddFile_inverse.svg +++ b/src/vs/workbench/parts/files/electron-browser/media/AddFile_inverse.svg @@ -1,3 +1,3 @@ - + ]> \ No newline at end of file diff --git a/src/vs/workbench/parts/files/electron-browser/media/AddFolder_inverse.svg b/src/vs/workbench/parts/files/electron-browser/media/AddFolder_inverse.svg index 5d1fcf1e848..d7e483bf25e 100644 --- a/src/vs/workbench/parts/files/electron-browser/media/AddFolder_inverse.svg +++ b/src/vs/workbench/parts/files/electron-browser/media/AddFolder_inverse.svg @@ -1,3 +1,3 @@ - + ]> \ No newline at end of file diff --git a/src/vs/workbench/parts/search/browser/media/replace-all-inverse.svg b/src/vs/workbench/parts/search/browser/media/replace-all-inverse.svg index 2744a6a4e81..45312b60899 100644 --- a/src/vs/workbench/parts/search/browser/media/replace-all-inverse.svg +++ b/src/vs/workbench/parts/search/browser/media/replace-all-inverse.svg @@ -1,11 +1,11 @@ - - - - - - - - + + + + + + + + diff --git a/src/vs/workbench/parts/search/browser/media/replace-all.svg b/src/vs/workbench/parts/search/browser/media/replace-all.svg index 4c55b91d0e9..4254f7c6d10 100644 --- a/src/vs/workbench/parts/search/browser/media/replace-all.svg +++ b/src/vs/workbench/parts/search/browser/media/replace-all.svg @@ -1,11 +1,11 @@ - - - - - - - - + + + + + + + + diff --git a/src/vs/workbench/parts/search/browser/media/replace-inverse.svg b/src/vs/workbench/parts/search/browser/media/replace-inverse.svg index a15ad9b4af1..9a59e263780 100644 --- a/src/vs/workbench/parts/search/browser/media/replace-inverse.svg +++ b/src/vs/workbench/parts/search/browser/media/replace-inverse.svg @@ -1,13 +1,13 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/vs/workbench/parts/search/browser/media/replace.svg b/src/vs/workbench/parts/search/browser/media/replace.svg index 14da77d2198..8b1eb0de23c 100644 --- a/src/vs/workbench/parts/search/browser/media/replace.svg +++ b/src/vs/workbench/parts/search/browser/media/replace.svg @@ -1,13 +1,13 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/company.js b/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/company.js index 107f3438401..ca4a62bf248 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/company.js +++ b/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/company.js @@ -1,23 +1,23 @@ -'use strict'; -/// -var Workforce; -(function (Workforce_1) { - var Company = (function () { - function Company() { - } - return Company; - })(); - (function (property, Workforce, IEmployee) { - if (property === void 0) { property = employees; } - if (IEmployee === void 0) { IEmployee = []; } - property; - calculateMonthlyExpenses(); - { - var result = 0; - for (var i = 0; i < employees.length; i++) { - result += employees[i].calculatePay(); - } - return result; - } - }); -})(Workforce || (Workforce = {})); +'use strict'; +/// +var Workforce; +(function (Workforce_1) { + var Company = (function () { + function Company() { + } + return Company; + })(); + (function (property, Workforce, IEmployee) { + if (property === void 0) { property = employees; } + if (IEmployee === void 0) { IEmployee = []; } + property; + calculateMonthlyExpenses(); + { + var result = 0; + for (var i = 0; i < employees.length; i++) { + result += employees[i].calculatePay(); + } + return result; + } + }); +})(Workforce || (Workforce = {})); diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/conway.js b/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/conway.js index 837ce84f503..e99829c8325 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/conway.js +++ b/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/conway.js @@ -1,117 +1,117 @@ -'use strict'; -var Conway; -(function (Conway) { - var Cell = (function () { - function Cell() { - } - return Cell; - })(); - (function (property, number, property, number, property, boolean) { - if (property === void 0) { property = row; } - if (property === void 0) { property = col; } - if (property === void 0) { property = live; } - }); - var GameOfLife = (function () { - function GameOfLife() { - } - return GameOfLife; - })(); - (function () { - property; - gridSize = 50; - property; - canvasSize = 600; - property; - lineColor = '#cdcdcd'; - property; - liveColor = '#666'; - property; - deadColor = '#eee'; - property; - initialLifeProbability = 0.5; - property; - animationRate = 60; - property; - cellSize = 0; - property; - context: ICanvasRenderingContext2D; - property; - world = createWorld(); - circleOfLife(); - function createWorld() { - return travelWorld(function (cell) { - cell.live = Math.random() < initialLifeProbability; - return cell; - }); - } - function circleOfLife() { - world = travelWorld(function (cell) { - cell = world[cell.row][cell.col]; - draw(cell); - return resolveNextGeneration(cell); - }); - setTimeout(function () { circleOfLife(); }, animationRate); - } - function resolveNextGeneration(cell) { - var count = countNeighbors(cell); - var newCell = new Cell(cell.row, cell.col, cell.live); - if (count < 2 || count > 3) - newCell.live = false; - else if (count == 3) - newCell.live = true; - return newCell; - } - function countNeighbors(cell) { - var neighbors = 0; - for (var row = -1; row <= 1; row++) { - for (var col = -1; col <= 1; col++) { - if (row == 0 && col == 0) - continue; - if (isAlive(cell.row + row, cell.col + col)) { - neighbors++; - } - } - } - return neighbors; - } - function isAlive(row, col) { - // todo - need to guard with worl[row] exists? - if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) - return false; - return world[row][col].live; - } - function travelWorld(callback) { - var result = []; - for (var row = 0; row < gridSize; row++) { - var rowData = []; - for (var col = 0; col < gridSize; col++) { - rowData.push(callback(new Cell(row, col, false))); - } - result.push(rowData); - } - return result; - } - function draw(cell) { - if (context == null) - context = createDrawingContext(); - if (cellSize == 0) - cellSize = canvasSize / gridSize; - context.strokeStyle = lineColor; - context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - context.fillStyle = cell.live ? liveColor : deadColor; - context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - } - function createDrawingContext() { - var canvas = document.getElementById('conway-canvas'); - if (canvas == null) { - canvas = document.createElement('canvas'); - canvas.id = "conway-canvas"; - canvas.width = canvasSize; - canvas.height = canvasSize; - document.body.appendChild(canvas); - } - return canvas.getContext('2d'); - } - }); -})(Conway || (Conway = {})); -var game = new Conway.GameOfLife(); +'use strict'; +var Conway; +(function (Conway) { + var Cell = (function () { + function Cell() { + } + return Cell; + })(); + (function (property, number, property, number, property, boolean) { + if (property === void 0) { property = row; } + if (property === void 0) { property = col; } + if (property === void 0) { property = live; } + }); + var GameOfLife = (function () { + function GameOfLife() { + } + return GameOfLife; + })(); + (function () { + property; + gridSize = 50; + property; + canvasSize = 600; + property; + lineColor = '#cdcdcd'; + property; + liveColor = '#666'; + property; + deadColor = '#eee'; + property; + initialLifeProbability = 0.5; + property; + animationRate = 60; + property; + cellSize = 0; + property; + context: ICanvasRenderingContext2D; + property; + world = createWorld(); + circleOfLife(); + function createWorld() { + return travelWorld(function (cell) { + cell.live = Math.random() < initialLifeProbability; + return cell; + }); + } + function circleOfLife() { + world = travelWorld(function (cell) { + cell = world[cell.row][cell.col]; + draw(cell); + return resolveNextGeneration(cell); + }); + setTimeout(function () { circleOfLife(); }, animationRate); + } + function resolveNextGeneration(cell) { + var count = countNeighbors(cell); + var newCell = new Cell(cell.row, cell.col, cell.live); + if (count < 2 || count > 3) + newCell.live = false; + else if (count == 3) + newCell.live = true; + return newCell; + } + function countNeighbors(cell) { + var neighbors = 0; + for (var row = -1; row <= 1; row++) { + for (var col = -1; col <= 1; col++) { + if (row == 0 && col == 0) + continue; + if (isAlive(cell.row + row, cell.col + col)) { + neighbors++; + } + } + } + return neighbors; + } + function isAlive(row, col) { + // todo - need to guard with worl[row] exists? + if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) + return false; + return world[row][col].live; + } + function travelWorld(callback) { + var result = []; + for (var row = 0; row < gridSize; row++) { + var rowData = []; + for (var col = 0; col < gridSize; col++) { + rowData.push(callback(new Cell(row, col, false))); + } + result.push(rowData); + } + return result; + } + function draw(cell) { + if (context == null) + context = createDrawingContext(); + if (cellSize == 0) + cellSize = canvasSize / gridSize; + context.strokeStyle = lineColor; + context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + context.fillStyle = cell.live ? liveColor : deadColor; + context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + } + function createDrawingContext() { + var canvas = document.getElementById('conway-canvas'); + if (canvas == null) { + canvas = document.createElement('canvas'); + canvas.id = "conway-canvas"; + canvas.width = canvasSize; + canvas.height = canvasSize; + document.body.appendChild(canvas); + } + return canvas.getContext('2d'); + } + }); +})(Conway || (Conway = {})); +var game = new Conway.GameOfLife(); diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/employee.js b/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/employee.js index 1f4cc1b1ea7..69c58aa5c87 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/employee.js +++ b/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/employee.js @@ -1,38 +1,38 @@ -'use strict'; -var Workforce; -(function (Workforce) { - var Employee = (function () { - function Employee() { - } - return Employee; - })(); - (property); - name: string, property; - basepay: number; - implements; - IEmployee; - { - name; - basepay; - } - var SalesEmployee = (function () { - function SalesEmployee() { - } - return SalesEmployee; - })(); - (); - Employee(name, basepay); - { - function calculatePay() { - var multiplier = (document.getElementById("mult")), as = any, value; - return _super.calculatePay.call(this) * multiplier + bonus; - } - } - var employee = new Employee('Bob', 1000); - var salesEmployee = new SalesEmployee('Jim', 800, 400); - salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee -})(Workforce || (Workforce = {})); -extern; -var $; -var s = Workforce.salesEmployee.calculatePay(); -$('#results').text(s); +'use strict'; +var Workforce; +(function (Workforce) { + var Employee = (function () { + function Employee() { + } + return Employee; + })(); + (property); + name: string, property; + basepay: number; + implements; + IEmployee; + { + name; + basepay; + } + var SalesEmployee = (function () { + function SalesEmployee() { + } + return SalesEmployee; + })(); + (); + Employee(name, basepay); + { + function calculatePay() { + var multiplier = (document.getElementById("mult")), as = any, value; + return _super.calculatePay.call(this) * multiplier + bonus; + } + } + var employee = new Employee('Bob', 1000); + var salesEmployee = new SalesEmployee('Jim', 800, 400); + salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee +})(Workforce || (Workforce = {})); +extern; +var $; +var s = Workforce.salesEmployee.calculatePay(); +$('#results').text(s); diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/small.js b/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/small.js index ba777851242..5e57b4c9439 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/small.js +++ b/src/vs/workbench/services/files/test/node/fixtures/resolver/examples/small.js @@ -1,24 +1,24 @@ -'use strict'; -var M; -(function (M) { - var C = (function () { - function C() { - } - return C; - })(); - (function (x, property, number) { - if (property === void 0) { property = w; } - var local = 1; - // unresolved symbol because x is local - //self.x++; - self.w--; // ok because w is a property - property; - f = function (y) { - return y + x + local + w + self.w; - }; - function sum(z) { - return z + f(z) + w + self.w; - } - }); -})(M || (M = {})); -var c = new M.C(12, 5); +'use strict'; +var M; +(function (M) { + var C = (function () { + function C() { + } + return C; + })(); + (function (x, property, number) { + if (property === void 0) { property = w; } + var local = 1; + // unresolved symbol because x is local + //self.x++; + self.w--; // ok because w is a property + property; + f = function (y) { + return y + x + local + w + self.w; + }; + function sum(z) { + return z + f(z) + w + self.w; + } + }); +})(M || (M = {})); +var c = new M.C(12, 5); diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/index.html b/src/vs/workbench/services/files/test/node/fixtures/resolver/index.html index c037f44fb6c..bccd24d9272 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/resolver/index.html +++ b/src/vs/workbench/services/files/test/node/fixtures/resolver/index.html @@ -1,121 +1,121 @@ - - - - - Strada - - - - - - - - -

TypeScript

-
- - -
- - -
- -
Press 'run' to execute code...
-
...write your results into #results...
-
- - - + + + + + Strada + + + + + + + + +

TypeScript

+
+ + +
+ + +
+ +
Press 'run' to execute code...
+
...write your results into #results...
+
+ + + diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/company.js b/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/company.js index 107f3438401..ca4a62bf248 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/company.js +++ b/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/company.js @@ -1,23 +1,23 @@ -'use strict'; -/// -var Workforce; -(function (Workforce_1) { - var Company = (function () { - function Company() { - } - return Company; - })(); - (function (property, Workforce, IEmployee) { - if (property === void 0) { property = employees; } - if (IEmployee === void 0) { IEmployee = []; } - property; - calculateMonthlyExpenses(); - { - var result = 0; - for (var i = 0; i < employees.length; i++) { - result += employees[i].calculatePay(); - } - return result; - } - }); -})(Workforce || (Workforce = {})); +'use strict'; +/// +var Workforce; +(function (Workforce_1) { + var Company = (function () { + function Company() { + } + return Company; + })(); + (function (property, Workforce, IEmployee) { + if (property === void 0) { property = employees; } + if (IEmployee === void 0) { IEmployee = []; } + property; + calculateMonthlyExpenses(); + { + var result = 0; + for (var i = 0; i < employees.length; i++) { + result += employees[i].calculatePay(); + } + return result; + } + }); +})(Workforce || (Workforce = {})); diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/conway.js b/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/conway.js index 837ce84f503..e99829c8325 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/conway.js +++ b/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/conway.js @@ -1,117 +1,117 @@ -'use strict'; -var Conway; -(function (Conway) { - var Cell = (function () { - function Cell() { - } - return Cell; - })(); - (function (property, number, property, number, property, boolean) { - if (property === void 0) { property = row; } - if (property === void 0) { property = col; } - if (property === void 0) { property = live; } - }); - var GameOfLife = (function () { - function GameOfLife() { - } - return GameOfLife; - })(); - (function () { - property; - gridSize = 50; - property; - canvasSize = 600; - property; - lineColor = '#cdcdcd'; - property; - liveColor = '#666'; - property; - deadColor = '#eee'; - property; - initialLifeProbability = 0.5; - property; - animationRate = 60; - property; - cellSize = 0; - property; - context: ICanvasRenderingContext2D; - property; - world = createWorld(); - circleOfLife(); - function createWorld() { - return travelWorld(function (cell) { - cell.live = Math.random() < initialLifeProbability; - return cell; - }); - } - function circleOfLife() { - world = travelWorld(function (cell) { - cell = world[cell.row][cell.col]; - draw(cell); - return resolveNextGeneration(cell); - }); - setTimeout(function () { circleOfLife(); }, animationRate); - } - function resolveNextGeneration(cell) { - var count = countNeighbors(cell); - var newCell = new Cell(cell.row, cell.col, cell.live); - if (count < 2 || count > 3) - newCell.live = false; - else if (count == 3) - newCell.live = true; - return newCell; - } - function countNeighbors(cell) { - var neighbors = 0; - for (var row = -1; row <= 1; row++) { - for (var col = -1; col <= 1; col++) { - if (row == 0 && col == 0) - continue; - if (isAlive(cell.row + row, cell.col + col)) { - neighbors++; - } - } - } - return neighbors; - } - function isAlive(row, col) { - // todo - need to guard with worl[row] exists? - if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) - return false; - return world[row][col].live; - } - function travelWorld(callback) { - var result = []; - for (var row = 0; row < gridSize; row++) { - var rowData = []; - for (var col = 0; col < gridSize; col++) { - rowData.push(callback(new Cell(row, col, false))); - } - result.push(rowData); - } - return result; - } - function draw(cell) { - if (context == null) - context = createDrawingContext(); - if (cellSize == 0) - cellSize = canvasSize / gridSize; - context.strokeStyle = lineColor; - context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - context.fillStyle = cell.live ? liveColor : deadColor; - context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - } - function createDrawingContext() { - var canvas = document.getElementById('conway-canvas'); - if (canvas == null) { - canvas = document.createElement('canvas'); - canvas.id = "conway-canvas"; - canvas.width = canvasSize; - canvas.height = canvasSize; - document.body.appendChild(canvas); - } - return canvas.getContext('2d'); - } - }); -})(Conway || (Conway = {})); -var game = new Conway.GameOfLife(); +'use strict'; +var Conway; +(function (Conway) { + var Cell = (function () { + function Cell() { + } + return Cell; + })(); + (function (property, number, property, number, property, boolean) { + if (property === void 0) { property = row; } + if (property === void 0) { property = col; } + if (property === void 0) { property = live; } + }); + var GameOfLife = (function () { + function GameOfLife() { + } + return GameOfLife; + })(); + (function () { + property; + gridSize = 50; + property; + canvasSize = 600; + property; + lineColor = '#cdcdcd'; + property; + liveColor = '#666'; + property; + deadColor = '#eee'; + property; + initialLifeProbability = 0.5; + property; + animationRate = 60; + property; + cellSize = 0; + property; + context: ICanvasRenderingContext2D; + property; + world = createWorld(); + circleOfLife(); + function createWorld() { + return travelWorld(function (cell) { + cell.live = Math.random() < initialLifeProbability; + return cell; + }); + } + function circleOfLife() { + world = travelWorld(function (cell) { + cell = world[cell.row][cell.col]; + draw(cell); + return resolveNextGeneration(cell); + }); + setTimeout(function () { circleOfLife(); }, animationRate); + } + function resolveNextGeneration(cell) { + var count = countNeighbors(cell); + var newCell = new Cell(cell.row, cell.col, cell.live); + if (count < 2 || count > 3) + newCell.live = false; + else if (count == 3) + newCell.live = true; + return newCell; + } + function countNeighbors(cell) { + var neighbors = 0; + for (var row = -1; row <= 1; row++) { + for (var col = -1; col <= 1; col++) { + if (row == 0 && col == 0) + continue; + if (isAlive(cell.row + row, cell.col + col)) { + neighbors++; + } + } + } + return neighbors; + } + function isAlive(row, col) { + // todo - need to guard with worl[row] exists? + if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) + return false; + return world[row][col].live; + } + function travelWorld(callback) { + var result = []; + for (var row = 0; row < gridSize; row++) { + var rowData = []; + for (var col = 0; col < gridSize; col++) { + rowData.push(callback(new Cell(row, col, false))); + } + result.push(rowData); + } + return result; + } + function draw(cell) { + if (context == null) + context = createDrawingContext(); + if (cellSize == 0) + cellSize = canvasSize / gridSize; + context.strokeStyle = lineColor; + context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + context.fillStyle = cell.live ? liveColor : deadColor; + context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + } + function createDrawingContext() { + var canvas = document.getElementById('conway-canvas'); + if (canvas == null) { + canvas = document.createElement('canvas'); + canvas.id = "conway-canvas"; + canvas.width = canvasSize; + canvas.height = canvasSize; + document.body.appendChild(canvas); + } + return canvas.getContext('2d'); + } + }); +})(Conway || (Conway = {})); +var game = new Conway.GameOfLife(); diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/employee.js b/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/employee.js index 1f4cc1b1ea7..69c58aa5c87 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/employee.js +++ b/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/employee.js @@ -1,38 +1,38 @@ -'use strict'; -var Workforce; -(function (Workforce) { - var Employee = (function () { - function Employee() { - } - return Employee; - })(); - (property); - name: string, property; - basepay: number; - implements; - IEmployee; - { - name; - basepay; - } - var SalesEmployee = (function () { - function SalesEmployee() { - } - return SalesEmployee; - })(); - (); - Employee(name, basepay); - { - function calculatePay() { - var multiplier = (document.getElementById("mult")), as = any, value; - return _super.calculatePay.call(this) * multiplier + bonus; - } - } - var employee = new Employee('Bob', 1000); - var salesEmployee = new SalesEmployee('Jim', 800, 400); - salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee -})(Workforce || (Workforce = {})); -extern; -var $; -var s = Workforce.salesEmployee.calculatePay(); -$('#results').text(s); +'use strict'; +var Workforce; +(function (Workforce) { + var Employee = (function () { + function Employee() { + } + return Employee; + })(); + (property); + name: string, property; + basepay: number; + implements; + IEmployee; + { + name; + basepay; + } + var SalesEmployee = (function () { + function SalesEmployee() { + } + return SalesEmployee; + })(); + (); + Employee(name, basepay); + { + function calculatePay() { + var multiplier = (document.getElementById("mult")), as = any, value; + return _super.calculatePay.call(this) * multiplier + bonus; + } + } + var employee = new Employee('Bob', 1000); + var salesEmployee = new SalesEmployee('Jim', 800, 400); + salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee +})(Workforce || (Workforce = {})); +extern; +var $; +var s = Workforce.salesEmployee.calculatePay(); +$('#results').text(s); diff --git a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/small.js b/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/small.js index ba777851242..5e57b4c9439 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/small.js +++ b/src/vs/workbench/services/files/test/node/fixtures/resolver/other/deep/small.js @@ -1,24 +1,24 @@ -'use strict'; -var M; -(function (M) { - var C = (function () { - function C() { - } - return C; - })(); - (function (x, property, number) { - if (property === void 0) { property = w; } - var local = 1; - // unresolved symbol because x is local - //self.x++; - self.w--; // ok because w is a property - property; - f = function (y) { - return y + x + local + w + self.w; - }; - function sum(z) { - return z + f(z) + w + self.w; - } - }); -})(M || (M = {})); -var c = new M.C(12, 5); +'use strict'; +var M; +(function (M) { + var C = (function () { + function C() { + } + return C; + })(); + (function (x, property, number) { + if (property === void 0) { property = w; } + var local = 1; + // unresolved symbol because x is local + //self.x++; + self.w--; // ok because w is a property + property; + f = function (y) { + return y + x + local + w + self.w; + }; + function sum(z) { + return z + f(z) + w + self.w; + } + }); +})(M || (M = {})); +var c = new M.C(12, 5); diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/deep/company.js b/src/vs/workbench/services/files/test/node/fixtures/service/deep/company.js index 107f3438401..ca4a62bf248 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/service/deep/company.js +++ b/src/vs/workbench/services/files/test/node/fixtures/service/deep/company.js @@ -1,23 +1,23 @@ -'use strict'; -/// -var Workforce; -(function (Workforce_1) { - var Company = (function () { - function Company() { - } - return Company; - })(); - (function (property, Workforce, IEmployee) { - if (property === void 0) { property = employees; } - if (IEmployee === void 0) { IEmployee = []; } - property; - calculateMonthlyExpenses(); - { - var result = 0; - for (var i = 0; i < employees.length; i++) { - result += employees[i].calculatePay(); - } - return result; - } - }); -})(Workforce || (Workforce = {})); +'use strict'; +/// +var Workforce; +(function (Workforce_1) { + var Company = (function () { + function Company() { + } + return Company; + })(); + (function (property, Workforce, IEmployee) { + if (property === void 0) { property = employees; } + if (IEmployee === void 0) { IEmployee = []; } + property; + calculateMonthlyExpenses(); + { + var result = 0; + for (var i = 0; i < employees.length; i++) { + result += employees[i].calculatePay(); + } + return result; + } + }); +})(Workforce || (Workforce = {})); diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/deep/conway.js b/src/vs/workbench/services/files/test/node/fixtures/service/deep/conway.js index 837ce84f503..e99829c8325 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/service/deep/conway.js +++ b/src/vs/workbench/services/files/test/node/fixtures/service/deep/conway.js @@ -1,117 +1,117 @@ -'use strict'; -var Conway; -(function (Conway) { - var Cell = (function () { - function Cell() { - } - return Cell; - })(); - (function (property, number, property, number, property, boolean) { - if (property === void 0) { property = row; } - if (property === void 0) { property = col; } - if (property === void 0) { property = live; } - }); - var GameOfLife = (function () { - function GameOfLife() { - } - return GameOfLife; - })(); - (function () { - property; - gridSize = 50; - property; - canvasSize = 600; - property; - lineColor = '#cdcdcd'; - property; - liveColor = '#666'; - property; - deadColor = '#eee'; - property; - initialLifeProbability = 0.5; - property; - animationRate = 60; - property; - cellSize = 0; - property; - context: ICanvasRenderingContext2D; - property; - world = createWorld(); - circleOfLife(); - function createWorld() { - return travelWorld(function (cell) { - cell.live = Math.random() < initialLifeProbability; - return cell; - }); - } - function circleOfLife() { - world = travelWorld(function (cell) { - cell = world[cell.row][cell.col]; - draw(cell); - return resolveNextGeneration(cell); - }); - setTimeout(function () { circleOfLife(); }, animationRate); - } - function resolveNextGeneration(cell) { - var count = countNeighbors(cell); - var newCell = new Cell(cell.row, cell.col, cell.live); - if (count < 2 || count > 3) - newCell.live = false; - else if (count == 3) - newCell.live = true; - return newCell; - } - function countNeighbors(cell) { - var neighbors = 0; - for (var row = -1; row <= 1; row++) { - for (var col = -1; col <= 1; col++) { - if (row == 0 && col == 0) - continue; - if (isAlive(cell.row + row, cell.col + col)) { - neighbors++; - } - } - } - return neighbors; - } - function isAlive(row, col) { - // todo - need to guard with worl[row] exists? - if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) - return false; - return world[row][col].live; - } - function travelWorld(callback) { - var result = []; - for (var row = 0; row < gridSize; row++) { - var rowData = []; - for (var col = 0; col < gridSize; col++) { - rowData.push(callback(new Cell(row, col, false))); - } - result.push(rowData); - } - return result; - } - function draw(cell) { - if (context == null) - context = createDrawingContext(); - if (cellSize == 0) - cellSize = canvasSize / gridSize; - context.strokeStyle = lineColor; - context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - context.fillStyle = cell.live ? liveColor : deadColor; - context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - } - function createDrawingContext() { - var canvas = document.getElementById('conway-canvas'); - if (canvas == null) { - canvas = document.createElement('canvas'); - canvas.id = "conway-canvas"; - canvas.width = canvasSize; - canvas.height = canvasSize; - document.body.appendChild(canvas); - } - return canvas.getContext('2d'); - } - }); -})(Conway || (Conway = {})); -var game = new Conway.GameOfLife(); +'use strict'; +var Conway; +(function (Conway) { + var Cell = (function () { + function Cell() { + } + return Cell; + })(); + (function (property, number, property, number, property, boolean) { + if (property === void 0) { property = row; } + if (property === void 0) { property = col; } + if (property === void 0) { property = live; } + }); + var GameOfLife = (function () { + function GameOfLife() { + } + return GameOfLife; + })(); + (function () { + property; + gridSize = 50; + property; + canvasSize = 600; + property; + lineColor = '#cdcdcd'; + property; + liveColor = '#666'; + property; + deadColor = '#eee'; + property; + initialLifeProbability = 0.5; + property; + animationRate = 60; + property; + cellSize = 0; + property; + context: ICanvasRenderingContext2D; + property; + world = createWorld(); + circleOfLife(); + function createWorld() { + return travelWorld(function (cell) { + cell.live = Math.random() < initialLifeProbability; + return cell; + }); + } + function circleOfLife() { + world = travelWorld(function (cell) { + cell = world[cell.row][cell.col]; + draw(cell); + return resolveNextGeneration(cell); + }); + setTimeout(function () { circleOfLife(); }, animationRate); + } + function resolveNextGeneration(cell) { + var count = countNeighbors(cell); + var newCell = new Cell(cell.row, cell.col, cell.live); + if (count < 2 || count > 3) + newCell.live = false; + else if (count == 3) + newCell.live = true; + return newCell; + } + function countNeighbors(cell) { + var neighbors = 0; + for (var row = -1; row <= 1; row++) { + for (var col = -1; col <= 1; col++) { + if (row == 0 && col == 0) + continue; + if (isAlive(cell.row + row, cell.col + col)) { + neighbors++; + } + } + } + return neighbors; + } + function isAlive(row, col) { + // todo - need to guard with worl[row] exists? + if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) + return false; + return world[row][col].live; + } + function travelWorld(callback) { + var result = []; + for (var row = 0; row < gridSize; row++) { + var rowData = []; + for (var col = 0; col < gridSize; col++) { + rowData.push(callback(new Cell(row, col, false))); + } + result.push(rowData); + } + return result; + } + function draw(cell) { + if (context == null) + context = createDrawingContext(); + if (cellSize == 0) + cellSize = canvasSize / gridSize; + context.strokeStyle = lineColor; + context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + context.fillStyle = cell.live ? liveColor : deadColor; + context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + } + function createDrawingContext() { + var canvas = document.getElementById('conway-canvas'); + if (canvas == null) { + canvas = document.createElement('canvas'); + canvas.id = "conway-canvas"; + canvas.width = canvasSize; + canvas.height = canvasSize; + document.body.appendChild(canvas); + } + return canvas.getContext('2d'); + } + }); +})(Conway || (Conway = {})); +var game = new Conway.GameOfLife(); diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/deep/employee.js b/src/vs/workbench/services/files/test/node/fixtures/service/deep/employee.js index 1f4cc1b1ea7..69c58aa5c87 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/service/deep/employee.js +++ b/src/vs/workbench/services/files/test/node/fixtures/service/deep/employee.js @@ -1,38 +1,38 @@ -'use strict'; -var Workforce; -(function (Workforce) { - var Employee = (function () { - function Employee() { - } - return Employee; - })(); - (property); - name: string, property; - basepay: number; - implements; - IEmployee; - { - name; - basepay; - } - var SalesEmployee = (function () { - function SalesEmployee() { - } - return SalesEmployee; - })(); - (); - Employee(name, basepay); - { - function calculatePay() { - var multiplier = (document.getElementById("mult")), as = any, value; - return _super.calculatePay.call(this) * multiplier + bonus; - } - } - var employee = new Employee('Bob', 1000); - var salesEmployee = new SalesEmployee('Jim', 800, 400); - salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee -})(Workforce || (Workforce = {})); -extern; -var $; -var s = Workforce.salesEmployee.calculatePay(); -$('#results').text(s); +'use strict'; +var Workforce; +(function (Workforce) { + var Employee = (function () { + function Employee() { + } + return Employee; + })(); + (property); + name: string, property; + basepay: number; + implements; + IEmployee; + { + name; + basepay; + } + var SalesEmployee = (function () { + function SalesEmployee() { + } + return SalesEmployee; + })(); + (); + Employee(name, basepay); + { + function calculatePay() { + var multiplier = (document.getElementById("mult")), as = any, value; + return _super.calculatePay.call(this) * multiplier + bonus; + } + } + var employee = new Employee('Bob', 1000); + var salesEmployee = new SalesEmployee('Jim', 800, 400); + salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee +})(Workforce || (Workforce = {})); +extern; +var $; +var s = Workforce.salesEmployee.calculatePay(); +$('#results').text(s); diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/deep/small.js b/src/vs/workbench/services/files/test/node/fixtures/service/deep/small.js index ba777851242..5e57b4c9439 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/service/deep/small.js +++ b/src/vs/workbench/services/files/test/node/fixtures/service/deep/small.js @@ -1,24 +1,24 @@ -'use strict'; -var M; -(function (M) { - var C = (function () { - function C() { - } - return C; - })(); - (function (x, property, number) { - if (property === void 0) { property = w; } - var local = 1; - // unresolved symbol because x is local - //self.x++; - self.w--; // ok because w is a property - property; - f = function (y) { - return y + x + local + w + self.w; - }; - function sum(z) { - return z + f(z) + w + self.w; - } - }); -})(M || (M = {})); -var c = new M.C(12, 5); +'use strict'; +var M; +(function (M) { + var C = (function () { + function C() { + } + return C; + })(); + (function (x, property, number) { + if (property === void 0) { property = w; } + var local = 1; + // unresolved symbol because x is local + //self.x++; + self.w--; // ok because w is a property + property; + f = function (y) { + return y + x + local + w + self.w; + }; + function sum(z) { + return z + f(z) + w + self.w; + } + }); +})(M || (M = {})); +var c = new M.C(12, 5); diff --git a/src/vs/workbench/services/files/test/node/fixtures/service/index.html b/src/vs/workbench/services/files/test/node/fixtures/service/index.html index c037f44fb6c..bccd24d9272 100644 --- a/src/vs/workbench/services/files/test/node/fixtures/service/index.html +++ b/src/vs/workbench/services/files/test/node/fixtures/service/index.html @@ -1,121 +1,121 @@ - - - - - Strada - - - - - - - - -

TypeScript

-
- - -
- - -
- -
Press 'run' to execute code...
-
...write your results into #results...
-
- - - + + + + + Strada + + + + + + + + +

TypeScript

+
+ + +
+ + +
+ +
Press 'run' to execute code...
+
...write your results into #results...
+
+ + + diff --git a/src/vs/workbench/services/search/test/node/fixtures/examples/NullPoinderException.js b/src/vs/workbench/services/search/test/node/fixtures/examples/NullPoinderException.js index adcf3923edc..b4905089c23 100644 --- a/src/vs/workbench/services/search/test/node/fixtures/examples/NullPoinderException.js +++ b/src/vs/workbench/services/search/test/node/fixtures/examples/NullPoinderException.js @@ -1,118 +1,118 @@ -// CamelCase -'use strict'; -var Conway; -(function (Conway) { - var Cell = (function () { - function Cell() { - } - return Cell; - })(); - (function (property, number, property, number, property, boolean) { - if (property === void 0) { property = row; } - if (property === void 0) { property = col; } - if (property === void 0) { property = live; } - }); - var GameOfLife = (function () { - function GameOfLife() { - } - return GameOfLife; - })(); - (function () { - property; - gridSize = 50; - property; - canvasSize = 600; - property; - lineColor = '#cdcdcd'; - property; - liveColor = '#666'; - property; - deadColor = '#eee'; - property; - initialLifeProbability = 0.5; - property; - animationRate = 60; - property; - cellSize = 0; - property; - context: ICanvasRenderingContext2D; - property; - world = createWorld(); - circleOfLife(); - function createWorld() { - return travelWorld(function (cell) { - cell.live = Math.random() < initialLifeProbability; - return cell; - }); - } - function circleOfLife() { - world = travelWorld(function (cell) { - cell = world[cell.row][cell.col]; - draw(cell); - return resolveNextGeneration(cell); - }); - setTimeout(function () { circleOfLife(); }, animationRate); - } - function resolveNextGeneration(cell) { - var count = countNeighbors(cell); - var newCell = new Cell(cell.row, cell.col, cell.live); - if (count < 2 || count > 3) - newCell.live = false; - else if (count == 3) - newCell.live = true; - return newCell; - } - function countNeighbors(cell) { - var neighbors = 0; - for (var row = -1; row <= 1; row++) { - for (var col = -1; col <= 1; col++) { - if (row == 0 && col == 0) - continue; - if (isAlive(cell.row + row, cell.col + col)) { - neighbors++; - } - } - } - return neighbors; - } - function isAlive(row, col) { - // todo - need to guard with worl[row] exists? - if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) - return false; - return world[row][col].live; - } - function travelWorld(callback) { - var result = []; - for (var row = 0; row < gridSize; row++) { - var rowData = []; - for (var col = 0; col < gridSize; col++) { - rowData.push(callback(new Cell(row, col, false))); - } - result.push(rowData); - } - return result; - } - function draw(cell) { - if (context == null) - context = createDrawingContext(); - if (cellSize == 0) - cellSize = canvasSize / gridSize; - context.strokeStyle = lineColor; - context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - context.fillStyle = cell.live ? liveColor : deadColor; - context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); - } - function createDrawingContext() { - var canvas = document.getElementById('conway-canvas'); - if (canvas == null) { - canvas = document.createElement('canvas'); - canvas.id = "conway-canvas"; - canvas.width = canvasSize; - canvas.height = canvasSize; - document.body.appendChild(canvas); - } - return canvas.getContext('2d'); - } - }); -})(Conway || (Conway = {})); -var game = new Conway.GameOfLife(); +// CamelCase +'use strict'; +var Conway; +(function (Conway) { + var Cell = (function () { + function Cell() { + } + return Cell; + })(); + (function (property, number, property, number, property, boolean) { + if (property === void 0) { property = row; } + if (property === void 0) { property = col; } + if (property === void 0) { property = live; } + }); + var GameOfLife = (function () { + function GameOfLife() { + } + return GameOfLife; + })(); + (function () { + property; + gridSize = 50; + property; + canvasSize = 600; + property; + lineColor = '#cdcdcd'; + property; + liveColor = '#666'; + property; + deadColor = '#eee'; + property; + initialLifeProbability = 0.5; + property; + animationRate = 60; + property; + cellSize = 0; + property; + context: ICanvasRenderingContext2D; + property; + world = createWorld(); + circleOfLife(); + function createWorld() { + return travelWorld(function (cell) { + cell.live = Math.random() < initialLifeProbability; + return cell; + }); + } + function circleOfLife() { + world = travelWorld(function (cell) { + cell = world[cell.row][cell.col]; + draw(cell); + return resolveNextGeneration(cell); + }); + setTimeout(function () { circleOfLife(); }, animationRate); + } + function resolveNextGeneration(cell) { + var count = countNeighbors(cell); + var newCell = new Cell(cell.row, cell.col, cell.live); + if (count < 2 || count > 3) + newCell.live = false; + else if (count == 3) + newCell.live = true; + return newCell; + } + function countNeighbors(cell) { + var neighbors = 0; + for (var row = -1; row <= 1; row++) { + for (var col = -1; col <= 1; col++) { + if (row == 0 && col == 0) + continue; + if (isAlive(cell.row + row, cell.col + col)) { + neighbors++; + } + } + } + return neighbors; + } + function isAlive(row, col) { + // todo - need to guard with worl[row] exists? + if (row < 0 || col < 0 || row >= gridSize || col >= gridSize) + return false; + return world[row][col].live; + } + function travelWorld(callback) { + var result = []; + for (var row = 0; row < gridSize; row++) { + var rowData = []; + for (var col = 0; col < gridSize; col++) { + rowData.push(callback(new Cell(row, col, false))); + } + result.push(rowData); + } + return result; + } + function draw(cell) { + if (context == null) + context = createDrawingContext(); + if (cellSize == 0) + cellSize = canvasSize / gridSize; + context.strokeStyle = lineColor; + context.strokeRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + context.fillStyle = cell.live ? liveColor : deadColor; + context.fillRect(cell.row * cellSize, cell.col * cellSize, cellSize, cellSize); + } + function createDrawingContext() { + var canvas = document.getElementById('conway-canvas'); + if (canvas == null) { + canvas = document.createElement('canvas'); + canvas.id = "conway-canvas"; + canvas.width = canvasSize; + canvas.height = canvasSize; + document.body.appendChild(canvas); + } + return canvas.getContext('2d'); + } + }); +})(Conway || (Conway = {})); +var game = new Conway.GameOfLife(); diff --git a/src/vs/workbench/services/search/test/node/fixtures/examples/company.js b/src/vs/workbench/services/search/test/node/fixtures/examples/company.js index 107f3438401..ca4a62bf248 100644 --- a/src/vs/workbench/services/search/test/node/fixtures/examples/company.js +++ b/src/vs/workbench/services/search/test/node/fixtures/examples/company.js @@ -1,23 +1,23 @@ -'use strict'; -/// -var Workforce; -(function (Workforce_1) { - var Company = (function () { - function Company() { - } - return Company; - })(); - (function (property, Workforce, IEmployee) { - if (property === void 0) { property = employees; } - if (IEmployee === void 0) { IEmployee = []; } - property; - calculateMonthlyExpenses(); - { - var result = 0; - for (var i = 0; i < employees.length; i++) { - result += employees[i].calculatePay(); - } - return result; - } - }); -})(Workforce || (Workforce = {})); +'use strict'; +/// +var Workforce; +(function (Workforce_1) { + var Company = (function () { + function Company() { + } + return Company; + })(); + (function (property, Workforce, IEmployee) { + if (property === void 0) { property = employees; } + if (IEmployee === void 0) { IEmployee = []; } + property; + calculateMonthlyExpenses(); + { + var result = 0; + for (var i = 0; i < employees.length; i++) { + result += employees[i].calculatePay(); + } + return result; + } + }); +})(Workforce || (Workforce = {})); diff --git a/src/vs/workbench/services/search/test/node/fixtures/examples/employee.js b/src/vs/workbench/services/search/test/node/fixtures/examples/employee.js index b24047b033b..9dea3e1adf7 100644 --- a/src/vs/workbench/services/search/test/node/fixtures/examples/employee.js +++ b/src/vs/workbench/services/search/test/node/fixtures/examples/employee.js @@ -1,11190 +1,11190 @@ -'use strict'; -var Workforce; -(function (Workforce) { - var Employee = (function () { - function Employee() { - } - return Employee; - })(); - (property); - name: string, property; - basepay: number; - implements; - IEmployee; - { - name; - basepay; - } - var SalesEmployee = (function () { - function SalesEmployee() { - } - return SalesEmployee; - })(); - (); - Employee(name, basepay); - { - function calculatePay() { - var multiplier = (document.getElementById("mult")), as = any, value; - return _super.calculatePay.call(this) * multiplier + bonus; - } - } - var employee = new Employee('Bob', 1000); - var salesEmployee = new SalesEmployee('Jim', 800, 400); - salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee -})(Workforce || (Workforce = {})); -extern; -var $; -var s = Workforce.salesEmployee.calculatePay(); -$('#results').text(s); -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; -a; +'use strict'; +var Workforce; +(function (Workforce) { + var Employee = (function () { + function Employee() { + } + return Employee; + })(); + (property); + name: string, property; + basepay: number; + implements; + IEmployee; + { + name; + basepay; + } + var SalesEmployee = (function () { + function SalesEmployee() { + } + return SalesEmployee; + })(); + (); + Employee(name, basepay); + { + function calculatePay() { + var multiplier = (document.getElementById("mult")), as = any, value; + return _super.calculatePay.call(this) * multiplier + bonus; + } + } + var employee = new Employee('Bob', 1000); + var salesEmployee = new SalesEmployee('Jim', 800, 400); + salesEmployee.calclatePay(); // error: No member 'calclatePay' on SalesEmployee +})(Workforce || (Workforce = {})); +extern; +var $; +var s = Workforce.salesEmployee.calculatePay(); +$('#results').text(s); +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; +a; diff --git a/src/vs/workbench/services/search/test/node/fixtures/examples/small.js b/src/vs/workbench/services/search/test/node/fixtures/examples/small.js index ba777851242..5e57b4c9439 100644 --- a/src/vs/workbench/services/search/test/node/fixtures/examples/small.js +++ b/src/vs/workbench/services/search/test/node/fixtures/examples/small.js @@ -1,24 +1,24 @@ -'use strict'; -var M; -(function (M) { - var C = (function () { - function C() { - } - return C; - })(); - (function (x, property, number) { - if (property === void 0) { property = w; } - var local = 1; - // unresolved symbol because x is local - //self.x++; - self.w--; // ok because w is a property - property; - f = function (y) { - return y + x + local + w + self.w; - }; - function sum(z) { - return z + f(z) + w + self.w; - } - }); -})(M || (M = {})); -var c = new M.C(12, 5); +'use strict'; +var M; +(function (M) { + var C = (function () { + function C() { + } + return C; + })(); + (function (x, property, number) { + if (property === void 0) { property = w; } + var local = 1; + // unresolved symbol because x is local + //self.x++; + self.w--; // ok because w is a property + property; + f = function (y) { + return y + x + local + w + self.w; + }; + function sum(z) { + return z + f(z) + w + self.w; + } + }); +})(M || (M = {})); +var c = new M.C(12, 5); diff --git a/src/vs/workbench/services/search/test/node/fixtures/index.html b/src/vs/workbench/services/search/test/node/fixtures/index.html index c037f44fb6c..bccd24d9272 100644 --- a/src/vs/workbench/services/search/test/node/fixtures/index.html +++ b/src/vs/workbench/services/search/test/node/fixtures/index.html @@ -1,121 +1,121 @@ - - - - - Strada - - - - - - - - -

TypeScript

-
- - -
- - -
- -
Press 'run' to execute code...
-
...write your results into #results...
-
- - - + + + + + Strada + + + + + + + + +

TypeScript

+
+ + +
+ + +
+ +
Press 'run' to execute code...
+
...write your results into #results...
+
+ + + diff --git a/src/vs/workbench/services/search/test/node/fixtures/site.css b/src/vs/workbench/services/search/test/node/fixtures/site.css index 1a988422de7..cbd1fe228a2 100644 --- a/src/vs/workbench/services/search/test/node/fixtures/site.css +++ b/src/vs/workbench/services/search/test/node/fixtures/site.css @@ -1,35 +1,35 @@ -/*---------------------------------------------------------- -The base color for this template is #5c87b2. If you'd like -to use a different color start by replacing all instances of -#5c87b2 with your new color. -----------------------------------------------------------*/ -body -{ - background-color: #5c87b2; - font-size: .75em; - font-family: Segoe UI, Verdana, Helvetica, Sans-Serif; - margin: 8px; - padding: 0; - color: #696969; -} - -h1, h2, h3, h4, h5, h6 -{ - color: #000; - font-size: 40px; - margin: 0px; -} - -textarea -{ - font-family: Consolas -} - -#results -{ - margin-top: 2em; - margin-left: 2em; - color: black; - font-size: medium; -} - +/*---------------------------------------------------------- +The base color for this template is #5c87b2. If you'd like +to use a different color start by replacing all instances of +#5c87b2 with your new color. +----------------------------------------------------------*/ +body +{ + background-color: #5c87b2; + font-size: .75em; + font-family: Segoe UI, Verdana, Helvetica, Sans-Serif; + margin: 8px; + padding: 0; + color: #696969; +} + +h1, h2, h3, h4, h5, h6 +{ + color: #000; + font-size: 40px; + margin: 0px; +} + +textarea +{ + font-family: Consolas +} + +#results +{ + margin-top: 2em; + margin-left: 2em; + color: black; + font-size: medium; +} + From ea174055487829ce7d12c1a442d622f2ae59b58d Mon Sep 17 00:00:00 2001 From: Aldo Donetti Date: Mon, 5 Mar 2018 13:42:20 +0100 Subject: [PATCH 061/658] removed space - marketplace is only one word as per feedback received from the community localization effort - https://www.transifex.com/microsoft-oss/vscode-editor/ --- .../extensionManagement/node/extensionManagementService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index e5a909c7a73..ae4944b1d78 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -256,7 +256,7 @@ export class ExtensionManagementService extends Disposable implements IExtension () => this.installFromGallery(galleryExtension), e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); } - return TPromise.wrapError(new Error(nls.localize('Not Market place extension', "Only Market place Extensions can be reinstalled"))); + return TPromise.wrapError(new Error(nls.localize('Not a Marketplace extension', "Only Marketplace Extensions can be reinstalled"))); }); } @@ -855,4 +855,4 @@ export function getLocalExtensionIdFromGallery(extension: IGalleryExtension, ver export function getLocalExtensionIdFromManifest(manifest: IExtensionManifest): string { return getLocalExtensionId(getGalleryExtensionId(manifest.publisher, manifest.name), manifest.version); -} \ No newline at end of file +} From b18d49525037e1652583f3b2ade9316c2fba8d53 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 5 Mar 2018 19:10:59 +0100 Subject: [PATCH 062/658] fixes #45069 --- src/vs/code/electron-main/menus.ts | 5 ++++- src/vs/platform/update/common/update.ts | 6 +++--- src/vs/platform/update/common/updateIpc.ts | 6 +++--- .../update/electron-main/abstractUpdateService.ts | 8 ++++---- .../update/electron-main/updateService.darwin.ts | 6 +++--- .../platform/update/electron-main/updateService.linux.ts | 8 ++++---- .../platform/update/electron-main/updateService.win32.ts | 8 ++++---- src/vs/workbench/parts/update/electron-browser/update.ts | 9 ++++++--- 8 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/vs/code/electron-main/menus.ts b/src/vs/code/electron-main/menus.ts index 8d21c881d58..442e70d33c9 100644 --- a/src/vs/code/electron-main/menus.ts +++ b/src/vs/code/electron-main/menus.ts @@ -1055,7 +1055,10 @@ export class CodeMenu { return [new MenuItem({ label: nls.localize('miCheckForUpdates', "Check for Updates..."), click: () => setTimeout(() => { this.reportMenuActionTelemetry('CheckForUpdate'); - this.updateService.checkForUpdates(true); + + const focusedWindow = this.windowsMainService.getFocusedWindow(); + const context = focusedWindow ? { windowId: focusedWindow.id } : null; + this.updateService.checkForUpdates(context); }, 0) })]; diff --git a/src/vs/platform/update/common/update.ts b/src/vs/platform/update/common/update.ts index 8ce018cb411..45688bb9418 100644 --- a/src/vs/platform/update/common/update.ts +++ b/src/vs/platform/update/common/update.ts @@ -50,7 +50,7 @@ export enum StateType { export type Uninitialized = { type: StateType.Uninitialized }; export type Idle = { type: StateType.Idle }; -export type CheckingForUpdates = { type: StateType.CheckingForUpdates, explicit: boolean }; +export type CheckingForUpdates = { type: StateType.CheckingForUpdates, context: any }; export type AvailableForDownload = { type: StateType.AvailableForDownload, update: IUpdate }; export type Downloading = { type: StateType.Downloading, update: IUpdate }; export type Downloaded = { type: StateType.Downloaded, update: IUpdate }; @@ -62,7 +62,7 @@ export type State = Uninitialized | Idle | CheckingForUpdates | AvailableForDown export const State = { Uninitialized: { type: StateType.Uninitialized } as Uninitialized, Idle: { type: StateType.Idle } as Idle, - CheckingForUpdates: (explicit: boolean) => ({ type: StateType.CheckingForUpdates, explicit } as CheckingForUpdates), + CheckingForUpdates: (context: any) => ({ type: StateType.CheckingForUpdates, context } as CheckingForUpdates), AvailableForDownload: (update: IUpdate) => ({ type: StateType.AvailableForDownload, update } as AvailableForDownload), Downloading: (update: IUpdate) => ({ type: StateType.Downloading, update } as Downloading), Downloaded: (update: IUpdate) => ({ type: StateType.Downloaded, update } as Downloaded), @@ -85,7 +85,7 @@ export interface IUpdateService { readonly onStateChange: Event; readonly state: State; - checkForUpdates(explicit: boolean): TPromise; + checkForUpdates(context: any): TPromise; downloadUpdate(): TPromise; applyUpdate(): TPromise; quitAndInstall(): TPromise; diff --git a/src/vs/platform/update/common/updateIpc.ts b/src/vs/platform/update/common/updateIpc.ts index 441bdd138e1..b52dbc115d2 100644 --- a/src/vs/platform/update/common/updateIpc.ts +++ b/src/vs/platform/update/common/updateIpc.ts @@ -12,7 +12,7 @@ import { onUnexpectedError } from 'vs/base/common/errors'; import { IUpdateService, State } from './update'; export interface IUpdateChannel extends IChannel { - call(command: 'checkForUpdates', arg: boolean): TPromise; + call(command: 'checkForUpdates', arg: any): TPromise; call(command: 'downloadUpdate'): TPromise; call(command: 'applyUpdate'): TPromise; call(command: 'quitAndInstall'): TPromise; @@ -62,8 +62,8 @@ export class UpdateChannelClient implements IUpdateService { }, onUnexpectedError); } - checkForUpdates(explicit: boolean): TPromise { - return this.channel.call('checkForUpdates', explicit); + checkForUpdates(context: any): TPromise { + return this.channel.call('checkForUpdates', context); } downloadUpdate(): TPromise { diff --git a/src/vs/platform/update/electron-main/abstractUpdateService.ts b/src/vs/platform/update/electron-main/abstractUpdateService.ts index 04e3ccdfeb3..c947ebba306 100644 --- a/src/vs/platform/update/electron-main/abstractUpdateService.ts +++ b/src/vs/platform/update/electron-main/abstractUpdateService.ts @@ -81,7 +81,7 @@ export abstract class AbstractUpdateService implements IUpdateService { private scheduleCheckForUpdates(delay = 60 * 60 * 1000): TPromise { return TPromise.timeout(delay) - .then(() => this.checkForUpdates()) + .then(() => this.checkForUpdates(null)) .then(update => { if (update) { // Update found, no need to check more @@ -93,14 +93,14 @@ export abstract class AbstractUpdateService implements IUpdateService { }); } - checkForUpdates(explicit = false): TPromise { + checkForUpdates(context: any): TPromise { this.logService.trace('update#checkForUpdates, state = ', this.state.type); if (this.state.type !== StateType.Idle) { return TPromise.as(null); } - return this.throttler.queue(() => TPromise.as(this.doCheckForUpdates(explicit))); + return this.throttler.queue(() => TPromise.as(this.doCheckForUpdates(context))); } downloadUpdate(): TPromise { @@ -158,5 +158,5 @@ export abstract class AbstractUpdateService implements IUpdateService { } protected abstract setUpdateFeedUrl(quality: string): boolean; - protected abstract doCheckForUpdates(explicit: boolean): void; + protected abstract doCheckForUpdates(context: any): void; } diff --git a/src/vs/platform/update/electron-main/updateService.darwin.ts b/src/vs/platform/update/electron-main/updateService.darwin.ts index 25d9cf28beb..cde35fe74f7 100644 --- a/src/vs/platform/update/electron-main/updateService.darwin.ts +++ b/src/vs/platform/update/electron-main/updateService.darwin.ts @@ -59,8 +59,8 @@ export class DarwinUpdateService extends AbstractUpdateService { return true; } - protected doCheckForUpdates(explicit: boolean): void { - this.setState(State.CheckingForUpdates(explicit)); + protected doCheckForUpdates(context: any): void { + this.setState(State.CheckingForUpdates(context)); electron.autoUpdater.checkForUpdates(); } @@ -97,7 +97,7 @@ export class DarwinUpdateService extends AbstractUpdateService { "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } } */ - this.telemetryService.publicLog('update:notAvailable', { explicit: this.state.explicit }); + this.telemetryService.publicLog('update:notAvailable', { explicit: !!this.state.context }); this.setState(State.Idle); } diff --git a/src/vs/platform/update/electron-main/updateService.linux.ts b/src/vs/platform/update/electron-main/updateService.linux.ts index 7b0ece17fe3..a87f49d45fa 100644 --- a/src/vs/platform/update/electron-main/updateService.linux.ts +++ b/src/vs/platform/update/electron-main/updateService.linux.ts @@ -40,12 +40,12 @@ export class LinuxUpdateService extends AbstractUpdateService { return true; } - protected doCheckForUpdates(explicit: boolean): void { + protected doCheckForUpdates(context: any): void { if (!this.url) { return; } - this.setState(State.CheckingForUpdates(explicit)); + this.setState(State.CheckingForUpdates(context)); this.requestService.request({ url: this.url }) .then(asJson) @@ -56,7 +56,7 @@ export class LinuxUpdateService extends AbstractUpdateService { "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } } */ - this.telemetryService.publicLog('update:notAvailable', { explicit }); + this.telemetryService.publicLog('update:notAvailable', { explicit: !!context }); this.setState(State.Idle); } else { @@ -71,7 +71,7 @@ export class LinuxUpdateService extends AbstractUpdateService { "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } } */ - this.telemetryService.publicLog('update:notAvailable', { explicit }); + this.telemetryService.publicLog('update:notAvailable', { explicit: !!context }); this.setState(State.Idle); }); } diff --git a/src/vs/platform/update/electron-main/updateService.win32.ts b/src/vs/platform/update/electron-main/updateService.win32.ts index ef20367626c..d0421d5ba37 100644 --- a/src/vs/platform/update/electron-main/updateService.win32.ts +++ b/src/vs/platform/update/electron-main/updateService.win32.ts @@ -76,12 +76,12 @@ export class Win32UpdateService extends AbstractUpdateService { return true; } - protected doCheckForUpdates(explicit: boolean): void { + protected doCheckForUpdates(context: any): void { if (!this.url) { return; } - this.setState(State.CheckingForUpdates(explicit)); + this.setState(State.CheckingForUpdates(context)); this.requestService.request({ url: this.url }) .then(asJson) @@ -92,7 +92,7 @@ export class Win32UpdateService extends AbstractUpdateService { "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } } */ - this.telemetryService.publicLog('update:notAvailable', { explicit }); + this.telemetryService.publicLog('update:notAvailable', { explicit: !!context }); this.setState(State.Idle); return TPromise.as(null); @@ -137,7 +137,7 @@ export class Win32UpdateService extends AbstractUpdateService { "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } } */ - this.telemetryService.publicLog('update:notAvailable', { explicit }); + this.telemetryService.publicLog('update:notAvailable', { explicit: !!context }); this.setState(State.Idle); }); } diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index 0421848d583..467c5b27d45 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -33,6 +33,7 @@ import { OS } from 'vs/base/common/platform'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IWindowService } from 'vs/platform/windows/common/windows'; const NotNowAction = new Action( 'update.later', @@ -299,7 +300,8 @@ export class UpdateContribution implements IGlobalActivity { @IChoiceService private choiceService: IChoiceService, @IUpdateService private updateService: IUpdateService, @IWorkbenchEditorService editorService: IWorkbenchEditorService, - @IActivityService private activityService: IActivityService + @IActivityService private activityService: IActivityService, + @IWindowService private windowService: IWindowService ) { this.state = updateService.state; @@ -327,7 +329,7 @@ export class UpdateContribution implements IGlobalActivity { private onUpdateStateChange(state: UpdateState): void { switch (state.type) { case StateType.Idle: - if (this.state.type === StateType.CheckingForUpdates && this.state.explicit) { + if (this.state.type === StateType.CheckingForUpdates && this.state.context && this.state.context.windowId === this.windowService.getCurrentWindowId()) { this.onUpdateNotAvailable(); } break; @@ -492,8 +494,9 @@ export class UpdateContribution implements IGlobalActivity { return null; case StateType.Idle: + const windowId = this.windowService.getCurrentWindowId(); return new Action('update.check', nls.localize('checkForUpdates', "Check for Updates..."), undefined, true, () => - this.updateService.checkForUpdates(true)); + this.updateService.checkForUpdates({ windowId })); case StateType.CheckingForUpdates: return new Action('update.checking', nls.localize('checkingForUpdates', "Checking For Updates..."), undefined, false); From 6e1574671a1ea811389a0498abc2d23e89718d4e Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Mon, 5 Mar 2018 10:21:31 -0800 Subject: [PATCH 063/658] Use copy of config object to avoid making changes to the readonly objects --- extensions/emmet/src/util.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/emmet/src/util.ts b/extensions/emmet/src/util.ts index cab79c9be04..e9f21c463ae 100644 --- a/extensions/emmet/src/util.ts +++ b/extensions/emmet/src/util.ts @@ -309,7 +309,7 @@ export function sameNodes(node1: Node, node2: Node): boolean { export function getEmmetConfiguration(syntax: string) { const emmetConfig = vscode.workspace.getConfiguration('emmet'); const syntaxProfiles = Object.assign({}, emmetConfig['syntaxProfiles'] || {}); - + const preferences = Object.assign({}, emmetConfig['preferences'] || {}); // jsx, xml and xsl syntaxes need to have self closing tags unless otherwise configured by user if (syntax === 'jsx' || syntax === 'xml' || syntax === 'xsl') { syntaxProfiles[syntax] = syntaxProfiles[syntax] || {}; @@ -322,7 +322,7 @@ export function getEmmetConfiguration(syntax: string) { } return { - preferences: emmetConfig['preferences'], + preferences, showExpandedAbbreviation: emmetConfig['showExpandedAbbreviation'], showAbbreviationSuggestions: emmetConfig['showAbbreviationSuggestions'], syntaxProfiles, From efaeeabd6b0f1d85c899417fb158ac4e09690969 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 5 Mar 2018 10:22:01 -0800 Subject: [PATCH 064/658] Only reset terminal layout when orientation changes Fixes #45074 --- .../parts/terminal/electron-browser/terminalTab.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalTab.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalTab.ts index cc31945959f..569d67778ba 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalTab.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalTab.ts @@ -419,14 +419,18 @@ export class TerminalTab extends Disposable implements ITerminalTab { if (this._splitPaneContainer) { // Check if the panel position changed and rotate panes if so const newPanelPosition = this._partService.getPanelPosition(); - if (newPanelPosition !== this._panelPosition) { + const panelPositionChanged = newPanelPosition !== this._panelPosition; + if (panelPositionChanged) { const newOrientation = newPanelPosition === Position.BOTTOM ? Orientation.HORIZONTAL : Orientation.VERTICAL; this._splitPaneContainer.setOrientation(newOrientation); this._panelPosition = newPanelPosition; } this._splitPaneContainer.layout(width, height); - this._splitPaneContainer.resetSize(); + + if (panelPositionChanged) { + this._splitPaneContainer.resetSize(); + } } } From a1b7b1f04bd54fd0a3147103e99a22bc15f6e66f Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 5 Mar 2018 10:57:26 -0800 Subject: [PATCH 065/658] Fix alt+mouse cursor in terminal Fixes #44586 --- .../parts/terminal/electron-browser/media/terminal.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/media/terminal.css b/src/vs/workbench/parts/terminal/electron-browser/media/terminal.css index 51d95f40e10..53ac1c4fc1b 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/media/terminal.css +++ b/src/vs/workbench/parts/terminal/electron-browser/media/terminal.css @@ -161,8 +161,8 @@ .vs-dark .monaco-workbench .terminal-action.split, .hc-black .monaco-workbench .terminal-action.split { background: url('split-inverse.svg') center center no-repeat; } .vs-dark .monaco-workbench .panel.right .terminal-action.split, .hc-black .monaco-workbench .panel.right .terminal-action.split { background: url('split-horizontal-inverse.svg') center center no-repeat; } -.vs-dark .monaco-workbench.mac .panel.integrated-terminal .terminal:not(.enable-mouse-events), -.hc-black .monaco-workbench.mac .panel.integrated-terminal .terminal:not(.enable-mouse-events) { +.vs-dark .monaco-workbench.mac .panel.integrated-terminal .terminal-outer-container:not(.alt-active) .terminal:not(.enable-mouse-events), +.hc-black .monaco-workbench.mac .panel.integrated-terminal .terminal-outer-container:not(.alt-active) .terminal:not(.enable-mouse-events) { cursor: -webkit-image-set(url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=') 1x, url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC') 2x) 5 8, text; } From 4024f2cca155b5f6377fd0aae3739a0b04c77f5f Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Mon, 5 Mar 2018 11:21:21 -0800 Subject: [PATCH 066/658] Fix #44914. No monaco-shell in monaco. --- src/vs/editor/contrib/colorPicker/colorPicker.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/colorPicker/colorPicker.css b/src/vs/editor/contrib/colorPicker/colorPicker.css index 3a2e010a707..68fff1fc3da 100644 --- a/src/vs/editor/contrib/colorPicker/colorPicker.css +++ b/src/vs/editor/contrib/colorPicker/colorPicker.css @@ -8,7 +8,7 @@ user-select: none; } -.monaco-shell .colorpicker-hover[tabindex="0"]:focus { +.monaco-editor .colorpicker-hover[tabindex="0"]:focus { outline: none; } From 6f8a39fe9b9bf1f0d2b045811a4886206ae1ec66 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 5 Mar 2018 11:36:51 -0800 Subject: [PATCH 067/658] Alt click in terminal only move horizontally in normal buffer Fixes #44642 --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f9ef0b68698..1f5f1dabe23 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "vscode-debugprotocol": "1.27.0", "vscode-ripgrep": "0.7.1-patch.0.1", "vscode-textmate": "^3.2.0", - "vscode-xterm": "3.2.0-beta7", + "vscode-xterm": "3.3.0-beta2", "yauzl": "2.8.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index f1a077903d4..55eaa3c722d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5992,9 +5992,9 @@ vscode-textmate@^3.2.0: fast-plist "^0.1.2" oniguruma "^6.0.1" -vscode-xterm@3.2.0-beta7: - version "3.2.0-beta7" - resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.2.0-beta7.tgz#352b33a17c31911d90b9c3bcfd1822800b32c8ed" +vscode-xterm@3.3.0-beta2: + version "3.3.0-beta2" + resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.3.0-beta2.tgz#b3b90cdf1fada306662a1eacf43e1d38229aa254" vso-node-api@^6.1.2-preview: version "6.1.2-preview" From f9aa0e062c719e1dfd686be104b9abfd71251688 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 10:01:33 -0800 Subject: [PATCH 068/658] Proper fix for markdown font csp Forgot to save on 6f57929bdb86c72619f36bc9e5537ca9528f1850 --- extensions/markdown/src/features/previewContentProvider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/markdown/src/features/previewContentProvider.ts b/extensions/markdown/src/features/previewContentProvider.ts index f3e56c08e03..f0dd43ff28e 100644 --- a/extensions/markdown/src/features/previewContentProvider.ts +++ b/extensions/markdown/src/features/previewContentProvider.ts @@ -174,14 +174,14 @@ export class MarkdownContentProvider { private getCspForResource(resource: vscode.Uri, nonce: string): string { switch (this.cspArbiter.getSecurityLevelForResource(resource)) { case MarkdownPreviewSecurityLevel.AllowInsecureContent: - return ``; + return ``; case MarkdownPreviewSecurityLevel.AllowScriptsAndAllContent: return ''; case MarkdownPreviewSecurityLevel.Strict: default: - return ``; + return ``; } } } From e5b1420d149c935c7a21e86eb57a37ac0c1b338d Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 10:09:56 -0800 Subject: [PATCH 069/658] Create basic webpack for markdown preview --- extensions/markdown/.gitignore | 1 + extensions/markdown/media/main.js | 344 - extensions/markdown/package-lock.json | 8463 +++++++++++++++++ extensions/markdown/package.json | 12 +- extensions/markdown/preview-src/index.ts | 310 + extensions/markdown/preview-src/tsconfig.json | 10 + .../src/features/previewContentProvider.ts | 2 +- extensions/markdown/webpack.config.js | 26 + extensions/markdown/yarn.lock | 3964 +++++++- 9 files changed, 12743 insertions(+), 389 deletions(-) create mode 100644 extensions/markdown/.gitignore delete mode 100644 extensions/markdown/media/main.js create mode 100644 extensions/markdown/package-lock.json create mode 100644 extensions/markdown/preview-src/index.ts create mode 100644 extensions/markdown/preview-src/tsconfig.json create mode 100644 extensions/markdown/webpack.config.js diff --git a/extensions/markdown/.gitignore b/extensions/markdown/.gitignore new file mode 100644 index 00000000000..b3ad8e7973d --- /dev/null +++ b/extensions/markdown/.gitignore @@ -0,0 +1 @@ +media/bundle.js \ No newline at end of file diff --git a/extensions/markdown/media/main.js b/extensions/markdown/media/main.js deleted file mode 100644 index cd431880016..00000000000 --- a/extensions/markdown/media/main.js +++ /dev/null @@ -1,344 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -// @ts-check -'use strict'; - -(function () { - // From https://remysharp.com/2010/07/21/throttling-function-calls - function throttle(fn, threshhold, scope) { - threshhold || (threshhold = 250); - var last, deferTimer; - return function () { - var context = scope || this; - - var now = +new Date, - args = arguments; - if (last && now < last + threshhold) { - // hold on to it - clearTimeout(deferTimer); - deferTimer = setTimeout(function () { - last = now; - fn.apply(context, args); - }, threshhold + last - now); - } else { - last = now; - fn.apply(context, args); - } - }; - } - - /** - * @param {number} min - * @param {number} max - * @param {number} value - */ - function clamp(min, max, value) { - return Math.min(max, Math.max(min, value)); - } - - /** - * @param {number} line - */ - function clampLine(line) { - return clamp(0, settings.lineCount - 1, line); - } - - /** - * Post a message to the markdown extension - * - * @param {string} type - * @param {object} body - */ - function postMessage(type, body) { - window.parent.postMessage({ - type, - source: settings.source, - body - }, '*'); - } - - /** - * Post a command to be executed to the markdown extension - * - * @param {string} command - * @param {any[]} args - */ - function postCommand(command, args) { - postMessage('command', { command, args }); - } - - /** - * @typedef {{ element: Element, line: number }} CodeLineElement - */ - - /** - * @return {CodeLineElement[]} - */ - const getCodeLineElements = (() => { - /** @type {CodeLineElement[]} */ - let elements; - return () => { - if (!elements) { - elements = Array.prototype.map.call( - document.getElementsByClassName('code-line'), - element => { - const line = +element.getAttribute('data-line'); - return { element, line } - }) - .filter(x => !isNaN(x.line)); - } - return elements; - }; - })() - - /** - * Find the html elements that map to a specific target line in the editor. - * - * If an exact match, returns a single element. If the line is between elements, - * returns the element prior to and the element after the given line. - * - * @param {number} targetLine - * - * @returns {{ previous: CodeLineElement, next?: CodeLineElement }} - */ - function getElementsForSourceLine(targetLine) { - const lineNumber = Math.floor(targetLine) - const lines = getCodeLineElements(); - let previous = lines[0] || null; - for (const entry of lines) { - if (entry.line === lineNumber) { - return { previous: entry, next: null }; - } else if (entry.line > lineNumber) { - return { previous, next: entry }; - } - previous = entry; - } - return { previous }; - } - - /** - * Find the html elements that are at a specific pixel offset on the page. - * - * @returns {{ previous: CodeLineElement, next?: CodeLineElement }} - */ - function getLineElementsAtPageOffset(offset) { - const lines = getCodeLineElements() - - const position = offset - window.scrollY; - - let lo = -1; - let hi = lines.length - 1; - while (lo + 1 < hi) { - const mid = Math.floor((lo + hi) / 2); - const bounds = lines[mid].element.getBoundingClientRect(); - if (bounds.top + bounds.height >= position) { - hi = mid; - } else { - lo = mid; - } - } - - const hiElement = lines[hi]; - const hiBounds = hiElement.element.getBoundingClientRect(); - - if (hi >= 1 && hiBounds.top > position) { - const loElement = lines[lo]; - return { previous: loElement, next: hiElement }; - } - - return { previous: hiElement }; - } - - /** - * Attempt to reveal the element for a source line in the editor. - * - * @param {number} line - */ - function scrollToRevealSourceLine(line) { - const { previous, next } = getElementsForSourceLine(line); - if (previous && settings.scrollPreviewWithEditor) { - let scrollTo = 0; - const rect = previous.element.getBoundingClientRect(); - const previousTop = rect.top; - - if (next && next.line !== previous.line) { - // Between two elements. Go to percentage offset between them. - const betweenProgress = (line - previous.line) / (next.line - previous.line); - const elementOffset = next.element.getBoundingClientRect().top - previousTop; - scrollTo = previousTop + betweenProgress * elementOffset; - } else { - scrollTo = previousTop; - } - - window.scroll(0, Math.max(1, window.scrollY + scrollTo)); - } - } - - /** - * @param {number} offset - */ - function getEditorLineNumberForPageOffset(offset) { - const { previous, next } = getLineElementsAtPageOffset(offset); - if (previous) { - const previousBounds = previous.element.getBoundingClientRect(); - const offsetFromPrevious = (offset - window.scrollY - previousBounds.top); - - if (next) { - const progressBetweenElements = offsetFromPrevious / (next.element.getBoundingClientRect().top - previousBounds.top); - const line = previous.line + progressBetweenElements * (next.line - previous.line); - return clampLine(line); - } else { - const progressWithinElement = offsetFromPrevious / (previousBounds.height); - const line = previous.line + progressWithinElement; - return clampLine(line); - } - } - return null; - } - - class ActiveLineMarker { - onDidChangeTextEditorSelection(line) { - const { previous } = getElementsForSourceLine(line); - this._update(previous && previous.element); - } - - _update(before) { - this._unmarkActiveElement(this._current); - this._markActiveElement(before); - this._current = before; - } - - _unmarkActiveElement(element) { - if (!element) { - return; - } - element.className = element.className.replace(/\bcode-active-line\b/g); - } - - _markActiveElement(element) { - if (!element) { - return; - } - element.className += ' code-active-line'; - } - } - - var scrollDisabled = true; - const marker = new ActiveLineMarker(); - const settings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); - - function onLoad() { - if (settings.scrollPreviewWithEditor) { - setTimeout(() => { - const initialLine = +settings.line; - if (!isNaN(initialLine)) { - scrollDisabled = true; - scrollToRevealSourceLine(initialLine); - } - }, 0); - } - } - - const onUpdateView = (() => { - const doScroll = throttle(line => { - scrollDisabled = true; - scrollToRevealSourceLine(line); - }, 50); - - return (line, settings) => { - if (!isNaN(line)) { - settings.line = line; - doScroll(line); - } - }; - })(); - - - if (document.readyState === 'loading' || document.readyState === 'uninitialized') { - document.addEventListener('DOMContentLoaded', onLoad); - } else { - onLoad(); - } - - - window.addEventListener('resize', () => { - scrollDisabled = true; - }, true); - - window.addEventListener('message', event => { - if (event.data.source !== settings.source) { - return; - } - - switch (event.data.type) { - case 'onDidChangeTextEditorSelection': - marker.onDidChangeTextEditorSelection(event.data.line); - break; - - case 'updateView': - onUpdateView(event.data.line, settings); - break; - } - }, false); - - document.addEventListener('dblclick', event => { - if (!settings.doubleClickToSwitchToEditor) { - return; - } - - // Ignore clicks on links - for (let node = /** @type {HTMLElement} */(event.target); node; node = /** @type {HTMLElement} */(node.parentNode)) { - if (node.tagName === "A") { - return; - } - } - - const offset = event.pageY; - const line = getEditorLineNumberForPageOffset(offset); - if (!isNaN(line)) { - postMessage('didClick', { line }); - } - }); - - document.addEventListener('click', event => { - if (!event) { - return; - } - - const baseElement = document.getElementsByTagName('base')[0]; - - /** @type {*} */ - let node = event.target; - while (node) { - if (node.tagName && node.tagName === 'A' && node.href) { - if (node.getAttribute('href').startsWith('#')) { - break; - } - if (node.href.startsWith('file://') || node.href.startsWith('vscode-workspace-resource:')) { - const [path, fragment] = node.href.replace(/^(file:\/\/|vscode-workspace-resource:)/i, '').split('#'); - postCommand('_markdown.openDocumentLink', [{ path, fragment }]); - event.preventDefault(); - event.stopPropagation(); - break; - } - break; - } - node = node.parentNode; - } - }, true); - - if (settings.scrollEditorWithPreview) { - window.addEventListener('scroll', throttle(() => { - if (scrollDisabled) { - scrollDisabled = false; - } else { - const line = getEditorLineNumberForPageOffset(window.scrollY); - if (!isNaN(line)) { - postMessage('revealLine', { line }); - } - } - }, 50)); - } -}()); diff --git a/extensions/markdown/package-lock.json b/extensions/markdown/package-lock.json new file mode 100644 index 00000000000..0fbcd613c76 --- /dev/null +++ b/extensions/markdown/package-lock.json @@ -0,0 +1,8463 @@ +{ + "name": "markdown-language-features", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "acorn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", + "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "5.5.0" + } + }, + "ajv": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.1.tgz", + "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "dev": true + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "any-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", + "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.9", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", + "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "dev": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "6.18.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "dev": true, + "requires": { + "babel-plugin-syntax-export-extensions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "dev": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "6.24.1", + "babel-plugin-transform-export-extensions": "6.22.0", + "babel-preset-stage-2": "6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.3", + "lodash": "4.17.5" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + } + } + }, + "base64-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "binaryextensions": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", + "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.2.4", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "chokidar": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz", + "integrity": "sha1-kPNohdU0WlBiEzLwcXtZWIPV2YI=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, + "requires": { + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "cloneable-readable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", + "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "process-nextick-args": "1.0.7", + "through2": "2.0.3" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codecov": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.0.tgz", + "integrity": "sha1-wnO4xPEpRXI+jcnSWAPYk0Pl8o4=", + "dev": true, + "requires": { + "argv": "0.0.2", + "request": "2.81.0", + "urlgrey": "0.4.4" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "typedarray": "0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.10" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "dargs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", + "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-fns": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "detect-conflict": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/detect-conflict/-/detect-conflict-1.0.1.tgz", + "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "stream-shift": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", + "dev": true + }, + "ejs": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", + "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "tapable": "1.0.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "0.2.1", + "xtend": "4.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + }, + "dependencies": { + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.2.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "2.3.5" + } + }, + "flow-parser": { + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.66.0.tgz", + "integrity": "sha1-vlg/77ARkqpRZEFdMaYkGzVxiYM=", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.5" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.9.2", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "gh-got": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", + "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", + "dev": true, + "requires": { + "got": "7.1.0", + "is-plain-obj": "1.1.0" + }, + "dependencies": { + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + } + } + }, + "github-username": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", + "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", + "dev": true, + "requires": { + "gh-got": "6.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-all": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", + "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", + "dev": true, + "requires": { + "glob": "7.1.2", + "yargs": "1.2.6" + }, + "dependencies": { + "minimist": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", + "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=", + "dev": true + }, + "yargs": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", + "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", + "dev": true, + "requires": { + "minimist": "0.1.0" + } + } + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true, + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + }, + "dependencies": { + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.2", + "which": "1.3.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "got": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", + "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", + "dev": true, + "requires": { + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "mimic-response": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "grouped-queue": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", + "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.1.0.tgz", + "integrity": "sha512-kn7N70US1MSZHZHSGJLiZ7iCwwncc7b0gc68YtlX29OjI3Mp0tSVV+snVXpZ1G+ONS3Ac9zd1m6hve2ibLDYfA==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.5", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rxjs": "5.5.6", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "2.3.0", + "p-is-promise": "1.1.0" + } + }, + "invariant": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + } + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-scoped": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", + "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", + "dev": true, + "requires": { + "scoped-regex": "1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istextorbinary": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", + "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", + "dev": true, + "requires": { + "binaryextensions": "2.1.1", + "editions": "1.3.4", + "textextensions": "2.2.0" + } + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jscodeshift": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", + "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", + "dev": true, + "requires": { + "async": "1.5.2", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-1": "6.24.1", + "babel-register": "6.26.0", + "babylon": "6.18.0", + "colors": "1.1.2", + "flow-parser": "0.66.0", + "lodash": "4.17.5", + "micromatch": "2.3.11", + "node-dir": "0.1.8", + "nomnom": "1.8.1", + "recast": "0.12.9", + "temp": "0.8.3", + "write-file-atomic": "1.3.4" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "recast": { + "version": "0.12.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz", + "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", + "dev": true, + "requires": { + "ast-types": "0.10.1", + "core-js": "2.5.3", + "esprima": "4.0.0", + "private": "0.1.8", + "source-map": "0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "listr": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", + "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "5.5.6", + "stream-to-observable": "0.2.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "date-fns": "1.29.0", + "figures": "1.7.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "2.3.2" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + } + } + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "mem-fs": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", + "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", + "dev": true, + "requires": { + "through2": "2.0.3", + "vinyl": "1.2.0", + "vinyl-file": "2.0.0" + } + }, + "mem-fs-editor": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz", + "integrity": "sha1-3Qpuryu4prN3QAZ6pUnrUwEFr58=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "deep-extend": "0.4.2", + "ejs": "2.5.7", + "glob": "7.1.2", + "globby": "6.1.0", + "mkdirp": "0.5.1", + "multimatch": "2.1.0", + "rimraf": "2.6.2", + "through2": "2.0.3", + "vinyl": "2.1.0" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "dev": true, + "requires": { + "clone": "2.1.1", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.0.0", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + } + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.5" + } + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "0.1.1" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.1", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + } + }, + "neo-async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", + "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", + "dev": true + }, + "nice-try": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "dev": true + }, + "node-dir": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.8.tgz", + "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=", + "dev": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.5", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "requires": { + "chalk": "0.4.0", + "underscore": "1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "2.0.0", + "query-string": "5.1.0", + "sort-keys": "2.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-spinners": "0.1.2", + "object-assign": "4.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-lazy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-lazy/-/p-lazy-1.0.0.tgz", + "integrity": "sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", + "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", + "dev": true + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "dev": true, + "requires": { + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "query-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.0.tgz", + "integrity": "sha512-F3DkxxlY0AqD/rwe4YAwjRE2HjOkKW7TxsuteyrS/Jbwrxw887PqYBL4sWUJ9D/V1hmFns0SCD6FDyvlwo9RCQ==", + "dev": true, + "requires": { + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, + "read-chunk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", + "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", + "dev": true, + "requires": { + "pify": "3.0.0", + "safe-buffer": "5.1.1" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.5", + "set-immediate-shim": "1.0.1" + } + }, + "recast": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.4.tgz", + "integrity": "sha512-b6fRXujYf8mTIyljymL3rglje1LfuGKdD44CuKs6o1B18MmZ+mEEpD5gsaxGVABZHyPvYwPLcyBTA/SvxtiyFg==", + "dev": true, + "requires": { + "ast-types": "0.11.2", + "esprima": "4.0.0", + "private": "0.1.8", + "source-map": "0.6.1" + }, + "dependencies": { + "ast-types": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.2.tgz", + "integrity": "sha512-aL+pcOQ+6dpWd0xrUe+Obo2CgdkFvsntkXEmzZKqEN4cR0PStF+1MBuc4V+YZsv4Q36luvyjG7F4lc+wH2bmag==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.5.0" + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "dev": true + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "rxjs": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.6.tgz", + "integrity": "sha512-v4Q5HDC0FHAQ7zcBX7T2IL6O5ltl1a2GX4ENjPXg6SjDY69Cmx9v4113C99a4wGF16ClPv5Z8mghuYorVkg/kg==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "6.2.1", + "ajv-keywords": "3.1.0" + } + }, + "scoped-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", + "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=", + "dev": true + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "0.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.1.0", + "rechoir": "0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "dev": true, + "requires": { + "concat-stream": "1.6.1", + "os-shim": "0.1.3" + } + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "ssri": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.2.4.tgz", + "integrity": "sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-to-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", + "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", + "dev": true, + "requires": { + "any-observable": "0.2.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "dev": true, + "requires": { + "first-chunk-stream": "2.0.0", + "strip-bom": "2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", + "dev": true + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "textextensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.2.0.tgz", + "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.5", + "xtend": "4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "ts-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-4.0.1.tgz", + "integrity": "sha512-dzgQnkAGY4sLqVw6t4LJH8FGR8j0zsPmC1Ff2ChzKhYO+hgWJkSEyrHTlSSZqn5oWr0Po7q/IRoeq8O4SNKQ9A==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "enhanced-resolve": "4.0.0", + "loader-utils": "1.1.0", + "micromatch": "3.1.9", + "semver": "5.5.0" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz", + "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.5.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "untildify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.2.tgz", + "integrity": "sha1-fx8wIFWz/qDz6B3HjrNnZstl4/E=", + "dev": true + }, + "upath": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", + "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", + "dev": true + }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "v8-compile-cache": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz", + "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.3", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0", + "strip-bom-stream": "2.0.0", + "vinyl": "1.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "dev": true, + "requires": { + "chokidar": "2.0.2", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" + } + }, + "webpack": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.1.0.tgz", + "integrity": "sha512-ZFYcAZ44kOT+xsS5MS2H1fQr0PJkwQdYem/d17wacDkkupzsAkBJ3hDShWHdPVvWluFs6pfhHWw/dVso1m0rsA==", + "dev": true, + "requires": { + "acorn": "5.5.0", + "acorn-dynamic-import": "3.0.0", + "ajv": "6.2.1", + "ajv-keywords": "3.1.0", + "chrome-trace-event": "0.1.2", + "enhanced-resolve": "4.0.0", + "eslint-scope": "3.7.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "micromatch": "3.1.9", + "mkdirp": "0.5.1", + "neo-async": "2.5.0", + "node-libs-browser": "2.1.0", + "schema-utils": "0.4.5", + "tapable": "1.0.0", + "uglifyjs-webpack-plugin": "1.2.2", + "watchpack": "1.5.0", + "webpack-sources": "1.1.0" + } + }, + "webpack-addons": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.5.tgz", + "integrity": "sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g==", + "dev": true, + "requires": { + "jscodeshift": "0.4.1" + } + }, + "webpack-cli": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.0.10.tgz", + "integrity": "sha512-PQWEOoXkhjBV4svPuESghZRc80VvDoSSRPaLiInWifDlRJgoPWpiLCFXyMLQTTaug7ApLrSEW7BcuwwY6DEv5w==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "codecov": "3.0.0", + "cross-spawn": "6.0.5", + "diff": "3.5.0", + "enhanced-resolve": "4.0.0", + "glob-all": "3.1.0", + "global": "4.3.2", + "global-modules": "1.0.0", + "got": "8.2.0", + "inquirer": "5.1.0", + "interpret": "1.1.0", + "jscodeshift": "0.4.1", + "listr": "0.13.0", + "loader-utils": "1.1.0", + "lodash": "4.17.5", + "log-symbols": "2.2.0", + "mkdirp": "0.5.1", + "p-each-series": "1.0.0", + "p-lazy": "1.0.0", + "prettier": "1.11.1", + "recast": "0.14.4", + "resolve-cwd": "2.0.0", + "supports-color": "5.3.0", + "uglifyjs-webpack-plugin": "1.2.2", + "v8-compile-cache": "1.1.2", + "webpack-addons": "1.1.5", + "yargs": "9.0.1", + "yeoman-environment": "2.0.5", + "yeoman-generator": "github:ev1stensberg/generator#9e24fa31c85302ca1145ae34fc68b4f133251ca0" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "worker-farm": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.4.tgz", + "integrity": "sha512-ITyClEvcfv0ozqJl1vmWFWhvI+OIrkbInYqkEPE50wFPXj8J9Gd3FYf8+CkZJXJJsQBYe+2DvmoK9Zhx5w8W+w==", + "dev": true, + "requires": { + "errno": "0.1.7", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + }, + "yeoman-environment": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.5.tgz", + "integrity": "sha512-6/W7/B54OPHJXob0n0+pmkwFsirC8cokuQkPSmT/D0lCcSxkKtg/BA6ZnjUBIwjuGqmw3DTrT4en++htaUju5g==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "globby": "6.1.0", + "grouped-queue": "0.3.3", + "inquirer": "3.3.0", + "is-scoped": "1.0.0", + "lodash": "4.17.5", + "log-symbols": "2.2.0", + "mem-fs": "1.1.3", + "text-table": "0.2.0", + "untildify": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.5", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + } + } + }, + "yeoman-generator": { + "version": "github:ev1stensberg/generator#9e24fa31c85302ca1145ae34fc68b4f133251ca0", + "dev": true, + "requires": { + "async": "2.6.0", + "chalk": "1.1.3", + "cli-table": "0.3.1", + "cross-spawn": "5.1.0", + "dargs": "5.1.0", + "dateformat": "2.2.0", + "debug": "2.6.9", + "detect-conflict": "1.0.1", + "error": "7.0.2", + "find-up": "2.1.0", + "github-username": "4.1.0", + "istextorbinary": "2.2.1", + "lodash": "4.17.5", + "mem-fs-editor": "3.0.2", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "pretty-bytes": "4.0.2", + "read-chunk": "2.1.0", + "read-pkg-up": "2.0.0", + "rimraf": "2.6.2", + "run-async": "2.3.0", + "shelljs": "0.7.8", + "text-table": "0.2.0", + "through2": "2.0.3", + "yeoman-environment": "1.6.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "diff": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", + "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=", + "dev": true + }, + "external-editor": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz", + "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=", + "dev": true, + "requires": { + "extend": "3.0.1", + "spawn-sync": "1.0.15", + "tmp": "0.0.29" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globby": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "6.0.4", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "inquirer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.2.3.tgz", + "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "external-editor": "1.1.1", + "figures": "1.7.0", + "lodash": "4.17.5", + "mute-stream": "0.0.6", + "pinkie-promise": "2.0.1", + "run-async": "2.3.0", + "rx": "4.1.0", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mute-stream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", + "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tmp": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", + "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "untildify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", + "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "yeoman-environment": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-1.6.6.tgz", + "integrity": "sha1-zYX6Z9FWBg5EDXgH1+988NLR1nE=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "debug": "2.6.9", + "diff": "2.2.3", + "escape-string-regexp": "1.0.5", + "globby": "4.1.0", + "grouped-queue": "0.3.3", + "inquirer": "1.2.3", + "lodash": "4.17.5", + "log-symbols": "1.0.2", + "mem-fs": "1.1.3", + "text-table": "0.2.0", + "untildify": "2.1.0" + } + } + } + } + } +} diff --git a/extensions/markdown/package.json b/extensions/markdown/package.json index 627e6c3e4e1..b13f665dd21 100644 --- a/extensions/markdown/package.json +++ b/extensions/markdown/package.json @@ -270,7 +270,9 @@ ] }, "scripts": { - "vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:markdown ./tsconfig.json" + "vscode:prepublish": "npm run build-ext && npm run build-preview", + "build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:markdown ./tsconfig.json", + "build-preview": "webpack --mode development" }, "dependencies": { "highlight.js": "9.5.0", @@ -283,6 +285,10 @@ "@types/highlight.js": "9.1.10", "@types/markdown-it": "0.0.2", "@types/node": "7.0.43", - "vscode": "^1.1.10" + "ts-loader": "^4.0.1", + "typescript": "^2.7.2", + "vscode": "^1.1.10", + "webpack": "^4.1.0", + "webpack-cli": "^2.0.10" } -} \ No newline at end of file +} diff --git a/extensions/markdown/preview-src/index.ts b/extensions/markdown/preview-src/index.ts new file mode 100644 index 00000000000..a0a0d797275 --- /dev/null +++ b/extensions/markdown/preview-src/index.ts @@ -0,0 +1,310 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +// From https://remysharp.com/2010/07/21/throttling-function-calls +function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { + threshhold = threshhold || (threshhold = 250); + var last: any, deferTimer: any; + return function (...x: any[]) { + var context = scope || this; + + var now = +new Date, + args = arguments; + if (last && now < last + threshhold) { + // hold on to it + clearTimeout(deferTimer); + deferTimer = setTimeout(function () { + last = now; + fn.apply(context, args); + }, threshhold + last - now); + } else { + last = now; + fn.apply(context, args); + } + }; +} + +function clamp(min: number, max: number, value: number) { + return Math.min(max, Math.max(min, value)); +} + +function clampLine(line: number) { + return clamp(0, settings.lineCount - 1, line); +} + +/** + * Post a message to the markdown extension + */ +function postMessage(type: string, body: object) { + window.parent.postMessage({ + type, + source: settings.source, + body + }, '*'); +} + +/** + * Post a command to be executed to the markdown extension + */ +function postCommand(command: string, args: any[]) { + postMessage('command', { command, args }); +} + + +interface CodeLineElement { + element: HTMLElement; + line: number; +} + +const getCodeLineElements = (() => { + let elements: CodeLineElement[]; + return () => { + if (!elements) { + elements = Array.prototype.map.call( + document.getElementsByClassName('code-line'), + (element: any) => { + const line = +element.getAttribute('data-line'); + return { element, line }; + }) + .filter((x: any) => !isNaN(x.line)); + } + return elements; + }; +})(); + +/** + * Find the html elements that map to a specific target line in the editor. + * + * If an exact match, returns a single element. If the line is between elements, + * returns the element prior to and the element after the given line. + */ +function getElementsForSourceLine(targetLine: number): { previous: CodeLineElement; next?: CodeLineElement; } { + const lineNumber = Math.floor(targetLine); + const lines = getCodeLineElements(); + let previous = lines[0] || null; + for (const entry of lines) { + if (entry.line === lineNumber) { + return { previous: entry, next: null }; + } + else if (entry.line > lineNumber) { + return { previous, next: entry }; + } + previous = entry; + } + return { previous }; +} + +/** + * Find the html elements that are at a specific pixel offset on the page. + */ +function getLineElementsAtPageOffset(offset: number): { previous: CodeLineElement; next?: CodeLineElement; } { + const lines = getCodeLineElements(); + const position = offset - window.scrollY; + let lo = -1; + let hi = lines.length - 1; + while (lo + 1 < hi) { + const mid = Math.floor((lo + hi) / 2); + const bounds = lines[mid].element.getBoundingClientRect(); + if (bounds.top + bounds.height >= position) { + hi = mid; + } + else { + lo = mid; + } + } + const hiElement = lines[hi]; + const hiBounds = hiElement.element.getBoundingClientRect(); + if (hi >= 1 && hiBounds.top > position) { + const loElement = lines[lo]; + return { previous: loElement, next: hiElement }; + } + return { previous: hiElement }; +} + +/** + * Attempt to reveal the element for a source line in the editor. + */ +function scrollToRevealSourceLine(line: number) { + const { previous, next } = getElementsForSourceLine(line); + if (previous && settings.scrollPreviewWithEditor) { + let scrollTo = 0; + const rect = previous.element.getBoundingClientRect(); + const previousTop = rect.top; + if (next && next.line !== previous.line) { + // Between two elements. Go to percentage offset between them. + const betweenProgress = (line - previous.line) / (next.line - previous.line); + const elementOffset = next.element.getBoundingClientRect().top - previousTop; + scrollTo = previousTop + betweenProgress * elementOffset; + } + else { + scrollTo = previousTop; + } + window.scroll(0, Math.max(1, window.scrollY + scrollTo)); + } +} + +function getEditorLineNumberForPageOffset(offset: number) { + const { previous, next } = getLineElementsAtPageOffset(offset); + if (previous) { + const previousBounds = previous.element.getBoundingClientRect(); + const offsetFromPrevious = (offset - window.scrollY - previousBounds.top); + if (next) { + const progressBetweenElements = offsetFromPrevious / (next.element.getBoundingClientRect().top - previousBounds.top); + const line = previous.line + progressBetweenElements * (next.line - previous.line); + return clampLine(line); + } + else { + const progressWithinElement = offsetFromPrevious / (previousBounds.height); + const line = previous.line + progressWithinElement; + return clampLine(line); + } + } + return null; +} + +class ActiveLineMarker { + private _current: any; + + onDidChangeTextEditorSelection(line: number) { + const { previous } = getElementsForSourceLine(line); + this._update(previous && previous.element); + } + + _update(before: HTMLElement | undefined) { + this._unmarkActiveElement(this._current); + this._markActiveElement(before); + this._current = before; + } + + _unmarkActiveElement(element: HTMLElement) { + if (!element) { + return; + } + element.className = element.className.replace(/\bcode-active-line\b/g, ''); + } + + _markActiveElement(element: HTMLElement) { + if (!element) { + return; + } + element.className += ' code-active-line'; + } +} + +var scrollDisabled = true; +const marker = new ActiveLineMarker(); +const settings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); + +function onLoad() { + if (settings.scrollPreviewWithEditor) { + setTimeout(() => { + const initialLine = +settings.line; + if (!isNaN(initialLine)) { + scrollDisabled = true; + scrollToRevealSourceLine(initialLine); + } + }, 0); + } +} + +const onUpdateView = (() => { + const doScroll = throttle((line: number) => { + scrollDisabled = true; + scrollToRevealSourceLine(line); + }, 50); + + return (line: number, settings: any) => { + if (!isNaN(line)) { + settings.line = line; + doScroll(line); + } + }; +})(); + + +if (document.readyState === 'loading' || document.readyState === 'uninitialized') { + document.addEventListener('DOMContentLoaded', onLoad); +} else { + onLoad(); +} + + +window.addEventListener('resize', () => { + scrollDisabled = true; +}, true); + +window.addEventListener('message', event => { + if (event.data.source !== settings.source) { + return; + } + + switch (event.data.type) { + case 'onDidChangeTextEditorSelection': + marker.onDidChangeTextEditorSelection(event.data.line); + break; + + case 'updateView': + onUpdateView(event.data.line, settings); + break; + } +}, false); + +document.addEventListener('dblclick', event => { + if (!settings.doubleClickToSwitchToEditor) { + return; + } + + // Ignore clicks on links + for (let node = event.target as HTMLElement; node; node = node.parentNode as HTMLElement) { + if (node.tagName === 'A') { + return; + } + } + + const offset = event.pageY; + const line = getEditorLineNumberForPageOffset(offset); + if (!isNaN(line)) { + postMessage('didClick', { line }); + } +}); + +document.addEventListener('click', event => { + if (!event) { + return; + } + + const baseElement = document.getElementsByTagName('base')[0]; + + let node: any = event.target; + while (node) { + if (node.tagName && node.tagName === 'A' && node.href) { + if (node.getAttribute('href').startsWith('#')) { + break; + } + if (node.href.startsWith('file://') || node.href.startsWith('vscode-workspace-resource:')) { + const [path, fragment] = node.href.replace(/^(file:\/\/|vscode-workspace-resource:)/i, '').split('#'); + postCommand('_markdown.openDocumentLink', [{ path, fragment }]); + event.preventDefault(); + event.stopPropagation(); + break; + } + break; + } + node = node.parentNode; + } +}, true); + +if (settings.scrollEditorWithPreview) { + window.addEventListener('scroll', throttle(() => { + if (scrollDisabled) { + scrollDisabled = false; + } else { + const line = getEditorLineNumberForPageOffset(window.scrollY); + if (!isNaN(line)) { + postMessage('revealLine', { line }); + } + } + }, 50)); +} \ No newline at end of file diff --git a/extensions/markdown/preview-src/tsconfig.json b/extensions/markdown/preview-src/tsconfig.json new file mode 100644 index 00000000000..e017eead5a2 --- /dev/null +++ b/extensions/markdown/preview-src/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "outDir": "./dist/", + "noImplicitAny": true, + "module": "es6", + "target": "es6", + "jsx": "react", + "sourceMap": true + } +} \ No newline at end of file diff --git a/extensions/markdown/src/features/previewContentProvider.ts b/extensions/markdown/src/features/previewContentProvider.ts index f0dd43ff28e..b466d04b04f 100644 --- a/extensions/markdown/src/features/previewContentProvider.ts +++ b/extensions/markdown/src/features/previewContentProvider.ts @@ -165,7 +165,7 @@ export class MarkdownContentProvider { } private getScripts(nonce: string): string { - const scripts = [this.extensionResourcePath('main.js')].concat(this.extraScripts.map(resource => resource.toString())); + const scripts = [this.extensionResourcePath('bundle.js')].concat(this.extraScripts.map(resource => resource.toString())); return scripts .map(source => ``) .join('\n'); diff --git a/extensions/markdown/webpack.config.js b/extensions/markdown/webpack.config.js new file mode 100644 index 00000000000..3eccbdadcc7 --- /dev/null +++ b/extensions/markdown/webpack.config.js @@ -0,0 +1,26 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const path = require('path'); + +module.exports = { + entry: './preview-src/index.ts', + module: { + rules: [ + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/ + } + ] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'] + }, + devtool: 'inline-source-map', + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'media') + } +}; \ No newline at end of file diff --git a/extensions/markdown/yarn.lock b/extensions/markdown/yarn.lock index 18049ad211c..f8a993b2347 100644 --- a/extensions/markdown/yarn.lock +++ b/extensions/markdown/yarn.lock @@ -2,6 +2,10 @@ # yarn lockfile v1 +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + "@types/highlight.js@9.1.10": version "9.1.10" resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.1.10.tgz#b621f809cd9573b80992b90cffc5788208e3069c" @@ -14,6 +18,31 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + dependencies: + acorn "^5.0.0" + +acorn@^5.0.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.0.tgz#1abb587fbf051f94e3de20e6b26ef910b1828298" + +ajv-keywords@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + ajv@^5.1.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" @@ -23,12 +52,28 @@ ajv@^5.1.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" +ajv@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.1.tgz#28a6abc493a2abe0fb4c8507acaedb43fa550671" + dependencies: + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + ansi-cyan@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" dependencies: ansi-wrap "0.1.0" +ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + ansi-gray@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" @@ -45,14 +90,39 @@ ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + ansi-wrap@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" +any-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + applicationinsights@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.0.1.tgz#53446b830fe8d5d619eee2a278b31d3d25030927" @@ -61,12 +131,27 @@ applicationinsights@1.0.1: diagnostic-channel-publishers "0.2.1" zone.js "0.7.6" +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + argparse@^1.0.7: version "1.0.9" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" dependencies: sprintf-js "~1.0.2" +argv@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" + arr-diff@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" @@ -80,7 +165,11 @@ arr-diff@^2.0.0: dependencies: arr-flatten "^1.0.1" -arr-flatten@^1.0.1: +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" @@ -88,6 +177,10 @@ arr-union@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" @@ -110,10 +203,22 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -126,10 +231,46 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +ast-types@0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" + +ast-types@0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.2.tgz#cc4e1d15a36b39979a1986fe1e91321cbfae7783" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.0.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +atob@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" + aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -142,10 +283,610 @@ aws4@^1.2.1, aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-es2015@^6.9.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-stage-1@^6.5.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + dependencies: + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.26.0, babel-register@^6.9.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.17.3, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +base64-js@^1.0.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" @@ -156,12 +897,32 @@ beeper@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +binaryextensions@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" dependencies: inherits "~2.0.0" +bluebird@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" @@ -195,14 +956,155 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" +braces@^2.3.0, braces@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + kind-of "^6.0.2" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +cacache@^10.0.1: + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" @@ -211,7 +1113,7 @@ caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" -chalk@^1.0.0, chalk@^1.1.1: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -221,10 +1123,119 @@ chalk@^1.0.0, chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + +chokidar@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz#4dc65139eeb2714977735b6a35d06e97b494dfd7" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +chrome-trace-event@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz#90f36885d5345a50621332f0717b595883d5d982" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^1.0.1, cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + dependencies: + colors "1.0.3" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + dependencies: + mimic-response "^1.0.0" + clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" @@ -257,10 +1268,47 @@ co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +codecov@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.0.0.tgz#c273b8c4f12945723e8dc9d25803d89343e5f28e" + dependencies: + argv "0.0.2" + request "2.81.0" + urlgrey "0.4.4" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + +colors@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" @@ -271,22 +1319,116 @@ commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" -commander@^2.9.0: +commander@^2.9.0, commander@~2.14.1: version "2.14.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -convert-source-map@^1.1.1: +concat-stream@^1.4.7, concat-stream@^1.5.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.1.tgz#261b8f518301f1d834e36342b9fea095d2620a26" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +convert-source-map@^1.1.1, convert-source-map@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -299,32 +1441,132 @@ cryptiles@3.x.x: dependencies: boom "5.x.x" +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + +dargs@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" dependencies: assert-plus "^1.0.0" +date-fns@^1.27.2: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + dateformat@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" -debug@3.1.0: +debug@3.1.0, 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.0.0, debug@^2.1.0, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + dependencies: + mimic-response "^1.0.0" + deep-assign@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-1.0.0.tgz#b092743be8427dc621ea0067cdec7e70dd19f37b" dependencies: is-obj "^1.0.0" +deep-extend@^0.4.0, deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-conflict@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + diagnostic-channel-publishers@0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.2.1.tgz#8e2d607a8b6d79fe880b548bc58cc6beb288c4f3" @@ -339,12 +1581,40 @@ diff@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" +diff@^2.1.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" + +diff@^3.3.0, diff@^3.3.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + duplexer2@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" dependencies: readable-stream "~1.1.9" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -358,26 +1628,115 @@ duplexify@^3.2.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +duplexify@^3.4.2, duplexify@^3.5.3: + version "3.5.4" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" dependencies: jsbn "~0.1.0" -end-of-stream@^1.0.0: +editions@^1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" + +ejs@^2.3.1: + version "2.5.7" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" dependencies: once "^1.4.0" +enhanced-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2: +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +error@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + dependencies: + string-template "~0.2.1" + xtend "~4.0.0" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + event-stream@^3.3.1, event-stream@~3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" @@ -390,18 +1749,63 @@ event-stream@^3.3.1, event-stream@~3.3.4: stream-combiner "~0.0.4" through "~2.3.1" +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" dependencies: is-posix-bracket "^0.1.0" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + expand-range@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" dependencies: fill-range "^2.1.0" +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + extend-shallow@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" @@ -414,16 +1818,52 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +external-editor@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b" + dependencies: + extend "^3.0.0" + spawn-sync "^1.0.15" + tmp "^0.0.29" + +external-editor@^2.0.4, external-editor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" dependencies: is-extglob "^1.0.0" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -454,6 +1894,19 @@ fd-slicer@~1.0.1: dependencies: pend "~1.2.0" +figures@^1.3.5, figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -468,11 +1921,51 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + first-chunk-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" -for-in@^1.0.1: +first-chunk-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + dependencies: + readable-stream "^2.0.2" + +flow-parser@^0.*: + version "0.66.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.66.0.tgz#be583fefb01192aa5164415d31a6241b35718983" + +flush-write-stream@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -502,15 +1995,52 @@ form-data@~2.3.1: combined-stream "^1.0.5" mime-types "^2.1.12" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +from2@^2.1.0, from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fstream@^1.0.2: +fsevents@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.39" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" dependencies: @@ -519,6 +2049,19 @@ fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + generate-function@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" @@ -529,12 +2072,44 @@ generate-object-property@^1.1.0: dependencies: is-property "^1.0.0" +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" dependencies: assert-plus "^1.0.0" +gh-got@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-6.0.0.tgz#d74353004c6ec466647520a10bd46f7299d268d0" + dependencies: + got "^7.0.0" + is-plain-obj "^1.1.0" + +github-username@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/github-username/-/github-username-4.1.0.tgz#cbe280041883206da4212ae9e4b5f169c30bf417" + dependencies: + gh-got "^6.0.0" + +glob-all@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" + dependencies: + glob "^7.0.5" + yargs "~1.2.6" + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -548,7 +2123,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob-parent@^3.0.0: +glob-parent@^3.0.0, glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" dependencies: @@ -568,7 +2143,7 @@ glob-stream@^5.3.2: to-absolute-glob "^0.1.1" unique-stream "^2.0.2" -glob@7.1.2, glob@^7.0.5, glob@^7.1.2: +glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -589,16 +2164,123 @@ glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-4.1.0.tgz#080f54549ec1b82a6c60e631fc82e1211dbe95f8" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^6.0.1" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + glogg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" dependencies: sparkles "^1.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.2: +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/got/-/got-8.2.0.tgz#0d11a071d05046348a2f5c0a5fa047fb687fdfc6" + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +grouped-queue@^0.3.0, grouped-queue@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" + dependencies: + lodash "^4.17.2" + growl@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" @@ -706,6 +2388,10 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -719,6 +2405,13 @@ har-validator@~2.0.6: is-my-json-valid "^2.12.4" pinkie-promise "^2.0.0" +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -732,17 +2425,86 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + has-gulplog@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" dependencies: sparkles "^1.0.0" -hawk@~3.1.3: +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + dependencies: + has-symbol-support-x "^1.4.1" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hawk@3.1.3, hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" dependencies: @@ -768,6 +2530,14 @@ highlight.js@9.5.0: version "9.5.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.5.0.tgz#46ae51b9db00f70052bcdf196cd404757b6582ae" +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" @@ -776,6 +2546,27 @@ hoek@4.x.x: version "4.2.0" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -792,6 +2583,40 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + +iconv-lite@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -799,14 +2624,155 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +inquirer@^1.0.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918" + dependencies: + ansi-escapes "^1.1.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + external-editor "^1.1.0" + figures "^1.3.5" + lodash "^4.3.0" + mute-stream "0.0.6" + pinkie-promise "^2.0.0" + run-async "^2.2.0" + rx "^4.1.0" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +inquirer@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.1.0.tgz#19da508931892328abbbdd4c477f1efc65abfd67" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +interpret@^1.0.0, interpret@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.3.tgz#1a827dfde7dcbd7c323f0ca826be8fa7c5e9d688" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" @@ -821,14 +2787,36 @@ is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" -is-extglob@^2.1.0: +is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -841,6 +2829,12 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + is-my-json-valid@^2.12.4: version "2.17.1" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471" @@ -862,10 +2856,40 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + +is-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" + dependencies: + symbol-observable "^0.2.2" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -874,11 +2898,25 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" -is-stream@^1.0.1, is-stream@^1.1.0: +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-scoped@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" + dependencies: + scoped-regex "^1.0.0" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -894,6 +2932,10 @@ is-valid-glob@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + is@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5" @@ -902,24 +2944,83 @@ isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" dependencies: isarray "1.0.0" +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +istextorbinary@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" + dependencies: + binaryextensions "2" + editions "^1.3.3" + textextensions "2" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +jscodeshift@^0.4.0, jscodeshift@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.1.tgz#da91a1c2eccfa03a3387a21d39948e251ced444a" + dependencies: + async "^1.5.0" + babel-plugin-transform-flow-strip-types "^6.8.0" + babel-preset-es2015 "^6.9.0" + babel-preset-stage-1 "^6.5.0" + babel-register "^6.9.0" + babylon "^6.17.3" + colors "^1.1.2" + flow-parser "^0.*" + lodash "^4.13.1" + micromatch "^2.3.7" + node-dir "0.1.8" + nomnom "^1.8.1" + recast "^0.12.5" + temp "^0.8.1" + write-file-atomic "^1.2.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -928,7 +3029,7 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@^1.0.0: +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" dependencies: @@ -938,6 +3039,10 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -955,11 +3060,17 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + dependencies: + json-buffer "3.0.0" + kind-of@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" -kind-of@^3.0.2: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: @@ -971,18 +3082,114 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +lazy-cache@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + dependencies: + set-getter "^0.1.0" + lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" dependencies: readable-stream "^2.0.5" +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + linkify-it@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.0.3.tgz#d94a4648f9b1c179d64fa97291268bdb6ce9434f" dependencies: uc.micro "^1.0.1" +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + +listr-update-renderer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + figures "^1.7.0" + indent-string "^2.1.0" + is-observable "^0.2.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.4.0" + listr-verbose-renderer "^0.4.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + ora "^0.2.3" + p-map "^1.1.1" + rxjs "^5.4.2" + stream-to-observable "^0.2.0" + strip-ansi "^3.0.1" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -1070,10 +3277,66 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" +lodash@^4.11.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + +log-symbols@2.2.0, log-symbols@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + dependencies: + chalk "^2.0.1" + +log-symbols@^1.0.1, log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +log-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + dependencies: + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lowercase-keys@1.0.0, lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" + dependencies: + pify "^3.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + map-stream@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + markdown-it-named-headers@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/markdown-it-named-headers/-/markdown-it-named-headers-0.0.4.tgz#82efc28324240a6b1e77b9aae501771d5f351c1f" @@ -1090,10 +3353,53 @@ markdown-it@^8.4.0: mdurl "^1.0.1" uc.micro "^1.0.3" +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" +mem-fs-editor@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz#dd0a6eaf2bb8a6b37740067aa549eb530105af9f" + dependencies: + commondir "^1.0.1" + deep-extend "^0.4.0" + ejs "^2.3.1" + glob "^7.0.3" + globby "^6.1.0" + mkdirp "^0.5.0" + multimatch "^2.0.0" + rimraf "^2.2.8" + through2 "^2.0.0" + vinyl "^2.0.1" + +mem-fs@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" + dependencies: + through2 "^2.0.0" + vinyl "^1.1.0" + vinyl-file "^2.0.0" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + merge-stream@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" @@ -1118,6 +3424,31 @@ micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" +micromatch@^3.1.4, micromatch@^3.1.8: + version "3.1.9" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" @@ -1128,7 +3459,29 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7: dependencies: mime-db "~1.30.0" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.4: +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +mimic-response@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -1138,11 +3491,37 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.0: +minimist@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" + +minimist@^1.1.0, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -1163,6 +3542,17 @@ mocha@^4.0.1: mkdirp "0.5.1" supports-color "4.4.0" +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -1182,18 +3572,153 @@ multipipe@^0.1.2: dependencies: duplexer2 "0.0.2" +mute-stream@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.3.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" + +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +neo-async@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f" + +nice-try@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" + +node-dir@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + node.extend@~1.1.2: version "1.1.6" resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.6.tgz#a7b882c82d6c93a4863a5504bd5de8ec86258b96" dependencies: is "^3.1.0" -normalize-path@^2.0.1: +nomnom@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" + dependencies: + chalk "~0.4.0" + underscore "~1.6.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -1202,10 +3727,24 @@ object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" -object-assign@^4.0.0: +object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -1213,12 +3752,37 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -once@^1.3.0, once@^1.4.0: +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +ora@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" + dependencies: + chalk "^1.1.1" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + object-assign "^4.0.1" + ordered-read-streams@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" @@ -1226,6 +3790,117 @@ ordered-read-streams@^0.3.0: is-stream "^1.0.1" readable-stream "^2.0.1" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-shim@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + +p-lazy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835" + +p-limit@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + dependencies: + p-finally "^1.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -1235,28 +3910,86 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" -path-is-absolute@^1.0.0: +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0, 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-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" dependencies: through "~2.3" +pbkdf2@^3.0.3: + version "3.0.14" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -1267,6 +4000,12 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + plugin-error@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" @@ -1277,15 +4016,92 @@ plugin-error@^0.1.2: arr-union "^2.0.1" extend-shallow "^1.1.2" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettier@^1.5.3: + version "1.11.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.1.tgz#61e43fc4cd44e68f2b0dfc2c38cd4bb0fccdcc75" + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + +private@^0.1.6, private@^0.1.7, private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -punycode@^1.4.1: +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" + dependencies: + duplexify "^3.5.3" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -1293,10 +4109,30 @@ qs@~6.3.0: version "6.3.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" +query-string@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.0.tgz#9583b15fd1307f899e973ed418886426a9976469" + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + querystringify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" @@ -1320,6 +4156,62 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +rc@^1.1.7: + version "1.2.5" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-chunk@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" + dependencies: + pify "^3.0.0" + safe-buffer "^5.1.1" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.3.3: + version "2.3.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -1350,12 +4242,87 @@ readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +recast@^0.12.5: + version "0.12.9" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" + dependencies: + ast-types "0.10.1" + core-js "^2.4.1" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +recast@^0.14.4: + version "0.14.4" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.4.tgz#383dd606eac924c1157b0293b53191c34bd3c641" + dependencies: + ast-types "0.11.2" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" dependencies: is-equal-shallow "^0.1.3" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -1364,10 +4331,16 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^1.5.2: +repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" @@ -1376,6 +4349,33 @@ replace-ext@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + request@^2.83.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" @@ -1428,24 +4428,251 @@ request@~2.79.0: tunnel-agent "~0.4.1" uuid "^3.0.0" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + requires-port@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" -rimraf@2: +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.1.6: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +rimraf@2, rimraf@^2.2.0, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +run-async@^2.0.0, run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +rx@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + +rxjs@^5.4.2, rxjs@^5.5.2: + version "5.5.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02" + dependencies: + symbol-observable "1.0.1" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -semver@^5.3.0, semver@^5.4.1: +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +schema-utils@^0.4.2: + version "0.4.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +scoped-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" + +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +serialize-javascript@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-getter@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" + dependencies: + to-object-path "^0.3.0" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.10" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shelljs@^0.7.0: + version "0.7.8" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^2.0.0" + sntp@1.x.x: version "1.0.9" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" @@ -1458,13 +4685,47 @@ sntp@2.x.x: dependencies: hoek "4.x.x" +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + +source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + source-map-support@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.3.tgz#2b3d5fff298cfa4d1afd7d4352d569e9a0158e76" dependencies: source-map "^0.6.0" -source-map@^0.6.0: +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -1472,6 +4733,41 @@ sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" +spawn-sync@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" + dependencies: + concat-stream "^1.4.7" + os-shim "^0.1.2" + +spdx-correct@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + split@0.3: version "0.3.3" resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" @@ -1496,20 +4792,63 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" +ssri@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.2.4.tgz#9985e14041e65fc397af96542be35724ac11da52" + dependencies: + safe-buffer "^5.1.1" + stat-mode@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + stream-combiner@~0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" dependencies: duplexer "~0.1.1" +stream-each@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.3" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" +stream-to-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10" + dependencies: + any-observable "^0.2.0" + streamfilter@^1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/streamfilter/-/streamfilter-1.0.7.tgz#ae3e64522aa5a35c061fd17f67620c7653c643c9" @@ -1520,30 +4859,63 @@ streamifier@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/streamifier/-/streamifier-0.1.1.tgz#97e98d8fa4d105d62a2691d1dc07e820db8dfc4f" +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string@^3.0.1: version "3.3.1" resolved "https://registry.yarnpkg.com/string/-/string-3.3.1.tgz#8d2757ec1c0e6c526796fbb6b14036a4098398b7" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@~1.0.3: +string_decoder@^1.0.0, string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: safe-buffer "~5.1.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" -strip-ansi@^3.0.0: +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + strip-bom-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" @@ -1551,12 +4923,31 @@ strip-bom-stream@^1.0.0: first-chunk-stream "^1.0.0" strip-bom "^2.0.0" +strip-bom-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" + dependencies: + first-chunk-stream "^2.0.0" + strip-bom "^2.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + supports-color@4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" @@ -1567,6 +4958,37 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +supports-color@^5.2.0, supports-color@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" + dependencies: + has-flag "^3.0.0" + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + +symbol-observable@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" + +tapable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" + +tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -1575,6 +4997,21 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" +temp@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +textextensions@2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" + through2-filter@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" @@ -1596,7 +5033,7 @@ through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0, through2@~2. readable-stream "^2.1.5" xtend "~4.0.1" -through@2, through@~2.3, through@~2.3.1: +through@2, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -1604,18 +5041,88 @@ time-stamp@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +timers-browserify@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" + dependencies: + setimmediate "^1.0.4" + +tmp@^0.0.29: + version "0.0.29" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" + dependencies: + os-tmpdir "~1.0.1" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + to-absolute-glob@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" dependencies: extend-shallow "^2.0.1" +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +ts-loader@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-4.0.1.tgz#3d920b059966efec9637133ab0ca9b04d625d59a" + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^3.1.4" + semver "^5.0.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -1630,10 +5137,67 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +typescript@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" + uc.micro@^1.0.1, uc.micro@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.3.tgz#7ed50d5e0f9a9fb0a573379259f2a77458d50192" +uglify-es@^3.3.4: + version "3.3.10" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.10.tgz#8b0b7992cebe20edc26de1bf325cef797b8f3fa5" + dependencies: + commander "~2.14.1" + source-map "~0.6.1" + +uglifyjs-webpack-plugin@^1.1.1, uglifyjs-webpack-plugin@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz#e7516d4367afdb715c3847841eb46f94c45ca2b9" + dependencies: + cacache "^10.0.1" + find-cache-dir "^1.0.0" + schema-utils "^0.4.2" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-filename@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + dependencies: + imurmurhash "^0.1.4" + unique-stream@^2.0.2: version "2.2.1" resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" @@ -1641,6 +5205,43 @@ unique-stream@^2.0.2: json-stable-stringify "^1.0.0" through2-filter "^2.0.0" +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +untildify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0" + dependencies: + os-homedir "^1.0.0" + +untildify@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1" + +upath@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + dependencies: + prepend-http "^2.0.0" + url-parse@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986" @@ -1648,18 +5249,58 @@ url-parse@^1.1.9: querystringify "~1.0.0" requires-port "~1.0.0" +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +urlgrey@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" + +use@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8" + dependencies: + define-property "^0.2.5" + isobject "^3.0.0" + lazy-cache "^2.0.2" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + uuid@^3.0.0, uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" +v8-compile-cache@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" + vali-date@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" +validate-npm-package-license@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -1668,6 +5309,17 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vinyl-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" + dependencies: + graceful-fs "^4.1.2" + pify "^2.3.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + strip-bom-stream "^2.0.0" + vinyl "^1.1.0" + vinyl-fs@^2.0.0, vinyl-fs@^2.4.3: version "2.4.4" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" @@ -1712,7 +5364,7 @@ vinyl@^0.5.0: clone-stats "^0.0.1" replace-ext "0.0.1" -vinyl@^1.0.0: +vinyl@^1.0.0, vinyl@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" dependencies: @@ -1720,7 +5372,7 @@ vinyl@^1.0.0: clone-stats "^0.0.1" replace-ext "0.0.1" -vinyl@^2.0.2: +vinyl@^2.0.1, vinyl@^2.0.2: version "2.1.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" dependencies: @@ -1743,6 +5395,12 @@ vinyl@~2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + vscode-extension-telemetry@0.0.15: version "0.0.15" resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.0.15.tgz#685c32f3b67e8fb85ba689c1d7f88ff90ff87856" @@ -1772,14 +5430,173 @@ vscode@^1.1.10: url-parse "^1.1.9" vinyl-source-stream "^1.1.0" +watchpack@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +webpack-addons@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/webpack-addons/-/webpack-addons-1.1.5.tgz#2b178dfe873fb6e75e40a819fa5c26e4a9bc837a" + dependencies: + jscodeshift "^0.4.0" + +webpack-cli@^2.0.10: + version "2.0.10" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.0.10.tgz#09b888fbaa0b4288ba4b94c4462b6f559dfcf51e" + dependencies: + chalk "^2.3.1" + codecov "^3.0.0" + cross-spawn "^6.0.4" + diff "^3.3.0" + enhanced-resolve "^4.0.0" + glob-all "^3.1.0" + global "^4.3.2" + global-modules "^1.0.0" + got "^8.2.0" + inquirer "^5.1.0" + interpret "^1.0.4" + jscodeshift "^0.4.1" + listr "^0.13.0" + loader-utils "^1.1.0" + lodash "^4.17.5" + log-symbols "2.2.0" + mkdirp "^0.5.1" + p-each-series "^1.0.0" + p-lazy "^1.0.0" + prettier "^1.5.3" + recast "^0.14.4" + resolve-cwd "^2.0.0" + supports-color "^5.2.0" + uglifyjs-webpack-plugin "^1.2.2" + v8-compile-cache "^1.1.2" + webpack-addons "^1.1.5" + yargs "9.0.1" + yeoman-environment "^2.0.0" + yeoman-generator "github:ev1stensberg/generator#Feature-getArgument" + +webpack-sources@^1.0.1, webpack-sources@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.1.0.tgz#91b6862e56eb3b18b79bb10b51866987ff10d2d6" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^0.1.1" + enhanced-resolve "^4.0.0" + eslint-scope "^3.7.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^0.4.2" + tapable "^1.0.0" + uglifyjs-webpack-plugin "^1.1.1" + watchpack "^1.5.0" + webpack-sources "^1.0.1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.14, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +worker-farm@^1.5.2: + version "1.5.4" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.4.tgz#4debbe46b40edefcc717ebde74a90b1ae1e909a1" + dependencies: + errno "~0.1.7" + xtend "~4.0.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +write-file-atomic@^1.2.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" + dependencies: + minimist "^0.1.0" + yauzl@^2.2.1: version "2.9.1" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.9.1.tgz#a81981ea70a57946133883f029c5821a89359a7f" @@ -1793,6 +5610,71 @@ yazl@^2.2.1: dependencies: buffer-crc32 "~0.2.3" +yeoman-environment@^1.1.0: + version "1.6.6" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-1.6.6.tgz#cd85fa67d156060e440d7807d7ef7cf0d2d1d671" + dependencies: + chalk "^1.0.0" + debug "^2.0.0" + diff "^2.1.2" + escape-string-regexp "^1.0.2" + globby "^4.0.0" + grouped-queue "^0.3.0" + inquirer "^1.0.2" + lodash "^4.11.1" + log-symbols "^1.0.1" + mem-fs "^1.1.0" + text-table "^0.2.0" + untildify "^2.0.0" + +yeoman-environment@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.5.tgz#84f22bafa84088971fe99ea85f654a3a3dd2b693" + dependencies: + chalk "^2.1.0" + debug "^3.1.0" + diff "^3.3.1" + escape-string-regexp "^1.0.2" + globby "^6.1.0" + grouped-queue "^0.3.3" + inquirer "^3.3.0" + is-scoped "^1.0.0" + lodash "^4.17.4" + log-symbols "^2.1.0" + mem-fs "^1.1.0" + text-table "^0.2.0" + untildify "^3.0.2" + +"yeoman-generator@github:ev1stensberg/generator#Feature-getArgument": + version "1.1.1" + resolved "https://codeload.github.com/ev1stensberg/generator/tar.gz/9e24fa31c85302ca1145ae34fc68b4f133251ca0" + dependencies: + async "^2.0.0" + chalk "^1.0.0" + cli-table "^0.3.1" + cross-spawn "^5.0.1" + dargs "^5.1.0" + dateformat "^2.0.0" + debug "^2.1.0" + detect-conflict "^1.0.0" + error "^7.0.2" + find-up "^2.1.0" + github-username "^4.0.0" + istextorbinary "^2.1.0" + lodash "^4.11.1" + mem-fs-editor "^3.0.0" + minimist "^1.2.0" + mkdirp "^0.5.0" + pretty-bytes "^4.0.2" + read-chunk "^2.0.0" + read-pkg-up "^2.0.0" + rimraf "^2.2.0" + run-async "^2.0.0" + shelljs "^0.7.0" + text-table "^0.2.0" + through2 "^2.0.0" + yeoman-environment "^1.1.0" + zone.js@0.7.6: version "0.7.6" resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.7.6.tgz#fbbc39d3e0261d0986f1ba06306eb3aeb0d22009" From 36c3f4b008ff89f96b113032e939c9d3e77b36a9 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 10:17:15 -0800 Subject: [PATCH 070/658] Move over csp and loading to use webpack --- extensions/markdown/.gitignore | 2 +- .../{media/csp.js => preview-src/csp.ts} | 2 -- .../{media/loading.js => preview-src/loading.ts} | 16 ++++++---------- extensions/markdown/preview-src/pre.ts | 7 +++++++ .../src/features/previewContentProvider.ts | 5 ++--- extensions/markdown/webpack.config.js | 7 +++++-- 6 files changed, 21 insertions(+), 18 deletions(-) rename extensions/markdown/{media/csp.js => preview-src/csp.ts} (99%) rename extensions/markdown/{media/loading.js => preview-src/loading.ts} (78%) create mode 100644 extensions/markdown/preview-src/pre.ts diff --git a/extensions/markdown/.gitignore b/extensions/markdown/.gitignore index b3ad8e7973d..5c535300b86 100644 --- a/extensions/markdown/.gitignore +++ b/extensions/markdown/.gitignore @@ -1 +1 @@ -media/bundle.js \ No newline at end of file +media/*.js \ No newline at end of file diff --git a/extensions/markdown/media/csp.js b/extensions/markdown/preview-src/csp.ts similarity index 99% rename from extensions/markdown/media/csp.js rename to extensions/markdown/preview-src/csp.ts index 3604eb284db..a0891955ef1 100644 --- a/extensions/markdown/media/csp.js +++ b/extensions/markdown/preview-src/csp.ts @@ -3,8 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - (function () { const settings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); const strings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-strings')); diff --git a/extensions/markdown/media/loading.js b/extensions/markdown/preview-src/loading.ts similarity index 78% rename from extensions/markdown/media/loading.js rename to extensions/markdown/preview-src/loading.ts index 233422e1414..88d1c55f589 100644 --- a/extensions/markdown/media/loading.js +++ b/extensions/markdown/preview-src/loading.ts @@ -2,27 +2,23 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -// @ts-check - -'use strict'; - (function () { - const unloadedStyles = []; + const unloadedStyles: string[] = []; - const settings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); + const settings: any = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); - const onStyleLoadError = (event) => { + const onStyleLoadError = (event: any) => { const source = event.target.dataset.source; unloadedStyles.push(source); }; window.addEventListener('DOMContentLoaded', () => { - for (const link of document.getElementsByClassName('code-user-style')) { + for (const link of document.getElementsByClassName('code-user-style') as HTMLCollectionOf) { if (link.dataset.source) { link.onerror = onStyleLoadError; } } - }) + }); window.addEventListener('load', () => { if (!unloadedStyles.length) { @@ -37,4 +33,4 @@ } }, '*'); }); -}()); \ No newline at end of file +})(); \ No newline at end of file diff --git a/extensions/markdown/preview-src/pre.ts b/extensions/markdown/preview-src/pre.ts new file mode 100644 index 00000000000..abdd52a0a83 --- /dev/null +++ b/extensions/markdown/preview-src/pre.ts @@ -0,0 +1,7 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import './csp'; +import './loading'; \ No newline at end of file diff --git a/extensions/markdown/src/features/previewContentProvider.ts b/extensions/markdown/src/features/previewContentProvider.ts index b466d04b04f..65f07e2cb24 100644 --- a/extensions/markdown/src/features/previewContentProvider.ts +++ b/extensions/markdown/src/features/previewContentProvider.ts @@ -83,8 +83,7 @@ export class MarkdownContentProvider { ${csp} - - + ${this.getStyles(sourceUri, nonce, config)} @@ -165,7 +164,7 @@ export class MarkdownContentProvider { } private getScripts(nonce: string): string { - const scripts = [this.extensionResourcePath('bundle.js')].concat(this.extraScripts.map(resource => resource.toString())); + const scripts = [this.extensionResourcePath('index.js')].concat(this.extraScripts.map(resource => resource.toString())); return scripts .map(source => ``) .join('\n'); diff --git a/extensions/markdown/webpack.config.js b/extensions/markdown/webpack.config.js index 3eccbdadcc7..58996c3eb7d 100644 --- a/extensions/markdown/webpack.config.js +++ b/extensions/markdown/webpack.config.js @@ -5,7 +5,10 @@ const path = require('path'); module.exports = { - entry: './preview-src/index.ts', + entry: { + index: './preview-src/index.ts', + pre: './preview-src/pre.ts' + }, module: { rules: [ { @@ -20,7 +23,7 @@ module.exports = { }, devtool: 'inline-source-map', output: { - filename: 'bundle.js', + filename: '[name].js', path: path.resolve(__dirname, 'media') } }; \ No newline at end of file From e49c6b3f8e0358e5dbca9b3f42eec1d3bd7036cb Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 10:52:50 -0800 Subject: [PATCH 071/658] Extract duplicate settings logic to own file --- extensions/markdown/preview-src/csp.ts | 70 ++++++++++----------- extensions/markdown/preview-src/index.ts | 5 +- extensions/markdown/preview-src/loading.ts | 52 +++++++-------- extensions/markdown/preview-src/settings.ts | 9 +++ 4 files changed, 74 insertions(+), 62 deletions(-) create mode 100644 extensions/markdown/preview-src/settings.ts diff --git a/extensions/markdown/preview-src/csp.ts b/extensions/markdown/preview-src/csp.ts index a0891955ef1..007e7e30fbb 100644 --- a/extensions/markdown/preview-src/csp.ts +++ b/extensions/markdown/preview-src/csp.ts @@ -3,45 +3,45 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -(function () { - const settings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); - const strings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-strings')); +import { getSettings } from './settings'; - let didShow = false; +const strings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-strings')); +const settings = getSettings(); - const showCspWarning = () => { - if (didShow || settings.disableSecurityWarnings) { - return; - } - didShow = true; +let didShow = false; - const notification = document.createElement('a'); - notification.innerText = strings.cspAlertMessageText; - notification.setAttribute('id', 'code-csp-warning'); - notification.setAttribute('title', strings.cspAlertMessageTitle); +const showCspWarning = () => { + if (didShow || settings.disableSecurityWarnings) { + return; + } + didShow = true; - notification.setAttribute('role', 'button'); - notification.setAttribute('aria-label', strings.cspAlertMessageLabel); - notification.onclick = () => { - window.parent.postMessage({ - type: 'command', - source: settings.source, - body: { - command: 'markdown.showPreviewSecuritySelector', - args: [settings.source] - } - }, '*'); - }; - document.body.appendChild(notification); + const notification = document.createElement('a'); + notification.innerText = strings.cspAlertMessageText; + notification.setAttribute('id', 'code-csp-warning'); + notification.setAttribute('title', strings.cspAlertMessageTitle); + + notification.setAttribute('role', 'button'); + notification.setAttribute('aria-label', strings.cspAlertMessageLabel); + notification.onclick = () => { + window.parent.postMessage({ + type: 'command', + source: settings.source, + body: { + command: 'markdown.showPreviewSecuritySelector', + args: [settings.source] + } + }, '*'); }; + document.body.appendChild(notification); +}; - document.addEventListener('securitypolicyviolation', () => { +document.addEventListener('securitypolicyviolation', () => { + showCspWarning(); +}); + +window.addEventListener('message', (event) => { + if (event && event.data && event.data.name === 'vscode-did-block-svg') { showCspWarning(); - }); - - window.addEventListener('message', (event) => { - if (event && event.data && event.data.name === 'vscode-did-block-svg') { - showCspWarning(); - } - }); -}()); \ No newline at end of file + } +}); \ No newline at end of file diff --git a/extensions/markdown/preview-src/index.ts b/extensions/markdown/preview-src/index.ts index a0a0d797275..1311315897d 100644 --- a/extensions/markdown/preview-src/index.ts +++ b/extensions/markdown/preview-src/index.ts @@ -3,6 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import { getSettings } from './settings'; + + // From https://remysharp.com/2010/07/21/throttling-function-calls function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { threshhold = threshhold || (threshhold = 250); @@ -195,7 +198,7 @@ class ActiveLineMarker { var scrollDisabled = true; const marker = new ActiveLineMarker(); -const settings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); +const settings = getSettings(); function onLoad() { if (settings.scrollPreviewWithEditor) { diff --git a/extensions/markdown/preview-src/loading.ts b/extensions/markdown/preview-src/loading.ts index 88d1c55f589..ae4c01f68e4 100644 --- a/extensions/markdown/preview-src/loading.ts +++ b/extensions/markdown/preview-src/loading.ts @@ -2,35 +2,35 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -(function () { - const unloadedStyles: string[] = []; +import { getSettings } from './settings'; - const settings: any = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); +const unloadedStyles: string[] = []; - const onStyleLoadError = (event: any) => { - const source = event.target.dataset.source; - unloadedStyles.push(source); - }; +const settings = getSettings(); - window.addEventListener('DOMContentLoaded', () => { - for (const link of document.getElementsByClassName('code-user-style') as HTMLCollectionOf) { - if (link.dataset.source) { - link.onerror = onStyleLoadError; - } +const onStyleLoadError = (event: any) => { + const source = event.target.dataset.source; + unloadedStyles.push(source); +}; + +window.addEventListener('DOMContentLoaded', () => { + for (const link of document.getElementsByClassName('code-user-style') as HTMLCollectionOf) { + if (link.dataset.source) { + link.onerror = onStyleLoadError; } - }); + } +}); - window.addEventListener('load', () => { - if (!unloadedStyles.length) { - return; +window.addEventListener('load', () => { + if (!unloadedStyles.length) { + return; + } + window.parent.postMessage({ + type: 'command', + source: settings.source, + body: { + command: '_markdown.onPreviewStyleLoadError', + args: [unloadedStyles] } - window.parent.postMessage({ - type: 'command', - source: settings.source, - body: { - command: '_markdown.onPreviewStyleLoadError', - args: [unloadedStyles] - } - }, '*'); - }); -})(); \ No newline at end of file + }, '*'); +}); \ No newline at end of file diff --git a/extensions/markdown/preview-src/settings.ts b/extensions/markdown/preview-src/settings.ts new file mode 100644 index 00000000000..cab6134d011 --- /dev/null +++ b/extensions/markdown/preview-src/settings.ts @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + + +export function getSettings(): any { + return JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); +} From 3c4002f850337c617e04a0756c62efcde633d6d2 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 10:55:43 -0800 Subject: [PATCH 072/658] Type settings --- extensions/markdown/preview-src/settings.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/extensions/markdown/preview-src/settings.ts b/extensions/markdown/preview-src/settings.ts index cab6134d011..945fc96bd66 100644 --- a/extensions/markdown/preview-src/settings.ts +++ b/extensions/markdown/preview-src/settings.ts @@ -3,7 +3,16 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +export interface PreviewSettings { + source: string; + line: number; + lineCount: number; + scrollPreviewWithEditor: boolean; + scrollEditorWithPreview: boolean; + disableSecurityWarnings: boolean; + doubleClickToSwitchToEditor: boolean; +} -export function getSettings(): any { +export function getSettings(): PreviewSettings { return JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); } From 0a68f769f4675a4afa0b41675979507a5049ba13 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 10:59:35 -0800 Subject: [PATCH 073/658] Move common command logic to own file --- extensions/markdown/preview-src/csp.ts | 10 ++------ extensions/markdown/preview-src/index.ts | 20 +--------------- extensions/markdown/preview-src/loading.ts | 10 ++------ extensions/markdown/preview-src/messaging.ts | 24 ++++++++++++++++++++ 4 files changed, 29 insertions(+), 35 deletions(-) create mode 100644 extensions/markdown/preview-src/messaging.ts diff --git a/extensions/markdown/preview-src/csp.ts b/extensions/markdown/preview-src/csp.ts index 007e7e30fbb..a418fad2ab7 100644 --- a/extensions/markdown/preview-src/csp.ts +++ b/extensions/markdown/preview-src/csp.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { getSettings } from './settings'; +import { postCommand } from './messaging'; const strings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-strings')); const settings = getSettings(); @@ -24,14 +25,7 @@ const showCspWarning = () => { notification.setAttribute('role', 'button'); notification.setAttribute('aria-label', strings.cspAlertMessageLabel); notification.onclick = () => { - window.parent.postMessage({ - type: 'command', - source: settings.source, - body: { - command: 'markdown.showPreviewSecuritySelector', - args: [settings.source] - } - }, '*'); + postCommand('markdown.showPreviewSecuritySelector', [settings.source]); }; document.body.appendChild(notification); }; diff --git a/extensions/markdown/preview-src/index.ts b/extensions/markdown/preview-src/index.ts index 1311315897d..e37a40a86a6 100644 --- a/extensions/markdown/preview-src/index.ts +++ b/extensions/markdown/preview-src/index.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { getSettings } from './settings'; - +import { postCommand, postMessage } from './messaging'; // From https://remysharp.com/2010/07/21/throttling-function-calls function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { @@ -37,24 +37,6 @@ function clampLine(line: number) { return clamp(0, settings.lineCount - 1, line); } -/** - * Post a message to the markdown extension - */ -function postMessage(type: string, body: object) { - window.parent.postMessage({ - type, - source: settings.source, - body - }, '*'); -} - -/** - * Post a command to be executed to the markdown extension - */ -function postCommand(command: string, args: any[]) { - postMessage('command', { command, args }); -} - interface CodeLineElement { element: HTMLElement; diff --git a/extensions/markdown/preview-src/loading.ts b/extensions/markdown/preview-src/loading.ts index ae4c01f68e4..757eba7b8e6 100644 --- a/extensions/markdown/preview-src/loading.ts +++ b/extensions/markdown/preview-src/loading.ts @@ -3,6 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { getSettings } from './settings'; +import { postCommand } from './messaging'; const unloadedStyles: string[] = []; @@ -25,12 +26,5 @@ window.addEventListener('load', () => { if (!unloadedStyles.length) { return; } - window.parent.postMessage({ - type: 'command', - source: settings.source, - body: { - command: '_markdown.onPreviewStyleLoadError', - args: [unloadedStyles] - } - }, '*'); + postCommand('_markdown.onPreviewStyleLoadError', [unloadedStyles]); }); \ No newline at end of file diff --git a/extensions/markdown/preview-src/messaging.ts b/extensions/markdown/preview-src/messaging.ts new file mode 100644 index 00000000000..10571ff28db --- /dev/null +++ b/extensions/markdown/preview-src/messaging.ts @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { getSettings } from './settings'; + +/** + * Post a message to the markdown extension + */ +export function postMessage(type: string, body: object) { + window.parent.postMessage({ + type, + source: getSettings().source, + body + }, '*'); +} + +/** + * Post a command to be executed to the markdown extension + */ +export function postCommand(command: string, args: any[]) { + postMessage('command', { command, args }); +} From 32e0e2d66cf9eaad7c51b651bf3884acca0ca8cf Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 11:03:14 -0800 Subject: [PATCH 074/658] make csp alerter a class --- extensions/markdown/preview-src/csp.ts | 55 +++++++++++++++----------- extensions/markdown/preview-src/pre.ts | 7 +++- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/extensions/markdown/preview-src/csp.ts b/extensions/markdown/preview-src/csp.ts index a418fad2ab7..90e19c90f87 100644 --- a/extensions/markdown/preview-src/csp.ts +++ b/extensions/markdown/preview-src/csp.ts @@ -9,33 +9,40 @@ import { postCommand } from './messaging'; const strings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-strings')); const settings = getSettings(); -let didShow = false; +/** + * Shows an alert when there is a content security policy violation. + */ +export class CspAlerter { + private didShow = false; -const showCspWarning = () => { - if (didShow || settings.disableSecurityWarnings) { - return; + constructor() { + document.addEventListener('securitypolicyviolation', () => { + this.showCspWarning(); + }); + + window.addEventListener('message', (event) => { + if (event && event.data && event.data.name === 'vscode-did-block-svg') { + this.showCspWarning(); + } + }); } - didShow = true; - const notification = document.createElement('a'); - notification.innerText = strings.cspAlertMessageText; - notification.setAttribute('id', 'code-csp-warning'); - notification.setAttribute('title', strings.cspAlertMessageTitle); + private showCspWarning() { + if (this.didShow || settings.disableSecurityWarnings) { + return; + } + this.didShow = true; - notification.setAttribute('role', 'button'); - notification.setAttribute('aria-label', strings.cspAlertMessageLabel); - notification.onclick = () => { - postCommand('markdown.showPreviewSecuritySelector', [settings.source]); - }; - document.body.appendChild(notification); -}; + const notification = document.createElement('a'); + notification.innerText = strings.cspAlertMessageText; + notification.setAttribute('id', 'code-csp-warning'); + notification.setAttribute('title', strings.cspAlertMessageTitle); -document.addEventListener('securitypolicyviolation', () => { - showCspWarning(); -}); - -window.addEventListener('message', (event) => { - if (event && event.data && event.data.name === 'vscode-did-block-svg') { - showCspWarning(); + notification.setAttribute('role', 'button'); + notification.setAttribute('aria-label', strings.cspAlertMessageLabel); + notification.onclick = () => { + postCommand('markdown.showPreviewSecuritySelector', [settings.source]); + }; + document.body.appendChild(notification); } -}); \ No newline at end of file +} diff --git a/extensions/markdown/preview-src/pre.ts b/extensions/markdown/preview-src/pre.ts index abdd52a0a83..bf5ba852591 100644 --- a/extensions/markdown/preview-src/pre.ts +++ b/extensions/markdown/preview-src/pre.ts @@ -3,5 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import './csp'; -import './loading'; \ No newline at end of file +import './loading'; +import { CspAlerter } from './csp'; + +// tslint:disable-next-line:no-unused-expression +new CspAlerter(); \ No newline at end of file From c43fe75976e5ae4a9f4ecea36bdce294bd16998f Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 11:06:37 -0800 Subject: [PATCH 075/658] Move strings to own file --- extensions/markdown/preview-src/csp.ts | 7 ++++--- extensions/markdown/preview-src/strings.ts | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 extensions/markdown/preview-src/strings.ts diff --git a/extensions/markdown/preview-src/csp.ts b/extensions/markdown/preview-src/csp.ts index 90e19c90f87..32202952258 100644 --- a/extensions/markdown/preview-src/csp.ts +++ b/extensions/markdown/preview-src/csp.ts @@ -4,11 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { getSettings } from './settings'; +import { getStrings } from './strings'; import { postCommand } from './messaging'; -const strings = JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-strings')); -const settings = getSettings(); - /** * Shows an alert when there is a content security policy violation. */ @@ -28,6 +26,9 @@ export class CspAlerter { } private showCspWarning() { + const strings = getStrings(); + const settings = getSettings(); + if (this.didShow || settings.disableSecurityWarnings) { return; } diff --git a/extensions/markdown/preview-src/strings.ts b/extensions/markdown/preview-src/strings.ts new file mode 100644 index 00000000000..a4de5f0b49b --- /dev/null +++ b/extensions/markdown/preview-src/strings.ts @@ -0,0 +1,8 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +export function getStrings(): { [key: string]: string } { + return JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-strings')); +} From dc0d6badd306c4f5e1c4f03d38f6f1a872d8d922 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 11:13:23 -0800 Subject: [PATCH 076/658] Enable strict mode --- extensions/markdown/preview-src/index.ts | 14 ++++++-------- extensions/markdown/preview-src/loading.ts | 3 --- extensions/markdown/preview-src/settings.ts | 11 +++++++++-- extensions/markdown/preview-src/strings.ts | 9 ++++++++- extensions/markdown/preview-src/tsconfig.json | 6 ++++-- 5 files changed, 27 insertions(+), 16 deletions(-) diff --git a/extensions/markdown/preview-src/index.ts b/extensions/markdown/preview-src/index.ts index e37a40a86a6..079709b7251 100644 --- a/extensions/markdown/preview-src/index.ts +++ b/extensions/markdown/preview-src/index.ts @@ -10,7 +10,7 @@ import { postCommand, postMessage } from './messaging'; function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { threshhold = threshhold || (threshhold = 250); var last: any, deferTimer: any; - return function (...x: any[]) { + return function (this: any, ...x: any[]) { var context = scope || this; var now = +new Date, @@ -71,7 +71,7 @@ function getElementsForSourceLine(targetLine: number): { previous: CodeLineEleme let previous = lines[0] || null; for (const entry of lines) { if (entry.line === lineNumber) { - return { previous: entry, next: null }; + return { previous: entry, next: undefined }; } else if (entry.line > lineNumber) { return { previous, next: entry }; @@ -163,14 +163,14 @@ class ActiveLineMarker { this._current = before; } - _unmarkActiveElement(element: HTMLElement) { + _unmarkActiveElement(element: HTMLElement | undefined) { if (!element) { return; } element.className = element.className.replace(/\bcode-active-line\b/g, ''); } - _markActiveElement(element: HTMLElement) { + _markActiveElement(element: HTMLElement | undefined) { if (!element) { return; } @@ -250,7 +250,7 @@ document.addEventListener('dblclick', event => { const offset = event.pageY; const line = getEditorLineNumberForPageOffset(offset); - if (!isNaN(line)) { + if (typeof line === 'number' && !isNaN(line)) { postMessage('didClick', { line }); } }); @@ -260,8 +260,6 @@ document.addEventListener('click', event => { return; } - const baseElement = document.getElementsByTagName('base')[0]; - let node: any = event.target; while (node) { if (node.tagName && node.tagName === 'A' && node.href) { @@ -287,7 +285,7 @@ if (settings.scrollEditorWithPreview) { scrollDisabled = false; } else { const line = getEditorLineNumberForPageOffset(window.scrollY); - if (!isNaN(line)) { + if (typeof line === 'number' && !isNaN(line)) { postMessage('revealLine', { line }); } } diff --git a/extensions/markdown/preview-src/loading.ts b/extensions/markdown/preview-src/loading.ts index 757eba7b8e6..f60cdf226d8 100644 --- a/extensions/markdown/preview-src/loading.ts +++ b/extensions/markdown/preview-src/loading.ts @@ -2,13 +2,10 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { getSettings } from './settings'; import { postCommand } from './messaging'; const unloadedStyles: string[] = []; -const settings = getSettings(); - const onStyleLoadError = (event: any) => { const source = event.target.dataset.source; unloadedStyles.push(source); diff --git a/extensions/markdown/preview-src/settings.ts b/extensions/markdown/preview-src/settings.ts index 945fc96bd66..98753928a71 100644 --- a/extensions/markdown/preview-src/settings.ts +++ b/extensions/markdown/preview-src/settings.ts @@ -7,12 +7,19 @@ export interface PreviewSettings { source: string; line: number; lineCount: number; - scrollPreviewWithEditor: boolean; + scrollPreviewWithEditor?: boolean; scrollEditorWithPreview: boolean; disableSecurityWarnings: boolean; doubleClickToSwitchToEditor: boolean; } export function getSettings(): PreviewSettings { - return JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-settings')); + const element = document.getElementById('vscode-markdown-preview-data'); + if (element) { + const data = element.getAttribute('data-settings'); + if (data) { + return JSON.parse(data); + } + } + throw new Error('Could not load settings'); } diff --git a/extensions/markdown/preview-src/strings.ts b/extensions/markdown/preview-src/strings.ts index a4de5f0b49b..61524535b9b 100644 --- a/extensions/markdown/preview-src/strings.ts +++ b/extensions/markdown/preview-src/strings.ts @@ -4,5 +4,12 @@ *--------------------------------------------------------------------------------------------*/ export function getStrings(): { [key: string]: string } { - return JSON.parse(document.getElementById('vscode-markdown-preview-data').getAttribute('data-strings')); + const store = document.getElementById('vscode-markdown-preview-data'); + if (store) { + const data = store.getAttribute('data-strings'); + if (data) { + return JSON.parse(data); + } + } + throw new Error('Could not load strings'); } diff --git a/extensions/markdown/preview-src/tsconfig.json b/extensions/markdown/preview-src/tsconfig.json index e017eead5a2..cf586892b7c 100644 --- a/extensions/markdown/preview-src/tsconfig.json +++ b/extensions/markdown/preview-src/tsconfig.json @@ -1,10 +1,12 @@ { "compilerOptions": { "outDir": "./dist/", - "noImplicitAny": true, "module": "es6", "target": "es6", "jsx": "react", - "sourceMap": true + "sourceMap": true, + "strict": true, + "noImplicitAny": true, + "noUnusedLocals": true } } \ No newline at end of file From 5ef492b88dd8755fcfaa37427eab72e75486532b Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 11:15:02 -0800 Subject: [PATCH 077/658] Move style loading monitor to class --- extensions/markdown/preview-src/loading.ts | 40 ++++++++++++---------- extensions/markdown/preview-src/pre.ts | 7 ++-- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/extensions/markdown/preview-src/loading.ts b/extensions/markdown/preview-src/loading.ts index f60cdf226d8..34692558774 100644 --- a/extensions/markdown/preview-src/loading.ts +++ b/extensions/markdown/preview-src/loading.ts @@ -4,24 +4,28 @@ *--------------------------------------------------------------------------------------------*/ import { postCommand } from './messaging'; -const unloadedStyles: string[] = []; +export class StyleLoadingMonitor { + private unloadedStyles: string[] = []; -const onStyleLoadError = (event: any) => { - const source = event.target.dataset.source; - unloadedStyles.push(source); -}; + constructor() { + const onStyleLoadError = (event: any) => { + const source = event.target.dataset.source; + this.unloadedStyles.push(source); + }; -window.addEventListener('DOMContentLoaded', () => { - for (const link of document.getElementsByClassName('code-user-style') as HTMLCollectionOf) { - if (link.dataset.source) { - link.onerror = onStyleLoadError; - } + window.addEventListener('DOMContentLoaded', () => { + for (const link of document.getElementsByClassName('code-user-style') as HTMLCollectionOf) { + if (link.dataset.source) { + link.onerror = onStyleLoadError; + } + } + }); + + window.addEventListener('load', () => { + if (!this.unloadedStyles.length) { + return; + } + postCommand('_markdown.onPreviewStyleLoadError', [this.unloadedStyles]); + }); } -}); - -window.addEventListener('load', () => { - if (!unloadedStyles.length) { - return; - } - postCommand('_markdown.onPreviewStyleLoadError', [unloadedStyles]); -}); \ No newline at end of file +} \ No newline at end of file diff --git a/extensions/markdown/preview-src/pre.ts b/extensions/markdown/preview-src/pre.ts index bf5ba852591..c9fd0ec5b35 100644 --- a/extensions/markdown/preview-src/pre.ts +++ b/extensions/markdown/preview-src/pre.ts @@ -3,8 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import './loading'; import { CspAlerter } from './csp'; +import { StyleLoadingMonitor } from './loading'; // tslint:disable-next-line:no-unused-expression -new CspAlerter(); \ No newline at end of file +new CspAlerter(); + +// tslint:disable-next-line:no-unused-expression +new StyleLoadingMonitor(); \ No newline at end of file From 08baa73de86bb4d4e6311ac49008da2f30eb41f2 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 11:19:21 -0800 Subject: [PATCH 078/658] Extract onceDocumentLoaded to function --- extensions/markdown/preview-src/events.ts | 12 ++++++++++++ extensions/markdown/preview-src/index.ts | 13 +++---------- 2 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 extensions/markdown/preview-src/events.ts diff --git a/extensions/markdown/preview-src/events.ts b/extensions/markdown/preview-src/events.ts new file mode 100644 index 00000000000..40833aca711 --- /dev/null +++ b/extensions/markdown/preview-src/events.ts @@ -0,0 +1,12 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +export function onceDocumentLoaded(f: () => void) { + if (document.readyState === 'loading' || document.readyState === 'uninitialized') { + document.addEventListener('DOMContentLoaded', f); + } else { + f(); + } +} \ No newline at end of file diff --git a/extensions/markdown/preview-src/index.ts b/extensions/markdown/preview-src/index.ts index 079709b7251..56ca09ff1ed 100644 --- a/extensions/markdown/preview-src/index.ts +++ b/extensions/markdown/preview-src/index.ts @@ -5,6 +5,7 @@ import { getSettings } from './settings'; import { postCommand, postMessage } from './messaging'; +import { onceDocumentLoaded } from './events'; // From https://remysharp.com/2010/07/21/throttling-function-calls function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { @@ -182,7 +183,7 @@ var scrollDisabled = true; const marker = new ActiveLineMarker(); const settings = getSettings(); -function onLoad() { +onceDocumentLoaded(() => { if (settings.scrollPreviewWithEditor) { setTimeout(() => { const initialLine = +settings.line; @@ -192,7 +193,7 @@ function onLoad() { } }, 0); } -} +}); const onUpdateView = (() => { const doScroll = throttle((line: number) => { @@ -208,14 +209,6 @@ const onUpdateView = (() => { }; })(); - -if (document.readyState === 'loading' || document.readyState === 'uninitialized') { - document.addEventListener('DOMContentLoaded', onLoad); -} else { - onLoad(); -} - - window.addEventListener('resize', () => { scrollDisabled = true; }, true); From ffcb6fdba8dabb05d0ebc29718d4ebc0850d777b Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 11:21:34 -0800 Subject: [PATCH 079/658] Start moving some scroll sync logic to own file --- extensions/markdown/preview-src/index.ts | 120 +---------------- .../markdown/preview-src/scroll-sync.ts | 127 ++++++++++++++++++ 2 files changed, 128 insertions(+), 119 deletions(-) create mode 100644 extensions/markdown/preview-src/scroll-sync.ts diff --git a/extensions/markdown/preview-src/index.ts b/extensions/markdown/preview-src/index.ts index 56ca09ff1ed..7a6541787e2 100644 --- a/extensions/markdown/preview-src/index.ts +++ b/extensions/markdown/preview-src/index.ts @@ -6,6 +6,7 @@ import { getSettings } from './settings'; import { postCommand, postMessage } from './messaging'; import { onceDocumentLoaded } from './events'; +import { getEditorLineNumberForPageOffset, getElementsForSourceLine, scrollToRevealSourceLine } from './scroll-sync'; // From https://remysharp.com/2010/07/21/throttling-function-calls function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { @@ -30,125 +31,6 @@ function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { }; } -function clamp(min: number, max: number, value: number) { - return Math.min(max, Math.max(min, value)); -} - -function clampLine(line: number) { - return clamp(0, settings.lineCount - 1, line); -} - - -interface CodeLineElement { - element: HTMLElement; - line: number; -} - -const getCodeLineElements = (() => { - let elements: CodeLineElement[]; - return () => { - if (!elements) { - elements = Array.prototype.map.call( - document.getElementsByClassName('code-line'), - (element: any) => { - const line = +element.getAttribute('data-line'); - return { element, line }; - }) - .filter((x: any) => !isNaN(x.line)); - } - return elements; - }; -})(); - -/** - * Find the html elements that map to a specific target line in the editor. - * - * If an exact match, returns a single element. If the line is between elements, - * returns the element prior to and the element after the given line. - */ -function getElementsForSourceLine(targetLine: number): { previous: CodeLineElement; next?: CodeLineElement; } { - const lineNumber = Math.floor(targetLine); - const lines = getCodeLineElements(); - let previous = lines[0] || null; - for (const entry of lines) { - if (entry.line === lineNumber) { - return { previous: entry, next: undefined }; - } - else if (entry.line > lineNumber) { - return { previous, next: entry }; - } - previous = entry; - } - return { previous }; -} - -/** - * Find the html elements that are at a specific pixel offset on the page. - */ -function getLineElementsAtPageOffset(offset: number): { previous: CodeLineElement; next?: CodeLineElement; } { - const lines = getCodeLineElements(); - const position = offset - window.scrollY; - let lo = -1; - let hi = lines.length - 1; - while (lo + 1 < hi) { - const mid = Math.floor((lo + hi) / 2); - const bounds = lines[mid].element.getBoundingClientRect(); - if (bounds.top + bounds.height >= position) { - hi = mid; - } - else { - lo = mid; - } - } - const hiElement = lines[hi]; - const hiBounds = hiElement.element.getBoundingClientRect(); - if (hi >= 1 && hiBounds.top > position) { - const loElement = lines[lo]; - return { previous: loElement, next: hiElement }; - } - return { previous: hiElement }; -} - -/** - * Attempt to reveal the element for a source line in the editor. - */ -function scrollToRevealSourceLine(line: number) { - const { previous, next } = getElementsForSourceLine(line); - if (previous && settings.scrollPreviewWithEditor) { - let scrollTo = 0; - const rect = previous.element.getBoundingClientRect(); - const previousTop = rect.top; - if (next && next.line !== previous.line) { - // Between two elements. Go to percentage offset between them. - const betweenProgress = (line - previous.line) / (next.line - previous.line); - const elementOffset = next.element.getBoundingClientRect().top - previousTop; - scrollTo = previousTop + betweenProgress * elementOffset; - } - else { - scrollTo = previousTop; - } - window.scroll(0, Math.max(1, window.scrollY + scrollTo)); - } -} - -function getEditorLineNumberForPageOffset(offset: number) { - const { previous, next } = getLineElementsAtPageOffset(offset); - if (previous) { - const previousBounds = previous.element.getBoundingClientRect(); - const offsetFromPrevious = (offset - window.scrollY - previousBounds.top); - if (next) { - const progressBetweenElements = offsetFromPrevious / (next.element.getBoundingClientRect().top - previousBounds.top); - const line = previous.line + progressBetweenElements * (next.line - previous.line); - return clampLine(line); - } - else { - const progressWithinElement = offsetFromPrevious / (previousBounds.height); - const line = previous.line + progressWithinElement; - return clampLine(line); - } - } - return null; -} class ActiveLineMarker { private _current: any; diff --git a/extensions/markdown/preview-src/scroll-sync.ts b/extensions/markdown/preview-src/scroll-sync.ts new file mode 100644 index 00000000000..dacc14a8676 --- /dev/null +++ b/extensions/markdown/preview-src/scroll-sync.ts @@ -0,0 +1,127 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { getSettings } from './settings'; + + +function clamp(min: number, max: number, value: number) { + return Math.min(max, Math.max(min, value)); +} + +function clampLine(line: number) { + return clamp(0, getSettings().lineCount - 1, line); +} + + +export interface CodeLineElement { + element: HTMLElement; + line: number; +} + +const getCodeLineElements = (() => { + let elements: CodeLineElement[]; + return () => { + if (!elements) { + elements = Array.prototype.map.call( + document.getElementsByClassName('code-line'), + (element: any) => { + const line = +element.getAttribute('data-line'); + return { element, line }; + }) + .filter((x: any) => !isNaN(x.line)); + } + return elements; + }; +})(); + +/** + * Find the html elements that map to a specific target line in the editor. + * + * If an exact match, returns a single element. If the line is between elements, + * returns the element prior to and the element after the given line. + */ +export function getElementsForSourceLine(targetLine: number): { previous: CodeLineElement; next?: CodeLineElement; } { + const lineNumber = Math.floor(targetLine); + const lines = getCodeLineElements(); + let previous = lines[0] || null; + for (const entry of lines) { + if (entry.line === lineNumber) { + return { previous: entry, next: undefined }; + } + else if (entry.line > lineNumber) { + return { previous, next: entry }; + } + previous = entry; + } + return { previous }; +} + +/** + * Find the html elements that are at a specific pixel offset on the page. + */ +export function getLineElementsAtPageOffset(offset: number): { previous: CodeLineElement; next?: CodeLineElement; } { + const lines = getCodeLineElements(); + const position = offset - window.scrollY; + let lo = -1; + let hi = lines.length - 1; + while (lo + 1 < hi) { + const mid = Math.floor((lo + hi) / 2); + const bounds = lines[mid].element.getBoundingClientRect(); + if (bounds.top + bounds.height >= position) { + hi = mid; + } + else { + lo = mid; + } + } + const hiElement = lines[hi]; + const hiBounds = hiElement.element.getBoundingClientRect(); + if (hi >= 1 && hiBounds.top > position) { + const loElement = lines[lo]; + return { previous: loElement, next: hiElement }; + } + return { previous: hiElement }; +} + +/** + * Attempt to reveal the element for a source line in the editor. + */ +export function scrollToRevealSourceLine(line: number) { + const { previous, next } = getElementsForSourceLine(line); + if (previous && getSettings().scrollPreviewWithEditor) { + let scrollTo = 0; + const rect = previous.element.getBoundingClientRect(); + const previousTop = rect.top; + if (next && next.line !== previous.line) { + // Between two elements. Go to percentage offset between them. + const betweenProgress = (line - previous.line) / (next.line - previous.line); + const elementOffset = next.element.getBoundingClientRect().top - previousTop; + scrollTo = previousTop + betweenProgress * elementOffset; + } + else { + scrollTo = previousTop; + } + window.scroll(0, Math.max(1, window.scrollY + scrollTo)); + } +} + +export function getEditorLineNumberForPageOffset(offset: number) { + const { previous, next } = getLineElementsAtPageOffset(offset); + if (previous) { + const previousBounds = previous.element.getBoundingClientRect(); + const offsetFromPrevious = (offset - window.scrollY - previousBounds.top); + if (next) { + const progressBetweenElements = offsetFromPrevious / (next.element.getBoundingClientRect().top - previousBounds.top); + const line = previous.line + progressBetweenElements * (next.line - previous.line); + return clampLine(line); + } + else { + const progressWithinElement = offsetFromPrevious / (previousBounds.height); + const line = previous.line + progressWithinElement; + return clampLine(line); + } + } + return null; +} From cf9dfda7d41ceb22ac6f3a31f628f29c654a61f1 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 11:22:43 -0800 Subject: [PATCH 080/658] Move active line marker to own file --- .../markdown/preview-src/activeLineMarker.ts | 34 +++++++++++++++++++ extensions/markdown/preview-src/index.ts | 32 ++--------------- 2 files changed, 36 insertions(+), 30 deletions(-) create mode 100644 extensions/markdown/preview-src/activeLineMarker.ts diff --git a/extensions/markdown/preview-src/activeLineMarker.ts b/extensions/markdown/preview-src/activeLineMarker.ts new file mode 100644 index 00000000000..21f41bc675f --- /dev/null +++ b/extensions/markdown/preview-src/activeLineMarker.ts @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { getElementsForSourceLine } from './scroll-sync'; + +export class ActiveLineMarker { + private _current: any; + + onDidChangeTextEditorSelection(line: number) { + const { previous } = getElementsForSourceLine(line); + this._update(previous && previous.element); + } + + _update(before: HTMLElement | undefined) { + this._unmarkActiveElement(this._current); + this._markActiveElement(before); + this._current = before; + } + + _unmarkActiveElement(element: HTMLElement | undefined) { + if (!element) { + return; + } + element.className = element.className.replace(/\bcode-active-line\b/g, ''); + } + + _markActiveElement(element: HTMLElement | undefined) { + if (!element) { + return; + } + element.className += ' code-active-line'; + } +} \ No newline at end of file diff --git a/extensions/markdown/preview-src/index.ts b/extensions/markdown/preview-src/index.ts index 7a6541787e2..0ca9d1a1b08 100644 --- a/extensions/markdown/preview-src/index.ts +++ b/extensions/markdown/preview-src/index.ts @@ -6,7 +6,8 @@ import { getSettings } from './settings'; import { postCommand, postMessage } from './messaging'; import { onceDocumentLoaded } from './events'; -import { getEditorLineNumberForPageOffset, getElementsForSourceLine, scrollToRevealSourceLine } from './scroll-sync'; +import { getEditorLineNumberForPageOffset, scrollToRevealSourceLine } from './scroll-sync'; +import { ActiveLineMarker } from './activeLineMarker'; // From https://remysharp.com/2010/07/21/throttling-function-calls function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { @@ -32,35 +33,6 @@ function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { } -class ActiveLineMarker { - private _current: any; - - onDidChangeTextEditorSelection(line: number) { - const { previous } = getElementsForSourceLine(line); - this._update(previous && previous.element); - } - - _update(before: HTMLElement | undefined) { - this._unmarkActiveElement(this._current); - this._markActiveElement(before); - this._current = before; - } - - _unmarkActiveElement(element: HTMLElement | undefined) { - if (!element) { - return; - } - element.className = element.className.replace(/\bcode-active-line\b/g, ''); - } - - _markActiveElement(element: HTMLElement | undefined) { - if (!element) { - return; - } - element.className += ' code-active-line'; - } -} - var scrollDisabled = true; const marker = new ActiveLineMarker(); const settings = getSettings(); From f517f69175480b087185e8610e34102a114cf73f Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 11:26:04 -0800 Subject: [PATCH 081/658] Cache settings --- extensions/markdown/preview-src/settings.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/extensions/markdown/preview-src/settings.ts b/extensions/markdown/preview-src/settings.ts index 98753928a71..b00abf281f0 100644 --- a/extensions/markdown/preview-src/settings.ts +++ b/extensions/markdown/preview-src/settings.ts @@ -13,13 +13,21 @@ export interface PreviewSettings { doubleClickToSwitchToEditor: boolean; } +let cachedSettings: PreviewSettings | undefined = undefined; + export function getSettings(): PreviewSettings { + if (cachedSettings) { + return cachedSettings; + } + const element = document.getElementById('vscode-markdown-preview-data'); if (element) { const data = element.getAttribute('data-settings'); if (data) { - return JSON.parse(data); + cachedSettings = JSON.parse(data); + return cachedSettings!; } } + throw new Error('Could not load settings'); } From b877522bced9bd0688b9c5bbcf40168507e3ac87 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 11:34:14 -0800 Subject: [PATCH 082/658] Use lodash throttle --- extensions/markdown/package.json | 4 ++- extensions/markdown/preview-src/index.ts | 25 +------------------ extensions/markdown/preview-src/tsconfig.json | 2 +- extensions/markdown/yarn.lock | 14 +++++++++++ 4 files changed, 19 insertions(+), 26 deletions(-) diff --git a/extensions/markdown/package.json b/extensions/markdown/package.json index b13f665dd21..4d66b03ef5e 100644 --- a/extensions/markdown/package.json +++ b/extensions/markdown/package.json @@ -283,12 +283,14 @@ }, "devDependencies": { "@types/highlight.js": "9.1.10", + "@types/lodash.throttle": "^4.1.3", "@types/markdown-it": "0.0.2", "@types/node": "7.0.43", + "lodash.throttle": "^4.1.1", "ts-loader": "^4.0.1", "typescript": "^2.7.2", "vscode": "^1.1.10", "webpack": "^4.1.0", "webpack-cli": "^2.0.10" } -} +} \ No newline at end of file diff --git a/extensions/markdown/preview-src/index.ts b/extensions/markdown/preview-src/index.ts index 0ca9d1a1b08..0d103c5b4a2 100644 --- a/extensions/markdown/preview-src/index.ts +++ b/extensions/markdown/preview-src/index.ts @@ -8,30 +8,7 @@ import { postCommand, postMessage } from './messaging'; import { onceDocumentLoaded } from './events'; import { getEditorLineNumberForPageOffset, scrollToRevealSourceLine } from './scroll-sync'; import { ActiveLineMarker } from './activeLineMarker'; - -// From https://remysharp.com/2010/07/21/throttling-function-calls -function throttle(fn: (x: any) => any, threshhold: any, scope?: any) { - threshhold = threshhold || (threshhold = 250); - var last: any, deferTimer: any; - return function (this: any, ...x: any[]) { - var context = scope || this; - - var now = +new Date, - args = arguments; - if (last && now < last + threshhold) { - // hold on to it - clearTimeout(deferTimer); - deferTimer = setTimeout(function () { - last = now; - fn.apply(context, args); - }, threshhold + last - now); - } else { - last = now; - fn.apply(context, args); - } - }; -} - +import throttle = require('lodash.throttle'); var scrollDisabled = true; const marker = new ActiveLineMarker(); diff --git a/extensions/markdown/preview-src/tsconfig.json b/extensions/markdown/preview-src/tsconfig.json index cf586892b7c..9684d1ec2d9 100644 --- a/extensions/markdown/preview-src/tsconfig.json +++ b/extensions/markdown/preview-src/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "outDir": "./dist/", - "module": "es6", + "module": "commonjs", "target": "es6", "jsx": "react", "sourceMap": true, diff --git a/extensions/markdown/yarn.lock b/extensions/markdown/yarn.lock index f8a993b2347..f38d9ea33aa 100644 --- a/extensions/markdown/yarn.lock +++ b/extensions/markdown/yarn.lock @@ -10,6 +10,16 @@ version "9.1.10" resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.1.10.tgz#b621f809cd9573b80992b90cffc5788208e3069c" +"@types/lodash.throttle@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/lodash.throttle/-/lodash.throttle-4.1.3.tgz#8bfa4fec519d09ebce56c815bcbff3e55c604db9" + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.104" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.104.tgz#53ee2357fa2e6e68379341d92eb2ecea4b11bb80" + "@types/markdown-it@0.0.2": version "0.0.2" resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-0.0.2.tgz#5d9ad19e6e6508cdd2f2596df86fd0aade598660" @@ -3277,6 +3287,10 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + lodash@^4.11.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" From f1ad6834ec6fb5244909456f2b5274bba964ee5a Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 5 Mar 2018 21:33:00 +0100 Subject: [PATCH 083/658] panelViewlet: only update title area if no longer a singleView or becoming a singleView fixes #45033 --- src/vs/workbench/browser/parts/views/panelViewlet.ts | 8 ++++++++ .../parts/files/electron-browser/explorerViewlet.ts | 12 ------------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/vs/workbench/browser/parts/views/panelViewlet.ts b/src/vs/workbench/browser/parts/views/panelViewlet.ts index 6635f0d7f68..e935a1c6804 100644 --- a/src/vs/workbench/browser/parts/views/panelViewlet.ts +++ b/src/vs/workbench/browser/parts/views/panelViewlet.ts @@ -266,10 +266,14 @@ export class PanelViewlet extends Viewlet { const disposable = combinedDisposable([onDidFocus, styler, onDidChange]); const panelItem: IViewletPanelItem = { panel, disposable }; + const wasSingleView = this.isSingleView(); this.panelItems.splice(index, 0, panelItem); this.panelview.addPanel(panel, size, index); this.updateViewHeaders(); + if (this.isSingleView() !== wasSingleView) { + this.updateTitleArea(); + } } removePanel(panel: ViewletPanel): void { @@ -283,11 +287,15 @@ export class PanelViewlet extends Viewlet { this.lastFocusedPanel = undefined; } + const wasSingleView = this.isSingleView(); this.panelview.removePanel(panel); const [panelItem] = this.panelItems.splice(index, 1); panelItem.disposable.dispose(); this.updateViewHeaders(); + if (wasSingleView !== this.isSingleView()) { + this.updateTitleArea(); + } } movePanel(from: ViewletPanel, to: ViewletPanel): void { diff --git a/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts b/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts index fd0e7da5bfe..a07fa3bdb32 100644 --- a/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts +++ b/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts @@ -35,8 +35,6 @@ import { IContextMenuService } from 'vs/platform/contextview/browser/contextView import { Disposable } from 'vs/base/common/lifecycle'; import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { IPartService } from 'vs/workbench/services/part/common/partService'; -import { ViewletPanel } from 'vs/workbench/browser/parts/views/panelViewlet'; - export class ExplorerViewletViewsContribution extends Disposable implements IWorkbenchContribution { @@ -241,16 +239,6 @@ export class ExplorerViewlet extends PersistentViewsViewlet implements IExplorer return this.getView(EmptyView.ID); } - public addPanel(panel: ViewletPanel, size: number, index: number): void { - super.addPanel(panel, size, index); - this.updateTitleArea(); - } - - public removePanel(panel: ViewletPanel): void { - super.removePanel(panel); - this.updateTitleArea(); - } - public setVisible(visible: boolean): TPromise { this.viewletVisibleContextKey.set(visible); return super.setVisible(visible); From 1ab4fcd58668ab5dff876abd519a68c09e297b28 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 12:44:17 -0800 Subject: [PATCH 084/658] Check-in preview scripts Need a way to run custom scripts as part of the top level vs code build --- build/gulpfile.hygiene.js | 5 +- extensions/markdown/.gitignore | 1 - extensions/markdown/media/index.js | 943 +++++++++++++++++++++++++++++ extensions/markdown/media/pre.js | 297 +++++++++ extensions/markdown/package.json | 2 + 5 files changed, 1246 insertions(+), 2 deletions(-) delete mode 100644 extensions/markdown/.gitignore create mode 100644 extensions/markdown/media/index.js create mode 100644 extensions/markdown/media/pre.js diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js index 4549611ecbd..c314c2cf6a4 100644 --- a/build/gulpfile.hygiene.js +++ b/build/gulpfile.hygiene.js @@ -50,7 +50,8 @@ const eolFilter = [ '!build/win32/**', '!build/**/*.sh', '!build/tfs/**/*.js', - '!**/Dockerfile' + '!**/Dockerfile', + '!extensions/markdown/media/*.js' ]; const indentationFilter = [ @@ -81,6 +82,7 @@ const indentationFilter = [ '!extensions/**/syntaxes/**', '!extensions/**/themes/**', '!extensions/**/colorize-fixtures/**', + '!extensions/markdown/media/*.js', '!extensions/vscode-api-tests/testWorkspace/**', '!extensions/vscode-api-tests/testWorkspace2/**' ]; @@ -105,6 +107,7 @@ const copyrightFilter = [ '!resources/linux/snap/snapcraft.yaml', '!resources/win32/bin/code.js', '!extensions/markdown/media/tomorrow.css', + '!extensions/markdown/media/*.js', '!extensions/html/server/src/modes/typescript/*' ]; diff --git a/extensions/markdown/.gitignore b/extensions/markdown/.gitignore deleted file mode 100644 index 5c535300b86..00000000000 --- a/extensions/markdown/.gitignore +++ /dev/null @@ -1 +0,0 @@ -media/*.js \ No newline at end of file diff --git a/extensions/markdown/media/index.js b/extensions/markdown/media/index.js new file mode 100644 index 00000000000..b3e4e93f29e --- /dev/null +++ b/extensions/markdown/media/index.js @@ -0,0 +1,943 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./preview-src/index.ts"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/lodash.throttle/index.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash.throttle/index.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now = function() { + return root.Date.now(); +}; + +/** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ +function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + result = wait - timeSinceLastCall; + + return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; +} + +/** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ +function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +module.exports = throttle; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/webpack/buildin/global.js": +/*!***********************************!*\ + !*** (webpack)/buildin/global.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1, eval)("this"); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), + +/***/ "./preview-src/activeLineMarker.ts": +/*!*****************************************!*\ + !*** ./preview-src/activeLineMarker.ts ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const scroll_sync_1 = __webpack_require__(/*! ./scroll-sync */ "./preview-src/scroll-sync.ts"); +class ActiveLineMarker { + onDidChangeTextEditorSelection(line) { + const { previous } = scroll_sync_1.getElementsForSourceLine(line); + this._update(previous && previous.element); + } + _update(before) { + this._unmarkActiveElement(this._current); + this._markActiveElement(before); + this._current = before; + } + _unmarkActiveElement(element) { + if (!element) { + return; + } + element.className = element.className.replace(/\bcode-active-line\b/g, ''); + } + _markActiveElement(element) { + if (!element) { + return; + } + element.className += ' code-active-line'; + } +} +exports.ActiveLineMarker = ActiveLineMarker; + + +/***/ }), + +/***/ "./preview-src/events.ts": +/*!*******************************!*\ + !*** ./preview-src/events.ts ***! + \*******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +function onceDocumentLoaded(f) { + if (document.readyState === 'loading' || document.readyState === 'uninitialized') { + document.addEventListener('DOMContentLoaded', f); + } + else { + f(); + } +} +exports.onceDocumentLoaded = onceDocumentLoaded; + + +/***/ }), + +/***/ "./preview-src/index.ts": +/*!******************************!*\ + !*** ./preview-src/index.ts ***! + \******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +const settings_1 = __webpack_require__(/*! ./settings */ "./preview-src/settings.ts"); +const messaging_1 = __webpack_require__(/*! ./messaging */ "./preview-src/messaging.ts"); +const events_1 = __webpack_require__(/*! ./events */ "./preview-src/events.ts"); +const scroll_sync_1 = __webpack_require__(/*! ./scroll-sync */ "./preview-src/scroll-sync.ts"); +const activeLineMarker_1 = __webpack_require__(/*! ./activeLineMarker */ "./preview-src/activeLineMarker.ts"); +const throttle = __webpack_require__(/*! lodash.throttle */ "./node_modules/lodash.throttle/index.js"); +var scrollDisabled = true; +const marker = new activeLineMarker_1.ActiveLineMarker(); +const settings = settings_1.getSettings(); +events_1.onceDocumentLoaded(() => { + if (settings.scrollPreviewWithEditor) { + setTimeout(() => { + const initialLine = +settings.line; + if (!isNaN(initialLine)) { + scrollDisabled = true; + scroll_sync_1.scrollToRevealSourceLine(initialLine); + } + }, 0); + } +}); +const onUpdateView = (() => { + const doScroll = throttle((line) => { + scrollDisabled = true; + scroll_sync_1.scrollToRevealSourceLine(line); + }, 50); + return (line, settings) => { + if (!isNaN(line)) { + settings.line = line; + doScroll(line); + } + }; +})(); +window.addEventListener('resize', () => { + scrollDisabled = true; +}, true); +window.addEventListener('message', event => { + if (event.data.source !== settings.source) { + return; + } + switch (event.data.type) { + case 'onDidChangeTextEditorSelection': + marker.onDidChangeTextEditorSelection(event.data.line); + break; + case 'updateView': + onUpdateView(event.data.line, settings); + break; + } +}, false); +document.addEventListener('dblclick', event => { + if (!settings.doubleClickToSwitchToEditor) { + return; + } + // Ignore clicks on links + for (let node = event.target; node; node = node.parentNode) { + if (node.tagName === 'A') { + return; + } + } + const offset = event.pageY; + const line = scroll_sync_1.getEditorLineNumberForPageOffset(offset); + if (typeof line === 'number' && !isNaN(line)) { + messaging_1.postMessage('didClick', { line }); + } +}); +document.addEventListener('click', event => { + if (!event) { + return; + } + let node = event.target; + while (node) { + if (node.tagName && node.tagName === 'A' && node.href) { + if (node.getAttribute('href').startsWith('#')) { + break; + } + if (node.href.startsWith('file://') || node.href.startsWith('vscode-workspace-resource:')) { + const [path, fragment] = node.href.replace(/^(file:\/\/|vscode-workspace-resource:)/i, '').split('#'); + messaging_1.postCommand('_markdown.openDocumentLink', [{ path, fragment }]); + event.preventDefault(); + event.stopPropagation(); + break; + } + break; + } + node = node.parentNode; + } +}, true); +if (settings.scrollEditorWithPreview) { + window.addEventListener('scroll', throttle(() => { + if (scrollDisabled) { + scrollDisabled = false; + } + else { + const line = scroll_sync_1.getEditorLineNumberForPageOffset(window.scrollY); + if (typeof line === 'number' && !isNaN(line)) { + messaging_1.postMessage('revealLine', { line }); + } + } + }, 50)); +} + + +/***/ }), + +/***/ "./preview-src/messaging.ts": +/*!**********************************!*\ + !*** ./preview-src/messaging.ts ***! + \**********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +const settings_1 = __webpack_require__(/*! ./settings */ "./preview-src/settings.ts"); +/** + * Post a message to the markdown extension + */ +function postMessage(type, body) { + window.parent.postMessage({ + type, + source: settings_1.getSettings().source, + body + }, '*'); +} +exports.postMessage = postMessage; +/** + * Post a command to be executed to the markdown extension + */ +function postCommand(command, args) { + postMessage('command', { command, args }); +} +exports.postCommand = postCommand; + + +/***/ }), + +/***/ "./preview-src/scroll-sync.ts": +/*!************************************!*\ + !*** ./preview-src/scroll-sync.ts ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +const settings_1 = __webpack_require__(/*! ./settings */ "./preview-src/settings.ts"); +function clamp(min, max, value) { + return Math.min(max, Math.max(min, value)); +} +function clampLine(line) { + return clamp(0, settings_1.getSettings().lineCount - 1, line); +} +const getCodeLineElements = (() => { + let elements; + return () => { + if (!elements) { + elements = Array.prototype.map.call(document.getElementsByClassName('code-line'), (element) => { + const line = +element.getAttribute('data-line'); + return { element, line }; + }) + .filter((x) => !isNaN(x.line)); + } + return elements; + }; +})(); +/** + * Find the html elements that map to a specific target line in the editor. + * + * If an exact match, returns a single element. If the line is between elements, + * returns the element prior to and the element after the given line. + */ +function getElementsForSourceLine(targetLine) { + const lineNumber = Math.floor(targetLine); + const lines = getCodeLineElements(); + let previous = lines[0] || null; + for (const entry of lines) { + if (entry.line === lineNumber) { + return { previous: entry, next: undefined }; + } + else if (entry.line > lineNumber) { + return { previous, next: entry }; + } + previous = entry; + } + return { previous }; +} +exports.getElementsForSourceLine = getElementsForSourceLine; +/** + * Find the html elements that are at a specific pixel offset on the page. + */ +function getLineElementsAtPageOffset(offset) { + const lines = getCodeLineElements(); + const position = offset - window.scrollY; + let lo = -1; + let hi = lines.length - 1; + while (lo + 1 < hi) { + const mid = Math.floor((lo + hi) / 2); + const bounds = lines[mid].element.getBoundingClientRect(); + if (bounds.top + bounds.height >= position) { + hi = mid; + } + else { + lo = mid; + } + } + const hiElement = lines[hi]; + const hiBounds = hiElement.element.getBoundingClientRect(); + if (hi >= 1 && hiBounds.top > position) { + const loElement = lines[lo]; + return { previous: loElement, next: hiElement }; + } + return { previous: hiElement }; +} +exports.getLineElementsAtPageOffset = getLineElementsAtPageOffset; +/** + * Attempt to reveal the element for a source line in the editor. + */ +function scrollToRevealSourceLine(line) { + const { previous, next } = getElementsForSourceLine(line); + if (previous && settings_1.getSettings().scrollPreviewWithEditor) { + let scrollTo = 0; + const rect = previous.element.getBoundingClientRect(); + const previousTop = rect.top; + if (next && next.line !== previous.line) { + // Between two elements. Go to percentage offset between them. + const betweenProgress = (line - previous.line) / (next.line - previous.line); + const elementOffset = next.element.getBoundingClientRect().top - previousTop; + scrollTo = previousTop + betweenProgress * elementOffset; + } + else { + scrollTo = previousTop; + } + window.scroll(0, Math.max(1, window.scrollY + scrollTo)); + } +} +exports.scrollToRevealSourceLine = scrollToRevealSourceLine; +function getEditorLineNumberForPageOffset(offset) { + const { previous, next } = getLineElementsAtPageOffset(offset); + if (previous) { + const previousBounds = previous.element.getBoundingClientRect(); + const offsetFromPrevious = (offset - window.scrollY - previousBounds.top); + if (next) { + const progressBetweenElements = offsetFromPrevious / (next.element.getBoundingClientRect().top - previousBounds.top); + const line = previous.line + progressBetweenElements * (next.line - previous.line); + return clampLine(line); + } + else { + const progressWithinElement = offsetFromPrevious / (previousBounds.height); + const line = previous.line + progressWithinElement; + return clampLine(line); + } + } + return null; +} +exports.getEditorLineNumberForPageOffset = getEditorLineNumberForPageOffset; + + +/***/ }), + +/***/ "./preview-src/settings.ts": +/*!*********************************!*\ + !*** ./preview-src/settings.ts ***! + \*********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +let cachedSettings = undefined; +function getSettings() { + if (cachedSettings) { + return cachedSettings; + } + const element = document.getElementById('vscode-markdown-preview-data'); + if (element) { + const data = element.getAttribute('data-settings'); + if (data) { + cachedSettings = JSON.parse(data); + return cachedSettings; + } + } + throw new Error('Could not load settings'); +} +exports.getSettings = getSettings; + + +/***/ }) + +/******/ }); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC50aHJvdHRsZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIiwid2VicGFjazovLy8uL3ByZXZpZXctc3JjL2FjdGl2ZUxpbmVNYXJrZXIudHMiLCJ3ZWJwYWNrOi8vLy4vcHJldmlldy1zcmMvZXZlbnRzLnRzIiwid2VicGFjazovLy8uL3ByZXZpZXctc3JjL2luZGV4LnRzIiwid2VicGFjazovLy8uL3ByZXZpZXctc3JjL21lc3NhZ2luZy50cyIsIndlYnBhY2s6Ly8vLi9wcmV2aWV3LXNyYy9zY3JvbGwtc3luYy50cyIsIndlYnBhY2s6Ly8vLi9wcmV2aWV3LXNyYy9zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5REFBaUQsY0FBYztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7O0FBR0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxZQUFZO0FBQzlCLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLDhDQUE4QyxrQkFBa0I7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxZQUFZO0FBQzlCLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsb0JBQW9CO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7O0FDdGJBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1Qzs7Ozs7Ozs7Ozs7Ozs7O0FDbkJBOzs7Z0dBR2dHO0FBQ2hHLCtGQUF5RDtBQUV6RDtJQUdDLDhCQUE4QixDQUFDLElBQVk7UUFDMUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLHNDQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQStCO1FBQ3RDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFnQztRQUNwRCxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDZCxNQUFNLENBQUM7UUFDUixDQUFDO1FBQ0QsT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBZ0M7UUFDbEQsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxDQUFDO1FBQ1IsQ0FBQztRQUNELE9BQU8sQ0FBQyxTQUFTLElBQUksbUJBQW1CLENBQUM7SUFDMUMsQ0FBQztDQUNEO0FBM0JELDRDQTJCQzs7Ozs7Ozs7Ozs7Ozs7QUNqQ0Q7OztnR0FHZ0c7O0FBRWhHLDRCQUFtQyxDQUFhO0lBQy9DLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQztRQUNsRixRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLENBQUM7SUFDTCxDQUFDO0FBQ0YsQ0FBQztBQU5ELGdEQU1DOzs7Ozs7Ozs7Ozs7OztBQ1hEOzs7Z0dBR2dHOztBQUVoRyxzRkFBeUM7QUFDekMseUZBQXVEO0FBQ3ZELGdGQUE4QztBQUM5QywrRkFBMkY7QUFDM0YsOEdBQXNEO0FBQ3RELHVHQUE2QztBQUU3QyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7QUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQ0FBZ0IsRUFBRSxDQUFDO0FBQ3RDLE1BQU0sUUFBUSxHQUFHLHNCQUFXLEVBQUUsQ0FBQztBQUUvQiwyQkFBa0IsQ0FBQyxHQUFHLEVBQUU7SUFDdkIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUN0QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxXQUFXLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDdEIsc0NBQXdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNGLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7QUFDRixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFO0lBQzFCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO1FBQzFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsc0NBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsTUFBTSxDQUFDLENBQUMsSUFBWSxFQUFFLFFBQWEsRUFBRSxFQUFFO1FBQ3RDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNyQixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQztJQUNGLENBQUMsQ0FBQztBQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFTCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtJQUN0QyxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVULE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7SUFDMUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDO0lBQ1IsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6QixLQUFLLGdDQUFnQztZQUNwQyxNQUFNLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxLQUFLLENBQUM7UUFFUCxLQUFLLFlBQVk7WUFDaEIsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLEtBQUssQ0FBQztJQUNSLENBQUM7QUFDRixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFVixRQUFRLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFO0lBQzdDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUM7SUFDUixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFxQixFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQXlCLEVBQUUsQ0FBQztRQUMxRixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxDQUFDO1FBQ1IsQ0FBQztJQUNGLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzNCLE1BQU0sSUFBSSxHQUFHLDhDQUFnQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsdUJBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7QUFDRixDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7SUFDMUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ1osTUFBTSxDQUFDO0lBQ1IsQ0FBQztJQUVELElBQUksSUFBSSxHQUFRLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDN0IsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNiLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdkQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxLQUFLLENBQUM7WUFDUCxDQUFDO1lBQ0QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsMENBQTBDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0Ryx1QkFBVyxDQUFDLDRCQUE0QixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxDQUFDO1lBQ1AsQ0FBQztZQUNELEtBQUssQ0FBQztRQUNQLENBQUM7UUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN4QixDQUFDO0FBQ0YsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRVQsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztJQUN0QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDL0MsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNwQixjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNQLE1BQU0sSUFBSSxHQUFHLDhDQUFnQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5RCxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5Qyx1QkFBVyxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNULENBQUM7Ozs7Ozs7Ozs7Ozs7O0FDcEhEOzs7Z0dBR2dHOztBQUVoRyxzRkFBeUM7QUFFekM7O0dBRUc7QUFDSCxxQkFBNEIsSUFBWSxFQUFFLElBQVk7SUFDckQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDekIsSUFBSTtRQUNKLE1BQU0sRUFBRSxzQkFBVyxFQUFFLENBQUMsTUFBTTtRQUM1QixJQUFJO0tBQ0osRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNULENBQUM7QUFORCxrQ0FNQztBQUVEOztHQUVHO0FBQ0gscUJBQTRCLE9BQWUsRUFBRSxJQUFXO0lBQ3ZELFdBQVcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRkQsa0NBRUM7Ozs7Ozs7Ozs7Ozs7O0FDdkJEOzs7Z0dBR2dHOztBQUVoRyxzRkFBeUM7QUFHekMsZUFBZSxHQUFXLEVBQUUsR0FBVyxFQUFFLEtBQWE7SUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELG1CQUFtQixJQUFZO0lBQzlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHNCQUFXLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFRRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBRyxFQUFFO0lBQ2pDLElBQUksUUFBMkIsQ0FBQztJQUNoQyxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ1gsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2YsUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FDbEMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxFQUM1QyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUNoQixNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2hELE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQUM7aUJBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUNqQixDQUFDLENBQUM7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBRUw7Ozs7O0dBS0c7QUFDSCxrQ0FBeUMsVUFBa0I7SUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxNQUFNLEtBQUssR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3BDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDaEMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDL0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDckIsQ0FBQztBQWRELDREQWNDO0FBRUQ7O0dBRUc7QUFDSCxxQ0FBNEMsTUFBYztJQUN6RCxNQUFNLEtBQUssR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3pDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ1osSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDMUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzFELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzVDLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUM7WUFDTCxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ1YsQ0FBQztJQUNGLENBQUM7SUFDRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzNELEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ2hDLENBQUM7QUF0QkQsa0VBc0JDO0FBRUQ7O0dBRUc7QUFDSCxrQ0FBeUMsSUFBWTtJQUNwRCxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFELEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxzQkFBVyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUM3QixFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN6Qyw4REFBOEQ7WUFDOUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0UsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7WUFDN0UsUUFBUSxHQUFHLFdBQVcsR0FBRyxlQUFlLEdBQUcsYUFBYSxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQztZQUNMLFFBQVEsR0FBRyxXQUFXLENBQUM7UUFDeEIsQ0FBQztRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0YsQ0FBQztBQWpCRCw0REFpQkM7QUFFRCwwQ0FBaUQsTUFBYztJQUM5RCxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDZCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDaEUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ1YsTUFBTSx1QkFBdUIsR0FBRyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JILE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRixNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQztZQUNMLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtCLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0UsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQztZQUNuRCxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDRixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNiLENBQUM7QUFqQkQsNEVBaUJDOzs7Ozs7Ozs7Ozs7OztBQzlIRDs7O2dHQUdnRzs7QUFZaEcsSUFBSSxjQUFjLEdBQWdDLFNBQVMsQ0FBQztBQUU1RDtJQUNDLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLGNBQWMsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3hFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDYixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDVixjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsY0FBZSxDQUFDO1FBQ3hCLENBQUM7SUFDRixDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFmRCxrQ0FlQyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3ByZXZpZXctc3JjL2luZGV4LnRzXCIpO1xuIiwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHRoZSBgVHlwZUVycm9yYCBtZXNzYWdlIGZvciBcIkZ1bmN0aW9uc1wiIG1ldGhvZHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBEYXRlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAqIH0sIF8ubm93KCkpO1xuICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAqL1xudmFyIG5vdyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICByZXN1bHQgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICByZXR1cm4gbWF4aW5nID8gbmF0aXZlTWluKHJlc3VsdCwgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpIDogcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lO1xuXG4gICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgIC8vIGl0IGFzIHRoZSB0cmFpbGluZyBlZGdlLCBvciB3ZSd2ZSBoaXQgdGhlIGBtYXhXYWl0YCBsaW1pdC5cbiAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgfVxuICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICB9XG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICB9XG4gICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3coKSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgdmFyIHRpbWUgPSBub3coKSxcbiAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgIGxhc3RUaGlzID0gdGhpcztcbiAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgICBpZiAobWF4aW5nKSB7XG4gICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIHJldHVybiBpbnZva2VGdW5jKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgZGVib3VuY2VkLmZsdXNoID0gZmx1c2g7XG4gIHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRocm90dGxlZCBmdW5jdGlvbiB0aGF0IG9ubHkgaW52b2tlcyBgZnVuY2AgYXQgbW9zdCBvbmNlIHBlclxuICogZXZlcnkgYHdhaXRgIG1pbGxpc2Vjb25kcy4gVGhlIHRocm90dGxlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGBcbiAqIG1ldGhvZCB0byBjYW5jZWwgZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG9cbiAqIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYFxuICogc2hvdWxkIGJlIGludm9rZWQgb24gdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YFxuICogdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZVxuICogdGhyb3R0bGVkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gcmV0dXJuIHRoZVxuICogcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYCBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLnRocm90dGxlYCBhbmQgYF8uZGVib3VuY2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gdGhyb3R0bGUuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgaW52b2NhdGlvbnMgdG8uXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgdGhyb3R0bGVkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBleGNlc3NpdmVseSB1cGRhdGluZyB0aGUgcG9zaXRpb24gd2hpbGUgc2Nyb2xsaW5nLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Njcm9sbCcsIF8udGhyb3R0bGUodXBkYXRlUG9zaXRpb24sIDEwMCkpO1xuICpcbiAqIC8vIEludm9rZSBgcmVuZXdUb2tlbmAgd2hlbiB0aGUgY2xpY2sgZXZlbnQgaXMgZmlyZWQsIGJ1dCBub3QgbW9yZSB0aGFuIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICogdmFyIHRocm90dGxlZCA9IF8udGhyb3R0bGUocmVuZXdUb2tlbiwgMzAwMDAwLCB7ICd0cmFpbGluZyc6IGZhbHNlIH0pO1xuICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHRocm90dGxlZCk7XG4gKlxuICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyB0aHJvdHRsZWQgaW52b2NhdGlvbi5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIHRocm90dGxlZC5jYW5jZWwpO1xuICovXG5mdW5jdGlvbiB0aHJvdHRsZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gIHZhciBsZWFkaW5nID0gdHJ1ZSxcbiAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gJ2xlYWRpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMubGVhZGluZyA6IGxlYWRpbmc7XG4gICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgfVxuICByZXR1cm4gZGVib3VuY2UoZnVuYywgd2FpdCwge1xuICAgICdsZWFkaW5nJzogbGVhZGluZyxcbiAgICAnbWF4V2FpdCc6IHdhaXQsXG4gICAgJ3RyYWlsaW5nJzogdHJhaWxpbmdcbiAgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRocm90dGxlO1xuIiwidmFyIGc7XHJcblxyXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxyXG5nID0gKGZ1bmN0aW9uKCkge1xyXG5cdHJldHVybiB0aGlzO1xyXG59KSgpO1xyXG5cclxudHJ5IHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcclxuXHRnID0gZyB8fCBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCkgfHwgKDEsIGV2YWwpKFwidGhpc1wiKTtcclxufSBjYXRjaCAoZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbmltcG9ydCB7IGdldEVsZW1lbnRzRm9yU291cmNlTGluZSB9IGZyb20gJy4vc2Nyb2xsLXN5bmMnO1xuXG5leHBvcnQgY2xhc3MgQWN0aXZlTGluZU1hcmtlciB7XG5cdHByaXZhdGUgX2N1cnJlbnQ6IGFueTtcblxuXHRvbkRpZENoYW5nZVRleHRFZGl0b3JTZWxlY3Rpb24obGluZTogbnVtYmVyKSB7XG5cdFx0Y29uc3QgeyBwcmV2aW91cyB9ID0gZ2V0RWxlbWVudHNGb3JTb3VyY2VMaW5lKGxpbmUpO1xuXHRcdHRoaXMuX3VwZGF0ZShwcmV2aW91cyAmJiBwcmV2aW91cy5lbGVtZW50KTtcblx0fVxuXG5cdF91cGRhdGUoYmVmb3JlOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCkge1xuXHRcdHRoaXMuX3VubWFya0FjdGl2ZUVsZW1lbnQodGhpcy5fY3VycmVudCk7XG5cdFx0dGhpcy5fbWFya0FjdGl2ZUVsZW1lbnQoYmVmb3JlKTtcblx0XHR0aGlzLl9jdXJyZW50ID0gYmVmb3JlO1xuXHR9XG5cblx0X3VubWFya0FjdGl2ZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQpIHtcblx0XHRpZiAoIWVsZW1lbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0ZWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKC9cXGJjb2RlLWFjdGl2ZS1saW5lXFxiL2csICcnKTtcblx0fVxuXG5cdF9tYXJrQWN0aXZlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCkge1xuXHRcdGlmICghZWxlbWVudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRlbGVtZW50LmNsYXNzTmFtZSArPSAnIGNvZGUtYWN0aXZlLWxpbmUnO1xuXHR9XG59IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmV4cG9ydCBmdW5jdGlvbiBvbmNlRG9jdW1lbnRMb2FkZWQoZjogKCkgPT4gdm9pZCkge1xuXHRpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnIHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICd1bmluaXRpYWxpemVkJykge1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmKTtcblx0fSBlbHNlIHtcblx0XHRmKCk7XG5cdH1cbn0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuaW1wb3J0IHsgZ2V0U2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcbmltcG9ydCB7IHBvc3RDb21tYW5kLCBwb3N0TWVzc2FnZSB9IGZyb20gJy4vbWVzc2FnaW5nJztcbmltcG9ydCB7IG9uY2VEb2N1bWVudExvYWRlZCB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IGdldEVkaXRvckxpbmVOdW1iZXJGb3JQYWdlT2Zmc2V0LCBzY3JvbGxUb1JldmVhbFNvdXJjZUxpbmUgfSBmcm9tICcuL3Njcm9sbC1zeW5jJztcbmltcG9ydCB7IEFjdGl2ZUxpbmVNYXJrZXIgfSBmcm9tICcuL2FjdGl2ZUxpbmVNYXJrZXInO1xuaW1wb3J0IHRocm90dGxlID0gcmVxdWlyZSgnbG9kYXNoLnRocm90dGxlJyk7XG5cbnZhciBzY3JvbGxEaXNhYmxlZCA9IHRydWU7XG5jb25zdCBtYXJrZXIgPSBuZXcgQWN0aXZlTGluZU1hcmtlcigpO1xuY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncygpO1xuXG5vbmNlRG9jdW1lbnRMb2FkZWQoKCkgPT4ge1xuXHRpZiAoc2V0dGluZ3Muc2Nyb2xsUHJldmlld1dpdGhFZGl0b3IpIHtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGNvbnN0IGluaXRpYWxMaW5lID0gK3NldHRpbmdzLmxpbmU7XG5cdFx0XHRpZiAoIWlzTmFOKGluaXRpYWxMaW5lKSkge1xuXHRcdFx0XHRzY3JvbGxEaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdHNjcm9sbFRvUmV2ZWFsU291cmNlTGluZShpbml0aWFsTGluZSk7XG5cdFx0XHR9XG5cdFx0fSwgMCk7XG5cdH1cbn0pO1xuXG5jb25zdCBvblVwZGF0ZVZpZXcgPSAoKCkgPT4ge1xuXHRjb25zdCBkb1Njcm9sbCA9IHRocm90dGxlKChsaW5lOiBudW1iZXIpID0+IHtcblx0XHRzY3JvbGxEaXNhYmxlZCA9IHRydWU7XG5cdFx0c2Nyb2xsVG9SZXZlYWxTb3VyY2VMaW5lKGxpbmUpO1xuXHR9LCA1MCk7XG5cblx0cmV0dXJuIChsaW5lOiBudW1iZXIsIHNldHRpbmdzOiBhbnkpID0+IHtcblx0XHRpZiAoIWlzTmFOKGxpbmUpKSB7XG5cdFx0XHRzZXR0aW5ncy5saW5lID0gbGluZTtcblx0XHRcdGRvU2Nyb2xsKGxpbmUpO1xuXHRcdH1cblx0fTtcbn0pKCk7XG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7XG5cdHNjcm9sbERpc2FibGVkID0gdHJ1ZTtcbn0sIHRydWUpO1xuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHtcblx0aWYgKGV2ZW50LmRhdGEuc291cmNlICE9PSBzZXR0aW5ncy5zb3VyY2UpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRzd2l0Y2ggKGV2ZW50LmRhdGEudHlwZSkge1xuXHRcdGNhc2UgJ29uRGlkQ2hhbmdlVGV4dEVkaXRvclNlbGVjdGlvbic6XG5cdFx0XHRtYXJrZXIub25EaWRDaGFuZ2VUZXh0RWRpdG9yU2VsZWN0aW9uKGV2ZW50LmRhdGEubGluZSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ3VwZGF0ZVZpZXcnOlxuXHRcdFx0b25VcGRhdGVWaWV3KGV2ZW50LmRhdGEubGluZSwgc2V0dGluZ3MpO1xuXHRcdFx0YnJlYWs7XG5cdH1cbn0sIGZhbHNlKTtcblxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCBldmVudCA9PiB7XG5cdGlmICghc2V0dGluZ3MuZG91YmxlQ2xpY2tUb1N3aXRjaFRvRWRpdG9yKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gSWdub3JlIGNsaWNrcyBvbiBsaW5rc1xuXHRmb3IgKGxldCBub2RlID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50OyBub2RlOyBub2RlID0gbm9kZS5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50KSB7XG5cdFx0aWYgKG5vZGUudGFnTmFtZSA9PT0gJ0EnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHR9XG5cblx0Y29uc3Qgb2Zmc2V0ID0gZXZlbnQucGFnZVk7XG5cdGNvbnN0IGxpbmUgPSBnZXRFZGl0b3JMaW5lTnVtYmVyRm9yUGFnZU9mZnNldChvZmZzZXQpO1xuXHRpZiAodHlwZW9mIGxpbmUgPT09ICdudW1iZXInICYmICFpc05hTihsaW5lKSkge1xuXHRcdHBvc3RNZXNzYWdlKCdkaWRDbGljaycsIHsgbGluZSB9KTtcblx0fVxufSk7XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnQgPT4ge1xuXHRpZiAoIWV2ZW50KSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0bGV0IG5vZGU6IGFueSA9IGV2ZW50LnRhcmdldDtcblx0d2hpbGUgKG5vZGUpIHtcblx0XHRpZiAobm9kZS50YWdOYW1lICYmIG5vZGUudGFnTmFtZSA9PT0gJ0EnICYmIG5vZGUuaHJlZikge1xuXHRcdFx0aWYgKG5vZGUuZ2V0QXR0cmlidXRlKCdocmVmJykuc3RhcnRzV2l0aCgnIycpKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG5vZGUuaHJlZi5zdGFydHNXaXRoKCdmaWxlOi8vJykgfHwgbm9kZS5ocmVmLnN0YXJ0c1dpdGgoJ3ZzY29kZS13b3Jrc3BhY2UtcmVzb3VyY2U6JykpIHtcblx0XHRcdFx0Y29uc3QgW3BhdGgsIGZyYWdtZW50XSA9IG5vZGUuaHJlZi5yZXBsYWNlKC9eKGZpbGU6XFwvXFwvfHZzY29kZS13b3Jrc3BhY2UtcmVzb3VyY2U6KS9pLCAnJykuc3BsaXQoJyMnKTtcblx0XHRcdFx0cG9zdENvbW1hbmQoJ19tYXJrZG93bi5vcGVuRG9jdW1lbnRMaW5rJywgW3sgcGF0aCwgZnJhZ21lbnQgfV0pO1xuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0bm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcblx0fVxufSwgdHJ1ZSk7XG5cbmlmIChzZXR0aW5ncy5zY3JvbGxFZGl0b3JXaXRoUHJldmlldykge1xuXHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhyb3R0bGUoKCkgPT4ge1xuXHRcdGlmIChzY3JvbGxEaXNhYmxlZCkge1xuXHRcdFx0c2Nyb2xsRGlzYWJsZWQgPSBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgbGluZSA9IGdldEVkaXRvckxpbmVOdW1iZXJGb3JQYWdlT2Zmc2V0KHdpbmRvdy5zY3JvbGxZKTtcblx0XHRcdGlmICh0eXBlb2YgbGluZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKGxpbmUpKSB7XG5cdFx0XHRcdHBvc3RNZXNzYWdlKCdyZXZlYWxMaW5lJywgeyBsaW5lIH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSwgNTApKTtcbn0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuaW1wb3J0IHsgZ2V0U2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcblxuLyoqXG4gKiBQb3N0IGEgbWVzc2FnZSB0byB0aGUgbWFya2Rvd24gZXh0ZW5zaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3N0TWVzc2FnZSh0eXBlOiBzdHJpbmcsIGJvZHk6IG9iamVjdCkge1xuXHR3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHtcblx0XHR0eXBlLFxuXHRcdHNvdXJjZTogZ2V0U2V0dGluZ3MoKS5zb3VyY2UsXG5cdFx0Ym9keVxuXHR9LCAnKicpO1xufVxuXG4vKipcbiAqIFBvc3QgYSBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkIHRvIHRoZSBtYXJrZG93biBleHRlbnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvc3RDb21tYW5kKGNvbW1hbmQ6IHN0cmluZywgYXJnczogYW55W10pIHtcblx0cG9zdE1lc3NhZ2UoJ2NvbW1hbmQnLCB7IGNvbW1hbmQsIGFyZ3MgfSk7XG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuaW1wb3J0IHsgZ2V0U2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcblxuXG5mdW5jdGlvbiBjbGFtcChtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIHZhbHVlOiBudW1iZXIpIHtcblx0cmV0dXJuIE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCB2YWx1ZSkpO1xufVxuXG5mdW5jdGlvbiBjbGFtcExpbmUobGluZTogbnVtYmVyKSB7XG5cdHJldHVybiBjbGFtcCgwLCBnZXRTZXR0aW5ncygpLmxpbmVDb3VudCAtIDEsIGxpbmUpO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUxpbmVFbGVtZW50IHtcblx0ZWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cdGxpbmU6IG51bWJlcjtcbn1cblxuY29uc3QgZ2V0Q29kZUxpbmVFbGVtZW50cyA9ICgoKSA9PiB7XG5cdGxldCBlbGVtZW50czogQ29kZUxpbmVFbGVtZW50W107XG5cdHJldHVybiAoKSA9PiB7XG5cdFx0aWYgKCFlbGVtZW50cykge1xuXHRcdFx0ZWxlbWVudHMgPSBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoXG5cdFx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NvZGUtbGluZScpLFxuXHRcdFx0XHQoZWxlbWVudDogYW55KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgbGluZSA9ICtlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1saW5lJyk7XG5cdFx0XHRcdFx0cmV0dXJuIHsgZWxlbWVudCwgbGluZSB9O1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZmlsdGVyKCh4OiBhbnkpID0+ICFpc05hTih4LmxpbmUpKTtcblx0XHR9XG5cdFx0cmV0dXJuIGVsZW1lbnRzO1xuXHR9O1xufSkoKTtcblxuLyoqXG4gKiBGaW5kIHRoZSBodG1sIGVsZW1lbnRzIHRoYXQgbWFwIHRvIGEgc3BlY2lmaWMgdGFyZ2V0IGxpbmUgaW4gdGhlIGVkaXRvci5cbiAqXG4gKiBJZiBhbiBleGFjdCBtYXRjaCwgcmV0dXJucyBhIHNpbmdsZSBlbGVtZW50LiBJZiB0aGUgbGluZSBpcyBiZXR3ZWVuIGVsZW1lbnRzLFxuICogcmV0dXJucyB0aGUgZWxlbWVudCBwcmlvciB0byBhbmQgdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIGdpdmVuIGxpbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50c0ZvclNvdXJjZUxpbmUodGFyZ2V0TGluZTogbnVtYmVyKTogeyBwcmV2aW91czogQ29kZUxpbmVFbGVtZW50OyBuZXh0PzogQ29kZUxpbmVFbGVtZW50OyB9IHtcblx0Y29uc3QgbGluZU51bWJlciA9IE1hdGguZmxvb3IodGFyZ2V0TGluZSk7XG5cdGNvbnN0IGxpbmVzID0gZ2V0Q29kZUxpbmVFbGVtZW50cygpO1xuXHRsZXQgcHJldmlvdXMgPSBsaW5lc1swXSB8fCBudWxsO1xuXHRmb3IgKGNvbnN0IGVudHJ5IG9mIGxpbmVzKSB7XG5cdFx0aWYgKGVudHJ5LmxpbmUgPT09IGxpbmVOdW1iZXIpIHtcblx0XHRcdHJldHVybiB7IHByZXZpb3VzOiBlbnRyeSwgbmV4dDogdW5kZWZpbmVkIH07XG5cdFx0fVxuXHRcdGVsc2UgaWYgKGVudHJ5LmxpbmUgPiBsaW5lTnVtYmVyKSB7XG5cdFx0XHRyZXR1cm4geyBwcmV2aW91cywgbmV4dDogZW50cnkgfTtcblx0XHR9XG5cdFx0cHJldmlvdXMgPSBlbnRyeTtcblx0fVxuXHRyZXR1cm4geyBwcmV2aW91cyB9O1xufVxuXG4vKipcbiAqIEZpbmQgdGhlIGh0bWwgZWxlbWVudHMgdGhhdCBhcmUgYXQgYSBzcGVjaWZpYyBwaXhlbCBvZmZzZXQgb24gdGhlIHBhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lRWxlbWVudHNBdFBhZ2VPZmZzZXQob2Zmc2V0OiBudW1iZXIpOiB7IHByZXZpb3VzOiBDb2RlTGluZUVsZW1lbnQ7IG5leHQ/OiBDb2RlTGluZUVsZW1lbnQ7IH0ge1xuXHRjb25zdCBsaW5lcyA9IGdldENvZGVMaW5lRWxlbWVudHMoKTtcblx0Y29uc3QgcG9zaXRpb24gPSBvZmZzZXQgLSB3aW5kb3cuc2Nyb2xsWTtcblx0bGV0IGxvID0gLTE7XG5cdGxldCBoaSA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cdHdoaWxlIChsbyArIDEgPCBoaSkge1xuXHRcdGNvbnN0IG1pZCA9IE1hdGguZmxvb3IoKGxvICsgaGkpIC8gMik7XG5cdFx0Y29uc3QgYm91bmRzID0gbGluZXNbbWlkXS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdGlmIChib3VuZHMudG9wICsgYm91bmRzLmhlaWdodCA+PSBwb3NpdGlvbikge1xuXHRcdFx0aGkgPSBtaWQ7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0bG8gPSBtaWQ7XG5cdFx0fVxuXHR9XG5cdGNvbnN0IGhpRWxlbWVudCA9IGxpbmVzW2hpXTtcblx0Y29uc3QgaGlCb3VuZHMgPSBoaUVsZW1lbnQuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0aWYgKGhpID49IDEgJiYgaGlCb3VuZHMudG9wID4gcG9zaXRpb24pIHtcblx0XHRjb25zdCBsb0VsZW1lbnQgPSBsaW5lc1tsb107XG5cdFx0cmV0dXJuIHsgcHJldmlvdXM6IGxvRWxlbWVudCwgbmV4dDogaGlFbGVtZW50IH07XG5cdH1cblx0cmV0dXJuIHsgcHJldmlvdXM6IGhpRWxlbWVudCB9O1xufVxuXG4vKipcbiAqIEF0dGVtcHQgdG8gcmV2ZWFsIHRoZSBlbGVtZW50IGZvciBhIHNvdXJjZSBsaW5lIGluIHRoZSBlZGl0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxUb1JldmVhbFNvdXJjZUxpbmUobGluZTogbnVtYmVyKSB7XG5cdGNvbnN0IHsgcHJldmlvdXMsIG5leHQgfSA9IGdldEVsZW1lbnRzRm9yU291cmNlTGluZShsaW5lKTtcblx0aWYgKHByZXZpb3VzICYmIGdldFNldHRpbmdzKCkuc2Nyb2xsUHJldmlld1dpdGhFZGl0b3IpIHtcblx0XHRsZXQgc2Nyb2xsVG8gPSAwO1xuXHRcdGNvbnN0IHJlY3QgPSBwcmV2aW91cy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdGNvbnN0IHByZXZpb3VzVG9wID0gcmVjdC50b3A7XG5cdFx0aWYgKG5leHQgJiYgbmV4dC5saW5lICE9PSBwcmV2aW91cy5saW5lKSB7XG5cdFx0XHQvLyBCZXR3ZWVuIHR3byBlbGVtZW50cy4gR28gdG8gcGVyY2VudGFnZSBvZmZzZXQgYmV0d2VlbiB0aGVtLlxuXHRcdFx0Y29uc3QgYmV0d2VlblByb2dyZXNzID0gKGxpbmUgLSBwcmV2aW91cy5saW5lKSAvIChuZXh0LmxpbmUgLSBwcmV2aW91cy5saW5lKTtcblx0XHRcdGNvbnN0IGVsZW1lbnRPZmZzZXQgPSBuZXh0LmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gcHJldmlvdXNUb3A7XG5cdFx0XHRzY3JvbGxUbyA9IHByZXZpb3VzVG9wICsgYmV0d2VlblByb2dyZXNzICogZWxlbWVudE9mZnNldDtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRzY3JvbGxUbyA9IHByZXZpb3VzVG9wO1xuXHRcdH1cblx0XHR3aW5kb3cuc2Nyb2xsKDAsIE1hdGgubWF4KDEsIHdpbmRvdy5zY3JvbGxZICsgc2Nyb2xsVG8pKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdG9yTGluZU51bWJlckZvclBhZ2VPZmZzZXQob2Zmc2V0OiBudW1iZXIpIHtcblx0Y29uc3QgeyBwcmV2aW91cywgbmV4dCB9ID0gZ2V0TGluZUVsZW1lbnRzQXRQYWdlT2Zmc2V0KG9mZnNldCk7XG5cdGlmIChwcmV2aW91cykge1xuXHRcdGNvbnN0IHByZXZpb3VzQm91bmRzID0gcHJldmlvdXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHRjb25zdCBvZmZzZXRGcm9tUHJldmlvdXMgPSAob2Zmc2V0IC0gd2luZG93LnNjcm9sbFkgLSBwcmV2aW91c0JvdW5kcy50b3ApO1xuXHRcdGlmIChuZXh0KSB7XG5cdFx0XHRjb25zdCBwcm9ncmVzc0JldHdlZW5FbGVtZW50cyA9IG9mZnNldEZyb21QcmV2aW91cyAvIChuZXh0LmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gcHJldmlvdXNCb3VuZHMudG9wKTtcblx0XHRcdGNvbnN0IGxpbmUgPSBwcmV2aW91cy5saW5lICsgcHJvZ3Jlc3NCZXR3ZWVuRWxlbWVudHMgKiAobmV4dC5saW5lIC0gcHJldmlvdXMubGluZSk7XG5cdFx0XHRyZXR1cm4gY2xhbXBMaW5lKGxpbmUpO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdGNvbnN0IHByb2dyZXNzV2l0aGluRWxlbWVudCA9IG9mZnNldEZyb21QcmV2aW91cyAvIChwcmV2aW91c0JvdW5kcy5oZWlnaHQpO1xuXHRcdFx0Y29uc3QgbGluZSA9IHByZXZpb3VzLmxpbmUgKyBwcm9ncmVzc1dpdGhpbkVsZW1lbnQ7XG5cdFx0XHRyZXR1cm4gY2xhbXBMaW5lKGxpbmUpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdTZXR0aW5ncyB7XG5cdHNvdXJjZTogc3RyaW5nO1xuXHRsaW5lOiBudW1iZXI7XG5cdGxpbmVDb3VudDogbnVtYmVyO1xuXHRzY3JvbGxQcmV2aWV3V2l0aEVkaXRvcj86IGJvb2xlYW47XG5cdHNjcm9sbEVkaXRvcldpdGhQcmV2aWV3OiBib29sZWFuO1xuXHRkaXNhYmxlU2VjdXJpdHlXYXJuaW5nczogYm9vbGVhbjtcblx0ZG91YmxlQ2xpY2tUb1N3aXRjaFRvRWRpdG9yOiBib29sZWFuO1xufVxuXG5sZXQgY2FjaGVkU2V0dGluZ3M6IFByZXZpZXdTZXR0aW5ncyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdzKCk6IFByZXZpZXdTZXR0aW5ncyB7XG5cdGlmIChjYWNoZWRTZXR0aW5ncykge1xuXHRcdHJldHVybiBjYWNoZWRTZXR0aW5ncztcblx0fVxuXG5cdGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndnNjb2RlLW1hcmtkb3duLXByZXZpZXctZGF0YScpO1xuXHRpZiAoZWxlbWVudCkge1xuXHRcdGNvbnN0IGRhdGEgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1zZXR0aW5ncycpO1xuXHRcdGlmIChkYXRhKSB7XG5cdFx0XHRjYWNoZWRTZXR0aW5ncyA9IEpTT04ucGFyc2UoZGF0YSk7XG5cdFx0XHRyZXR1cm4gY2FjaGVkU2V0dGluZ3MhO1xuXHRcdH1cblx0fVxuXG5cdHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGxvYWQgc2V0dGluZ3MnKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/extensions/markdown/media/pre.js b/extensions/markdown/media/pre.js new file mode 100644 index 00000000000..c5901bf4204 --- /dev/null +++ b/extensions/markdown/media/pre.js @@ -0,0 +1,297 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./preview-src/pre.ts"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./preview-src/csp.ts": +/*!****************************!*\ + !*** ./preview-src/csp.ts ***! + \****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +const settings_1 = __webpack_require__(/*! ./settings */ "./preview-src/settings.ts"); +const strings_1 = __webpack_require__(/*! ./strings */ "./preview-src/strings.ts"); +const messaging_1 = __webpack_require__(/*! ./messaging */ "./preview-src/messaging.ts"); +/** + * Shows an alert when there is a content security policy violation. + */ +class CspAlerter { + constructor() { + this.didShow = false; + document.addEventListener('securitypolicyviolation', () => { + this.showCspWarning(); + }); + window.addEventListener('message', (event) => { + if (event && event.data && event.data.name === 'vscode-did-block-svg') { + this.showCspWarning(); + } + }); + } + showCspWarning() { + const strings = strings_1.getStrings(); + const settings = settings_1.getSettings(); + if (this.didShow || settings.disableSecurityWarnings) { + return; + } + this.didShow = true; + const notification = document.createElement('a'); + notification.innerText = strings.cspAlertMessageText; + notification.setAttribute('id', 'code-csp-warning'); + notification.setAttribute('title', strings.cspAlertMessageTitle); + notification.setAttribute('role', 'button'); + notification.setAttribute('aria-label', strings.cspAlertMessageLabel); + notification.onclick = () => { + messaging_1.postCommand('markdown.showPreviewSecuritySelector', [settings.source]); + }; + document.body.appendChild(notification); + } +} +exports.CspAlerter = CspAlerter; + + +/***/ }), + +/***/ "./preview-src/loading.ts": +/*!********************************!*\ + !*** ./preview-src/loading.ts ***! + \********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const messaging_1 = __webpack_require__(/*! ./messaging */ "./preview-src/messaging.ts"); +class StyleLoadingMonitor { + constructor() { + this.unloadedStyles = []; + const onStyleLoadError = (event) => { + const source = event.target.dataset.source; + this.unloadedStyles.push(source); + }; + window.addEventListener('DOMContentLoaded', () => { + for (const link of document.getElementsByClassName('code-user-style')) { + if (link.dataset.source) { + link.onerror = onStyleLoadError; + } + } + }); + window.addEventListener('load', () => { + if (!this.unloadedStyles.length) { + return; + } + messaging_1.postCommand('_markdown.onPreviewStyleLoadError', [this.unloadedStyles]); + }); + } +} +exports.StyleLoadingMonitor = StyleLoadingMonitor; + + +/***/ }), + +/***/ "./preview-src/messaging.ts": +/*!**********************************!*\ + !*** ./preview-src/messaging.ts ***! + \**********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +const settings_1 = __webpack_require__(/*! ./settings */ "./preview-src/settings.ts"); +/** + * Post a message to the markdown extension + */ +function postMessage(type, body) { + window.parent.postMessage({ + type, + source: settings_1.getSettings().source, + body + }, '*'); +} +exports.postMessage = postMessage; +/** + * Post a command to be executed to the markdown extension + */ +function postCommand(command, args) { + postMessage('command', { command, args }); +} +exports.postCommand = postCommand; + + +/***/ }), + +/***/ "./preview-src/pre.ts": +/*!****************************!*\ + !*** ./preview-src/pre.ts ***! + \****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +const csp_1 = __webpack_require__(/*! ./csp */ "./preview-src/csp.ts"); +const loading_1 = __webpack_require__(/*! ./loading */ "./preview-src/loading.ts"); +// tslint:disable-next-line:no-unused-expression +new csp_1.CspAlerter(); +// tslint:disable-next-line:no-unused-expression +new loading_1.StyleLoadingMonitor(); + + +/***/ }), + +/***/ "./preview-src/settings.ts": +/*!*********************************!*\ + !*** ./preview-src/settings.ts ***! + \*********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +let cachedSettings = undefined; +function getSettings() { + if (cachedSettings) { + return cachedSettings; + } + const element = document.getElementById('vscode-markdown-preview-data'); + if (element) { + const data = element.getAttribute('data-settings'); + if (data) { + cachedSettings = JSON.parse(data); + return cachedSettings; + } + } + throw new Error('Could not load settings'); +} +exports.getSettings = getSettings; + + +/***/ }), + +/***/ "./preview-src/strings.ts": +/*!********************************!*\ + !*** ./preview-src/strings.ts ***! + \********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +function getStrings() { + const store = document.getElementById('vscode-markdown-preview-data'); + if (store) { + const data = store.getAttribute('data-strings'); + if (data) { + return JSON.parse(data); + } + } + throw new Error('Could not load strings'); +} +exports.getStrings = getStrings; + + +/***/ }) + +/******/ }); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vcHJldmlldy1zcmMvY3NwLnRzIiwid2VicGFjazovLy8uL3ByZXZpZXctc3JjL2xvYWRpbmcudHMiLCJ3ZWJwYWNrOi8vLy4vcHJldmlldy1zcmMvbWVzc2FnaW5nLnRzIiwid2VicGFjazovLy8uL3ByZXZpZXctc3JjL3ByZS50cyIsIndlYnBhY2s6Ly8vLi9wcmV2aWV3LXNyYy9zZXR0aW5ncy50cyIsIndlYnBhY2s6Ly8vLi9wcmV2aWV3LXNyYy9zdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlEQUFpRCxjQUFjO0FBQy9EOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUEyQiwwQkFBMEIsRUFBRTtBQUN2RCx5Q0FBaUMsZUFBZTtBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4REFBc0QsK0RBQStEOztBQUVySDtBQUNBOzs7QUFHQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ25FQTs7O2dHQUdnRzs7QUFFaEcsc0ZBQXlDO0FBQ3pDLG1GQUF1QztBQUN2Qyx5RkFBMEM7QUFFMUM7O0dBRUc7QUFDSDtJQUdDO1FBRlEsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUd2QixRQUFRLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO1lBQ3pELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1QyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYztRQUNyQixNQUFNLE9BQU8sR0FBRyxvQkFBVSxFQUFFLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsc0JBQVcsRUFBRSxDQUFDO1FBRS9CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztZQUN0RCxNQUFNLENBQUM7UUFDUixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxZQUFZLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztRQUNyRCxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BELFlBQVksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRWpFLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLFlBQVksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RFLFlBQVksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQzNCLHVCQUFXLENBQUMsc0NBQXNDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUM7UUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0Q7QUFwQ0QsZ0NBb0NDOzs7Ozs7Ozs7Ozs7Ozs7QUNoREQ7OztnR0FHZ0c7QUFDaEcseUZBQTBDO0FBRTFDO0lBR0M7UUFGUSxtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUdyQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDdkMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDaEQsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksUUFBUSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFrQyxDQUFDLENBQUMsQ0FBQztnQkFDeEcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDO2dCQUNqQyxDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDcEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLE1BQU0sQ0FBQztZQUNSLENBQUM7WUFDRCx1QkFBVyxDQUFDLG1DQUFtQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Q7QUF4QkQsa0RBd0JDOzs7Ozs7Ozs7Ozs7OztBQzlCRDs7O2dHQUdnRzs7QUFFaEcsc0ZBQXlDO0FBRXpDOztHQUVHO0FBQ0gscUJBQTRCLElBQVksRUFBRSxJQUFZO0lBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3pCLElBQUk7UUFDSixNQUFNLEVBQUUsc0JBQVcsRUFBRSxDQUFDLE1BQU07UUFDNUIsSUFBSTtLQUNKLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDVCxDQUFDO0FBTkQsa0NBTUM7QUFFRDs7R0FFRztBQUNILHFCQUE0QixPQUFlLEVBQUUsSUFBVztJQUN2RCxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUZELGtDQUVDOzs7Ozs7Ozs7Ozs7OztBQ3ZCRDs7O2dHQUdnRzs7QUFFaEcsdUVBQW1DO0FBQ25DLG1GQUFnRDtBQUVoRCxnREFBZ0Q7QUFDaEQsSUFBSSxnQkFBVSxFQUFFLENBQUM7QUFFakIsZ0RBQWdEO0FBQ2hELElBQUksNkJBQW1CLEVBQUUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUNaMUI7OztnR0FHZ0c7O0FBWWhHLElBQUksY0FBYyxHQUFnQyxTQUFTLENBQUM7QUFFNUQ7SUFDQyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN4RSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2IsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ1YsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLGNBQWUsQ0FBQztRQUN4QixDQUFDO0lBQ0YsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBZkQsa0NBZUM7Ozs7Ozs7Ozs7Ozs7O0FDaENEOzs7Z0dBR2dHOztBQUVoRztJQUNDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN0RSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ1gsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNGLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDM0MsQ0FBQztBQVRELGdDQVNDIiwiZmlsZSI6InByZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3ByZXZpZXctc3JjL3ByZS50c1wiKTtcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5pbXBvcnQgeyBnZXRTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuaW1wb3J0IHsgZ2V0U3RyaW5ncyB9IGZyb20gJy4vc3RyaW5ncyc7XG5pbXBvcnQgeyBwb3N0Q29tbWFuZCB9IGZyb20gJy4vbWVzc2FnaW5nJztcblxuLyoqXG4gKiBTaG93cyBhbiBhbGVydCB3aGVuIHRoZXJlIGlzIGEgY29udGVudCBzZWN1cml0eSBwb2xpY3kgdmlvbGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ3NwQWxlcnRlciB7XG5cdHByaXZhdGUgZGlkU2hvdyA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NlY3VyaXR5cG9saWN5dmlvbGF0aW9uJywgKCkgPT4ge1xuXHRcdFx0dGhpcy5zaG93Q3NwV2FybmluZygpO1xuXHRcdH0pO1xuXG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZXZlbnQpID0+IHtcblx0XHRcdGlmIChldmVudCAmJiBldmVudC5kYXRhICYmIGV2ZW50LmRhdGEubmFtZSA9PT0gJ3ZzY29kZS1kaWQtYmxvY2stc3ZnJykge1xuXHRcdFx0XHR0aGlzLnNob3dDc3BXYXJuaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIHNob3dDc3BXYXJuaW5nKCkge1xuXHRcdGNvbnN0IHN0cmluZ3MgPSBnZXRTdHJpbmdzKCk7XG5cdFx0Y29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncygpO1xuXG5cdFx0aWYgKHRoaXMuZGlkU2hvdyB8fCBzZXR0aW5ncy5kaXNhYmxlU2VjdXJpdHlXYXJuaW5ncykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmRpZFNob3cgPSB0cnVlO1xuXG5cdFx0Y29uc3Qgbm90aWZpY2F0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdG5vdGlmaWNhdGlvbi5pbm5lclRleHQgPSBzdHJpbmdzLmNzcEFsZXJ0TWVzc2FnZVRleHQ7XG5cdFx0bm90aWZpY2F0aW9uLnNldEF0dHJpYnV0ZSgnaWQnLCAnY29kZS1jc3Atd2FybmluZycpO1xuXHRcdG5vdGlmaWNhdGlvbi5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgc3RyaW5ncy5jc3BBbGVydE1lc3NhZ2VUaXRsZSk7XG5cblx0XHRub3RpZmljYXRpb24uc2V0QXR0cmlidXRlKCdyb2xlJywgJ2J1dHRvbicpO1xuXHRcdG5vdGlmaWNhdGlvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBzdHJpbmdzLmNzcEFsZXJ0TWVzc2FnZUxhYmVsKTtcblx0XHRub3RpZmljYXRpb24ub25jbGljayA9ICgpID0+IHtcblx0XHRcdHBvc3RDb21tYW5kKCdtYXJrZG93bi5zaG93UHJldmlld1NlY3VyaXR5U2VsZWN0b3InLCBbc2V0dGluZ3Muc291cmNlXSk7XG5cdFx0fTtcblx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vdGlmaWNhdGlvbik7XG5cdH1cbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuaW1wb3J0IHsgcG9zdENvbW1hbmQgfSBmcm9tICcuL21lc3NhZ2luZyc7XG5cbmV4cG9ydCBjbGFzcyBTdHlsZUxvYWRpbmdNb25pdG9yIHtcblx0cHJpdmF0ZSB1bmxvYWRlZFN0eWxlczogc3RyaW5nW10gPSBbXTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBvblN0eWxlTG9hZEVycm9yID0gKGV2ZW50OiBhbnkpID0+IHtcblx0XHRcdGNvbnN0IHNvdXJjZSA9IGV2ZW50LnRhcmdldC5kYXRhc2V0LnNvdXJjZTtcblx0XHRcdHRoaXMudW5sb2FkZWRTdHlsZXMucHVzaChzb3VyY2UpO1xuXHRcdH07XG5cblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHtcblx0XHRcdGZvciAoY29uc3QgbGluayBvZiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb2RlLXVzZXItc3R5bGUnKSBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50Pikge1xuXHRcdFx0XHRpZiAobGluay5kYXRhc2V0LnNvdXJjZSkge1xuXHRcdFx0XHRcdGxpbmsub25lcnJvciA9IG9uU3R5bGVMb2FkRXJyb3I7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLnVubG9hZGVkU3R5bGVzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwb3N0Q29tbWFuZCgnX21hcmtkb3duLm9uUHJldmlld1N0eWxlTG9hZEVycm9yJywgW3RoaXMudW5sb2FkZWRTdHlsZXNdKTtcblx0XHR9KTtcblx0fVxufSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5pbXBvcnQgeyBnZXRTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuXG4vKipcbiAqIFBvc3QgYSBtZXNzYWdlIHRvIHRoZSBtYXJrZG93biBleHRlbnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvc3RNZXNzYWdlKHR5cGU6IHN0cmluZywgYm9keTogb2JqZWN0KSB7XG5cdHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe1xuXHRcdHR5cGUsXG5cdFx0c291cmNlOiBnZXRTZXR0aW5ncygpLnNvdXJjZSxcblx0XHRib2R5XG5cdH0sICcqJyk7XG59XG5cbi8qKlxuICogUG9zdCBhIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQgdG8gdGhlIG1hcmtkb3duIGV4dGVuc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9zdENvbW1hbmQoY29tbWFuZDogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xuXHRwb3N0TWVzc2FnZSgnY29tbWFuZCcsIHsgY29tbWFuZCwgYXJncyB9KTtcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5pbXBvcnQgeyBDc3BBbGVydGVyIH0gZnJvbSAnLi9jc3AnO1xuaW1wb3J0IHsgU3R5bGVMb2FkaW5nTW9uaXRvciB9IGZyb20gJy4vbG9hZGluZyc7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnVzZWQtZXhwcmVzc2lvblxubmV3IENzcEFsZXJ0ZXIoKTtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVudXNlZC1leHByZXNzaW9uXG5uZXcgU3R5bGVMb2FkaW5nTW9uaXRvcigpOyIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdTZXR0aW5ncyB7XG5cdHNvdXJjZTogc3RyaW5nO1xuXHRsaW5lOiBudW1iZXI7XG5cdGxpbmVDb3VudDogbnVtYmVyO1xuXHRzY3JvbGxQcmV2aWV3V2l0aEVkaXRvcj86IGJvb2xlYW47XG5cdHNjcm9sbEVkaXRvcldpdGhQcmV2aWV3OiBib29sZWFuO1xuXHRkaXNhYmxlU2VjdXJpdHlXYXJuaW5nczogYm9vbGVhbjtcblx0ZG91YmxlQ2xpY2tUb1N3aXRjaFRvRWRpdG9yOiBib29sZWFuO1xufVxuXG5sZXQgY2FjaGVkU2V0dGluZ3M6IFByZXZpZXdTZXR0aW5ncyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdzKCk6IFByZXZpZXdTZXR0aW5ncyB7XG5cdGlmIChjYWNoZWRTZXR0aW5ncykge1xuXHRcdHJldHVybiBjYWNoZWRTZXR0aW5ncztcblx0fVxuXG5cdGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndnNjb2RlLW1hcmtkb3duLXByZXZpZXctZGF0YScpO1xuXHRpZiAoZWxlbWVudCkge1xuXHRcdGNvbnN0IGRhdGEgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1zZXR0aW5ncycpO1xuXHRcdGlmIChkYXRhKSB7XG5cdFx0XHRjYWNoZWRTZXR0aW5ncyA9IEpTT04ucGFyc2UoZGF0YSk7XG5cdFx0XHRyZXR1cm4gY2FjaGVkU2V0dGluZ3MhO1xuXHRcdH1cblx0fVxuXG5cdHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGxvYWQgc2V0dGluZ3MnKTtcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RyaW5ncygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcblx0Y29uc3Qgc3RvcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndnNjb2RlLW1hcmtkb3duLXByZXZpZXctZGF0YScpO1xuXHRpZiAoc3RvcmUpIHtcblx0XHRjb25zdCBkYXRhID0gc3RvcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXN0cmluZ3MnKTtcblx0XHRpZiAoZGF0YSkge1xuXHRcdFx0cmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XG5cdFx0fVxuXHR9XG5cdHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGxvYWQgc3RyaW5ncycpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/extensions/markdown/package.json b/extensions/markdown/package.json index 4d66b03ef5e..f869e9ee1e9 100644 --- a/extensions/markdown/package.json +++ b/extensions/markdown/package.json @@ -270,6 +270,8 @@ ] }, "scripts": { + "compile": "gulp compile-extension:markdown && npm run build-preview", + "watch": "npm run build-preview && gulp watch-extension:markdown", "vscode:prepublish": "npm run build-ext && npm run build-preview", "build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:markdown ./tsconfig.json", "build-preview": "webpack --mode development" From 3e7bc808813913c458279dce16de3b686740b2c0 Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 5 Mar 2018 22:33:36 +0100 Subject: [PATCH 085/658] debug repl elements: no need for toString method --- src/vs/workbench/parts/debug/common/debugModel.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/vs/workbench/parts/debug/common/debugModel.ts b/src/vs/workbench/parts/debug/common/debugModel.ts index 3ad4b00d73a..4485d42cf32 100644 --- a/src/vs/workbench/parts/debug/common/debugModel.ts +++ b/src/vs/workbench/parts/debug/common/debugModel.ts @@ -38,8 +38,6 @@ export abstract class AbstractReplElement implements IReplElement { public getId(): string { return `replelement:${this.id}`; } - - abstract toString(): string; } export class SimpleReplElement extends AbstractReplElement { @@ -51,10 +49,6 @@ export class SimpleReplElement extends AbstractReplElement { ) { super(source); } - - public toString(): string { - return this.value; - } } export class RawObjectReplElement extends AbstractReplElement implements IExpression { @@ -95,10 +89,6 @@ export class RawObjectReplElement extends AbstractReplElement implements IExpres return TPromise.as(result); } - - public toString(): string { - return this.name ? `${this.name}: ${this.value}` : this.value; - } } export class ExpressionContainer implements IExpressionContainer { From 267f791f2ca58d553a1b22ef3a84cf2e5183addc Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 14:06:50 -0800 Subject: [PATCH 086/658] Move webview editor and input to own part --- build/lib/i18n.resources.json | 4 + .../api/electron-browser/mainThreadWebview.ts | 417 +----------------- .../electron-browser/releaseNotesEditor.ts | 6 - .../parts/update/electron-browser/update.ts | 2 +- .../electron-browser/webview.contribution.ts | 17 + .../webview/electron-browser/webviewEditor.ts | 214 +++++++++ .../webview/electron-browser/webviewInput.ts | 212 +++++++++ src/vs/workbench/workbench.main.ts | 2 + 8 files changed, 455 insertions(+), 419 deletions(-) create mode 100644 src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts create mode 100644 src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts create mode 100644 src/vs/workbench/parts/webview/electron-browser/webviewInput.ts diff --git a/build/lib/i18n.resources.json b/build/lib/i18n.resources.json index 56fab72bd52..fb93bbe3027 100644 --- a/build/lib/i18n.resources.json +++ b/build/lib/i18n.resources.json @@ -134,6 +134,10 @@ "name": "vs/workbench/parts/watermark", "project": "vscode-workbench" }, + { + "name": "vs/workbench/parts/webview", + "project": "vscode-workbench" + }, { "name": "vs/workbench/parts/welcome", "project": "vscode-workbench" diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index 04175b0e589..f1624d0b6f2 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -5,420 +5,19 @@ 'use strict'; import * as map from 'vs/base/common/map'; -import { TPromise } from 'vs/base/common/winjs.base'; import { MainThreadWebviewsShape, MainContext, IExtHostContext, ExtHostContext, ExtHostWebviewsShape, WebviewHandle } from 'vs/workbench/api/node/extHost.protocol'; -import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle'; +import { dispose, Disposable } from 'vs/base/common/lifecycle'; import { extHostNamedCustomer } from './extHostCustomers'; -import { EditorInput, EditorModel, EditorOptions } from 'vs/workbench/common/editor'; -import { IEditorModel, Position } from 'vs/platform/editor/common/editor'; +import { Position } from 'vs/platform/editor/common/editor'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; -import { WebviewEditor as BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from 'vs/workbench/parts/html/browser/webviewEditor'; -import { Builder, Dimension } from 'vs/base/browser/builder'; -import { Webview } from 'vs/workbench/parts/html/browser/webview'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; -import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; -import { IStorageService } from 'vs/platform/storage/common/storage'; -import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; -import { IEditorRegistry, EditorDescriptor, Extensions as EditorExtensions } from 'vs/workbench/browser/editor'; -import { Registry } from 'vs/platform/registry/common/platform'; -import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; -import { localize } from 'vs/nls'; -import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { IPartService } from 'vs/workbench/services/part/common/partService'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import * as vscode from 'vscode'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; -import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import URI from 'vs/base/common/uri'; -import DOM = require('vs/base/browser/dom'); -import Event, { Emitter } from 'vs/base/common/event'; - - -interface WebviewEvents { - onMessage(message: any): void; - onDidChangePosition(newPosition: Position): void; - onDispose(): void; - onDidClickLink(link: URI, options: vscode.WebviewOptions): void; -} - -class WebviewInput extends EditorInput { - private static handlePool = 0; - - private readonly _resource: URI; - private _name: string; - private _options: vscode.WebviewOptions; - private _html: string; - private _currentWebviewHtml: string = ''; - private _events: WebviewEvents | undefined; - private _container: HTMLElement; - private _webview: Webview | undefined; - private _webviewOwner: any; - private _webviewDisposables: IDisposable[] = []; - private _position: Position; - - - public static create( - resource: URI, - name: string, - position: Position, - options: vscode.WebviewOptions, - html: string, - events: WebviewEvents, - partService: IPartService - ): WebviewInput { - const id = WebviewInput.handlePool++; - const webviewContainer = document.createElement('div'); - webviewContainer.id = `webview-${id}`; - - partService.getContainer(Parts.EDITOR_PART).appendChild(webviewContainer); - - return new WebviewInput(resource, name, position, options, html, events, webviewContainer, undefined); - } - - constructor( - resource: URI, - name: string, - position: Position, - options: vscode.WebviewOptions, - html: string, - events: WebviewEvents, - container: HTMLElement, - webview: Webview | undefined - ) { - super(); - this._resource = resource; - this._name = name; - this._position = position; - this._options = options; - this._html = html; - this._events = events; - - this._container = container; - this._webview = webview; - } - - public getTypeId(): string { - return 'webview'; - } - - public dispose() { - this.disposeWebview(); - - if (this._container) { - this._container.remove(); - this._container = undefined; - } - - if (this._events) { - this._events.onDispose(); - this._events = undefined; - } - - super.dispose(); - } - - public getResource(): URI { - return this._resource; - } - - public getName(): string { - return this._name; - } - - public setName(value: string): void { - this._name = value; - this._onDidChangeLabel.fire(); - } - - public get position(): Position { - return this._position; - } - - public get html(): string { - return this._html; - } - - public setHtml(value: string): void { - if (value === this._currentWebviewHtml) { - return; - } - - this._html = value; - - if (this._webview) { - this._webview.contents = value; - this._currentWebviewHtml = value; - } - } - - public get options(): vscode.WebviewOptions { - return this._options; - } - - public set options(value: vscode.WebviewOptions) { - this._options = value; - } - - public resolve(refresh?: boolean): TPromise { - return TPromise.as(new EditorModel()); - } - - public supportsSplitEditor() { - return false; - } - - public get container(): HTMLElement { - return this._container; - } - - public get webview(): Webview | undefined { - return this._webview; - } - - public set webview(value: Webview) { - this._webviewDisposables = dispose(this._webviewDisposables); - - this._webview = value; - - this._webview.onDidClickLink(link => { - if (this._events) { - this._events.onDidClickLink(link, this._options); - } - }, null, this._webviewDisposables); - - this._webview.onMessage(message => { - if (this._events) { - this._events.onMessage(message); - } - }, null, this._webviewDisposables); - } - - public claimWebview(owner: any) { - this._webviewOwner = owner; - } - - public releaseWebview(owner: any) { - if (this._webviewOwner === owner) { - this._webviewOwner = undefined; - if (this._options.retainContextWhenHidden) { - this.container.style.visibility = 'hidden'; - } else { - this.disposeWebview(); - } - } - } - - public disposeWebview() { - // The input owns the webview and its parent - if (this._webview) { - this._webview.dispose(); - this._webview = undefined; - } - - this._webviewDisposables = dispose(this._webviewDisposables); - - this._webviewOwner = undefined; - this.container.style.visibility = 'hidden'; - - this._currentWebviewHtml = ''; - } - - public onDidChangePosition(position: Position) { - if (this._events) { - this._events.onDidChangePosition(position); - } - this._position = position; - } -} - -class WebviewEditor extends BaseWebviewEditor { - - public static readonly ID = 'WebviewEditor'; - - private editorFrame: HTMLElement; - private webviewContent: HTMLElement; - private _onDidFocusWebview: Emitter; - private _webviewFocusTracker?: DOM.IFocusTracker; - private _webviewFocusListenerDisposable?: IDisposable; - - constructor( - @ITelemetryService telemetryService: ITelemetryService, - @IStorageService storageService: IStorageService, - @IThemeService themeService: IThemeService, - @IContextKeyService private _contextKeyService: IContextKeyService, - @IPartService private readonly _partService: IPartService, - @IContextViewService private readonly _contextViewService: IContextViewService, - @IEnvironmentService private readonly _environmentService: IEnvironmentService, - @IWorkspaceContextService private readonly _contextService: IWorkspaceContextService - ) { - super(WebviewEditor.ID, telemetryService, themeService, storageService, _contextKeyService); - - this._onDidFocusWebview = new Emitter(); - } - - protected createEditor(parent: Builder): void { - this.editorFrame = parent.getHTMLElement(); - this.content = document.createElement('div'); - parent.append(this.content); - } - - private doUpdateContainer() { - const webviewContainer = this.input && (this.input as WebviewInput).container; - if (webviewContainer) { - const frameRect = this.editorFrame.getBoundingClientRect(); - const containerRect = webviewContainer.parentElement.getBoundingClientRect(); - - webviewContainer.style.position = 'absolute'; - webviewContainer.style.top = `${frameRect.top - containerRect.top}px`; - webviewContainer.style.left = `${frameRect.left - containerRect.left}px`; - webviewContainer.style.width = `${frameRect.width}px`; - webviewContainer.style.height = `${frameRect.height}px`; - } - } - - public layout(dimension: Dimension): void { - if (this._webview) { - this.doUpdateContainer(); - } - super.layout(dimension); - } - - public dispose(): void { - // Let the editor input dispose of the webview. - this._webview = undefined; - this.webviewContent = undefined; - - this._onDidFocusWebview.dispose(); - - if (this._webviewFocusTracker) { - this._webviewFocusTracker.dispose(); - } - - if (this._webviewFocusListenerDisposable) { - this._webviewFocusListenerDisposable.dispose(); - } - - super.dispose(); - } - - public sendMessage(data: any): void { - if (this._webview) { - this._webview.sendMessage(data); - } - } - - public get onDidFocus(): Event { - return this._onDidFocusWebview.event; - } - - protected setEditorVisible(visible: boolean, position?: Position): void { - if (this.input && this.input instanceof WebviewInput) { - if (visible) { - this.input.claimWebview(this); - } else { - this.input.releaseWebview(this); - } - - this.updateWebview(this.input as WebviewInput); - } - - if (this.webviewContent) { - if (visible) { - this.webviewContent.style.visibility = 'visible'; - this.doUpdateContainer(); - } else { - this.webviewContent.style.visibility = 'hidden'; - } - } - - super.setEditorVisible(visible, position); - } - - public clearInput() { - if (this.input && this.input instanceof WebviewInput) { - this.input.releaseWebview(this); - } - - this._webview = undefined; - this.webviewContent = undefined; - - super.clearInput(); - } - - async setInput(input: WebviewInput, options: EditorOptions): TPromise { - if (this.input && this.input.matches(input)) { - return undefined; - } - - if (this.input && this.input.getResource().fsPath !== input.getResource().fsPath) { - (this.input as WebviewInput).releaseWebview(this); - this._webview = undefined; - this.webviewContent = undefined; - } - - await super.setInput(input, options); - - input.onDidChangePosition(this.position); - this.updateWebview(input); - } - - private updateWebview(input: WebviewInput) { - const webview = this.getWebview(input); - input.claimWebview(this); - webview.options = { - allowScripts: input.options.enableScripts, - enableWrappedPostMessage: true, - useSameOriginForRoot: false, - localResourceRoots: (input && input.options.localResourceRoots) || this._contextService.getWorkspace().folders.map(x => x.uri) - }; - input.setHtml(input.html); - this.webviewContent.style.visibility = 'visible'; - this.doUpdateContainer(); - } - - private getWebview(input: WebviewInput): Webview { - if (this._webview) { - return this._webview; - } - - this.webviewContent = input.container; - const existing = input.webview; - if (existing) { - this._webview = existing; - return existing; - } - - this._webviewFocusTracker = DOM.trackFocus(this.webviewContent); - this._webviewFocusListenerDisposable = this._webviewFocusTracker.onDidFocus(() => { - this._onDidFocusWebview.fire(); - }); - - this._contextKeyService = this._contextKeyService.createScoped(this.webviewContent); - this.contextKey = KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS.bindTo(this._contextKeyService); - this.findInputFocusContextKey = KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED.bindTo(this._contextKeyService); - this.findWidgetVisible = KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE.bindTo(this._contextKeyService); - - this._webview = new Webview( - this.webviewContent, - this._partService.getContainer(Parts.EDITOR_PART), - this.themeService, - this._environmentService, - this._contextViewService, - this.contextKey, - this.findInputFocusContextKey, - { - enableWrappedPostMessage: true, - useSameOriginForRoot: false - }); - input.webview = this._webview; - - this.content.setAttribute('aria-flowto', this.webviewContent.id); - - this.doUpdateContainer(); - return this._webview; - } -} +import { WebviewInput } from 'vs/workbench/parts/webview/electron-browser/webviewInput'; +import { WebviewEditor } from 'vs/workbench/parts/webview/electron-browser/webviewEditor'; @extHostNamedCustomer(MainContext.MainThreadWebviews) @@ -550,9 +149,3 @@ export class MainThreadWebviews implements MainThreadWebviewsShape { } } } - -(Registry.as(EditorExtensions.Editors)).registerEditor(new EditorDescriptor( - WebviewEditor, - WebviewEditor.ID, - localize('webview.editor.label', "webview editor")), - [new SyncDescriptor(WebviewInput)]); diff --git a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts index 04a9a71e292..916b4c531ce 100644 --- a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts +++ b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts @@ -122,12 +122,6 @@ export class ReleaseNotesEditor extends WebviewEditor { super.dispose(); } - protected getViewState() { - return { - scrollYPercentage: this.scrollYPercentage - }; - } - public clearInput(): void { if (this.input instanceof ReleaseNotesInput) { this.saveViewState(this.input.version, { diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index 467c5b27d45..fbadd74907d 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -45,7 +45,7 @@ const NotNowAction = new Action( const releaseNotesCache: { [version: string]: TPromise; } = Object.create(null); -export function loadReleaseNotes(accessor: ServicesAccessor, version: string): TPromise { +function loadReleaseNotes(accessor: ServicesAccessor, version: string): TPromise { const requestService = accessor.get(IRequestService); const keybindingService = accessor.get(IKeybindingService); const match = /^(\d+\.\d+)\./.exec(version); diff --git a/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts b/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts new file mode 100644 index 00000000000..8a02b53af5f --- /dev/null +++ b/src/vs/workbench/parts/webview/electron-browser/webview.contribution.ts @@ -0,0 +1,17 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { IEditorRegistry, EditorDescriptor, Extensions as EditorExtensions } from 'vs/workbench/browser/editor'; +import { WebviewEditor } from './webviewEditor'; +import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; +import { Registry } from 'vs/platform/registry/common/platform'; +import { WebviewInput } from './webviewInput'; +import { localize } from 'vs/nls'; + +(Registry.as(EditorExtensions.Editors)).registerEditor(new EditorDescriptor( + WebviewEditor, + WebviewEditor.ID, + localize('webview.editor.label', "webview editor")), + [new SyncDescriptor(WebviewInput)]); \ No newline at end of file diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts new file mode 100644 index 00000000000..342df663ce8 --- /dev/null +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -0,0 +1,214 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import { TPromise } from 'vs/base/common/winjs.base'; +import { IDisposable, } from 'vs/base/common/lifecycle'; +import { EditorOptions } from 'vs/workbench/common/editor'; +import { Position } from 'vs/platform/editor/common/editor'; +import { WebviewEditor as BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from 'vs/workbench/parts/html/browser/webviewEditor'; +import { Builder, Dimension } from 'vs/base/browser/builder'; +import { Webview } from 'vs/workbench/parts/html/browser/webview'; +import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; +import { IStorageService } from 'vs/platform/storage/common/storage'; +import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; +import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; +import DOM = require('vs/base/browser/dom'); +import Event, { Emitter } from 'vs/base/common/event'; +import { WebviewInput } from 'vs/workbench/parts/webview/electron-browser/webviewInput'; + +export class WebviewEditor extends BaseWebviewEditor { + + public static readonly ID = 'WebviewEditor'; + + private editorFrame: HTMLElement; + private webviewContent: HTMLElement; + private _onDidFocusWebview: Emitter; + private _webviewFocusTracker?: DOM.IFocusTracker; + private _webviewFocusListenerDisposable?: IDisposable; + + constructor( + @ITelemetryService telemetryService: ITelemetryService, + @IStorageService storageService: IStorageService, + @IThemeService themeService: IThemeService, + @IContextKeyService private _contextKeyService: IContextKeyService, + @IPartService private readonly _partService: IPartService, + @IContextViewService private readonly _contextViewService: IContextViewService, + @IEnvironmentService private readonly _environmentService: IEnvironmentService, + @IWorkspaceContextService private readonly _contextService: IWorkspaceContextService + ) { + super(WebviewEditor.ID, telemetryService, themeService, storageService, _contextKeyService); + + this._onDidFocusWebview = new Emitter(); + } + + protected createEditor(parent: Builder): void { + this.editorFrame = parent.getHTMLElement(); + this.content = document.createElement('div'); + parent.append(this.content); + } + + private doUpdateContainer() { + const webviewContainer = this.input && (this.input as WebviewInput).container; + if (webviewContainer) { + const frameRect = this.editorFrame.getBoundingClientRect(); + const containerRect = webviewContainer.parentElement.getBoundingClientRect(); + + webviewContainer.style.position = 'absolute'; + webviewContainer.style.top = `${frameRect.top - containerRect.top}px`; + webviewContainer.style.left = `${frameRect.left - containerRect.left}px`; + webviewContainer.style.width = `${frameRect.width}px`; + webviewContainer.style.height = `${frameRect.height}px`; + } + } + + public layout(dimension: Dimension): void { + if (this._webview) { + this.doUpdateContainer(); + } + super.layout(dimension); + } + + public dispose(): void { + // Let the editor input dispose of the webview. + this._webview = undefined; + this.webviewContent = undefined; + + this._onDidFocusWebview.dispose(); + + if (this._webviewFocusTracker) { + this._webviewFocusTracker.dispose(); + } + + if (this._webviewFocusListenerDisposable) { + this._webviewFocusListenerDisposable.dispose(); + } + + super.dispose(); + } + + public sendMessage(data: any): void { + if (this._webview) { + this._webview.sendMessage(data); + } + } + + public get onDidFocus(): Event { + return this._onDidFocusWebview.event; + } + + protected setEditorVisible(visible: boolean, position?: Position): void { + if (this.input && this.input instanceof WebviewInput) { + if (visible) { + this.input.claimWebview(this); + } else { + this.input.releaseWebview(this); + } + + this.updateWebview(this.input as WebviewInput); + } + + if (this.webviewContent) { + if (visible) { + this.webviewContent.style.visibility = 'visible'; + this.doUpdateContainer(); + } else { + this.webviewContent.style.visibility = 'hidden'; + } + } + + super.setEditorVisible(visible, position); + } + + public clearInput() { + if (this.input && this.input instanceof WebviewInput) { + this.input.releaseWebview(this); + } + + this._webview = undefined; + this.webviewContent = undefined; + + super.clearInput(); + } + + async setInput(input: WebviewInput, options: EditorOptions): TPromise { + if (this.input && this.input.matches(input)) { + return undefined; + } + + if (this.input && this.input.getResource().fsPath !== input.getResource().fsPath) { + (this.input as WebviewInput).releaseWebview(this); + this._webview = undefined; + this.webviewContent = undefined; + } + + await super.setInput(input, options); + + input.onDidChangePosition(this.position); + this.updateWebview(input); + } + + private updateWebview(input: WebviewInput) { + const webview = this.getWebview(input); + input.claimWebview(this); + webview.options = { + allowScripts: input.options.enableScripts, + enableWrappedPostMessage: true, + useSameOriginForRoot: false, + localResourceRoots: (input && input.options.localResourceRoots) || this._contextService.getWorkspace().folders.map(x => x.uri) + }; + input.setHtml(input.html); + this.webviewContent.style.visibility = 'visible'; + this.doUpdateContainer(); + } + + private getWebview(input: WebviewInput): Webview { + if (this._webview) { + return this._webview; + } + + this.webviewContent = input.container; + const existing = input.webview; + if (existing) { + this._webview = existing; + return existing; + } + + this._webviewFocusTracker = DOM.trackFocus(this.webviewContent); + this._webviewFocusListenerDisposable = this._webviewFocusTracker.onDidFocus(() => { + this._onDidFocusWebview.fire(); + }); + + this._contextKeyService = this._contextKeyService.createScoped(this.webviewContent); + this.contextKey = KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS.bindTo(this._contextKeyService); + this.findInputFocusContextKey = KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED.bindTo(this._contextKeyService); + this.findWidgetVisible = KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE.bindTo(this._contextKeyService); + + this._webview = new Webview( + this.webviewContent, + this._partService.getContainer(Parts.EDITOR_PART), + this.themeService, + this._environmentService, + this._contextViewService, + this.contextKey, + this.findInputFocusContextKey, + { + enableWrappedPostMessage: true, + useSameOriginForRoot: false + }); + input.webview = this._webview; + + this.content.setAttribute('aria-flowto', this.webviewContent.id); + + this.doUpdateContainer(); + return this._webview; + } +} + diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts b/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts new file mode 100644 index 00000000000..c96a211d1f9 --- /dev/null +++ b/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import { TPromise } from 'vs/base/common/winjs.base'; +import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import { EditorInput, EditorModel } from 'vs/workbench/common/editor'; +import { IEditorModel, Position } from 'vs/platform/editor/common/editor'; +import { Webview } from 'vs/workbench/parts/html/browser/webview'; +import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; +import * as vscode from 'vscode'; +import URI from 'vs/base/common/uri'; + +export interface WebviewEvents { + onMessage(message: any): void; + onDidChangePosition(newPosition: Position): void; + onDispose(): void; + onDidClickLink(link: URI, options: vscode.WebviewOptions): void; +} + +export class WebviewInput extends EditorInput { + private static handlePool = 0; + + private readonly _resource: URI; + private _name: string; + private _options: vscode.WebviewOptions; + private _html: string; + private _currentWebviewHtml: string = ''; + private _events: WebviewEvents | undefined; + private _container: HTMLElement; + private _webview: Webview | undefined; + private _webviewOwner: any; + private _webviewDisposables: IDisposable[] = []; + private _position: Position; + + + public static create( + resource: URI, + name: string, + position: Position, + options: vscode.WebviewOptions, + html: string, + events: WebviewEvents, + partService: IPartService + ): WebviewInput { + const id = WebviewInput.handlePool++; + const webviewContainer = document.createElement('div'); + webviewContainer.id = `webview-${id}`; + + partService.getContainer(Parts.EDITOR_PART).appendChild(webviewContainer); + + return new WebviewInput(resource, name, position, options, html, events, webviewContainer, undefined); + } + + constructor( + resource: URI, + name: string, + position: Position, + options: vscode.WebviewOptions, + html: string, + events: WebviewEvents, + container: HTMLElement, + webview: Webview | undefined + ) { + super(); + this._resource = resource; + this._name = name; + this._position = position; + this._options = options; + this._html = html; + this._events = events; + + this._container = container; + this._webview = webview; + } + + public getTypeId(): string { + return 'webview'; + } + + public dispose() { + this.disposeWebview(); + + if (this._container) { + this._container.remove(); + this._container = undefined; + } + + if (this._events) { + this._events.onDispose(); + this._events = undefined; + } + + super.dispose(); + } + + public getResource(): URI { + return this._resource; + } + + public getName(): string { + return this._name; + } + + public setName(value: string): void { + this._name = value; + this._onDidChangeLabel.fire(); + } + + public get position(): Position { + return this._position; + } + + public get html(): string { + return this._html; + } + + public setHtml(value: string): void { + if (value === this._currentWebviewHtml) { + return; + } + + this._html = value; + + if (this._webview) { + this._webview.contents = value; + this._currentWebviewHtml = value; + } + } + + public get options(): vscode.WebviewOptions { + return this._options; + } + + public set options(value: vscode.WebviewOptions) { + this._options = value; + } + + public resolve(refresh?: boolean): TPromise { + return TPromise.as(new EditorModel()); + } + + public supportsSplitEditor() { + return false; + } + + public get container(): HTMLElement { + return this._container; + } + + public get webview(): Webview | undefined { + return this._webview; + } + + public set webview(value: Webview) { + this._webviewDisposables = dispose(this._webviewDisposables); + + this._webview = value; + + this._webview.onDidClickLink(link => { + if (this._events) { + this._events.onDidClickLink(link, this._options); + } + }, null, this._webviewDisposables); + + this._webview.onMessage(message => { + if (this._events) { + this._events.onMessage(message); + } + }, null, this._webviewDisposables); + } + + public claimWebview(owner: any) { + this._webviewOwner = owner; + } + + public releaseWebview(owner: any) { + if (this._webviewOwner === owner) { + this._webviewOwner = undefined; + if (this._options.retainContextWhenHidden) { + this.container.style.visibility = 'hidden'; + } else { + this.disposeWebview(); + } + } + } + + public disposeWebview() { + // The input owns the webview and its parent + if (this._webview) { + this._webview.dispose(); + this._webview = undefined; + } + + this._webviewDisposables = dispose(this._webviewDisposables); + + this._webviewOwner = undefined; + this.container.style.visibility = 'hidden'; + + this._currentWebviewHtml = ''; + } + + public onDidChangePosition(position: Position) { + if (this._events) { + this._events.onDidChangePosition(position); + } + this._position = position; + } +} diff --git a/src/vs/workbench/workbench.main.ts b/src/vs/workbench/workbench.main.ts index 002fc32062a..6f2e0dec459 100644 --- a/src/vs/workbench/workbench.main.ts +++ b/src/vs/workbench/workbench.main.ts @@ -68,6 +68,8 @@ import 'vs/workbench/parts/markers/browser/markersPanel'; // can be packaged sep import 'vs/workbench/parts/html/browser/html.contribution'; +import 'vs/workbench/parts/webview/electron-browser/webview.contribution'; + import 'vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution'; import 'vs/workbench/parts/extensions/electron-browser/extensions.contribution'; From 99949edbd5bb08267fa7cadb2f99c3fb747d123e Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 5 Mar 2018 14:43:52 -0800 Subject: [PATCH 087/658] Prevent layout on terminals that are in the background Fixes #44325 --- .../parts/terminal/electron-browser/terminalInstance.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 64f46350660..5e81a88576a 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -251,7 +251,7 @@ export class TerminalInstance implements ITerminalInstance { } // The panel is minimized - if (!height) { + if (!this._isVisible) { return TerminalInstance._lastKnownDimensions; } From 78870d93cb75523a9007ddb47b344e6496668f52 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 14:38:52 -0800 Subject: [PATCH 088/658] Remove create on webview input --- .../api/electron-browser/mainThreadWebview.ts | 2 +- .../webview/electron-browser/webviewInput.ts | 29 ++++--------------- 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index f1624d0b6f2..4cbf81889ff 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -48,7 +48,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape { } $createWebview(handle: WebviewHandle, uri: URI, title: string, column: Position, options: vscode.WebviewOptions): void { - const webviewInput = WebviewInput.create(URI.revive(uri), title, column, options, '', { + const webviewInput = new WebviewInput(URI.revive(uri), title, column, options, '', { onMessage: message => this._proxy.$onMessage(handle, message), onDidChangePosition: position => this._proxy.$onDidChangePosition(handle, position), onDispose: () => { diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts b/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts index c96a211d1f9..30bc7896e6e 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts @@ -36,25 +36,6 @@ export class WebviewInput extends EditorInput { private _webviewDisposables: IDisposable[] = []; private _position: Position; - - public static create( - resource: URI, - name: string, - position: Position, - options: vscode.WebviewOptions, - html: string, - events: WebviewEvents, - partService: IPartService - ): WebviewInput { - const id = WebviewInput.handlePool++; - const webviewContainer = document.createElement('div'); - webviewContainer.id = `webview-${id}`; - - partService.getContainer(Parts.EDITOR_PART).appendChild(webviewContainer); - - return new WebviewInput(resource, name, position, options, html, events, webviewContainer, undefined); - } - constructor( resource: URI, name: string, @@ -62,8 +43,7 @@ export class WebviewInput extends EditorInput { options: vscode.WebviewOptions, html: string, events: WebviewEvents, - container: HTMLElement, - webview: Webview | undefined + partService: IPartService ) { super(); this._resource = resource; @@ -73,8 +53,11 @@ export class WebviewInput extends EditorInput { this._html = html; this._events = events; - this._container = container; - this._webview = webview; + const id = WebviewInput.handlePool++; + this._container = document.createElement('div'); + this._container.id = `webview-${id}`; + + partService.getContainer(Parts.EDITOR_PART).appendChild(this._container); } public getTypeId(): string { From ec6412be8346cfc5ba3d4a0ab78abdd7e8e734d4 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 16:14:59 -0800 Subject: [PATCH 089/658] Switch release notes to use webview editor Changes the release notes to use the standard webview editor instead of their custom webview editor. Also makes the release notes editor a singleton. Only one release notes editor may be open at a time. Fixes #27493 Fixes #34369 --- .../api/electron-browser/mainThreadWebview.ts | 2 +- .../electron-browser/releaseNotesEditor.ts | 208 ++++++++++-------- .../electron-browser/releaseNotesInput.ts | 52 ----- .../electron-browser/update.contribution.ts | 14 -- .../parts/update/electron-browser/update.ts | 82 +------ .../webview/electron-browser/webviewEditor.ts | 4 + .../webview/electron-browser/webviewInput.ts | 47 ++-- 7 files changed, 160 insertions(+), 249 deletions(-) delete mode 100644 src/vs/workbench/parts/update/electron-browser/releaseNotesInput.ts diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index 4cbf81889ff..9bebcff3b53 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -48,7 +48,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape { } $createWebview(handle: WebviewHandle, uri: URI, title: string, column: Position, options: vscode.WebviewOptions): void { - const webviewInput = new WebviewInput(URI.revive(uri), title, column, options, '', { + const webviewInput = new WebviewInput(URI.revive(uri), title, options, '', { onMessage: message => this._proxy.$onMessage(handle, message), onDidChangePosition: position => this._proxy.$onDidChangePosition(handle, position), onDispose: () => { diff --git a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts index 916b4c531ce..82fc3eab9dc 100644 --- a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts +++ b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts @@ -7,31 +7,32 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { marked } from 'vs/base/common/marked/marked'; -import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle'; -import { Builder } from 'vs/base/browser/builder'; -import { append, $ } from 'vs/base/browser/dom'; -import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { ReleaseNotesInput } from './releaseNotesInput'; -import { EditorOptions } from 'vs/workbench/common/editor'; -import { Webview } from 'vs/workbench/parts/html/browser/webview'; -import { IOpenerService } from 'vs/platform/opener/common/opener'; import { IModeService } from 'vs/editor/common/services/modeService'; import { tokenizeToString } from 'vs/editor/common/modes/textToHtmlTokenizer'; -import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; -import { WebviewEditor } from 'vs/workbench/parts/html/browser/webviewEditor'; -import { IStorageService } from 'vs/platform/storage/common/storage'; -import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; -import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IMode, TokenizationRegistry } from 'vs/editor/common/modes'; +import { generateTokensCSSForColorMap } from 'vs/editor/common/modes/supports/tokenization'; +import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; +import { ServicesAccessor, IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { KeybindingIO } from 'vs/workbench/services/keybinding/common/keybindingIO'; +import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; +import { IRequestService } from 'vs/platform/request/node/request'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { IPartService } from 'vs/workbench/services/part/common/partService'; +import { IOpenerService } from 'vs/platform/opener/common/opener'; +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { WebviewInput } from 'vs/workbench/parts/webview/electron-browser/webviewInput'; import { onUnexpectedError } from 'vs/base/common/errors'; import { addGAParameters } from 'vs/platform/telemetry/node/telemetryNodeUtils'; -import { generateTokensCSSForColorMap } from 'vs/editor/common/modes/supports/tokenization'; +import URI from 'vs/base/common/uri'; +import { asText } from 'vs/base/node/request'; +import * as nls from 'vs/nls'; +import { OS } from 'vs/base/common/platform'; +import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; function renderBody( body: string, - css: string + css: string, + scrollProgress: number = 0 ): string { const styleSheetPath = require.toUrl('./media/markdown.css').replace('file://', 'vscode-core-resource://'); return ` @@ -47,97 +48,112 @@ function renderBody( `; } -export class ReleaseNotesEditor extends WebviewEditor { - static readonly ID: string = 'workbench.editor.releaseNotes'; +const releaseNotesCache: { [version: string]: TPromise; } = Object.create(null); - private contentDisposables: IDisposable[] = []; - private scrollYPercentage: number = 0; +function loadReleaseNotes(accessor: ServicesAccessor, version: string): TPromise { + const requestService = accessor.get(IRequestService); + const keybindingService = accessor.get(IKeybindingService); + const match = /^(\d+\.\d+)\./.exec(version); - constructor( - @ITelemetryService telemetryService: ITelemetryService, - @IStorageService storageService: IStorageService, - @IContextKeyService contextKeyService: IContextKeyService, - @IThemeService protected readonly themeService: IThemeService, - @IEnvironmentService private readonly environmentService: IEnvironmentService, - @IOpenerService private readonly openerService: IOpenerService, - @IModeService private readonly modeService: IModeService, - @IPartService private readonly partService: IPartService, - @IContextViewService private readonly _contextViewService: IContextViewService - ) { - super(ReleaseNotesEditor.ID, telemetryService, themeService, storageService, contextKeyService); + if (!match) { + return TPromise.wrapError(new Error('not found')); } - createEditor(parent: Builder): void { - const container = parent.getHTMLElement(); - this.content = append(container, $('.release-notes', { 'style': 'height: 100%; position: relative; overflow: hidden;' })); - } + const versionLabel = match[1].replace(/\./g, '_'); + const baseUrl = 'https://code.visualstudio.com/raw'; + const url = `${baseUrl}/v${versionLabel}.md`; + const unassigned = nls.localize('unassigned', "unassigned"); - async setInput(input: ReleaseNotesInput, options: EditorOptions): TPromise { - if (this.input && this.input.matches(input)) { - return undefined; - } + const patchKeybindings = (text: string): string => { + const kb = (match: string, kb: string) => { + const keybinding = keybindingService.lookupKeybinding(kb); - const { text } = input; - - this.contentDisposables = dispose(this.contentDisposables); - this.content.innerHTML = ''; - - await super.setInput(input, options); - - const body = await this.renderBody(text); - this._webview = new Webview( - this.content, - this.partService.getContainer(Parts.EDITOR_PART), - this.themeService, - this.environmentService, - this._contextViewService, - this.contextKey, - this.findInputFocusContextKey, - {}); - - if (this.input && this.input instanceof ReleaseNotesInput) { - const state = this.loadViewState(this.input.version); - if (state) { - this._webview.initialScrollProgress = state.scrollYPercentage; + if (!keybinding) { + return unassigned; } - } - this._webview.contents = body; + return keybinding.getLabel(); + }; - this._webview.onDidClickLink(link => { - addGAParameters(this.telemetryService, this.environmentService, link, 'ReleaseNotes') - .then(updated => this.openerService.open(updated)) - .then(null, onUnexpectedError); - }, null, this.contentDisposables); - this._webview.onDidScroll(event => { - this.scrollYPercentage = event.scrollYPercentage; - }, null, this.contentDisposables); - this.contentDisposables.push(this._webview); - this.contentDisposables.push(toDisposable(() => this._webview = null)); + const kbstyle = (match: string, kb: string) => { + const keybinding = KeybindingIO.readKeybinding(kb, OS); + + if (!keybinding) { + return unassigned; + } + + const resolvedKeybindings = keybindingService.resolveKeybinding(keybinding); + + if (resolvedKeybindings.length === 0) { + return unassigned; + } + + return resolvedKeybindings[0].getLabel(); + }; + + return text + .replace(/kb\(([a-z.\d\-]+)\)/gi, kb) + .replace(/kbstyle\(([^\)]+)\)/gi, kbstyle); + }; + + if (!releaseNotesCache[version]) { + releaseNotesCache[version] = requestService.request({ url }) + .then(asText) + .then(text => patchKeybindings(text)); } - dispose(): void { - this.contentDisposables = dispose(this.contentDisposables); - super.dispose(); + return releaseNotesCache[version]; +} + +export class ReleaseNotesManager { + + private _currentReleaseNotes: WebviewInput | undefined; + + public constructor( + @IWorkbenchEditorService private readonly _editorService: IWorkbenchEditorService, + @IEditorGroupService private readonly _editorGroupService: IEditorGroupService, + @IEnvironmentService private readonly _environmentService: IEnvironmentService, + @IInstantiationService private readonly _instantiationService: IInstantiationService, + @IModeService private readonly _modeService: IModeService, + @IOpenerService private readonly _openerService: IOpenerService, + @IPartService private readonly _partService: IPartService, + @ITelemetryService private readonly _telemetryService: ITelemetryService, + ) { } + + public async show( + accessor: ServicesAccessor, + version: string + ): TPromise { + const releaseNoteText = await loadReleaseNotes(accessor, version); + const html = await this.renderBody(releaseNoteText); + const title = nls.localize('releaseNotesInputName', "Release Notes: {0}", version); + + if (this._currentReleaseNotes) { + this._currentReleaseNotes.setName(title); + this._currentReleaseNotes.setHtml(html); + const activeEditor = this._editorService.getActiveEditor(); + if (activeEditor && activeEditor.position !== this._currentReleaseNotes.position) { + this._editorGroupService.moveEditor(this._currentReleaseNotes, this._currentReleaseNotes.position, activeEditor.position, { preserveFocus: true }); + } else { + this._editorService.openEditor(this._currentReleaseNotes, { preserveFocus: true }); + } + } else { + const uri = URI.parse('release-notes:' + version); + this._currentReleaseNotes = this._instantiationService.createInstance(WebviewInput, uri, title, { tryRestoreScrollPosition: true }, html, { + onDidClickLink: uri => this.onDidClickLink(uri), + onDispose: () => { this._currentReleaseNotes = undefined; } + }, this._partService); + await this._editorService.openEditor(this._currentReleaseNotes, { pinned: true }); + } + + return true; } - public clearInput(): void { - if (this.input instanceof ReleaseNotesInput) { - this.saveViewState(this.input.version, { - scrollYPercentage: this.scrollYPercentage - }); - } - super.clearInput(); - } - - public shutdown(): void { - if (this.input instanceof ReleaseNotesInput) { - this.saveViewState(this.input.version, { - scrollYPercentage: this.scrollYPercentage - }); - } - super.shutdown(); + private onDidClickLink(uri: URI) { + addGAParameters(this._telemetryService, this._environmentService, uri, 'ReleaseNotes') + .then(updated => this._openerService.open(updated)) + .then(null, onUnexpectedError); } private async renderBody(text: string) { @@ -156,8 +172,8 @@ export class ReleaseNotesEditor extends WebviewEditor { const result: TPromise[] = []; const renderer = new marked.Renderer(); renderer.code = (code, lang) => { - const modeId = this.modeService.getModeIdForLanguageName(lang); - result.push(this.modeService.getOrCreateMode(modeId)); + const modeId = this._modeService.getModeIdForLanguageName(lang); + result.push(this._modeService.getOrCreateMode(modeId)); return ''; }; @@ -165,7 +181,7 @@ export class ReleaseNotesEditor extends WebviewEditor { await TPromise.join(result); renderer.code = (code, lang) => { - const modeId = this.modeService.getModeIdForLanguageName(lang); + const modeId = this._modeService.getModeIdForLanguageName(lang); return `${tokenizeToString(code, modeId)}`; }; return renderer; diff --git a/src/vs/workbench/parts/update/electron-browser/releaseNotesInput.ts b/src/vs/workbench/parts/update/electron-browser/releaseNotesInput.ts deleted file mode 100644 index 7be415c613b..00000000000 --- a/src/vs/workbench/parts/update/electron-browser/releaseNotesInput.ts +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -'use strict'; - -import { localize } from 'vs/nls'; -import { TPromise } from 'vs/base/common/winjs.base'; -import { EditorInput } from 'vs/workbench/common/editor'; -import URI from 'vs/base/common/uri'; - -export class ReleaseNotesInput extends EditorInput { - - static readonly ID = 'workbench.releaseNotes.input'; - - get version(): string { return this._version; } - get text(): string { return this._text; } - - constructor(private _version: string, private _text: string) { - super(); - } - - getResource(): URI { - return URI.from({ scheme: 'release-notes', path: `${this._version}.release-notes` }); - } - - getTypeId(): string { - return ReleaseNotesInput.ID; - } - - getName(): string { - return localize('releaseNotesInputName', "Release Notes: {0}", this.version); - } - - matches(other: any): boolean { - if (!(other instanceof ReleaseNotesInput)) { - return false; - } - - const otherInput = other as ReleaseNotesInput; - return this.version === otherInput.version; - } - - resolve(refresh?: boolean): TPromise { - return TPromise.as(null); - } - - supportsSplitEditor(): boolean { - return false; - } -} \ No newline at end of file diff --git a/src/vs/workbench/parts/update/electron-browser/update.contribution.ts b/src/vs/workbench/parts/update/electron-browser/update.contribution.ts index 73400b9d5c1..1a2d956f296 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.contribution.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.contribution.ts @@ -5,20 +5,15 @@ 'use strict'; -import * as nls from 'vs/nls'; import 'vs/css!./media/update.contribution'; import 'vs/platform/update/node/update.config.contribution'; import * as platform from 'vs/base/common/platform'; import { Registry } from 'vs/platform/registry/common/platform'; import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions'; -import { ReleaseNotesEditor } from 'vs/workbench/parts/update/electron-browser/releaseNotesEditor'; -import { ReleaseNotesInput } from 'vs/workbench/parts/update/electron-browser/releaseNotesInput'; import { IGlobalActivityRegistry, GlobalActivityExtensions } from 'vs/workbench/common/activity'; -import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { ShowCurrentReleaseNotesAction, ProductContribution, UpdateContribution, Win3264BitContribution } from './update'; -import { EditorDescriptor, IEditorRegistry, Extensions as EditorExtensions } from 'vs/workbench/browser/editor'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; Registry.as(WorkbenchExtensions.Workbench) @@ -33,14 +28,5 @@ Registry.as(GlobalActivityExtensions) .registerActivity(UpdateContribution); // Editor -const editorDescriptor = new EditorDescriptor( - ReleaseNotesEditor, - ReleaseNotesEditor.ID, - nls.localize('release notes', "Release notes") -); - -Registry.as(EditorExtensions.Editors) - .registerEditor(editorDescriptor, [new SyncDescriptor(ReleaseNotesInput)]); - Registry.as(ActionExtensions.WorkbenchActions) .registerWorkbenchAction(new SyncActionDescriptor(ShowCurrentReleaseNotesAction, ShowCurrentReleaseNotesAction.ID, ShowCurrentReleaseNotesAction.LABEL), 'Show Release Notes'); diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index fbadd74907d..bdea885df04 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -16,24 +16,19 @@ import product from 'vs/platform/node/product'; import URI from 'vs/base/common/uri'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IActivityService, NumberBadge, IBadge, ProgressBadge } from 'vs/workbench/services/activity/common/activity'; -import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { ReleaseNotesInput } from 'vs/workbench/parts/update/electron-browser/releaseNotesInput'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IGlobalActivity } from 'vs/workbench/common/activity'; -import { IRequestService } from 'vs/platform/request/node/request'; -import { asText } from 'vs/base/node/request'; -import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { KeybindingIO } from 'vs/workbench/services/keybinding/common/keybindingIO'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { IUpdateService, State as UpdateState, StateType, IUpdate } from 'vs/platform/update/common/update'; import * as semver from 'semver'; -import { OS } from 'vs/base/common/platform'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; import { IWindowService } from 'vs/platform/windows/common/windows'; +import { ReleaseNotesManager } from './releaseNotesEditor'; const NotNowAction = new Action( 'update.later', @@ -43,61 +38,14 @@ const NotNowAction = new Action( () => TPromise.as(true) ); -const releaseNotesCache: { [version: string]: TPromise; } = Object.create(null); +let releaseNotesManager: ReleaseNotesManager | undefined = undefined; -function loadReleaseNotes(accessor: ServicesAccessor, version: string): TPromise { - const requestService = accessor.get(IRequestService); - const keybindingService = accessor.get(IKeybindingService); - const match = /^(\d+\.\d+)\./.exec(version); - - if (!match) { - return TPromise.wrapError(new Error('not found')); +function showReleaseNotes(instantiationService: IInstantiationService, version: string) { + if (!releaseNotesManager) { + releaseNotesManager = instantiationService.createInstance(ReleaseNotesManager); } - const versionLabel = match[1].replace(/\./g, '_'); - const baseUrl = 'https://code.visualstudio.com/raw'; - const url = `${baseUrl}/v${versionLabel}.md`; - const unassigned = nls.localize('unassigned', "unassigned"); - - const patchKeybindings = (text: string): string => { - const kb = (match: string, kb: string) => { - const keybinding = keybindingService.lookupKeybinding(kb); - - if (!keybinding) { - return unassigned; - } - - return keybinding.getLabel(); - }; - - const kbstyle = (match: string, kb: string) => { - const keybinding = KeybindingIO.readKeybinding(kb, OS); - - if (!keybinding) { - return unassigned; - } - - const resolvedKeybindings = keybindingService.resolveKeybinding(keybinding); - - if (resolvedKeybindings.length === 0) { - return unassigned; - } - - return resolvedKeybindings[0].getLabel(); - }; - - return text - .replace(/kb\(([a-z.\d\-]+)\)/gi, kb) - .replace(/kbstyle\(([^\)]+)\)/gi, kbstyle); - }; - - if (!releaseNotesCache[version]) { - releaseNotesCache[version] = requestService.request({ url }) - .then(asText) - .then(text => patchKeybindings(text)); - } - - return releaseNotesCache[version]; + return instantiationService.invokeFunction(accessor => releaseNotesManager.show(accessor, version)); } export class OpenLatestReleaseNotesInBrowserAction extends Action { @@ -120,7 +68,6 @@ export abstract class AbstractShowReleaseNotesAction extends Action { id: string, label: string, private version: string, - @IWorkbenchEditorService private editorService: IWorkbenchEditorService, @IInstantiationService private instantiationService: IInstantiationService ) { super(id, label, null, true); @@ -133,9 +80,7 @@ export abstract class AbstractShowReleaseNotesAction extends Action { this.enabled = false; - return this.instantiationService.invokeFunction(loadReleaseNotes, this.version) - .then(text => this.editorService.openEditor(this.instantiationService.createInstance(ReleaseNotesInput, this.version, text), { pinned: true })) - .then(() => true) + return showReleaseNotes(this.instantiationService, this.version) .then(null, () => { const action = this.instantiationService.createInstance(OpenLatestReleaseNotesInBrowserAction); return action.run().then(() => false); @@ -147,10 +92,9 @@ export class ShowReleaseNotesAction extends AbstractShowReleaseNotesAction { constructor( version: string, - @IWorkbenchEditorService editorService: IWorkbenchEditorService, @IInstantiationService instantiationService: IInstantiationService ) { - super('update.showReleaseNotes', nls.localize('releaseNotes', "Release Notes"), version, editorService, instantiationService); + super('update.showReleaseNotes', nls.localize('releaseNotes', "Release Notes"), version, instantiationService); } } @@ -162,10 +106,9 @@ export class ShowCurrentReleaseNotesAction extends AbstractShowReleaseNotesActio constructor( id = ShowCurrentReleaseNotesAction.ID, label = ShowCurrentReleaseNotesAction.LABEL, - @IWorkbenchEditorService editorService: IWorkbenchEditorService, @IInstantiationService instantiationService: IInstantiationService ) { - super(id, label, pkg.version, editorService, instantiationService); + super(id, label, pkg.version, instantiationService); } } @@ -184,9 +127,8 @@ export class ProductContribution implements IWorkbenchContribution { // was there an update? if so, open release notes if (!environmentService.skipReleaseNotes && product.releaseNotesUrl && lastVersion && pkg.version !== lastVersion) { - instantiationService.invokeFunction(loadReleaseNotes, pkg.version).then( - text => editorService.openEditor(instantiationService.createInstance(ReleaseNotesInput, pkg.version, text), { pinned: true }), - () => { + showReleaseNotes(instantiationService, lastVersion) + .then(() => { notificationService.notify({ severity: severity.Info, message: nls.localize('read the release notes', "Welcome to {0} v{1}! Would you like to read the Release Notes?", product.nameLong, pkg.version), diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index 342df663ce8..8ef51e490ec 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -205,6 +205,10 @@ export class WebviewEditor extends BaseWebviewEditor { }); input.webview = this._webview; + if (input.options.tryRestoreScrollPosition) { + this._webview.initialScrollProgress = input.scrollYPercentage; + } + this.content.setAttribute('aria-flowto', this.webviewContent.id); this.doUpdateContainer(); diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts b/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts index 30bc7896e6e..4d6c64fdd9d 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts @@ -8,17 +8,21 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { EditorInput, EditorModel } from 'vs/workbench/common/editor'; -import { IEditorModel, Position } from 'vs/platform/editor/common/editor'; +import { IEditorModel, Position, IEditorInput } from 'vs/platform/editor/common/editor'; import { Webview } from 'vs/workbench/parts/html/browser/webview'; import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; import * as vscode from 'vscode'; import URI from 'vs/base/common/uri'; export interface WebviewEvents { - onMessage(message: any): void; - onDidChangePosition(newPosition: Position): void; - onDispose(): void; - onDidClickLink(link: URI, options: vscode.WebviewOptions): void; + onMessage?(message: any): void; + onDidChangePosition?(newPosition: Position): void; + onDispose?(): void; + onDidClickLink?(link: URI, options: vscode.WebviewOptions): void; +} + +export interface WebviewInputOptions extends vscode.WebviewOptions { + tryRestoreScrollPosition?: boolean; } export class WebviewInput extends EditorInput { @@ -26,7 +30,7 @@ export class WebviewInput extends EditorInput { private readonly _resource: URI; private _name: string; - private _options: vscode.WebviewOptions; + private _options: WebviewInputOptions; private _html: string; private _currentWebviewHtml: string = ''; private _events: WebviewEvents | undefined; @@ -34,13 +38,13 @@ export class WebviewInput extends EditorInput { private _webview: Webview | undefined; private _webviewOwner: any; private _webviewDisposables: IDisposable[] = []; - private _position: Position; + private _position?: Position; + private _scrollYPercentage: number = 0; constructor( resource: URI, name: string, - position: Position, - options: vscode.WebviewOptions, + options: WebviewInputOptions, html: string, events: WebviewEvents, partService: IPartService @@ -48,7 +52,6 @@ export class WebviewInput extends EditorInput { super(); this._resource = resource; this._name = name; - this._position = position; this._options = options; this._html = html; this._events = events; @@ -93,7 +96,11 @@ export class WebviewInput extends EditorInput { this._onDidChangeLabel.fire(); } - public get position(): Position { + matches(other: IEditorInput): boolean { + return other && other instanceof WebviewInput && other.getResource().fsPath === this.getResource().fsPath; + } + + public get position(): Position | undefined { return this._position; } @@ -114,11 +121,11 @@ export class WebviewInput extends EditorInput { } } - public get options(): vscode.WebviewOptions { + public get options(): WebviewInputOptions { return this._options; } - public set options(value: vscode.WebviewOptions) { + public set options(value: WebviewInputOptions) { this._options = value; } @@ -144,16 +151,24 @@ export class WebviewInput extends EditorInput { this._webview = value; this._webview.onDidClickLink(link => { - if (this._events) { + if (this._events && this._events.onDidClickLink) { this._events.onDidClickLink(link, this._options); } }, null, this._webviewDisposables); this._webview.onMessage(message => { - if (this._events) { + if (this._events && this._events.onMessage) { this._events.onMessage(message); } }, null, this._webviewDisposables); + + this._webview.onDidScroll(message => { + this._scrollYPercentage = message.scrollYPercentage; + }, null, this._webviewDisposables); + } + + public get scrollYPercentage() { + return this._scrollYPercentage; } public claimWebview(owner: any) { @@ -187,7 +202,7 @@ export class WebviewInput extends EditorInput { } public onDidChangePosition(position: Position) { - if (this._events) { + if (this._events && this._events.onDidChangePosition) { this._events.onDidChangePosition(position); } this._position = position; From 34fd8ad00b5db3f69e76837271b643fbe727c710 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 16:24:09 -0800 Subject: [PATCH 090/658] Move loadReleaseNotes into ReleaseNotesManager --- .../electron-browser/releaseNotesEditor.ts | 125 +++++++++--------- 1 file changed, 62 insertions(+), 63 deletions(-) diff --git a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts index 82fc3eab9dc..537220dc921 100644 --- a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts +++ b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts @@ -31,8 +31,7 @@ import { IEditorGroupService } from 'vs/workbench/services/group/common/groupSer function renderBody( body: string, - css: string, - scrollProgress: number = 0 + css: string ): string { const styleSheetPath = require.toUrl('./media/markdown.css').replace('file://', 'vscode-core-resource://'); return ` @@ -48,84 +47,30 @@ function renderBody( `; } - -const releaseNotesCache: { [version: string]: TPromise; } = Object.create(null); - -function loadReleaseNotes(accessor: ServicesAccessor, version: string): TPromise { - const requestService = accessor.get(IRequestService); - const keybindingService = accessor.get(IKeybindingService); - const match = /^(\d+\.\d+)\./.exec(version); - - if (!match) { - return TPromise.wrapError(new Error('not found')); - } - - const versionLabel = match[1].replace(/\./g, '_'); - const baseUrl = 'https://code.visualstudio.com/raw'; - const url = `${baseUrl}/v${versionLabel}.md`; - const unassigned = nls.localize('unassigned', "unassigned"); - - const patchKeybindings = (text: string): string => { - const kb = (match: string, kb: string) => { - const keybinding = keybindingService.lookupKeybinding(kb); - - if (!keybinding) { - return unassigned; - } - - return keybinding.getLabel(); - }; - - const kbstyle = (match: string, kb: string) => { - const keybinding = KeybindingIO.readKeybinding(kb, OS); - - if (!keybinding) { - return unassigned; - } - - const resolvedKeybindings = keybindingService.resolveKeybinding(keybinding); - - if (resolvedKeybindings.length === 0) { - return unassigned; - } - - return resolvedKeybindings[0].getLabel(); - }; - - return text - .replace(/kb\(([a-z.\d\-]+)\)/gi, kb) - .replace(/kbstyle\(([^\)]+)\)/gi, kbstyle); - }; - - if (!releaseNotesCache[version]) { - releaseNotesCache[version] = requestService.request({ url }) - .then(asText) - .then(text => patchKeybindings(text)); - } - - return releaseNotesCache[version]; -} - export class ReleaseNotesManager { - private _currentReleaseNotes: WebviewInput | undefined; + private _releaseNotesCache: { [version: string]: TPromise; } = Object.create(null); + + private _currentReleaseNotes: WebviewInput | undefined = undefined; public constructor( - @IWorkbenchEditorService private readonly _editorService: IWorkbenchEditorService, @IEditorGroupService private readonly _editorGroupService: IEditorGroupService, @IEnvironmentService private readonly _environmentService: IEnvironmentService, @IInstantiationService private readonly _instantiationService: IInstantiationService, + @IKeybindingService private readonly _keybindingService: IKeybindingService, @IModeService private readonly _modeService: IModeService, @IOpenerService private readonly _openerService: IOpenerService, @IPartService private readonly _partService: IPartService, + @IRequestService private readonly _requestService: IRequestService, @ITelemetryService private readonly _telemetryService: ITelemetryService, + @IWorkbenchEditorService private readonly _editorService: IWorkbenchEditorService, ) { } public async show( accessor: ServicesAccessor, version: string ): TPromise { - const releaseNoteText = await loadReleaseNotes(accessor, version); + const releaseNoteText = await this.loadReleaseNotes(version); const html = await this.renderBody(releaseNoteText); const title = nls.localize('releaseNotesInputName', "Release Notes: {0}", version); @@ -150,6 +95,60 @@ export class ReleaseNotesManager { return true; } + private loadReleaseNotes( + version: string + ): TPromise { + const match = /^(\d+\.\d+)\./.exec(version); + if (!match) { + return TPromise.wrapError(new Error('not found')); + } + + const versionLabel = match[1].replace(/\./g, '_'); + const baseUrl = 'https://code.visualstudio.com/raw'; + const url = `${baseUrl}/v${versionLabel}.md`; + const unassigned = nls.localize('unassigned', "unassigned"); + + const patchKeybindings = (text: string): string => { + const kb = (match: string, kb: string) => { + const keybinding = this._keybindingService.lookupKeybinding(kb); + + if (!keybinding) { + return unassigned; + } + + return keybinding.getLabel(); + }; + + const kbstyle = (match: string, kb: string) => { + const keybinding = KeybindingIO.readKeybinding(kb, OS); + + if (!keybinding) { + return unassigned; + } + + const resolvedKeybindings = this._keybindingService.resolveKeybinding(keybinding); + + if (resolvedKeybindings.length === 0) { + return unassigned; + } + + return resolvedKeybindings[0].getLabel(); + }; + + return text + .replace(/kb\(([a-z.\d\-]+)\)/gi, kb) + .replace(/kbstyle\(([^\)]+)\)/gi, kbstyle); + }; + + if (!this._releaseNotesCache[version]) { + this._releaseNotesCache[version] = this._requestService.request({ url }) + .then(asText) + .then(text => patchKeybindings(text)); + } + + return this._releaseNotesCache[version]; + } + private onDidClickLink(uri: URI) { addGAParameters(this._telemetryService, this._environmentService, uri, 'ReleaseNotes') .then(updated => this._openerService.open(updated)) From 540c4c3e6484d1b9cb2c6ee957f8cac62436d3b5 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 16:30:03 -0800 Subject: [PATCH 091/658] Remove extra webview editor class from inheritance hierarchy --- .../browser/parts/editor/webviewEditor.ts | 66 ------------------- .../parts/html/browser/webviewEditor.ts | 51 ++++++++++++-- 2 files changed, 45 insertions(+), 72 deletions(-) delete mode 100644 src/vs/workbench/browser/parts/editor/webviewEditor.ts diff --git a/src/vs/workbench/browser/parts/editor/webviewEditor.ts b/src/vs/workbench/browser/parts/editor/webviewEditor.ts deleted file mode 100644 index a1809c369d2..00000000000 --- a/src/vs/workbench/browser/parts/editor/webviewEditor.ts +++ /dev/null @@ -1,66 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -'use strict'; -import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; -import URI from 'vs/base/common/uri'; -import { IStorageService } from 'vs/platform/storage/common/storage'; -import { Scope } from 'vs/workbench/common/memento'; - -export interface HtmlPreviewEditorViewState { - scrollYPercentage: number; -} - - -/** - * This class is only intended to be subclassed and not instantiated. - */ -export abstract class BaseWebviewEditor extends BaseEditor { - - constructor( - id: string, - telemetryService: ITelemetryService, - themeService: IThemeService, - private storageService: IStorageService - ) { - super(id, telemetryService, themeService); - } - - private get viewStateStorageKey(): string { - return this.getId() + '.editorViewState'; - } - - protected saveViewState(resource: URI | string, editorViewState: HtmlPreviewEditorViewState): void { - const memento = this.getMemento(this.storageService, Scope.WORKSPACE); - let editorViewStateMemento: { [key: string]: { [position: number]: HtmlPreviewEditorViewState } } = memento[this.viewStateStorageKey]; - if (!editorViewStateMemento) { - editorViewStateMemento = Object.create(null); - memento[this.viewStateStorageKey] = editorViewStateMemento; - } - - let fileViewState = editorViewStateMemento[resource.toString()]; - if (!fileViewState) { - fileViewState = Object.create(null); - editorViewStateMemento[resource.toString()] = fileViewState; - } - - if (typeof this.position === 'number') { - fileViewState[this.position] = editorViewState; - } - } - - protected loadViewState(resource: URI | string): HtmlPreviewEditorViewState | null { - const memento = this.getMemento(this.storageService, Scope.WORKSPACE); - const editorViewStateMemento: { [key: string]: { [position: number]: HtmlPreviewEditorViewState } } = memento[this.viewStateStorageKey]; - if (editorViewStateMemento) { - const fileViewState = editorViewStateMemento[resource.toString()]; - if (fileViewState) { - return fileViewState[this.position]; - } - } - return null; - } -} \ No newline at end of file diff --git a/src/vs/workbench/parts/html/browser/webviewEditor.ts b/src/vs/workbench/parts/html/browser/webviewEditor.ts index c3f870f510c..b9851a2bcf8 100644 --- a/src/vs/workbench/parts/html/browser/webviewEditor.ts +++ b/src/vs/workbench/parts/html/browser/webviewEditor.ts @@ -5,7 +5,6 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { BaseWebviewEditor } from 'vs/workbench/browser/parts/editor/webviewEditor'; import { IStorageService } from 'vs/platform/storage/common/storage'; import { IContextKey, RawContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; @@ -13,6 +12,9 @@ import { IContextKey, RawContextKey, IContextKeyService } from 'vs/platform/cont import { Webview } from './webview'; import { Builder } from 'vs/base/browser/builder'; import { Dimension } from 'vs/workbench/services/part/common/partService'; +import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; +import URI from 'vs/base/common/uri'; +import { Scope } from 'vs/workbench/common/memento'; /** A context key that is set when a webview editor has focus. */ export const KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS = new RawContextKey('webviewEditorFocus', false); @@ -21,12 +23,15 @@ export const KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED = new Ra /** A context key that is set when the find widget in a webview is visible. */ export const KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE = new RawContextKey('webviewFindWidgetVisible', false); +export interface HtmlPreviewEditorViewState { + scrollYPercentage: number; +} + /** * This class is only intended to be subclassed and not instantiated. */ -export abstract class WebviewEditor extends BaseWebviewEditor { +export abstract class WebviewEditor extends BaseEditor { - protected _webviewFocusContextKey: IContextKey; protected _webview: Webview; protected content: HTMLElement; protected contextKey: IContextKey; @@ -37,10 +42,10 @@ export abstract class WebviewEditor extends BaseWebviewEditor { id: string, telemetryService: ITelemetryService, themeService: IThemeService, - storageService: IStorageService, + private readonly storageService: IStorageService, contextKeyService: IContextKeyService, ) { - super(id, telemetryService, themeService, storageService); + super(id, telemetryService, themeService); if (contextKeyService) { this.contextKey = KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS.bindTo(contextKeyService); this.findInputFocusContextKey = KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED.bindTo(contextKeyService); @@ -97,5 +102,39 @@ export abstract class WebviewEditor extends BaseWebviewEditor { } protected abstract createEditor(parent: Builder): void; -} + private get viewStateStorageKey(): string { + return this.getId() + '.editorViewState'; + } + + protected saveViewState(resource: URI | string, editorViewState: HtmlPreviewEditorViewState): void { + const memento = this.getMemento(this.storageService, Scope.WORKSPACE); + let editorViewStateMemento: { [key: string]: { [position: number]: HtmlPreviewEditorViewState } } = memento[this.viewStateStorageKey]; + if (!editorViewStateMemento) { + editorViewStateMemento = Object.create(null); + memento[this.viewStateStorageKey] = editorViewStateMemento; + } + + let fileViewState = editorViewStateMemento[resource.toString()]; + if (!fileViewState) { + fileViewState = Object.create(null); + editorViewStateMemento[resource.toString()] = fileViewState; + } + + if (typeof this.position === 'number') { + fileViewState[this.position] = editorViewState; + } + } + + protected loadViewState(resource: URI | string): HtmlPreviewEditorViewState | null { + const memento = this.getMemento(this.storageService, Scope.WORKSPACE); + const editorViewStateMemento: { [key: string]: { [position: number]: HtmlPreviewEditorViewState } } = memento[this.viewStateStorageKey]; + if (editorViewStateMemento) { + const fileViewState = editorViewStateMemento[resource.toString()]; + if (fileViewState) { + return fileViewState[this.position]; + } + } + return null; + } +} From 4dec0f3f3d3a4cff64f390a15c474ffc0122f0df Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 16:54:55 -0800 Subject: [PATCH 092/658] Move scroll storage into html preview --- .../parts/html/browser/htmlPreviewPart.ts | 55 ++++++++++++++++--- .../parts/html/browser/webviewCommands.ts | 16 +++--- .../parts/html/browser/webviewEditor.ts | 44 +-------------- .../webview/electron-browser/webviewEditor.ts | 6 +- 4 files changed, 59 insertions(+), 62 deletions(-) diff --git a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts index 5e6aa8ac6a4..34fbca63821 100644 --- a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts +++ b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts @@ -24,14 +24,19 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { Webview, WebviewOptions } from './webview'; import { IStorageService } from 'vs/platform/storage/common/storage'; -import { WebviewEditor } from './webviewEditor'; +import { BaseWebviewEditor } from './webviewEditor'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import URI from 'vs/base/common/uri'; +import { Scope } from 'vs/workbench/common/memento'; +export interface HtmlPreviewEditorViewState { + scrollYPercentage: number; +} /** * An implementation of editor for showing HTML content in an IFrame by leveraging the HTML input. */ -export class HtmlPreviewPart extends WebviewEditor { +export class HtmlPreviewPart extends BaseWebviewEditor { static readonly ID: string = 'workbench.editor.htmlPreviewPart'; static class: string = 'htmlPreviewPart'; @@ -48,15 +53,15 @@ export class HtmlPreviewPart extends WebviewEditor { constructor( @ITelemetryService telemetryService: ITelemetryService, @IThemeService themeService: IThemeService, - @IStorageService storageService: IStorageService, @IContextKeyService contextKeyService: IContextKeyService, - @ITextModelService private readonly textModelResolverService: ITextModelService, + @IContextViewService private readonly _contextViewService: IContextViewService, + @IEnvironmentService private readonly _environmentService: IEnvironmentService, @IOpenerService private readonly openerService: IOpenerService, @IPartService private readonly partService: IPartService, - @IContextViewService private readonly _contextViewService: IContextViewService, - @IEnvironmentService private readonly _environmentService: IEnvironmentService + @IStorageService private readonly _storageService: IStorageService, + @ITextModelService private readonly textModelResolverService: ITextModelService, ) { - super(HtmlPreviewPart.ID, telemetryService, themeService, storageService, contextKeyService); + super(HtmlPreviewPart.ID, telemetryService, themeService, contextKeyService); } dispose(): void { @@ -241,4 +246,40 @@ export class HtmlPreviewPart extends WebviewEditor { }); }); } + + + private get viewStateStorageKey(): string { + return this.getId() + '.editorViewState'; + } + + protected saveViewState(resource: URI | string, editorViewState: HtmlPreviewEditorViewState): void { + const memento = this.getMemento(this._storageService, Scope.WORKSPACE); + let editorViewStateMemento: { [key: string]: { [position: number]: HtmlPreviewEditorViewState } } = memento[this.viewStateStorageKey]; + if (!editorViewStateMemento) { + editorViewStateMemento = Object.create(null); + memento[this.viewStateStorageKey] = editorViewStateMemento; + } + + let fileViewState = editorViewStateMemento[resource.toString()]; + if (!fileViewState) { + fileViewState = Object.create(null); + editorViewStateMemento[resource.toString()] = fileViewState; + } + + if (typeof this.position === 'number') { + fileViewState[this.position] = editorViewState; + } + } + + protected loadViewState(resource: URI | string): HtmlPreviewEditorViewState | null { + const memento = this.getMemento(this._storageService, Scope.WORKSPACE); + const editorViewStateMemento: { [key: string]: { [position: number]: HtmlPreviewEditorViewState } } = memento[this.viewStateStorageKey]; + if (editorViewStateMemento) { + const fileViewState = editorViewStateMemento[resource.toString()]; + if (fileViewState) { + return fileViewState[this.position]; + } + } + return null; + } } diff --git a/src/vs/workbench/parts/html/browser/webviewCommands.ts b/src/vs/workbench/parts/html/browser/webviewCommands.ts index 3a2b4ce248a..8cb01625d73 100644 --- a/src/vs/workbench/parts/html/browser/webviewCommands.ts +++ b/src/vs/workbench/parts/html/browser/webviewCommands.ts @@ -10,7 +10,7 @@ import { Command, ICommandOptions } from 'vs/editor/browser/editorExtensions'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { Action } from 'vs/base/common/actions'; import { TPromise } from 'vs/base/common/winjs.base'; -import { WebviewEditor } from './webviewEditor'; +import { BaseWebviewEditor } from './webviewEditor'; export class ShowWebViewEditorFindWidgetAction extends Action { public static readonly ID = 'editor.action.webvieweditor.showFind'; @@ -32,8 +32,8 @@ export class ShowWebViewEditorFindWidgetAction extends Action { return null; } - private getWebViewEditor(): WebviewEditor { - const activeEditor = this.workbenchEditorService.getActiveEditor() as WebviewEditor; + private getWebViewEditor(): BaseWebviewEditor { + const activeEditor = this.workbenchEditorService.getActiveEditor() as BaseWebviewEditor; if (activeEditor.isWebviewEditor) { return activeEditor; } @@ -49,8 +49,8 @@ export class HideWebViewEditorFindCommand extends Command { } } - private getWebViewEditor(accessor: ServicesAccessor): WebviewEditor { - const activeEditor = accessor.get(IWorkbenchEditorService).getActiveEditor() as WebviewEditor; + private getWebViewEditor(accessor: ServicesAccessor): BaseWebviewEditor { + const activeEditor = accessor.get(IWorkbenchEditorService).getActiveEditor() as BaseWebviewEditor; if (activeEditor.isWebviewEditor) { return activeEditor; } @@ -74,8 +74,8 @@ export class ShowWebViewEditorFindTermCommand extends Command { } } - private getWebViewEditor(accessor: ServicesAccessor): WebviewEditor { - const activeEditor = accessor.get(IWorkbenchEditorService).getActiveEditor() as WebviewEditor; + private getWebViewEditor(accessor: ServicesAccessor): BaseWebviewEditor { + const activeEditor = accessor.get(IWorkbenchEditorService).getActiveEditor() as BaseWebviewEditor; if (activeEditor.isWebviewEditor) { return activeEditor; } @@ -131,6 +131,6 @@ export class ReloadWebviewAction extends Action { private getVisibleWebviews() { return this.workbenchEditorService.getVisibleEditors() .filter(c => c && (c as any).isWebviewEditor) - .map(e => e as WebviewEditor); + .map(e => e as BaseWebviewEditor); } } \ No newline at end of file diff --git a/src/vs/workbench/parts/html/browser/webviewEditor.ts b/src/vs/workbench/parts/html/browser/webviewEditor.ts index b9851a2bcf8..8b82f310bd1 100644 --- a/src/vs/workbench/parts/html/browser/webviewEditor.ts +++ b/src/vs/workbench/parts/html/browser/webviewEditor.ts @@ -5,7 +5,6 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { IStorageService } from 'vs/platform/storage/common/storage'; import { IContextKey, RawContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; @@ -13,8 +12,6 @@ import { Webview } from './webview'; import { Builder } from 'vs/base/browser/builder'; import { Dimension } from 'vs/workbench/services/part/common/partService'; import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; -import URI from 'vs/base/common/uri'; -import { Scope } from 'vs/workbench/common/memento'; /** A context key that is set when a webview editor has focus. */ export const KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS = new RawContextKey('webviewEditorFocus', false); @@ -23,14 +20,11 @@ export const KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED = new Ra /** A context key that is set when the find widget in a webview is visible. */ export const KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE = new RawContextKey('webviewFindWidgetVisible', false); -export interface HtmlPreviewEditorViewState { - scrollYPercentage: number; -} /** * This class is only intended to be subclassed and not instantiated. */ -export abstract class WebviewEditor extends BaseEditor { +export abstract class BaseWebviewEditor extends BaseEditor { protected _webview: Webview; protected content: HTMLElement; @@ -42,7 +36,6 @@ export abstract class WebviewEditor extends BaseEditor { id: string, telemetryService: ITelemetryService, themeService: IThemeService, - private readonly storageService: IStorageService, contextKeyService: IContextKeyService, ) { super(id, telemetryService, themeService); @@ -102,39 +95,4 @@ export abstract class WebviewEditor extends BaseEditor { } protected abstract createEditor(parent: Builder): void; - - private get viewStateStorageKey(): string { - return this.getId() + '.editorViewState'; - } - - protected saveViewState(resource: URI | string, editorViewState: HtmlPreviewEditorViewState): void { - const memento = this.getMemento(this.storageService, Scope.WORKSPACE); - let editorViewStateMemento: { [key: string]: { [position: number]: HtmlPreviewEditorViewState } } = memento[this.viewStateStorageKey]; - if (!editorViewStateMemento) { - editorViewStateMemento = Object.create(null); - memento[this.viewStateStorageKey] = editorViewStateMemento; - } - - let fileViewState = editorViewStateMemento[resource.toString()]; - if (!fileViewState) { - fileViewState = Object.create(null); - editorViewStateMemento[resource.toString()] = fileViewState; - } - - if (typeof this.position === 'number') { - fileViewState[this.position] = editorViewState; - } - } - - protected loadViewState(resource: URI | string): HtmlPreviewEditorViewState | null { - const memento = this.getMemento(this.storageService, Scope.WORKSPACE); - const editorViewStateMemento: { [key: string]: { [position: number]: HtmlPreviewEditorViewState } } = memento[this.viewStateStorageKey]; - if (editorViewStateMemento) { - const fileViewState = editorViewStateMemento[resource.toString()]; - if (fileViewState) { - return fileViewState[this.position]; - } - } - return null; - } } diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index 8ef51e490ec..1d8701da57c 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -9,14 +9,13 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IDisposable, } from 'vs/base/common/lifecycle'; import { EditorOptions } from 'vs/workbench/common/editor'; import { Position } from 'vs/platform/editor/common/editor'; -import { WebviewEditor as BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from 'vs/workbench/parts/html/browser/webviewEditor'; +import { BaseWebviewEditor as BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from 'vs/workbench/parts/html/browser/webviewEditor'; import { Builder, Dimension } from 'vs/base/browser/builder'; import { Webview } from 'vs/workbench/parts/html/browser/webview'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; -import { IStorageService } from 'vs/platform/storage/common/storage'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; @@ -36,7 +35,6 @@ export class WebviewEditor extends BaseWebviewEditor { constructor( @ITelemetryService telemetryService: ITelemetryService, - @IStorageService storageService: IStorageService, @IThemeService themeService: IThemeService, @IContextKeyService private _contextKeyService: IContextKeyService, @IPartService private readonly _partService: IPartService, @@ -44,7 +42,7 @@ export class WebviewEditor extends BaseWebviewEditor { @IEnvironmentService private readonly _environmentService: IEnvironmentService, @IWorkspaceContextService private readonly _contextService: IWorkspaceContextService ) { - super(WebviewEditor.ID, telemetryService, themeService, storageService, _contextKeyService); + super(WebviewEditor.ID, telemetryService, themeService, _contextKeyService); this._onDidFocusWebview = new Emitter(); } From 9c2e83778d1c1473fd1f85c5f5d988acb475834f Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 16:59:06 -0800 Subject: [PATCH 093/658] Moving more fields out of BaseWebviewEditor --- src/vs/workbench/parts/html/browser/htmlPreviewPart.ts | 1 + src/vs/workbench/parts/html/browser/webviewEditor.ts | 4 ---- .../workbench/parts/webview/electron-browser/webviewEditor.ts | 1 + 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts index 34fbca63821..deae182e531 100644 --- a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts +++ b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts @@ -48,6 +48,7 @@ export class HtmlPreviewPart extends BaseWebviewEditor { private _modelChangeSubscription = EmptyDisposable; private _themeChangeSubscription = EmptyDisposable; + private content: HTMLElement; private scrollYPercentage: number = 0; constructor( diff --git a/src/vs/workbench/parts/html/browser/webviewEditor.ts b/src/vs/workbench/parts/html/browser/webviewEditor.ts index 8b82f310bd1..5ec3147811f 100644 --- a/src/vs/workbench/parts/html/browser/webviewEditor.ts +++ b/src/vs/workbench/parts/html/browser/webviewEditor.ts @@ -9,7 +9,6 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IContextKey, RawContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { Webview } from './webview'; -import { Builder } from 'vs/base/browser/builder'; import { Dimension } from 'vs/workbench/services/part/common/partService'; import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; @@ -27,7 +26,6 @@ export const KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE = new RawContextKey< export abstract class BaseWebviewEditor extends BaseEditor { protected _webview: Webview; - protected content: HTMLElement; protected contextKey: IContextKey; protected findWidgetVisible: IContextKey; protected findInputFocusContextKey: IContextKey; @@ -93,6 +91,4 @@ export abstract class BaseWebviewEditor extends BaseEditor { this._webview.focus(); } } - - protected abstract createEditor(parent: Builder): void; } diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index 1d8701da57c..685a91c94db 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -28,6 +28,7 @@ export class WebviewEditor extends BaseWebviewEditor { public static readonly ID = 'WebviewEditor'; private editorFrame: HTMLElement; + private content: HTMLElement; private webviewContent: HTMLElement; private _onDidFocusWebview: Emitter; private _webviewFocusTracker?: DOM.IFocusTracker; From a09434dae5cde718b6d702424ea42b9ceb5ac038 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 19:07:00 -0800 Subject: [PATCH 094/658] Slugify document links in markdown files Fixes #37079 --- extensions/markdown/src/markdownEngine.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/extensions/markdown/src/markdownEngine.ts b/extensions/markdown/src/markdownEngine.ts index 44fe586602c..8d175afea8a 100644 --- a/extensions/markdown/src/markdownEngine.ts +++ b/extensions/markdown/src/markdownEngine.ts @@ -150,9 +150,15 @@ export class MarkdownEngine { } if (fragment) { - uri = uri.with({ fragment }); + uri = uri.with({ + fragment: Slug.fromHeading(fragment).value + }); } return normalizeLink(uri.with({ scheme: 'vscode-workspace-resource' }).toString(true)); + } else if (!uri.scheme && !uri.path && uri.fragment) { + return normalizeLink(uri.with({ + fragment: Slug.fromHeading(uri.fragment).value + }).toString(true)); } } catch (e) { // noop From 4f399a4c537f794b03f12396c0b82bc72af024c0 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 6 Mar 2018 07:55:53 +0100 Subject: [PATCH 095/658] fix #44899 --- src/vs/workbench/electron-browser/bootstrap/index.js | 4 +++- src/vs/workbench/node/extensionHostMain.ts | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/electron-browser/bootstrap/index.js b/src/vs/workbench/electron-browser/bootstrap/index.js index d4b6e878238..cee2d5ffb49 100644 --- a/src/vs/workbench/electron-browser/bootstrap/index.js +++ b/src/vs/workbench/electron-browser/bootstrap/index.js @@ -31,6 +31,8 @@ process.lazyEnv = new Promise(function (resolve) { ipc.send('vscode:fetchShellEnv', remote.getCurrentWindow().id); }); +Error.stackTraceLimit = 100; // increase number of stack frames (from 10, https://github.com/v8/v8/wiki/Stack-Trace-API) + function onError(error, enableDeveloperTools) { if (enableDeveloperTools) { remote.getCurrentWebContents().openDevTools(); @@ -179,7 +181,7 @@ function main() { bundles[bundle] = json; cb(undefined, json); }) - .catch(cb); + .catch(cb); }; } diff --git a/src/vs/workbench/node/extensionHostMain.ts b/src/vs/workbench/node/extensionHostMain.ts index 9a0ace37e89..4672e94e23b 100644 --- a/src/vs/workbench/node/extensionHostMain.ts +++ b/src/vs/workbench/node/extensionHostMain.ts @@ -101,6 +101,7 @@ export class ExtensionHostMain { this._extensionService = new ExtHostExtensionService(initData, rpcProtocol, extHostWorkspace, this._extHostConfiguration, this._extHostLogService, environmentService); // error forwarding and stack trace scanning + Error.stackTraceLimit = 100; // increase number of stack frames (from 10, https://github.com/v8/v8/wiki/Stack-Trace-API) const extensionErrors = new WeakMap(); this._extensionService.getExtensionPathIndex().then(map => { (Error).prepareStackTrace = (error: Error, stackTrace: errors.V8CallSite[]) => { From 6fe0c3269851c699725c4e381b4e2b9764853df1 Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Tue, 6 Mar 2018 10:44:53 +0100 Subject: [PATCH 096/658] Don't check parent folders for settings / settings folder (fixes #45121) --- src/vs/code/node/windowsFinder.ts | 47 +-------------------- src/vs/code/test/node/windowsFinder.test.ts | 38 ++--------------- 2 files changed, 5 insertions(+), 80 deletions(-) diff --git a/src/vs/code/node/windowsFinder.ts b/src/vs/code/node/windowsFinder.ts index 2579cc33ba3..61d9427fa69 100644 --- a/src/vs/code/node/windowsFinder.ts +++ b/src/vs/code/node/windowsFinder.ts @@ -5,8 +5,6 @@ 'use strict'; -import * as path from 'path'; -import * as fs from 'fs'; import * as platform from 'vs/base/common/platform'; import * as paths from 'vs/base/common/paths'; import { OpenContext } from 'vs/platform/windows/common/windows'; @@ -35,22 +33,9 @@ export interface IBestWindowOrFolderOptions { export function findBestWindowOrFolderForFile({ windows, newWindow, reuseWindow, context, filePath, userHome, codeSettingsFolder, workspaceResolver }: IBestWindowOrFolderOptions): W | string { if (!newWindow && filePath && (context === OpenContext.DESKTOP || context === OpenContext.CLI || context === OpenContext.DOCK)) { const windowOnFilePath = findWindowOnFilePath(windows, filePath, workspaceResolver); - - // 1) window wins if it has a workspace opened - if (windowOnFilePath && !!windowOnFilePath.openedWorkspace) { + if (windowOnFilePath) { return windowOnFilePath; } - - // 2) window wins if it has a folder opened that is more specific than settings folder - const folderWithCodeSettings = !reuseWindow && findFolderWithCodeSettings(filePath, userHome, codeSettingsFolder); - if (windowOnFilePath && !(folderWithCodeSettings && folderWithCodeSettings.length > windowOnFilePath.openedFolderPath.length)) { - return windowOnFilePath; - } - - // 3) finally return path to folder with settings - if (folderWithCodeSettings) { - return folderWithCodeSettings; - } } return !newWindow ? getLastActiveWindow(windows) : null; @@ -77,36 +62,6 @@ function findWindowOnFilePath(windows: W[], filePath: s return null; } -function findFolderWithCodeSettings(filePath: string, userHome?: string, codeSettingsFolder?: string): string { - let folder = path.dirname(paths.normalize(filePath, true)); - let homeFolder = userHome && paths.normalize(userHome, true); - if (!platform.isLinux) { - homeFolder = homeFolder && homeFolder.toLowerCase(); - } - - let previous = null; - while (folder !== previous) { - if (hasCodeSettings(folder, homeFolder, codeSettingsFolder)) { - return folder; - } - - previous = folder; - folder = path.dirname(folder); - } - - return null; -} - -function hasCodeSettings(folder: string, normalizedUserHome?: string, codeSettingsFolder = '.vscode') { - try { - return fs.statSync(path.join(folder, codeSettingsFolder, 'settings.json')).isFile(); - } catch (err) { - // assume impossible to access - } - - return false; -} - export function getLastActiveWindow(windows: W[]): W { const lastFocusedDate = Math.max.apply(Math, windows.map(window => window.lastFocusTime)); diff --git a/src/vs/code/test/node/windowsFinder.test.ts b/src/vs/code/test/node/windowsFinder.test.ts index 6084a62ee43..985f06f0bbc 100644 --- a/src/vs/code/test/node/windowsFinder.test.ts +++ b/src/vs/code/test/node/windowsFinder.test.ts @@ -48,25 +48,22 @@ suite('WindowsFinder', () => { })), null); assert.equal(findBestWindowOrFolderForFile(options({ filePath: path.join(fixturesFolder, 'vscode_folder', 'file.txt'), - newWindow: true // We assume this implies 'editor' work mode, might need separate CLI option later. + newWindow: true })), null); assert.equal(findBestWindowOrFolderForFile(options({ filePath: path.join(fixturesFolder, 'vscode_folder', 'file.txt'), - reuseWindow: true // We assume this implies 'editor' work mode, might need separate CLI option later. + reuseWindow: true })), null); assert.equal(findBestWindowOrFolderForFile(options({ filePath: path.join(fixturesFolder, 'vscode_folder', 'file.txt'), context: OpenContext.API })), null); - }); - - test('New window with folder when no windows exist', () => { assert.equal(findBestWindowOrFolderForFile(options({ filePath: path.join(fixturesFolder, 'vscode_folder', 'file.txt') - })), path.join(fixturesFolder, 'vscode_folder')); + })), null); assert.equal(findBestWindowOrFolderForFile(options({ filePath: path.join(fixturesFolder, 'vscode_folder', 'new_folder', 'new_file.txt') - })), path.join(fixturesFolder, 'vscode_folder')); + })), null); }); test('New window without folder when windows exist', () => { @@ -106,19 +103,11 @@ suite('WindowsFinder', () => { windows, filePath: path.join(fixturesFolder, 'vscode_folder', 'file.txt') })), vscodeFolderWindow); - }); - - test('Existing window wins over vscode folder if more specific', () => { const window = { lastFocusTime: 1, openedFolderPath: path.join(fixturesFolder, 'vscode_folder', 'nested_folder') }; assert.equal(findBestWindowOrFolderForFile(options({ windows: [window], filePath: path.join(fixturesFolder, 'vscode_folder', 'nested_folder', 'subfolder', 'file.txt') })), window); - // check - assert.equal(findBestWindowOrFolderForFile(options({ - windows: [window], - filePath: path.join(fixturesFolder, 'vscode_folder', 'nested_folder2', 'subfolder', 'file.txt') - })), path.join(fixturesFolder, 'vscode_folder')); }); test('More specific existing window wins', () => { @@ -130,25 +119,6 @@ suite('WindowsFinder', () => { })), nestedFolderWindow); }); - test('VSCode folder wins over existing window if more specific', () => { - const window = { lastFocusTime: 1, openedFolderPath: path.join(fixturesFolder, 'vscode_folder') }; - assert.equal(findBestWindowOrFolderForFile(options({ - windows: [window], - filePath: path.join(fixturesFolder, 'vscode_folder', 'nested_vscode_folder', 'subfolder', 'file.txt') - })), path.join(fixturesFolder, 'vscode_folder', 'nested_vscode_folder')); - // check - assert.equal(findBestWindowOrFolderForFile(options({ - windows: [window], - filePath: path.join(fixturesFolder, 'vscode_folder', 'nested_folder', 'subfolder', 'file.txt') - })), window); - }); - - test('More specific VSCode folder wins', () => { - assert.equal(findBestWindowOrFolderForFile(options({ - filePath: path.join(fixturesFolder, 'vscode_folder', 'nested_vscode_folder', 'subfolder', 'file.txt') - })), path.join(fixturesFolder, 'vscode_folder', 'nested_vscode_folder')); - }); - test('Workspace folder wins', () => { const window = { lastFocusTime: 1, openedWorkspace: testWorkspace }; assert.equal(findBestWindowOrFolderForFile(options({ From 8301ae680e3f034521bd09afcb8e90ff4e4e0b3f Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 6 Mar 2018 11:17:54 +0100 Subject: [PATCH 097/658] move sorting and filter-state into marker view model #14783 --- .../parts/markers/browser/markersPanel.ts | 22 +- .../markers/browser/markersTreeViewer.ts | 34 ++- .../workbench/parts/markers/common/markers.ts | 21 +- .../parts/markers/common/markersModel.ts | 286 +++++++++--------- .../markersElectronContributions.ts | 4 +- .../markers/test/common/markersModel.test.ts | 51 ++-- 6 files changed, 214 insertions(+), 204 deletions(-) diff --git a/src/vs/workbench/parts/markers/browser/markersPanel.ts b/src/vs/workbench/parts/markers/browser/markersPanel.ts index 24a9ca2c98a..46d1e4e18e8 100644 --- a/src/vs/workbench/parts/markers/browser/markersPanel.ts +++ b/src/vs/workbench/parts/markers/browser/markersPanel.ts @@ -139,7 +139,7 @@ export class MarkersPanel extends Panel { "source" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } } */ - this.telemetryService.publicLog('problems.marker.opened', { source: marker.marker.source }); + this.telemetryService.publicLog('problems.marker.opened', { source: marker.raw.source }); this.editorService.openEditor({ resource: marker.resource, options: { @@ -197,6 +197,7 @@ export class MarkersPanel extends Panel { const controller = this.instantiationService.createInstance(Controller); this.tree = this.instantiationService.createInstance(WorkbenchTree, this.treeContainer, { dataSource: new Viewer.DataSource(), + filter: new Viewer.DataFilter(), renderer, controller, sorter: new Viewer.Sorter(), @@ -294,13 +295,12 @@ export class MarkersPanel extends Panel { } private autoExpand(): void { - for (const resource of this.markersWorkbenchService.markersModel.filteredResources) { - const resourceUri = resource.uri.toString(); - if (!this.autoExpanded.has(resourceUri)) { + this.markersWorkbenchService.markersModel.forEachFilteredResource(resource => { + if (!this.autoExpanded.has(resource.uri.toString())) { this.tree.expand(resource).done(null, errors.onUnexpectedError); - this.autoExpanded.add(resourceUri); + this.autoExpanded.add(resource.uri.toString()); } - } + }); } private autoReveal(focus: boolean = false): void { @@ -332,13 +332,15 @@ export class MarkersPanel extends Panel { } private getResourceForCurrentActiveResource(): Resource { + let res: Resource = null; if (this.currentActiveResource) { - let resources = this.markersWorkbenchService.markersModel.filteredResources.filter((resource): boolean => { - return this.currentActiveResource.toString() === resource.uri.toString(); + this.markersWorkbenchService.markersModel.forEachFilteredResource(resource => { + if (!res && resource.uri.toString() === this.currentActiveResource.toString()) { + res = resource; + } }); - return resources.length > 0 ? resources[0] : null; } - return null; + return res; } private hasSelectedMarkerFor(resource: Resource): boolean { diff --git a/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts b/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts index f8191665803..ab5b816e836 100644 --- a/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts +++ b/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts @@ -7,7 +7,7 @@ import { TPromise, Promise } from 'vs/base/common/winjs.base'; import * as dom from 'vs/base/browser/dom'; import * as network from 'vs/base/common/network'; -import { IDataSource, ITree, IRenderer, IAccessibilityProvider, ISorter } from 'vs/base/parts/tree/browser/tree'; +import { IDataSource, ITree, IRenderer, IAccessibilityProvider, ISorter, IFilter } from 'vs/base/parts/tree/browser/tree'; import Severity from 'vs/base/common/severity'; import { CountBadge } from 'vs/base/browser/ui/countBadge/countBadge'; import { FileLabel, ResourceLabel } from 'vs/workbench/browser/labels'; @@ -41,7 +41,7 @@ interface IMarkerTemplateData { } export class DataSource implements IDataSource { - public getId(tree: ITree, element: any): string { + public getId(tree: ITree, element: MarkersModel | Resource | Marker): string { if (element instanceof MarkersModel) { return 'root'; } @@ -49,7 +49,7 @@ export class DataSource implements IDataSource { return element.uri.toString(); } if (element instanceof Marker) { - return (element).id; + return element.id; } return ''; } @@ -58,12 +58,12 @@ export class DataSource implements IDataSource { return element instanceof MarkersModel || element instanceof Resource; } - public getChildren(tree: ITree, element: any): Promise { + public getChildren(tree: ITree, element: MarkersModel | Resource): Promise { if (element instanceof MarkersModel) { - return TPromise.as((element).filteredResources); + return Promise.as(element.resources); } if (element instanceof Resource) { - return TPromise.as(element.markers); + return Promise.as(element.markers); } return null; } @@ -73,6 +73,18 @@ export class DataSource implements IDataSource { } } +export class DataFilter implements IFilter { + public isVisible(tree: ITree, element: Resource | Marker | any): boolean { + if (element instanceof Resource) { + return element.filteredMarkersCount > 0; + } + if (element instanceof Marker) { + return element.isSelected; + } + return true; + } +} + export class Renderer implements IRenderer { private static readonly RESOURCE_TEMPLATE_ID = 'resource-template'; @@ -164,13 +176,13 @@ export class Renderer implements IRenderer { } else if ((templateData).resourceLabel) { (templateData).resourceLabel.setLabel({ name: element.name, description: element.uri.toString(), resource: element.uri }, { matches: element.uriMatches }); } - templateData.count.setCount(element.markers.length); + templateData.count.setCount(element.filteredMarkersCount); } private renderMarkerElement(tree: ITree, element: Marker, templateData: IMarkerTemplateData) { - let marker = element.marker; + let marker = element.raw; templateData.icon.className = 'icon ' + Renderer.iconClassNameFor(marker); - templateData.description.set(marker.message, element.labelMatches); + templateData.description.set(marker.message, element.messageMatches); templateData.description.element.title = marker.message; dom.toggleClass(templateData.source.element, 'marker-source', !!marker.source); @@ -211,10 +223,10 @@ export class MarkersTreeAccessibilityProvider implements IAccessibilityProvider public getAriaLabel(tree: ITree, element: any): string { if (element instanceof Resource) { - return Messages.MARKERS_TREE_ARIA_LABEL_RESOURCE(element.name, element.markers.length); + return Messages.MARKERS_TREE_ARIA_LABEL_RESOURCE(element.name, element.filteredMarkersCount); } if (element instanceof Marker) { - return Messages.MARKERS_TREE_ARIA_LABEL_MARKER(element.marker); + return Messages.MARKERS_TREE_ARIA_LABEL_MARKER(element.raw); } return null; } diff --git a/src/vs/workbench/parts/markers/common/markers.ts b/src/vs/workbench/parts/markers/common/markers.ts index f86fee2b300..6bf86a6064b 100644 --- a/src/vs/workbench/parts/markers/common/markers.ts +++ b/src/vs/workbench/parts/markers/common/markers.ts @@ -42,24 +42,23 @@ export class MarkersWorkbenchService extends Disposable implements IMarkersWorkb } filter(filter: string): void { - this.markersModel.update(new FilterOptions(filter)); + this.markersModel.updateFilterOptions(new FilterOptions(filter)); this.refreshBadge(); } private onMarkerChanged(resources: URI[]): void { - const bulkUpdater = this.markersModel.getBulkUpdater(); - for (const resource of resources) { - bulkUpdater.add(resource, this.markerService.read({ resource })); - } - bulkUpdater.done(); + this.markersModel.updateMarkers(updater => { + for (const resource of resources) { + updater(resource, this.markerService.read({ resource })); + } + }); this.refreshBadge(); this._onDidChangeMarkersForResources.fire(resources); } private refreshBadge(): void { - const total = this.markersModel.total(); - const count = this.markersModel.count(); - const message = total === count ? localize('totalProblems', 'Total {0} Problems', total) : localize('filteredProblems', 'Showing {0} of {1} Problems', count, total); - this.activityService.showActivity(Constants.MARKERS_PANEL_ID, new NumberBadge(count, () => message)); + const { total, filtered } = this.markersModel.stats(); + const message = total === filtered ? localize('totalProblems', 'Total {0} Problems', total) : localize('filteredProblems', 'Showing {0} of {1} Problems', filtered, total); + this.activityService.showActivity(Constants.MARKERS_PANEL_ID, new NumberBadge(filtered, () => message)); } -} \ No newline at end of file +} diff --git a/src/vs/workbench/parts/markers/common/markersModel.ts b/src/vs/workbench/parts/markers/common/markersModel.ts index e5c7491b513..6fb81114875 100644 --- a/src/vs/workbench/parts/markers/common/markersModel.ts +++ b/src/vs/workbench/parts/markers/common/markersModel.ts @@ -5,7 +5,6 @@ 'use strict'; import * as paths from 'vs/base/common/paths'; -import * as types from 'vs/base/common/types'; import Severity from 'vs/base/common/severity'; import URI from 'vs/base/common/uri'; import { Range, IRange } from 'vs/editor/common/core/range'; @@ -13,20 +12,19 @@ import { IMarker } from 'vs/platform/markers/common/markers'; import { IFilter, IMatch, or, matchesContiguousSubString, matchesPrefix, matchesFuzzy } from 'vs/base/common/filters'; import Messages from 'vs/workbench/parts/markers/common/messages'; import { Schemas } from 'vs/base/common/network'; - -export interface BulkUpdater { - add(resource: URI, markers: IMarker[]): void; - done(): void; -} +import { groupBy, isFalsyOrEmpty } from 'vs/base/common/arrays'; +import { values } from 'vs/base/common/map'; export class Resource { private _name: string = null; private _path: string = null; + filteredMarkersCount: number = 0; + uriMatches: IMatch[] = []; + constructor( readonly uri: URI, - readonly uriMatches: IMatch[] = [], readonly markers: Marker[], ) { markers.sort(Marker.compare); @@ -51,7 +49,7 @@ export class Resource { let [firstMarkerOfB] = b.markers; let res = 0; if (firstMarkerOfA && firstMarkerOfB) { - res = Severity.compare(firstMarkerOfA.marker.severity, firstMarkerOfB.marker.severity); + res = Severity.compare(firstMarkerOfA.raw.severity, firstMarkerOfB.raw.severity); } if (res === 0) { res = a.path.localeCompare(b.path) || a.name.localeCompare(b.name); @@ -62,85 +60,63 @@ export class Resource { export class Marker { + isSelected: boolean = false; + messageMatches: IMatch[] = []; + sourceMatches: IMatch[] = []; + constructor( readonly id: string, - readonly marker: IMarker, - readonly labelMatches: IMatch[] = [], - readonly sourceMatches: IMatch[] = [] + readonly raw: IMarker, ) { } public get resource(): URI { - return this.marker.resource; + return this.raw.resource; } public get range(): IRange { - return this.marker; + return this.raw; } public toString(): string { return [ - `file: '${this.marker.resource}'`, - `severity: '${Severity.toString(this.marker.severity)}'`, - `message: '${this.marker.message}'`, - `at: '${this.marker.startLineNumber},${this.marker.startColumn}'`, - `source: '${this.marker.source ? this.marker.source : ''}'`, - `code: '${this.marker.code ? this.marker.code : ''}'` + `file: '${this.raw.resource}'`, + `severity: '${Severity.toString(this.raw.severity)}'`, + `message: '${this.raw.message}'`, + `at: '${this.raw.startLineNumber},${this.raw.startColumn}'`, + `source: '${this.raw.source ? this.raw.source : ''}'`, + `code: '${this.raw.code ? this.raw.code : ''}'` ].join('\n'); } static compare(a: Marker, b: Marker): number { - return Severity.compare(a.marker.severity, b.marker.severity) - || Range.compareRangesUsingStarts(a.marker, b.marker); + return Severity.compare(a.raw.severity, b.raw.severity) + || Range.compareRangesUsingStarts(a.raw, b.raw); } } export class FilterOptions { - static _filter: IFilter = or(matchesPrefix, matchesContiguousSubString); - static _fuzzyFilter: IFilter = or(matchesPrefix, matchesContiguousSubString, matchesFuzzy); + static readonly _filter: IFilter = or(matchesPrefix, matchesContiguousSubString); + static readonly _fuzzyFilter: IFilter = or(matchesPrefix, matchesContiguousSubString, matchesFuzzy); - private _filterErrors: boolean = false; - private _filterWarnings: boolean = false; - private _filterInfos: boolean = false; - private _filter: string = ''; - private _completeFilter: string = ''; + readonly filterErrors: boolean = false; + readonly filterWarnings: boolean = false; + readonly filterInfos: boolean = false; + readonly filter: string = ''; + readonly completeFilter: string = ''; constructor(filter: string = '') { if (filter) { - this.parse(filter); + this.completeFilter = filter; + this.filter = filter.trim(); + this.filterErrors = this.matches(this.filter, Messages.MARKERS_PANEL_FILTER_ERRORS); + this.filterWarnings = this.matches(this.filter, Messages.MARKERS_PANEL_FILTER_WARNINGS); + this.filterInfos = this.matches(this.filter, Messages.MARKERS_PANEL_FILTER_INFOS); } } - public get filterErrors(): boolean { - return this._filterErrors; - } - - public get filterWarnings(): boolean { - return this._filterWarnings; - } - - public get filterInfos(): boolean { - return this._filterInfos; - } - - public get filter(): string { - return this._filter; - } - - public get completeFilter(): string { - return this._completeFilter; - } - public hasFilters(): boolean { - return !!this._filter; - } - - private parse(filter: string) { - this._completeFilter = filter; - this._filter = filter.trim(); - this._filterErrors = this.matches(this._filter, Messages.MARKERS_PANEL_FILTER_ERRORS); - this._filterWarnings = this.matches(this._filter, Messages.MARKERS_PANEL_FILTER_WARNINGS); - this._filterInfos = this.matches(this._filter, Messages.MARKERS_PANEL_FILTER_INFOS); + return !!this.filter; } private matches(prefix: string, word: string): boolean { @@ -151,134 +127,148 @@ export class FilterOptions { export class MarkersModel { - private markersByResource: Map; - - private _filteredResources: Resource[]; - private _nonFilteredResources: Resource[]; + private _markersByResource: Map; private _filterOptions: FilterOptions; constructor(markers: IMarker[] = []) { - this.markersByResource = new Map(); + this._markersByResource = new Map(); this._filterOptions = new FilterOptions(); - this.update(markers); + + for (const group of groupBy(markers, MarkersModel._compareMarkersByUri)) { + const resource = this.createResource(group[0].resource, group); + this._markersByResource.set(resource.uri.toString(), resource); + } + } + + private static _compareMarkersByUri(a: IMarker, b: IMarker) { + if (a.resource.toString() < b.resource.toString()) { + return -1; + } else if (a.resource.toString() > b.resource.toString()) { + return 1; + } else { + return 0; + } } public get filterOptions(): FilterOptions { return this._filterOptions; } - public get filteredResources(): Resource[] { - return this._filteredResources; + public get resources(): Resource[] { + return values(this._markersByResource); + } + + public forEachFilteredResource(callback: (resource: Resource) => any) { + this._markersByResource.forEach(resource => { + if (resource.filteredMarkersCount > 0) { + callback(resource); + } + }); } public hasFilteredResources(): boolean { - return this.filteredResources.length > 0; + let res = false; + this._markersByResource.forEach(resource => { + res = res || resource.filteredMarkersCount > 0; + }); + return res; } public hasResources(): boolean { - return this.markersByResource.size > 0; + return this._markersByResource.size > 0; } public hasResource(resource: URI): boolean { - return this.markersByResource.has(resource.toString()); + return this._markersByResource.has(resource.toString()); } - public total(): number { + public stats(): { total: number, filtered: number } { let total = 0; - this.markersByResource.forEach(markers => total = total + markers.length); - return total; + let filtered = 0; + this._markersByResource.forEach(resource => { + total += resource.markers.length; + filtered += resource.filteredMarkersCount; + }); + return { total, filtered }; + } - public count(): number { - let count = 0; - this.filteredResources.forEach(resource => count = count + resource.markers.length); - return count; - } - - public getBulkUpdater(): BulkUpdater { - return { - add: (resourceUri: URI, markers: IMarker[]) => { - this.updateResource(resourceUri, markers); - }, - done: () => { - this.refresh(); - } - }; - } - - public update(filterOptions: FilterOptions): void; - public update(resourceUri: URI, markers: IMarker[]): void; - public update(markers: IMarker[]): void; - public update(arg1?: FilterOptions | URI | IMarker[], arg2?: IMarker[]) { - if (arg1 instanceof FilterOptions) { - this._filterOptions = arg1; - } - if (arg1 instanceof URI) { - this.updateResource(arg1, arg2); - } - if (types.isArray(arg1)) { - this.updateMarkers(arg1); - } - this.refresh(); - } - - private refresh(): void { - this.refreshResources(); - } - - private refreshResources(): void { - this._nonFilteredResources = []; - this._filteredResources = []; - this.markersByResource.forEach((values, uri) => { - const filteredResource = this.toFilteredResource(URI.parse(uri), values); - if (filteredResource.markers.length) { - this._filteredResources.push(filteredResource); + public updateMarkers(callback: (updater: (resource: URI, markers: IMarker[]) => any) => void): void { + callback((resource, markers) => { + if (isFalsyOrEmpty(markers)) { + this._markersByResource.delete(resource.toString()); } else { - this._nonFilteredResources.push(filteredResource); + this._markersByResource.set(resource.toString(), this.createResource(resource, markers)); } }); } - private updateResource(resourceUri: URI, markers: IMarker[]) { - if (this.markersByResource.has(resourceUri.toString())) { - this.markersByResource.delete(resourceUri.toString()); - } - if (markers.length > 0) { - this.markersByResource.set(resourceUri.toString(), markers); + public updateFilterOptions(filterOptions: FilterOptions): void { + this._filterOptions = filterOptions; + if (!this._filterOptions.hasFilters()) { + // reset all filters/matches + this._markersByResource.forEach(resource => { + resource.filteredMarkersCount = resource.markers.length; + resource.uriMatches = []; + + for (const marker of resource.markers) { + marker.isSelected = true; + marker.messageMatches = []; + marker.sourceMatches = []; + } + }); + } else { + // update properly + this._markersByResource.forEach(resource => { + + resource.uriMatches = this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, paths.basename(resource.uri.fsPath)) : []; + resource.filteredMarkersCount = 0; + + for (const marker of resource.markers) { + marker.messageMatches = this._filterOptions.hasFilters() ? FilterOptions._fuzzyFilter(this._filterOptions.filter, marker.raw.message) : []; + marker.sourceMatches = marker.raw.source && this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, marker.raw.source) : []; + marker.isSelected = this.filterMarker(marker.raw); + if (marker.isSelected) { + resource.filteredMarkersCount += 1; + } + } + }); } } - private updateMarkers(markers: IMarker[]) { - markers.forEach((marker: IMarker) => { - let uri: URI = marker.resource; - let markers: IMarker[] = this.markersByResource.get(uri.toString()); - if (!markers) { - markers = []; - this.markersByResource.set(uri.toString(), markers); - } + private createResource(uri: URI, rawMarkers: IMarker[]): Resource { + + const markers: Marker[] = []; + const resource = new Resource(uri, markers); + + resource.filteredMarkersCount = 0; + resource.uriMatches = this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, paths.basename(uri.fsPath)) : []; + + for (let i = 0; i < rawMarkers.length; i++) { + let marker = this.createMarker(rawMarkers[i], i, uri.toString()); markers.push(marker); - }); - } - - private toFilteredResource(uri: URI, values: IMarker[]) { - let markers: Marker[] = []; - for (let i = 0; i < values.length; i++) { - const m = values[i]; - if (uri.scheme !== Schemas.walkThrough && uri.scheme !== Schemas.walkThroughSnippet && (!this._filterOptions.hasFilters() || this.filterMarker(m))) { - markers.push(this.toMarker(m, i, uri.toString())); + if (marker.isSelected) { + resource.filteredMarkersCount += 1; } } - const matches = this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, paths.basename(uri.fsPath)) : []; - return new Resource(uri, matches || [], markers); + return resource; } - private toMarker(marker: IMarker, index: number, uri: string): Marker { - const labelMatches = this._filterOptions.hasFilters() ? FilterOptions._fuzzyFilter(this._filterOptions.filter, marker.message) : []; - const sourceMatches = marker.source && this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, marker.source) : []; - return new Marker(uri + index, marker, labelMatches || [], sourceMatches || []); + private createMarker(marker: IMarker, index: number, uri: string): Marker { + const res = new Marker(uri + index, marker); + res.messageMatches = this._filterOptions.hasFilters() ? FilterOptions._fuzzyFilter(this._filterOptions.filter, marker.message) : []; + res.sourceMatches = marker.source && this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, marker.source) : []; + res.isSelected = this.filterMarker(marker); + return res; } private filterMarker(marker: IMarker): boolean { + if (!this._filterOptions.hasFilters()) { + return true; + } + if (marker.resource.scheme === Schemas.walkThrough || marker.resource.scheme === Schemas.walkThroughSnippet) { + return false; + } if (this._filterOptions.filterErrors && Severity.Error === marker.severity) { return true; } @@ -301,9 +291,7 @@ export class MarkersModel { } public dispose(): void { - this.markersByResource.clear(); - this._filteredResources = []; - this._nonFilteredResources = []; + this._markersByResource.clear(); } public getMessage(): string { diff --git a/src/vs/workbench/parts/markers/electron-browser/markersElectronContributions.ts b/src/vs/workbench/parts/markers/electron-browser/markersElectronContributions.ts index 1c2bb459302..fd27e672ab8 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersElectronContributions.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersElectronContributions.ts @@ -64,7 +64,7 @@ function copyMessage(panelService: IPanelService) { if (activePanel instanceof MarkersPanel) { const element = (activePanel).getFocusElement(); if (element instanceof Marker) { - clipboard.writeText(element.marker.message); + clipboard.writeText(element.raw.message); } } } @@ -125,4 +125,4 @@ function registerAction(desc: IActionDescriptor) { win: keys.win }); } -} \ No newline at end of file +} diff --git a/src/vs/workbench/parts/markers/test/common/markersModel.test.ts b/src/vs/workbench/parts/markers/test/common/markersModel.test.ts index eacdf1fcc13..005aa4146b8 100644 --- a/src/vs/workbench/parts/markers/test/common/markersModel.test.ts +++ b/src/vs/workbench/parts/markers/test/common/markersModel.test.ts @@ -11,6 +11,15 @@ import Severity from 'vs/base/common/severity'; import { IMarker } from 'vs/platform/markers/common/markers'; import { MarkersModel, Marker, Resource } from 'vs/workbench/parts/markers/common/markersModel'; +class TestMarkersModel extends MarkersModel { + + get filteredResources(): Resource[] { + let res: Resource[] = []; + this.forEachFilteredResource(resource => res.push(resource)); + return res; + } +} + suite('MarkersModel Test', () => { test('getFilteredResource return markers grouped by resource', function () { @@ -20,7 +29,7 @@ suite('MarkersModel Test', () => { let marker4 = aMarker('res3'); let marker5 = aMarker('res4'); let marker6 = aMarker('res2'); - let testObject = new MarkersModel([marker1, marker2, marker3, marker4, marker5, marker6]); + let testObject = new TestMarkersModel([marker1, marker2, marker3, marker4, marker5, marker6]); let actuals = testObject.filteredResources; @@ -52,7 +61,7 @@ suite('MarkersModel Test', () => { let marker4 = aMarker('b/res3'); let marker5 = aMarker('res4'); let marker6 = aMarker('c/res2', Severity.Info); - let testObject = new MarkersModel([marker1, marker2, marker3, marker4, marker5, marker6]); + let testObject = new TestMarkersModel([marker1, marker2, marker3, marker4, marker5, marker6]); let actuals = testObject.filteredResources.sort(MarkersModel.compare); @@ -71,7 +80,7 @@ suite('MarkersModel Test', () => { let marker4 = aMarker('b/res3'); let marker5 = aMarker('res4'); let marker6 = aMarker('c/res2'); - let testObject = new MarkersModel([marker1, marker2, marker3, marker4, marker5, marker6]); + let testObject = new TestMarkersModel([marker1, marker2, marker3, marker4, marker5, marker6]); let actuals = testObject.filteredResources.sort(MarkersModel.compare); @@ -99,25 +108,25 @@ suite('MarkersModel Test', () => { let marker13 = aWarningWithRange(5); let marker14 = anErrorWithRange(4); let marker15 = anErrorWithRange(8, 2, 8, 4); - let testObject = new MarkersModel([marker1, marker2, marker3, marker4, marker5, marker6, marker7, marker8, marker9, marker10, marker11, marker12, marker13, marker14, marker15]); + let testObject = new TestMarkersModel([marker1, marker2, marker3, marker4, marker5, marker6, marker7, marker8, marker9, marker10, marker11, marker12, marker13, marker14, marker15]); let actuals = testObject.filteredResources[0].markers.sort(MarkersModel.compare); - assert.equal(actuals[0].marker, marker6); - assert.equal(actuals[1].marker, marker14); - assert.equal(actuals[2].marker, marker7); - assert.equal(actuals[3].marker, marker9); - assert.equal(actuals[4].marker, marker11); - assert.equal(actuals[5].marker, marker3); - assert.equal(actuals[6].marker, marker15); - assert.equal(actuals[7].marker, marker10); - assert.equal(actuals[8].marker, marker2); - assert.equal(actuals[9].marker, marker13); - assert.equal(actuals[10].marker, marker1); - assert.equal(actuals[11].marker, marker8); - assert.equal(actuals[12].marker, marker5); - assert.equal(actuals[13].marker, marker12); - assert.equal(actuals[14].marker, marker4); + assert.equal(actuals[0].raw, marker6); + assert.equal(actuals[1].raw, marker14); + assert.equal(actuals[2].raw, marker7); + assert.equal(actuals[3].raw, marker9); + assert.equal(actuals[4].raw, marker11); + assert.equal(actuals[5].raw, marker3); + assert.equal(actuals[6].raw, marker15); + assert.equal(actuals[7].raw, marker10); + assert.equal(actuals[8].raw, marker2); + assert.equal(actuals[9].raw, marker13); + assert.equal(actuals[10].raw, marker1); + assert.equal(actuals[11].raw, marker8); + assert.equal(actuals[12].raw, marker5); + assert.equal(actuals[13].raw, marker12); + assert.equal(actuals[14].raw, marker4); }); test('toString()', function () { @@ -131,7 +140,7 @@ suite('MarkersModel Test', () => { function hasMarker(markers: Marker[], marker: IMarker): boolean { return markers.filter((m): boolean => { - return m.marker === marker; + return m.raw === marker; }).length === 1; } @@ -196,4 +205,4 @@ suite('MarkersModel Test', () => { source }; } -}); \ No newline at end of file +}); From a255de35b10afba3639191ba2250e7dc4637aa99 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 10:48:57 +0100 Subject: [PATCH 098/658] dispose dirty diff controller disposables related to #45112 --- .../workbench/parts/scm/electron-browser/dirtydiffDecorator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts b/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts index 75995fbf60d..4af98f67c59 100644 --- a/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts +++ b/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts @@ -764,7 +764,7 @@ export class DirtyDiffController implements IEditorContribution { } dispose(): void { - return; + this.disposables = dispose(this.disposables); } } From ddee16981805f5acb83e3ba4c0dcd5cf7962d99d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 11:22:43 +0100 Subject: [PATCH 099/658] fix memory leak in dirty diff decorator fixes #45112 --- .../parts/scm/electron-browser/dirtydiffDecorator.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts b/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts index 4af98f67c59..9ae81fd1191 100644 --- a/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts +++ b/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts @@ -952,7 +952,7 @@ export class DirtyDiffModel { onDidChange(this.triggerDiff, this, disposables); const onDidRemoveThis = filterEvent(this.scmService.onDidRemoveRepository, r => r === repository); - onDidRemoveThis(() => dispose(disposables)); + onDidRemoveThis(() => dispose(disposables), null, disposables); this.triggerDiff(); } @@ -1005,6 +1005,10 @@ export class DirtyDiffModel { this._originalURIPromise = this.getOriginalResource() .then(originalUri => { + if (!this._editorModel) { // disposed + return null; + } + if (!originalUri) { this._originalModel = null; return null; @@ -1012,6 +1016,10 @@ export class DirtyDiffModel { return this.textModelResolverService.createModelReference(originalUri) .then(ref => { + if (!this._editorModel) { // disposed + return null; + } + this._originalModel = ref.object.textEditorModel; this.disposables.push(ref); From bde23fb906c97cec1949ca705b299a47a73b6f11 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 6 Mar 2018 11:33:20 +0100 Subject: [PATCH 100/658] [HTML] server contains invalid implementation of applyEdit. Fixes #45014 --- extensions/html/server/src/test/utils.test.ts | 37 ++++++++++++++++ extensions/html/server/src/utils/arrays.ts | 44 ++++++++++++++++++- extensions/html/server/src/utils/edits.ts | 34 +++++++------- 3 files changed, 97 insertions(+), 18 deletions(-) create mode 100644 extensions/html/server/src/test/utils.test.ts diff --git a/extensions/html/server/src/test/utils.test.ts b/extensions/html/server/src/test/utils.test.ts new file mode 100644 index 00000000000..ac14e03ea45 --- /dev/null +++ b/extensions/html/server/src/test/utils.test.ts @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; + +import * as assert from 'assert'; +import { applyEdits } from '../utils/edits'; +import { TextDocument, TextEdit, Position, Range } from 'vscode-languageserver-types'; + +suite('Edits', () => { + + test('inserts', function (): any { + let input = TextDocument.create('foo://bar/f', 'html', 0, '012345678901234567890123456789'); + assert.equal(applyEdits(input, [TextEdit.insert(Position.create(0, 0), 'Hello')]), 'Hello012345678901234567890123456789'); + assert.equal(applyEdits(input, [TextEdit.insert(Position.create(0, 1), 'Hello')]), '0Hello12345678901234567890123456789'); + assert.equal(applyEdits(input, [TextEdit.insert(Position.create(0, 1), 'Hello'), TextEdit.insert(Position.create(0, 1), 'World')]), '0HelloWorld12345678901234567890123456789'); + assert.equal(applyEdits(input, [TextEdit.insert(Position.create(0, 2), 'One'), TextEdit.insert(Position.create(0, 1), 'Hello'), TextEdit.insert(Position.create(0, 1), 'World'), TextEdit.insert(Position.create(0, 2), 'Two'), TextEdit.insert(Position.create(0, 2), 'Three')]), '0HelloWorld1OneTwoThree2345678901234567890123456789'); + }); + + test('replace', function (): any { + let input = TextDocument.create('foo://bar/f', 'html', 0, '012345678901234567890123456789'); + assert.equal(applyEdits(input, [TextEdit.replace(Range.create(Position.create(0, 3), Position.create(0, 6)), 'Hello')]), '012Hello678901234567890123456789'); + assert.equal(applyEdits(input, [TextEdit.replace(Range.create(Position.create(0, 3), Position.create(0, 6)), 'Hello'), TextEdit.replace(Range.create(Position.create(0, 6), Position.create(0, 9)), 'World')]), '012HelloWorld901234567890123456789'); + assert.equal(applyEdits(input, [TextEdit.replace(Range.create(Position.create(0, 3), Position.create(0, 6)), 'Hello'), TextEdit.insert(Position.create(0, 6), 'World')]), '012HelloWorld678901234567890123456789'); + assert.equal(applyEdits(input, [TextEdit.insert(Position.create(0, 6), 'World'), TextEdit.replace(Range.create(Position.create(0, 3), Position.create(0, 6)), 'Hello')]), '012HelloWorld678901234567890123456789'); + assert.equal(applyEdits(input, [TextEdit.insert(Position.create(0, 3), 'World'), TextEdit.replace(Range.create(Position.create(0, 3), Position.create(0, 6)), 'Hello')]), '012WorldHello678901234567890123456789'); + + }); + + test('overlap', function (): any { + let input = TextDocument.create('foo://bar/f', 'html', 0, '012345678901234567890123456789'); + assert.throws(_ => applyEdits(input, [TextEdit.replace(Range.create(Position.create(0, 3), Position.create(0, 6)), 'Hello'), TextEdit.insert(Position.create(0, 3), 'World')])); + assert.throws(_ => applyEdits(input, [TextEdit.replace(Range.create(Position.create(0, 3), Position.create(0, 6)), 'Hello'), TextEdit.insert(Position.create(0, 4), 'World')])); + }); + +}); \ No newline at end of file diff --git a/extensions/html/server/src/utils/arrays.ts b/extensions/html/server/src/utils/arrays.ts index 50c33e519c7..a33ef18597c 100644 --- a/extensions/html/server/src/utils/arrays.ts +++ b/extensions/html/server/src/utils/arrays.ts @@ -14,4 +14,46 @@ export function pushAll(to: T[], from: T[]) { export function contains(arr: T[], val: T) { return arr.indexOf(val) !== -1; -} \ No newline at end of file +} + +/** + * Like `Array#sort` but always stable. Usually runs a little slower `than Array#sort` + * so only use this when actually needing stable sort. + */ +export function mergeSort(data: T[], compare: (a: T, b: T) => number): T[] { + _divideAndMerge(data, compare); + return data; +} + +function _divideAndMerge(data: T[], compare: (a: T, b: T) => number): void { + if (data.length <= 1) { + // sorted + return; + } + const p = (data.length / 2) | 0; + const left = data.slice(0, p); + const right = data.slice(p); + + _divideAndMerge(left, compare); + _divideAndMerge(right, compare); + + let leftIdx = 0; + let rightIdx = 0; + let i = 0; + while (leftIdx < left.length && rightIdx < right.length) { + let ret = compare(left[leftIdx], right[rightIdx]); + if (ret <= 0) { + // smaller_equal -> take left to preserve order + data[i++] = left[leftIdx++]; + } else { + // greater -> take right + data[i++] = right[rightIdx++]; + } + } + while (leftIdx < left.length) { + data[i++] = left[leftIdx++]; + } + while (rightIdx < right.length) { + data[i++] = right[rightIdx++]; + } +} diff --git a/extensions/html/server/src/utils/edits.ts b/extensions/html/server/src/utils/edits.ts index 1b7b0185fe5..66c74be030f 100644 --- a/extensions/html/server/src/utils/edits.ts +++ b/extensions/html/server/src/utils/edits.ts @@ -4,29 +4,29 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import { TextDocument, TextEdit, Position } from 'vscode-languageserver-types'; +import { TextDocument, TextEdit } from 'vscode-languageserver-types'; +import { mergeSort } from './arrays'; export function applyEdits(document: TextDocument, edits: TextEdit[]): string { let text = document.getText(); - let sortedEdits = edits.sort((a, b) => { - let startDiff = comparePositions(a.range.start, b.range.start); - if (startDiff === 0) { - return comparePositions(a.range.end, b.range.end); + let sortedEdits = mergeSort(edits, (a, b) => { + let diff = a.range.start.line - b.range.start.line; + if (diff === 0) { + return a.range.start.character - b.range.start.character; } - return startDiff; + return 0; }); - sortedEdits.forEach(e => { + let lastModifiedOffset = text.length; + for (let i = sortedEdits.length - 1; i >= 0; i--) { + let e = sortedEdits[i]; let startOffset = document.offsetAt(e.range.start); let endOffset = document.offsetAt(e.range.end); - text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length); - }); - return text; -} - -function comparePositions(p1: Position, p2: Position) { - let diff = p2.line - p1.line; - if (diff === 0) { - return p2.character - p1.character; + if (endOffset <= lastModifiedOffset) { + text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length); + } else { + throw new Error('Ovelapping edit'); + } + lastModifiedOffset = startOffset; } - return diff; + return text; } \ No newline at end of file From 18b94d09a627615c1e9eb3ffb3088a7a5d59597e Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 6 Mar 2018 11:39:16 +0100 Subject: [PATCH 101/658] fix #45124 --- .../workbench/api/node/extHostApiCommands.ts | 3 ++ .../api/extHostApiCommands.test.ts | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/vs/workbench/api/node/extHostApiCommands.ts b/src/vs/workbench/api/node/extHostApiCommands.ts index 010286e9672..2b00ff6d9f6 100644 --- a/src/vs/workbench/api/node/extHostApiCommands.ts +++ b/src/vs/workbench/api/node/extHostApiCommands.ts @@ -418,6 +418,9 @@ export class ExtHostApiCommands { if (codeAction.edit) { ret.edit = typeConverters.WorkspaceEdit.to(codeAction.edit); } + if (codeAction.command) { + ret.command = this._commands.converter.fromInternal(codeAction.command); + } return ret; } }); diff --git a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts index b11c79a035a..90ac6be2310 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts @@ -400,6 +400,35 @@ suite('ExtHostLanguageFeatureCommands', function () { }); }); + test('vscode.executeCodeActionProvider results seem to be missing their `command` property #45124', function () { + disposables.push(extHost.registerCodeActionProvider(defaultSelector, { + provideCodeActions(document, range): vscode.CodeAction[] { + return [{ + command: { + arguments: [document, range], + command: 'command', + title: 'command_title', + }, + kind: types.CodeActionKind.Empty.append('foo'), + title: 'title', + }]; + } + })); + + return rpcProtocol.sync().then(() => { + return commands.executeCommand('vscode.executeCodeActionProvider', model.uri, new types.Range(0, 0, 1, 1)).then(value => { + assert.equal(value.length, 1); + let [first] = value; + assert.ok(first.command); + assert.equal(first.command.command, 'command'); + assert.equal(first.command.title, 'command_title'); + assert.equal(first.kind.value, 'foo'); + assert.equal(first.title, 'title'); + + }); + }); + }); + // --- code lens test('CodeLens, back and forth', function () { From 5fb74d7f6368940b8bd41a26a26f81c943aa3d50 Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Tue, 6 Mar 2018 11:58:24 +0100 Subject: [PATCH 102/658] Fix side-effect of fixing #45121 --- scripts/test-integration.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/test-integration.sh b/scripts/test-integration.sh index 025ddf16e54..d190d211bc1 100755 --- a/scripts/test-integration.sh +++ b/scripts/test-integration.sh @@ -16,7 +16,9 @@ cd $ROOT ./scripts/code.sh $ROOT/extensions/vscode-api-tests/testWorkspace --extensionDevelopmentPath=$ROOT/extensions/vscode-api-tests --extensionTestsPath=$ROOT/extensions/vscode-api-tests/out/singlefolder-tests --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started ./scripts/code.sh $ROOT/extensions/vscode-api-tests/testworkspace.code-workspace --extensionDevelopmentPath=$ROOT/extensions/vscode-api-tests --extensionTestsPath=$ROOT/extensions/vscode-api-tests/out/workspace-tests --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started ./scripts/code.sh $ROOT/extensions/vscode-colorize-tests/test --extensionDevelopmentPath=$ROOT/extensions/vscode-colorize-tests --extensionTestsPath=$ROOT/extensions/vscode-colorize-tests/out --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started +mkdir $ROOT/extensions/emmet/test-fixtures ./scripts/code.sh $ROOT/extensions/emmet/test-fixtures --extensionDevelopmentPath=$ROOT/extensions/emmet --extensionTestsPath=$ROOT/extensions/emmet/out/test --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started +rm -r $ROOT/extensions/emmet/test-fixtures # Integration tests in AMD ./scripts/test.sh --runGlob **/*.integrationTest.js "$@" From d7bd90445a26dacc2d73b2a81393cf5559271594 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 6 Mar 2018 12:18:05 +0100 Subject: [PATCH 103/658] css debt - remove more expensive rules or make them conditional --- .../contrib/colorPicker/colorPicker.css | 2 +- .../parts/titlebar/media/titlebarpart.css | 2 +- .../electron-browser/media/shell.css | 63 ++++--------------- src/vs/workbench/electron-browser/shell.ts | 27 +++++++- .../textMate/inspectTMScopes.css | 5 -- .../parts/debug/browser/media/debugHover.css | 4 +- .../debug/browser/media/exceptionWidget.css | 5 -- .../parts/debug/browser/media/repl.css | 2 +- .../browser/media/extensionEditor.css | 1 - .../media/runtimeExtensionsEditor.css | 8 --- .../feedback/electron-browser/feedback.ts | 2 +- .../preferences/browser/media/preferences.css | 7 ++- .../preferences/browser/preferencesWidgets.ts | 2 +- .../parts/search/browser/media/searchview.css | 7 --- .../terminal/electron-browser/media/xterm.css | 2 - .../electron-browser/walkThroughPart.css | 1 - 16 files changed, 50 insertions(+), 90 deletions(-) diff --git a/src/vs/editor/contrib/colorPicker/colorPicker.css b/src/vs/editor/contrib/colorPicker/colorPicker.css index 68fff1fc3da..b1978528c95 100644 --- a/src/vs/editor/contrib/colorPicker/colorPicker.css +++ b/src/vs/editor/contrib/colorPicker/colorPicker.css @@ -8,7 +8,7 @@ user-select: none; } -.monaco-editor .colorpicker-hover[tabindex="0"]:focus { +.monaco-editor .colorpicker-hover:focus { outline: none; } diff --git a/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css b/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css index 027377febc6..12c110e78fe 100644 --- a/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css +++ b/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css @@ -12,7 +12,7 @@ flex-shrink: 0; align-items: center; justify-content: center; - -webkit-user-select: none; + user-select: none; -webkit-app-region: drag; zoom: 1; /* prevent zooming */ line-height: 22px; diff --git a/src/vs/workbench/electron-browser/media/shell.css b/src/vs/workbench/electron-browser/media/shell.css index 4da763a8f93..2d3ce109261 100644 --- a/src/vs/workbench/electron-browser/media/shell.css +++ b/src/vs/workbench/electron-browser/media/shell.css @@ -10,7 +10,7 @@ padding: 0; overflow: hidden; font-size: 11px; - -webkit-user-select: none; + user-select: none; } /* Font Families (with CJK support) */ @@ -21,7 +21,6 @@ .monaco-shell:lang(ja) { font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", "Noto Sans", "Meiryo", "Hiragino Kaku Gothic Pro", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", "Sazanami Gothic", "IPA Gothic", sans-serif; } .monaco-shell:lang(ko) { font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", "Noto Sans", "Malgun Gothic", "Nanum Gothic", "Dotom", "Apple SD Gothic Neo", "AppleGothic", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; } -@-webkit-keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .monaco-shell img { @@ -66,29 +65,12 @@ cursor: pointer; } -.monaco-shell input[type="search"]::-webkit-search-decoration, -.monaco-shell input[type="search"]::-webkit-search-results-button, -.monaco-shell input[type="search"]::-webkit-search-results-decoration { - display: none; -} - -.monaco-shell input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; - height: 18px; - width: 18px; - background-image: url('clear.svg'); - background-repeat: no-repeat; - background-position: center center; -} - /* START Keyboard Focus Indication Styles */ .monaco-shell [tabindex="0"]:focus, .monaco-shell .synthetic-focus, .monaco-shell select:focus, .monaco-shell input[type="button"]:focus, -.monaco-shell input[type="submit"]:focus, -.monaco-shell input[type="search"]:focus, .monaco-shell input[type="text"]:focus, .monaco-shell textarea:focus, .monaco-shell input[type="checkbox"]:focus { @@ -98,28 +80,23 @@ opacity: 1 !important; } +.monaco-shell [tabindex="0"]:active, +.monaco-shell select:active, +.monaco-shell input[type="button"]:active, +.monaco-shell input[type="checkbox"]:active, +.monaco-shell .monaco-tree .monaco-tree-row +.monaco-action-bar .action-item [tabindex="0"]:hover, +.monaco-shell .monaco-tree.focused.no-focused-item:active:before { + outline: 0 !important; /* fixes some flashing outlines from showing up when clicking */ +} + .monaco-shell .mac select:focus { border: none; /* outline is a square, but border has a radius, so we avoid this glitch when focused (https://github.com/Microsoft/vscode/issues/26045) */ } -.monaco-shell.hc-black [tabindex="0"]:focus, -.monaco-shell.hc-black .synthetic-focus, -.monaco-shell.hc-black select:focus, -.monaco-shell.hc-black input[type="button"]:focus, -.monaco-shell.hc-black input[type="text"]:focus, -.monaco-shell.hc-black textarea:focus, -.monaco-shell.hc-black input[type="search"]:focus, -.monaco-shell.hc-black input[type="checkbox"]:focus { - outline-style: solid; - outline-width: 1px; -} -.monaco-shell.hc-black .synthetic-focus input { - background: transparent; /* Search input focus fix when in high contrast */ -} -.monaco-shell.vs .monaco-tree.focused .monaco-tree-row.focused [tabindex="0"]:focus, -.monaco-shell.vs-dark .monaco-tree.focused .monaco-tree-row.focused [tabindex="0"]:focus { +.monaco-shell .monaco-tree.focused .monaco-tree-row.focused [tabindex="0"]:focus { outline-width: 1px; /* higher contrast color for focusable elements in a row that shows focus feedback */ outline-style: solid; } @@ -140,11 +117,6 @@ outline-offset: -1px; } -.monaco-shell.hc-black .monaco-tree.focused.no-focused-item:focus:before { - outline-width: 1px; - outline-offset: -2px; -} - .monaco-shell .synthetic-focus :focus { outline: 0 !important; /* elements within widgets that draw synthetic-focus should never show focus */ } @@ -161,15 +133,4 @@ .monaco-shell .monaco-tree.focused:focus, .monaco-shell .monaco-list:focus { outline: 0 !important; /* tree indicates focus not via outline but through the focused item */ -} - -.monaco-shell [tabindex="0"]:active, -.monaco-shell select:active, -.monaco-shell input[type="button"]:active, -.monaco-shell input[type="submit"]:active, -.monaco-shell input[type="checkbox"]:active, -.monaco-shell .monaco-tree .monaco-tree-row -.monaco-action-bar .action-item [tabindex="0"]:hover, -.monaco-shell .monaco-tree.focused.no-focused-item:active:before { - outline: 0 !important; /* fixes some flashing outlines from showing up when clicking */ } \ No newline at end of file diff --git a/src/vs/workbench/electron-browser/shell.ts b/src/vs/workbench/electron-browser/shell.ts index 9080ad4b3ba..d6a534a8a1c 100644 --- a/src/vs/workbench/electron-browser/shell.ts +++ b/src/vs/workbench/electron-browser/shell.ts @@ -76,7 +76,7 @@ import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/work import { WorkbenchThemeService } from 'vs/workbench/services/themes/electron-browser/workbenchThemeService'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration'; import { TextResourceConfigurationService } from 'vs/editor/common/services/resourceConfigurationImpl'; -import { registerThemingParticipant, ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService'; +import { registerThemingParticipant, ITheme, ICssStyleCollector, HIGH_CONTRAST } from 'vs/platform/theme/common/themeService'; import { foreground, selectionBackground, focusBorder, scrollbarShadow, scrollbarSliderActiveBackground, scrollbarSliderBackground, scrollbarSliderHoverBackground, listHighlightForeground, inputPlaceholderForeground } from 'vs/platform/theme/common/colorRegistry'; import { TextMateService } from 'vs/workbench/services/textMate/electron-browser/TMSyntax'; import { ITextMateService } from 'vs/workbench/services/textMate/electron-browser/textMateService'; @@ -646,4 +646,29 @@ registerThemingParticipant((theme: ITheme, collector: ICssStyleCollector) => { } `); } + + // High Contrast theme overwrites for outline + if (theme.type === HIGH_CONTRAST) { + collector.addRule(` + .monaco-shell.hc-black [tabindex="0"]:focus, + .monaco-shell.hc-black .synthetic-focus, + .monaco-shell.hc-black select:focus, + .monaco-shell.hc-black input[type="button"]:focus, + .monaco-shell.hc-black input[type="text"]:focus, + .monaco-shell.hc-black textarea:focus, + .monaco-shell.hc-black input[type="checkbox"]:focus { + outline-style: solid; + outline-width: 1px; + } + + .monaco-shell.hc-black .monaco-tree.focused.no-focused-item:focus:before { + outline-width: 1px; + outline-offset: -2px; + } + + .monaco-shell.hc-black .synthetic-focus input { + background: transparent; /* Search input focus fix when in high contrast */ + } + `); + } }); diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/textMate/inspectTMScopes.css b/src/vs/workbench/parts/codeEditor/electron-browser/textMate/inspectTMScopes.css index 0c4905290d2..40993ec8ac2 100644 --- a/src/vs/workbench/parts/codeEditor/electron-browser/textMate/inspectTMScopes.css +++ b/src/vs/workbench/parts/codeEditor/electron-browser/textMate/inspectTMScopes.css @@ -5,11 +5,6 @@ .tm-inspect-widget { z-index: 50; - -webkit-user-select: text; - -ms-user-select: text; - -khtml-user-select: text; - -moz-user-select: text; - -o-user-select: text; user-select: text; padding: 10px; } diff --git a/src/vs/workbench/parts/debug/browser/media/debugHover.css b/src/vs/workbench/parts/debug/browser/media/debugHover.css index 788f024c39f..d5b2ae15b0e 100644 --- a/src/vs/workbench/parts/debug/browser/media/debugHover.css +++ b/src/vs/workbench/parts/debug/browser/media/debugHover.css @@ -10,7 +10,7 @@ z-index: 50; animation-duration: 0.15s; animation-name: fadeIn; - -webkit-user-select: text; + user-select: text; word-break: break-all; padding: 4px 5px; } @@ -35,7 +35,7 @@ } .monaco-editor .debug-hover-widget .debug-hover-tree .monaco-tree .monaco-tree-row > .content { - -webkit-user-select: text; + user-select: text; white-space: pre; } diff --git a/src/vs/workbench/parts/debug/browser/media/exceptionWidget.css b/src/vs/workbench/parts/debug/browser/media/exceptionWidget.css index ba5443e0a2c..420b53219ad 100644 --- a/src/vs/workbench/parts/debug/browser/media/exceptionWidget.css +++ b/src/vs/workbench/parts/debug/browser/media/exceptionWidget.css @@ -10,11 +10,6 @@ .monaco-editor .zone-widget .zone-widget-container.exception-widget { padding: 6px 10px; white-space: pre-wrap; - -webkit-user-select: text; - -ms-user-select: text; - -khtml-user-select: text; - -moz-user-select: text; - -o-user-select: text; user-select: text; } diff --git a/src/vs/workbench/parts/debug/browser/media/repl.css b/src/vs/workbench/parts/debug/browser/media/repl.css index 045daba87c5..c2cdf3304fd 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl.css +++ b/src/vs/workbench/parts/debug/browser/media/repl.css @@ -23,7 +23,7 @@ .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content { line-height: 18px; - -webkit-user-select: text; + user-select: text; /* Wrap words but also do not trim whitespace #6275 */ word-wrap: break-word; white-space: pre-wrap; diff --git a/src/vs/workbench/parts/extensions/browser/media/extensionEditor.css b/src/vs/workbench/parts/extensions/browser/media/extensionEditor.css index 1addf69c029..b0a1a2e64fa 100644 --- a/src/vs/workbench/parts/extensions/browser/media/extensionEditor.css +++ b/src/vs/workbench/parts/extensions/browser/media/extensionEditor.css @@ -57,7 +57,6 @@ padding: 0px 4px; border-radius: 4px; user-select: text; - -webkit-user-select: text; white-space: nowrap; } diff --git a/src/vs/workbench/parts/extensions/electron-browser/media/runtimeExtensionsEditor.css b/src/vs/workbench/parts/extensions/electron-browser/media/runtimeExtensionsEditor.css index 8a9a44e97df..df5e3147dac 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/media/runtimeExtensionsEditor.css +++ b/src/vs/workbench/parts/extensions/electron-browser/media/runtimeExtensionsEditor.css @@ -70,7 +70,6 @@ .hc-black .monaco-action-bar .extension-host-profile-stop { background: url('profile-stop-inverse.svg') center center no-repeat; animation:fade 1000ms infinite; - -webkit-animation:fade 1000ms infinite; } .monaco-action-bar .save-extension-host-profile { @@ -101,17 +100,10 @@ height: 16px; vertical-align: middle; animation:fade 1000ms infinite; - -webkit-animation:fade 1000ms infinite; } @keyframes fade { from { opacity: 1.0; } 50% { opacity: 0.5; } to { opacity: 1.0; } -} - -@-webkit-keyframes fade { - from { opacity: 1.0; } - 50% { opacity: 0.5; } - to { opacity: 1.0; } } \ No newline at end of file diff --git a/src/vs/workbench/parts/feedback/electron-browser/feedback.ts b/src/vs/workbench/parts/feedback/electron-browser/feedback.ts index 24058be50f5..a9e11c1c45d 100644 --- a/src/vs/workbench/parts/feedback/electron-browser/feedback.ts +++ b/src/vs/workbench/parts/feedback/electron-browser/feedback.ts @@ -246,7 +246,7 @@ export class FeedbackDropdown extends Dropdown { $('label').attr('for', 'hide-button').text(nls.localize('showFeedback', "Show Feedback Smiley in Status Bar")).appendTo($hideButtonContainer); - this.sendButton = this.invoke($('input.send').type('submit').attr('disabled', '').value(nls.localize('tweet', "Tweet")).appendTo($buttons), () => { + this.sendButton = this.invoke($('input.send').type('button').attr('disabled', '').value(nls.localize('tweet', "Tweet")).appendTo($buttons), () => { if (this.isSendingFeedback) { return; } diff --git a/src/vs/workbench/parts/preferences/browser/media/preferences.css b/src/vs/workbench/parts/preferences/browser/media/preferences.css index 04251e95105..b16eea52446 100644 --- a/src/vs/workbench/parts/preferences/browser/media/preferences.css +++ b/src/vs/workbench/parts/preferences/browser/media/preferences.css @@ -48,10 +48,14 @@ text-overflow: ellipsis; } -.settings-tabs-widget > .monaco-action-bar .action-item .action-label:not([aria-haspopup]) { +.settings-tabs-widget > .monaco-action-bar .action-item .action-label { display: block; } +.settings-tabs-widget > .monaco-action-bar .action-item .action-label.folder-settings { + display: flex; +} + .settings-tabs-widget > .monaco-action-bar .actions-container { justify-content: flex-start; } @@ -213,7 +217,6 @@ width: 100%; cursor: pointer; font-weight: bold; - -webkit-user-select: none; user-select: none; display: flex; } diff --git a/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts b/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts index 16a722da323..4d5a1a1fa1f 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts @@ -324,7 +324,7 @@ export class FolderSettingsActionItem extends BaseActionItem { this.labelElement = DOM.$('.action-title'); this.detailsElement = DOM.$('.action-details'); this.dropDownElement = DOM.$('.dropdown-icon.octicon.octicon-triangle-down.hide'); - this.anchorElement = DOM.$('a.action-label', { + this.anchorElement = DOM.$('a.action-label.folder-settings', { role: 'button', 'aria-haspopup': 'true', 'tabindex': '0' diff --git a/src/vs/workbench/parts/search/browser/media/searchview.css b/src/vs/workbench/parts/search/browser/media/searchview.css index 8eab3906f92..ac7693e0a3f 100644 --- a/src/vs/workbench/parts/search/browser/media/searchview.css +++ b/src/vs/workbench/parts/search/browser/media/searchview.css @@ -18,13 +18,7 @@ left: 0; width: 16px; height: 100%; - - -webkit-box-sizing: border-box; - -o-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; box-sizing: border-box; - background-position: center center; background-repeat: no-repeat; cursor: pointer; @@ -166,7 +160,6 @@ margin-top: 0px; margin-bottom: 0px; padding-bottom: 4px; - -webkit-user-select: text; user-select: text; } diff --git a/src/vs/workbench/parts/terminal/electron-browser/media/xterm.css b/src/vs/workbench/parts/terminal/electron-browser/media/xterm.css index 58a8c3baf24..fe5abda3f75 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/media/xterm.css +++ b/src/vs/workbench/parts/terminal/electron-browser/media/xterm.css @@ -44,8 +44,6 @@ font-feature-settings: "liga" 0; position: relative; user-select: none; - -ms-user-select: none; - -webkit-user-select: none; } .xterm.focus, diff --git a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.css b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.css index 225f1c5415f..64ebb09acd9 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.css +++ b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.css @@ -8,7 +8,6 @@ padding: 10px 20px; line-height: 22px; user-select: initial; - -webkit-user-select: initial; } .monaco-workbench > .part.editor > .content .walkThroughContent img { From 162ad49515d97aadfd625b74cce3a31de7de8aa7 Mon Sep 17 00:00:00 2001 From: Aliaksandr Ushakou Date: Tue, 6 Mar 2018 06:25:22 -0500 Subject: [PATCH 104/658] Top shadow fix The top shadow extends over the scrollbar when minimap is on the left side or when minimap is disabled. --- .../browser/viewParts/scrollDecoration/scrollDecoration.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts b/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts index 63878eda34c..98aa26e1123 100644 --- a/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts +++ b/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.ts @@ -54,7 +54,12 @@ export class ScrollDecorationViewPart extends ViewPart { private _updateWidth(): boolean { const layoutInfo = this._context.configuration.editor.layoutInfo; - let newWidth = layoutInfo.width - layoutInfo.verticalScrollbarWidth; + let newWidth = 0; + if (layoutInfo.renderMinimap === 0 || (layoutInfo.minimapWidth > 0 && layoutInfo.minimapLeft === 0)) { + newWidth = layoutInfo.width; + } else { + newWidth = layoutInfo.width - layoutInfo.minimapWidth - layoutInfo.verticalScrollbarWidth; + } if (this._width !== newWidth) { this._width = newWidth; return true; From bbd507f5ab6d5f93ab54012a082073e2a2bc62ca Mon Sep 17 00:00:00 2001 From: Aliaksandr Ushakou Date: Tue, 6 Mar 2018 06:38:42 -0500 Subject: [PATCH 105/658] The scrollbar transparency fix The scrollbar is transparent when minimap is on the left side. --- .../viewParts/overviewRuler/decorationsOverviewRuler.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts b/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts index 48925ee30aa..49a5c1cf948 100644 --- a/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts +++ b/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.ts @@ -58,8 +58,13 @@ class Settings { this.themeType = theme.type; const minimapEnabled = config.editor.viewInfo.minimap.enabled; + const minimapSide = config.editor.viewInfo.minimap.side; const backgroundColor = (minimapEnabled ? TokenizationRegistry.getDefaultBackground() : null); - this.backgroundColor = (backgroundColor ? Color.Format.CSS.formatHex(backgroundColor) : null); + if (backgroundColor === null || minimapSide === 'left') { + this.backgroundColor = null; + } else { + this.backgroundColor = Color.Format.CSS.formatHex(backgroundColor); + } const position = config.editor.layoutInfo.overviewRuler; this.top = position.top; From 5f07044d21f169074571a174594513330f6dfb9a Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 6 Mar 2018 12:41:28 +0100 Subject: [PATCH 106/658] fix #45132 --- extensions/theme-abyss/themes/abyss-color-theme.json | 4 ---- .../theme-kimbie-dark/themes/kimbie-dark-color-theme.json | 1 - .../themes/dimmed-monokai-color-theme.json | 1 - .../theme-quietlight/themes/quietlight-color-theme.json | 1 - extensions/theme-red/themes/Red-color-theme.json | 1 - .../themes/solarized-dark-color-theme.json | 4 ---- .../themes/solarized-light-color-theme.json | 4 ---- 7 files changed, 16 deletions(-) diff --git a/extensions/theme-abyss/themes/abyss-color-theme.json b/extensions/theme-abyss/themes/abyss-color-theme.json index 3522dabcfb9..25d88261148 100644 --- a/extensions/theme-abyss/themes/abyss-color-theme.json +++ b/extensions/theme-abyss/themes/abyss-color-theme.json @@ -409,10 +409,6 @@ "debugExceptionWidget.background": "#051336", "debugExceptionWidget.border": "#AB395B", - // Workbench: Notifications - "notification.background": "#182543", - // "notification.foreground": "", - // Workbench: Quick Open "pickerGroup.border": "#596F99", "pickerGroup.foreground": "#596F99", diff --git a/extensions/theme-kimbie-dark/themes/kimbie-dark-color-theme.json b/extensions/theme-kimbie-dark/themes/kimbie-dark-color-theme.json index 89cdcb1e539..d9c98d09157 100644 --- a/extensions/theme-kimbie-dark/themes/kimbie-dark-color-theme.json +++ b/extensions/theme-kimbie-dark/themes/kimbie-dark-color-theme.json @@ -37,7 +37,6 @@ "peekViewResult.background": "#362712", "peekViewEditor.background": "#221a14", "peekViewEditor.matchHighlightBackground": "#84613daa", - "notification.background": "#473a29", "button.background": "#6e583b", "inputValidation.infoBorder": "#1b60a5", "inputValidation.infoBackground": "#2b2a42", diff --git a/extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json b/extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json index 12719f10792..1ac4adbc7f4 100644 --- a/extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json +++ b/extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json @@ -35,7 +35,6 @@ "activityBarBadge.background": "#3655b5", "sideBar.background": "#272727", "sideBarSectionHeader.background": "#505050", - "notification.background": "#353535", "pickerGroup.foreground": "#b0b0b0", "terminal.ansiWhite": "#ffffff", "inputOption.activeBorder": "#3655b5", diff --git a/extensions/theme-quietlight/themes/quietlight-color-theme.json b/extensions/theme-quietlight/themes/quietlight-color-theme.json index 3e818bccff8..9a947168714 100644 --- a/extensions/theme-quietlight/themes/quietlight-color-theme.json +++ b/extensions/theme-quietlight/themes/quietlight-color-theme.json @@ -519,7 +519,6 @@ "activityBarBadge.background": "#705697", "titleBar.activeBackground": "#c4b7d7", "button.background": "#705697", - "notification.background": "#442e66", "editorGroup.dropBackground": "#C9D0D988", "inputValidation.infoBorder": "#4ec1e5", "inputValidation.infoBackground": "#f2fcff", diff --git a/extensions/theme-red/themes/Red-color-theme.json b/extensions/theme-red/themes/Red-color-theme.json index 59af89f8ece..43eaa9b6414 100644 --- a/extensions/theme-red/themes/Red-color-theme.json +++ b/extensions/theme-red/themes/Red-color-theme.json @@ -49,7 +49,6 @@ "list.dropBackground": "#662222", "list.focusBackground": "#660000", "list.highlightForeground": "#ff4444", - "notification.background": "#662222", "pickerGroup.foreground": "#cc9999", "pickerGroup.border": "#ff000033", "badge.background": "#cc3333", diff --git a/extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json b/extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json index f0b86123511..e0c5df0f187 100644 --- a/extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json +++ b/extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json @@ -457,10 +457,6 @@ "debugExceptionWidget.background": "#00212B", "debugExceptionWidget.border": "#AB395B", - // Workbench: Notifications - "notification.background": "#003847", - // "notification.foreground": "", - // Workbench: Quick Open "pickerGroup.foreground": "#2AA19899", "pickerGroup.border": "#2AA19899", diff --git a/extensions/theme-solarized-light/themes/solarized-light-color-theme.json b/extensions/theme-solarized-light/themes/solarized-light-color-theme.json index c87a8b26559..0d5b202ea12 100644 --- a/extensions/theme-solarized-light/themes/solarized-light-color-theme.json +++ b/extensions/theme-solarized-light/themes/solarized-light-color-theme.json @@ -456,10 +456,6 @@ "debugExceptionWidget.background": "#DDD6C1", "debugExceptionWidget.border": "#AB395B", - // Workbench: Notifications - "notification.background": "#999178", - // "notification.foreground": "", - // Workbench: Quick Open "pickerGroup.border": "#2AA19899", "pickerGroup.foreground": "#2AA19899", From 8f6c44653365edad2e5e2db3ddb1b8084f21e893 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 6 Mar 2018 12:11:39 +0100 Subject: [PATCH 107/658] #45122 - Use ILocalExtension as an input in IExtensionEnablementService --- .../common/extensionEnablementService.ts | 63 +++++++++---------- .../common/extensionManagement.ts | 6 +- .../common/extensionEnablementService.test.ts | 28 ++++----- .../extensions/browser/extensionsActions.ts | 2 +- .../node/extensionsWorkbenchService.ts | 8 +-- .../electron-browser/preferencesSearch.ts | 2 +- .../electron-browser/extensionService.ts | 1 - .../electron-browser/workbenchIssueService.ts | 3 +- 8 files changed, 52 insertions(+), 61 deletions(-) diff --git a/src/vs/platform/extensionManagement/common/extensionEnablementService.ts b/src/vs/platform/extensionManagement/common/extensionEnablementService.ts index 1a787fc24c1..4e4fbc25a3d 100644 --- a/src/vs/platform/extensionManagement/common/extensionEnablementService.ts +++ b/src/vs/platform/extensionManagement/common/extensionEnablementService.ts @@ -5,11 +5,10 @@ import { localize } from 'vs/nls'; import { TPromise } from 'vs/base/common/winjs.base'; -import { distinct, coalesce } from 'vs/base/common/arrays'; import Event, { Emitter } from 'vs/base/common/event'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { IExtensionManagementService, DidUninstallExtensionEvent, IExtensionEnablementService, IExtensionIdentifier, EnablementState, ILocalExtension, isIExtensionIdentifier } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { adoptToGalleryExtensionId, getIdFromLocalExtensionId, areSameExtensions, getGalleryExtensionIdFromLocal } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; +import { IExtensionManagementService, DidUninstallExtensionEvent, IExtensionEnablementService, IExtensionIdentifier, EnablementState, ILocalExtension, isIExtensionIdentifier, LocalExtensionType } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { getIdFromLocalExtensionId, areSameExtensions, getGalleryExtensionIdFromLocal } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; @@ -58,10 +57,11 @@ export class ExtensionEnablementService implements IExtensionEnablementService { return TPromise.as(result); } - getEnablementState(identifier: IExtensionIdentifier): EnablementState { - if (this.environmentService.disableExtensions) { + getEnablementState(extension: ILocalExtension): EnablementState { + if (this.environmentService.disableExtensions && extension.type === LocalExtensionType.User) { return EnablementState.Disabled; } + const identifier = this._getIdentifier(extension); if (this.hasWorkspace) { if (this._getEnabledExtensions(StorageScope.WORKSPACE).filter(e => areSameExtensions(e, identifier))[0]) { return EnablementState.WorkspaceEnabled; @@ -82,14 +82,14 @@ export class ExtensionEnablementService implements IExtensionEnablementService { } setEnablement(arg: ILocalExtension | IExtensionIdentifier, newState: EnablementState): TPromise { - let identifier; + let identifier: IExtensionIdentifier; if (isIExtensionIdentifier(arg)) { identifier = arg; } else { if (!this.canChangeEnablement(arg)) { return TPromise.wrap(false); } - identifier = { id: getGalleryExtensionIdFromLocal(arg), uuid: arg.identifier.uuid }; + identifier = this._getIdentifier(arg); } const workspace = newState === EnablementState.WorkspaceDisabled || newState === EnablementState.WorkspaceEnabled; @@ -97,7 +97,7 @@ export class ExtensionEnablementService implements IExtensionEnablementService { return TPromise.wrapError(new Error(localize('noWorkspace', "No workspace."))); } - const currentState = this.getEnablementState(identifier); + const currentState = this._getEnablementState(identifier); if (currentState === newState) { return TPromise.as(false); @@ -123,16 +123,29 @@ export class ExtensionEnablementService implements IExtensionEnablementService { return TPromise.as(true); } - isEnabled(identifier: IExtensionIdentifier): boolean { - const enablementState = this.getEnablementState(identifier); + isEnabled(extension: ILocalExtension): boolean { + const enablementState = this.getEnablementState(extension); return enablementState === EnablementState.WorkspaceEnabled || enablementState === EnablementState.Enabled; } - migrateToIdentifiers(installed: IExtensionIdentifier[]): void { - this._migrateDisabledExtensions(installed, StorageScope.GLOBAL); + private _getEnablementState(identifier: IExtensionIdentifier): EnablementState { if (this.hasWorkspace) { - this._migrateDisabledExtensions(installed, StorageScope.WORKSPACE); + if (this._getEnabledExtensions(StorageScope.WORKSPACE).filter(e => areSameExtensions(e, identifier))[0]) { + return EnablementState.WorkspaceEnabled; + } + + if (this._getDisabledExtensions(StorageScope.WORKSPACE).filter(e => areSameExtensions(e, identifier))[0]) { + return EnablementState.WorkspaceDisabled; + } } + if (this._getDisabledExtensions(StorageScope.GLOBAL).filter(e => areSameExtensions(e, identifier))[0]) { + return EnablementState.Disabled; + } + return EnablementState.Enabled; + } + + private _getIdentifier(extension: ILocalExtension): IExtensionIdentifier { + return { id: getGalleryExtensionIdFromLocal(extension), uuid: extension.identifier.uuid }; } private _enableExtension(identifier: IExtensionIdentifier): void { @@ -227,8 +240,8 @@ export class ExtensionEnablementService implements IExtensionEnablementService { return this._getExtensions(DISABLED_EXTENSIONS_STORAGE_PATH, scope); } - private _setDisabledExtensions(disabledExtensions: IExtensionIdentifier[], scope: StorageScope, extension: IExtensionIdentifier, fireEvent = true): void { - this._setExtensions(DISABLED_EXTENSIONS_STORAGE_PATH, disabledExtensions, scope, extension, fireEvent); + private _setDisabledExtensions(disabledExtensions: IExtensionIdentifier[], scope: StorageScope, extension: IExtensionIdentifier): void { + this._setExtensions(DISABLED_EXTENSIONS_STORAGE_PATH, disabledExtensions, scope, extension); } private _getExtensions(storageId: string, scope: StorageScope): IExtensionIdentifier[] { @@ -239,30 +252,12 @@ export class ExtensionEnablementService implements IExtensionEnablementService { return value ? JSON.parse(value) : []; } - private _setExtensions(storageId: string, extensions: IExtensionIdentifier[], scope: StorageScope, extension: IExtensionIdentifier, fireEvent = true): void { + private _setExtensions(storageId: string, extensions: IExtensionIdentifier[], scope: StorageScope, extension: IExtensionIdentifier): void { if (extensions.length) { this.storageService.store(storageId, JSON.stringify(extensions.map(({ id, uuid }) => ({ id, uuid }))), scope); } else { this.storageService.remove(storageId, scope); } - if (fireEvent) { - this._onEnablementChanged.fire(extension); - } - } - - private _migrateDisabledExtensions(installedExtensions: IExtensionIdentifier[], scope: StorageScope): void { - const oldValue = this.storageService.get('extensions/disabled', scope, ''); - if (oldValue) { - const extensionIdentifiers = coalesce(distinct(oldValue.split(',')).map(id => { - id = adoptToGalleryExtensionId(id); - const matched = installedExtensions.filter(installed => areSameExtensions({ id }, { id: installed.id }))[0]; - return matched ? { id: matched.id, uuid: matched.uuid } : null; - })); - if (extensionIdentifiers.length) { - this.storageService.store(DISABLED_EXTENSIONS_STORAGE_PATH, JSON.stringify(extensionIdentifiers), scope); - } - } - this.storageService.remove('extensions/disabled', scope); } private _onDidUninstallExtension({ identifier, error }: DidUninstallExtensionEvent): void { diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index ba288ea5a04..70b424c6ca9 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -308,7 +308,7 @@ export interface IExtensionEnablementService { /** * Returns the enablement state for the given extension */ - getEnablementState(identifier: IExtensionIdentifier): EnablementState; + getEnablementState(extension: ILocalExtension): EnablementState; /** * Returns `true` if the enablement can be changed. @@ -318,7 +318,7 @@ export interface IExtensionEnablementService { /** * Returns `true` if the given extension identifier is enabled. */ - isEnabled(identifier: IExtensionIdentifier): boolean; + isEnabled(extension: ILocalExtension): boolean; /** * Enable or disable the given extension. @@ -334,8 +334,6 @@ export interface IExtensionEnablementService { * TODO: @Sandy. Use setEnablement(extension: ILocalExtension, state: EnablementState): TPromise. Use one model for extension management and runtime */ setEnablement(identifier: IExtensionIdentifier, state: EnablementState): TPromise; - - migrateToIdentifiers(installed: IExtensionIdentifier[]): void; } export const IExtensionTipsService = createDecorator('extensionTipsService'); diff --git a/src/vs/platform/extensionManagement/test/common/extensionEnablementService.test.ts b/src/vs/platform/extensionManagement/test/common/extensionEnablementService.test.ts index 8113bdd0f14..46f95ce498c 100644 --- a/src/vs/platform/extensionManagement/test/common/extensionEnablementService.test.ts +++ b/src/vs/platform/extensionManagement/test/common/extensionEnablementService.test.ts @@ -98,13 +98,13 @@ suite('ExtensionEnablementService Test', () => { test('test state of globally disabled extension', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.Disabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.Disabled)); }); test('test state of globally enabled extension', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Enabled)) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.Enabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.Enabled)); }); test('test disable an extension for workspace', () => { @@ -126,59 +126,59 @@ suite('ExtensionEnablementService Test', () => { test('test state of workspace disabled extension', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.WorkspaceDisabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.WorkspaceDisabled)); }); test('test state of workspace and globally disabled extension', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled)) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.WorkspaceDisabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.WorkspaceDisabled)); }); test('test state of workspace enabled extension', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceEnabled)) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.WorkspaceEnabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.WorkspaceEnabled)); }); test('test state of globally disabled and workspace enabled extension', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled)) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceEnabled)) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.WorkspaceEnabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.WorkspaceEnabled)); }); test('test state of an extension when disabled for workspace from workspace enabled', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceEnabled)) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled)) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.WorkspaceDisabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.WorkspaceDisabled)); }); test('test state of an extension when disabled globally from workspace enabled', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceEnabled)) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled)) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.Disabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.Disabled)); }); test('test state of an extension when disabled globally from workspace disabled', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled)) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.Disabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.Disabled)); }); test('test state of an extension when enabled globally from workspace enabled', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceEnabled)) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Enabled)) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.Enabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.Enabled)); }); test('test state of an extension when enabled globally from workspace disabled', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Enabled)) - .then(() => assert.equal(testObject.getEnablementState({ id: 'pub.a' }), EnablementState.Enabled)); + .then(() => assert.equal(testObject.getEnablementState(aLocalExtension('pub.a')), EnablementState.Enabled)); }); test('test disable an extension for workspace and then globally', () => { @@ -311,18 +311,18 @@ suite('ExtensionEnablementService Test', () => { test('test isEnabled return false extension is disabled globally', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled) - .then(() => assert.ok(!testObject.isEnabled({ id: 'pub.a' }))); + .then(() => assert.ok(!testObject.isEnabled(aLocalExtension('pub.a')))); }); test('test isEnabled return false extension is disabled in workspace', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) - .then(() => assert.ok(!testObject.isEnabled({ id: 'pub.a' }))); + .then(() => assert.ok(!testObject.isEnabled(aLocalExtension('pub.a')))); }); test('test isEnabled return true extension is not disabled', () => { return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) .then(() => testObject.setEnablement(aLocalExtension('pub.c'), EnablementState.Disabled)) - .then(() => assert.ok(testObject.isEnabled({ id: 'pub.b' }))); + .then(() => assert.ok(testObject.isEnabled(aLocalExtension('pub.b')))); }); test('test canChangeEnablement return false for language packs', () => { diff --git a/src/vs/workbench/parts/extensions/browser/extensionsActions.ts b/src/vs/workbench/parts/extensions/browser/extensionsActions.ts index 6e300d32eed..05c57e64f98 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionsActions.ts @@ -926,7 +926,7 @@ export class ReloadAction extends Action { private computeReloadState(runningExtensions: IExtensionDescription[]): void { const isInstalled = this.extensionsWorkbenchService.local.some(e => e.id === this.extension.id); const isUninstalled = this.extension.state === ExtensionState.Uninstalled; - const isDisabled = !this.extensionEnablementService.isEnabled({ id: this.extension.id, uuid: this.extension.uuid }); + const isDisabled = this.extension.local ? !this.extensionEnablementService.isEnabled(this.extension.local) : false; const filteredExtensions = runningExtensions.filter(e => areSameExtensions(e, this.extension)); const isExtensionRunning = filteredExtensions.length > 0; diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index 22135b00648..c01694e75fd 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -419,7 +419,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { this.installed = result.map(local => { const extension = installedById[local.identifier.id] || new Extension(this.galleryService, this.stateProvider, local, null, this.telemetryService); extension.local = local; - extension.enablementState = this.extensionEnablementService.getEnablementState({ id: extension.id, uuid: extension.uuid }); + extension.enablementState = this.extensionEnablementService.getEnablementState(local); return extension; }); @@ -890,10 +890,10 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { this._onChange.fire(); } - private onEnablementChanged(extensionIdentifier: IExtensionIdentifier) { - const [extension] = this.local.filter(e => areSameExtensions(e, extensionIdentifier)); + private onEnablementChanged(identifier: IExtensionIdentifier) { + const [extension] = this.local.filter(e => areSameExtensions(e, identifier)); if (extension) { - const enablementState = this.extensionEnablementService.getEnablementState({ id: extension.id, uuid: extension.uuid }); + const enablementState = this.extensionEnablementService.getEnablementState(extension.local); if (enablementState !== extension.enablementState) { extension.enablementState = enablementState; this._onChange.fire(); diff --git a/src/vs/workbench/parts/preferences/electron-browser/preferencesSearch.ts b/src/vs/workbench/parts/preferences/electron-browser/preferencesSearch.ts index 17246c5d28c..aa9985fa576 100644 --- a/src/vs/workbench/parts/preferences/electron-browser/preferencesSearch.ts +++ b/src/vs/workbench/parts/preferences/electron-browser/preferencesSearch.ts @@ -44,7 +44,7 @@ export class PreferencesSearchService extends Disposable implements IPreferences this._installedExtensions = this.extensionManagementService.getInstalled(LocalExtensionType.User).then(exts => { // Filter to enabled extensions that have settings return exts - .filter(ext => this.extensionEnablementService.isEnabled(ext.identifier)) + .filter(ext => this.extensionEnablementService.isEnabled(ext)) .filter(ext => ext.manifest.contributes && ext.manifest.contributes.configuration) .filter(ext => !!ext.identifier.uuid); }); diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index 19c1b6a17f3..4b47d8317ea 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -456,7 +456,6 @@ export class ExtensionService extends Disposable implements IExtensionService { return ExtensionService._scanInstalledExtensions(this._windowService, this._choiceService, this._environmentService, log) .then(({ system, user, development }) => { - this._extensionEnablementService.migrateToIdentifiers(user); // TODO: @sandy Remove it after couple of milestones return this._extensionEnablementService.getDisabledExtensions() .then(disabledExtensions => { let result: { [extensionId: string]: IExtensionDescription; } = {}; diff --git a/src/vs/workbench/services/issue/electron-browser/workbenchIssueService.ts b/src/vs/workbench/services/issue/electron-browser/workbenchIssueService.ts index 3905d9542d1..7e78f2904a5 100644 --- a/src/vs/workbench/services/issue/electron-browser/workbenchIssueService.ts +++ b/src/vs/workbench/services/issue/electron-browser/workbenchIssueService.ts @@ -11,7 +11,6 @@ import { ITheme, IThemeService } from 'vs/platform/theme/common/themeService'; import { textLinkForeground, inputBackground, inputBorder, inputForeground, buttonBackground, buttonHoverBackground, buttonForeground, inputValidationErrorBorder, foreground, inputActiveOptionBorder, scrollbarSliderActiveBackground, scrollbarSliderBackground, scrollbarSliderHoverBackground } from 'vs/platform/theme/common/colorRegistry'; import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme'; import { IExtensionManagementService, IExtensionEnablementService, LocalExtensionType } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { getGalleryExtensionIdFromLocal } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { webFrame } from 'electron'; import { assign } from 'vs/base/common/objects'; import { IWorkbenchIssueService } from 'vs/workbench/services/issue/common/issue'; @@ -29,7 +28,7 @@ export class WorkbenchIssueService implements IWorkbenchIssueService { openReporter(dataOverrides: Partial = {}): TPromise { return this.extensionManagementService.getInstalled(LocalExtensionType.User).then(extensions => { - const enabledExtensions = extensions.filter(extension => this.extensionEnablementService.isEnabled({ id: getGalleryExtensionIdFromLocal(extension) })); + const enabledExtensions = extensions.filter(extension => this.extensionEnablementService.isEnabled(extension)); const theme = this.themeService.getTheme(); const issueReporterData: IssueReporterData = assign( { From 6f80511a943bbfb380934ce694abf05d451dc1b7 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 6 Mar 2018 12:50:51 +0100 Subject: [PATCH 108/658] Fix #45122 --- .../common/extensionManagement.ts | 10 +++------- .../common/extensionManagementIpc.ts | 11 ++++++----- .../node/extensionManagementService.ts | 15 ++++++++------- .../extensions/node/extensionsWorkbenchService.ts | 6 +++--- .../welcome/page/electron-browser/welcomePage.ts | 10 ++++------ .../electron-browser/extensionService.ts | 13 +++++++++---- 6 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index 70b424c6ca9..4951973eae1 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -271,10 +271,10 @@ export interface IExtensionManagementService { onUninstallExtension: Event; onDidUninstallExtension: Event; - install(zipPath: string): TPromise; - installFromGallery(extension: IGalleryExtension): TPromise; + install(zipPath: string): TPromise; + installFromGallery(extension: IGalleryExtension): TPromise; uninstall(extension: ILocalExtension, force?: boolean): TPromise; - reinstall(extension: ILocalExtension): TPromise; + reinstall(extension: ILocalExtension): TPromise; getInstalled(type?: LocalExtensionType): TPromise; getExtensionsReport(): TPromise; @@ -330,10 +330,6 @@ export interface IExtensionEnablementService { * Throws error if enablement is requested for workspace and there is no workspace */ setEnablement(extension: ILocalExtension, state: EnablementState): TPromise; - /** - * TODO: @Sandy. Use setEnablement(extension: ILocalExtension, state: EnablementState): TPromise. Use one model for extension management and runtime - */ - setEnablement(identifier: IExtensionIdentifier, state: EnablementState): TPromise; } export const IExtensionTipsService = createDecorator('extensionTipsService'); diff --git a/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts b/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts index c97f94123f4..bde1ae27e55 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts @@ -15,9 +15,10 @@ export interface IExtensionManagementChannel extends IChannel { call(command: 'event:onDidInstallExtension'): TPromise; call(command: 'event:onUninstallExtension'): TPromise; call(command: 'event:onDidUninstallExtension'): TPromise; - call(command: 'install', path: string): TPromise; - call(command: 'installFromGallery', extension: IGalleryExtension): TPromise; + call(command: 'install', path: string): TPromise; + call(command: 'installFromGallery', extension: IGalleryExtension): TPromise; call(command: 'uninstall', args: [ILocalExtension, boolean]): TPromise; + call(command: 'reinstall', args: [ILocalExtension]): TPromise; call(command: 'getInstalled'): TPromise; call(command: 'getExtensionsReport'): TPromise; call(command: string, arg?: any): TPromise; @@ -73,11 +74,11 @@ export class ExtensionManagementChannelClient implements IExtensionManagementSer private _onDidUninstallExtension = eventFromCall(this.channel, 'event:onDidUninstallExtension'); get onDidUninstallExtension(): Event { return this._onDidUninstallExtension; } - install(zipPath: string): TPromise { + install(zipPath: string): TPromise { return this.channel.call('install', zipPath); } - installFromGallery(extension: IGalleryExtension): TPromise { + installFromGallery(extension: IGalleryExtension): TPromise { return this.channel.call('installFromGallery', [extension]); } @@ -85,7 +86,7 @@ export class ExtensionManagementChannelClient implements IExtensionManagementSer return this.channel.call('uninstall', [extension, force]); } - reinstall(extension: ILocalExtension): TPromise { + reinstall(extension: ILocalExtension): TPromise { return this.channel.call('reinstall', [extension]); } diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index ae4944b1d78..ce3d96615ac 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -141,7 +141,7 @@ export class ExtensionManagementService extends Disposable implements IExtension this.extensionLifecycle = this._register(new ExtensionsLifecycle(this.logService)); } - install(zipPath: string): TPromise { + install(zipPath: string): TPromise { zipPath = path.resolve(zipPath); return validateLocalExtension(zipPath) @@ -159,7 +159,7 @@ export class ExtensionManagementService extends Disposable implements IExtension metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), error => this.installFromZipPath(identifier, zipPath, null, manifest)) .then( - () => this.logService.info('Successfully installed the extension:', identifier.id), + local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, e => { this.logService.error('Failed to install the extension:', identifier.id, e.message); return TPromise.wrapError(e); @@ -208,7 +208,7 @@ export class ExtensionManagementService extends Disposable implements IExtension }); } - private installFromZipPath(identifier: IExtensionIdentifier, zipPath: string, metadata: IGalleryMetadata, manifest: IExtensionManifest): TPromise { + private installFromZipPath(identifier: IExtensionIdentifier, zipPath: string, metadata: IGalleryMetadata, manifest: IExtensionManifest): TPromise { return this.installExtension({ zipPath, id: identifier.id, metadata }) .then(local => { if (this.galleryService.isEnabled() && local.manifest.extensionDependencies && local.manifest.extensionDependencies.length) { @@ -222,12 +222,12 @@ export class ExtensionManagementService extends Disposable implements IExtension return local; }) .then( - local => this._onDidInstallExtension.fire({ identifier, zipPath, local }), + local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } ); } - installFromGallery(extension: IGalleryExtension): TPromise { + installFromGallery(extension: IGalleryExtension): TPromise { this.onInstallExtensions([extension]); return this.collectExtensionsToInstall(extension) .then( @@ -237,13 +237,14 @@ export class ExtensionManagementService extends Disposable implements IExtension } return this.downloadAndInstallExtensions(extensionsToInstall) .then( - locals => this.onDidInstallExtensions(extensionsToInstall, locals, []), + locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) + .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); }, error => this.onDidInstallExtensions([extension], [], [error])); } - reinstall(extension: ILocalExtension): TPromise { + reinstall(extension: ILocalExtension): TPromise { if (!this.galleryService.isEnabled()) { return TPromise.wrapError(new Error(nls.localize('MarketPlaceDisabled', "Marketplace is not enabled"))); } diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index c01694e75fd..3a5d1364c8e 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -589,7 +589,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { location: ProgressLocation.Extensions, title: nls.localize('installingVSIXExtension', 'Installing extension from VSIX...'), tooltip: `${extension}` - }, () => this.extensionService.install(extension)); + }, () => this.extensionService.install(extension).then(() => null)); } if (!(extension instanceof Extension)) { @@ -611,7 +611,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { location: ProgressLocation.Extensions, title: nls.localize('installingMarketPlaceExtension', 'Installing extension from Marketplace....'), tooltip: `${extension.id}` - }, () => this.extensionService.installFromGallery(gallery)); + }, () => this.extensionService.installFromGallery(gallery).then(() => null)); } setEnablement(extension: IExtension, enablementState: EnablementState): TPromise { @@ -670,7 +670,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { return this.progressService.withProgress({ location: ProgressLocation.Extensions, tooltip: `${local.identifier.id}` - }, () => this.extensionService.reinstall(local)); + }, () => this.extensionService.reinstall(local).then(() => null)); } private promptAndSetEnablement(extension: IExtension, enablementState: EnablementState, enable: boolean): TPromise { diff --git a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts index 48f2763d25a..79c5dc579b4 100644 --- a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts +++ b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts @@ -416,18 +416,16 @@ class WelcomePage { this.notificationService.info(strings.alreadyInstalled.replace('{0}', extensionSuggestion.name)); return; } - const foundAndInstalled = installedExtension ? TPromise.as(installedExtension.identifier) : this.extensionGalleryService.query({ names: [extensionSuggestion.id], source: telemetryFrom }) + const foundAndInstalled = installedExtension ? TPromise.as(installedExtension.local) : this.extensionGalleryService.query({ names: [extensionSuggestion.id], source: telemetryFrom }) .then(result => { const [extension] = result.firstPage; if (!extension) { return null; } return this.extensionManagementService.installFromGallery(extension) - .then(() => { + .then(local => { // TODO: Do this as part of the install to avoid multiple events. - return this.extensionEnablementService.setEnablement(extension.identifier, EnablementState.Disabled); - }).then(() => { - return extension.identifier; + return this.extensionEnablementService.setEnablement(local, EnablementState.Disabled).then(() => local); }); }); @@ -440,7 +438,7 @@ class WelcomePage { }); TPromise.join(extensionSuggestion.isKeymap ? extensions.filter(extension => isKeymapExtension(this.tipsService, extension) && extension.globallyEnabled) .map(extension => { - return this.extensionEnablementService.setEnablement(extension.identifier, EnablementState.Disabled); + return this.extensionEnablementService.setEnablement(extension.local, EnablementState.Disabled); }) : []).then(() => { return foundAndInstalled.then(foundExtension => { messageDelay.cancel(); diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index 4b47d8317ea..9939086f025 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -17,8 +17,8 @@ import * as platform from 'vs/base/common/platform'; import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/node/extensionDescriptionRegistry'; import { IMessage, IExtensionDescription, IExtensionsStatus, IExtensionService, ExtensionPointContribution, ActivationTimes, ProfileSession } from 'vs/workbench/services/extensions/common/extensions'; import { USER_MANIFEST_CACHE_FILE, BUILTIN_MANIFEST_CACHE_FILE, MANIFEST_CACHE_FOLDER } from 'vs/platform/extensions/common/extensions'; -import { IExtensionEnablementService, IExtensionIdentifier, EnablementState } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { areSameExtensions, BetterMergeId, BetterMergeDisabledNowKey } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; +import { IExtensionEnablementService, IExtensionIdentifier, EnablementState, IExtensionManagementService, LocalExtensionType } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { areSameExtensions, BetterMergeId, BetterMergeDisabledNowKey, getGalleryExtensionIdFromLocal } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { ExtensionsRegistry, ExtensionPoint, IExtensionPointUser, ExtensionMessageCollector, IExtensionPoint } from 'vs/workbench/services/extensions/common/extensionsRegistry'; import { ExtensionScanner, ILog, ExtensionScannerInput, IExtensionResolver, IExtensionReference, Translations } from 'vs/workbench/services/extensions/node/extensionPoints'; import { ProxyIdentifier } from 'vs/workbench/services/extensions/node/proxyIdentifier'; @@ -150,7 +150,8 @@ export class ExtensionService extends Disposable implements IExtensionService { @IExtensionEnablementService private readonly _extensionEnablementService: IExtensionEnablementService, @IStorageService private readonly _storageService: IStorageService, @IWindowService private readonly _windowService: IWindowService, - @ILifecycleService lifecycleService: ILifecycleService + @ILifecycleService lifecycleService: ILifecycleService, + @IExtensionManagementService private extensionManagementService: IExtensionManagementService ) { super(); this._registry = null; @@ -500,7 +501,11 @@ export class ExtensionService extends Disposable implements IExtensionService { }); if (extensionsToDisable.length) { - return TPromise.join(extensionsToDisable.map(e => this._extensionEnablementService.setEnablement(e, EnablementState.Disabled))) + return this.extensionManagementService.getInstalled(LocalExtensionType.User) + .then(installed => { + const toDisable = installed.filter(i => extensionsToDisable.some(e => areSameExtensions({ id: getGalleryExtensionIdFromLocal(i) }, e))); + return TPromise.join(toDisable.map(e => this._extensionEnablementService.setEnablement(e, EnablementState.Disabled))); + }) .then(() => { this._storageService.store(BetterMergeDisabledNowKey, true); return runtimeExtensions; From 8ba5faed3676741aafd91c5412d5917fc065c04f Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 15:29:40 +0100 Subject: [PATCH 109/658] fix line endings --- build/monaco/api.js | 6 +++--- build/monaco/api.ts | 46 ++++++++++++++++++++++----------------------- build/tsconfig.json | 1 - 3 files changed, 26 insertions(+), 27 deletions(-) diff --git a/build/monaco/api.js b/build/monaco/api.js index 83eacd16a3d..608113ffbce 100644 --- a/build/monaco/api.js +++ b/build/monaco/api.js @@ -210,7 +210,8 @@ function createReplacer(data) { }; } function generateDeclarationFile(out, inputFiles, recipe) { - var lines = recipe.split(/\r\n|\n|\r/); + var endl = /\r\n/.test(recipe) ? '\r\n' : '\n'; + var lines = recipe.split(endl); var result = []; lines.forEach(function (line) { var m1 = line.match(/^\s*#include\(([^;)]*)(;[^)]*)?\)\:(.*)$/); @@ -278,12 +279,11 @@ function generateDeclarationFile(out, inputFiles, recipe) { } result.push(line); }); - var resultTxt = result.join('\n'); + var resultTxt = result.join(endl); resultTxt = resultTxt.replace(/\bURI\b/g, 'Uri'); resultTxt = resultTxt.replace(/\bEventboolean): void { +function visitTopLevelDeclarations(sourceFile: ts.SourceFile, visitor: (node: TSTopLevelDeclare) => boolean): void { let stop = false; let visit = (node: ts.Node): void => { @@ -100,8 +100,8 @@ function visitTopLevelDeclarations(sourceFile:ts.SourceFile, visitor:(node:TSTop } -function getAllTopLevelDeclarations(sourceFile:ts.SourceFile): TSTopLevelDeclare[] { - let all:TSTopLevelDeclare[] = []; +function getAllTopLevelDeclarations(sourceFile: ts.SourceFile): TSTopLevelDeclare[] { + let all: TSTopLevelDeclare[] = []; visitTopLevelDeclarations(sourceFile, (node) => { if (node.kind === ts.SyntaxKind.InterfaceDeclaration || node.kind === ts.SyntaxKind.ClassDeclaration || node.kind === ts.SyntaxKind.ModuleDeclaration) { let interfaceDeclaration = node; @@ -128,8 +128,8 @@ function getAllTopLevelDeclarations(sourceFile:ts.SourceFile): TSTopLevelDeclare } -function getTopLevelDeclaration(sourceFile:ts.SourceFile, typeName:string): TSTopLevelDeclare { - let result:TSTopLevelDeclare = null; +function getTopLevelDeclaration(sourceFile: ts.SourceFile, typeName: string): TSTopLevelDeclare { + let result: TSTopLevelDeclare = null; visitTopLevelDeclarations(sourceFile, (node) => { if (isDeclaration(node)) { if (node.name.text === typeName) { @@ -149,12 +149,12 @@ function getTopLevelDeclaration(sourceFile:ts.SourceFile, typeName:string): TSTo } -function getNodeText(sourceFile:ts.SourceFile, node:{pos:number; end:number;}): string { +function getNodeText(sourceFile: ts.SourceFile, node: { pos: number; end: number; }): string { return sourceFile.getFullText().substring(node.pos, node.end); } -function getMassagedTopLevelDeclarationText(sourceFile:ts.SourceFile, declaration: TSTopLevelDeclare): string { +function getMassagedTopLevelDeclarationText(sourceFile: ts.SourceFile, declaration: TSTopLevelDeclare): string { let result = getNodeText(sourceFile, declaration); // if (result.indexOf('MonacoWorker') >= 0) { // console.log('here!'); @@ -163,7 +163,7 @@ function getMassagedTopLevelDeclarationText(sourceFile:ts.SourceFile, declaratio if (declaration.kind === ts.SyntaxKind.InterfaceDeclaration || declaration.kind === ts.SyntaxKind.ClassDeclaration) { let interfaceDeclaration = declaration; - let members:ts.NodeArray = interfaceDeclaration.members; + let members: ts.NodeArray = interfaceDeclaration.members; members.forEach((member) => { try { let memberText = getNodeText(sourceFile, member); @@ -182,7 +182,7 @@ function getMassagedTopLevelDeclarationText(sourceFile:ts.SourceFile, declaratio return result; } -function format(text:string): string { +function format(text: string): string { // Parse the source text let sourceFile = ts.createSourceFile('file.ts', text, ts.ScriptTarget.Latest, /*setParentPointers*/ true); @@ -214,10 +214,10 @@ function format(text:string): string { } } -function createReplacer(data:string): (str:string)=>string { +function createReplacer(data: string): (str: string) => string { data = data || ''; let rawDirectives = data.split(';'); - let directives: [RegExp,string][] = []; + let directives: [RegExp, string][] = []; rawDirectives.forEach((rawDirective) => { if (rawDirective.length === 0) { return; @@ -231,7 +231,7 @@ function createReplacer(data:string): (str:string)=>string { directives.push([new RegExp(findStr, 'g'), replaceStr]); }); - return (str:string)=> { + return (str: string) => { for (let i = 0; i < directives.length; i++) { str = str.replace(directives[i][0], directives[i][1]); } @@ -239,10 +239,11 @@ function createReplacer(data:string): (str:string)=>string { }; } -function generateDeclarationFile(out: string, inputFiles: { [file: string]: string; }, recipe:string): string { - let lines = recipe.split(/\r\n|\n|\r/); - let result = []; +function generateDeclarationFile(out: string, inputFiles: { [file: string]: string; }, recipe: string): string { + const endl = /\r\n/.test(recipe) ? '\r\n' : '\n'; + let lines = recipe.split(endl); + let result = []; lines.forEach(line => { @@ -285,7 +286,7 @@ function generateDeclarationFile(out: string, inputFiles: { [file: string]: stri let replacer = createReplacer(m2[2]); let typeNames = m2[3].split(/,/); - let typesToExcludeMap: {[typeName:string]:boolean;} = {}; + let typesToExcludeMap: { [typeName: string]: boolean; } = {}; let typesToExcludeArr: string[] = []; typeNames.forEach((typeName) => { typeName = typeName.trim(); @@ -318,18 +319,17 @@ function generateDeclarationFile(out: string, inputFiles: { [file: string]: stri result.push(line); }); - let resultTxt = result.join('\n'); + let resultTxt = result.join(endl); resultTxt = resultTxt.replace(/\bURI\b/g, 'Uri'); resultTxt = resultTxt.replace(/\bEvent Date: Tue, 6 Mar 2018 15:45:32 +0100 Subject: [PATCH 110/658] fix hygiene --- build/gulpfile.hygiene.js | 6 +++++- tsfmt.json | 3 +-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js index 291a89bc599..2d4f1cde20b 100644 --- a/build/gulpfile.hygiene.js +++ b/build/gulpfile.hygiene.js @@ -208,7 +208,11 @@ function hygiene(some) { tslint: undefined }).then(result => { if (result.error) { - console.error(result.message); + fs.writeFileSync('C:\\Users\\joao\\Desktop\\src.txt', result.src); + fs.writeFileSync('C:\\Users\\joao\\Desktop\\dest.txt', result.dest); + + + console.error(result.src, result.message); errorCount++; } cb(null, file); diff --git a/tsfmt.json b/tsfmt.json index fffcf07c199..72a3195dbc9 100644 --- a/tsfmt.json +++ b/tsfmt.json @@ -1,7 +1,6 @@ { "tabSize": 4, "indentSize": 4, - "newLineCharacter": "\n", "convertTabsToSpaces": false, "insertSpaceAfterCommaDelimiter": true, "insertSpaceAfterSemicolonInForStatements": true, @@ -14,4 +13,4 @@ "insertSpaceBeforeFunctionParenthesis": false, "placeOpenBraceOnNewLineForFunctions": false, "placeOpenBraceOnNewLineForControlBlocks": false -} +} \ No newline at end of file From 29745fc17936057b7d498c60e1345e83c85bd570 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 15:59:53 +0100 Subject: [PATCH 111/658] remove console log from tests --- src/vs/editor/test/browser/controller/cursor.test.ts | 2 -- .../test/electron-main/workspacesMainService.test.ts | 4 ++-- .../electron-browser/extensionTipsService.ts | 10 +++++++--- .../parts/tasks/test/common/problemMatcher.test.ts | 1 - 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/vs/editor/test/browser/controller/cursor.test.ts b/src/vs/editor/test/browser/controller/cursor.test.ts index 4f688aa088c..ca24bd33d15 100644 --- a/src/vs/editor/test/browser/controller/cursor.test.ts +++ b/src/vs/editor/test/browser/controller/cursor.test.ts @@ -1864,8 +1864,6 @@ suite('Editor Controller - Regression tests', () => { const viewModel = new ViewModel(0, config, model, null); const cursor = new Cursor(config, model, viewModel); - console.log(viewModel.getLineCount()); - moveTo(cursor, 1, 43, false); moveTo(cursor, 1, 147, true); assertCursor(cursor, new Selection(1, 43, 1, 147)); diff --git a/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts b/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts index 3037a489d34..3e6ecdc785e 100644 --- a/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts +++ b/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts @@ -15,7 +15,7 @@ import { EnvironmentService } from 'vs/platform/environment/node/environmentServ import { parseArgs } from 'vs/platform/environment/node/argv'; import { WorkspacesMainService, IStoredWorkspace } from 'vs/platform/workspaces/electron-main/workspacesMainService'; import { WORKSPACE_EXTENSION, IWorkspaceSavedEvent, IWorkspaceIdentifier, IRawFileWorkspaceFolder, IWorkspaceFolderCreationData, IRawUriWorkspaceFolder } from 'vs/platform/workspaces/common/workspaces'; -import { ConsoleLogMainService } from 'vs/platform/log/common/log'; +import { NullLogService } from 'vs/platform/log/common/log'; import URI from 'vs/base/common/uri'; import { getRandomTestPath } from 'vs/workbench/test/workbenchTestServices'; import { isWindows } from 'vs/base/common/platform'; @@ -50,7 +50,7 @@ suite('WorkspacesMainService', () => { } const environmentService = new TestEnvironmentService(parseArgs(process.argv), process.execPath); - const logService = new ConsoleLogMainService(); + const logService = new NullLogService(); let service: TestWorkspacesMainService; diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts index 1350ddec1a8..94e15ac5b32 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts @@ -37,6 +37,7 @@ import { isNumber } from 'vs/base/common/types'; import { IChoiceService, Choice } from 'vs/platform/dialogs/common/dialogs'; import { language, LANGUAGE_DEFAULT } from 'vs/base/common/platform'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; +import { INotificationService } from '../../../../platform/notification/common/notification'; interface IExtensionsContent { recommendations: string[]; @@ -81,7 +82,8 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe @IEnvironmentService private environmentService: IEnvironmentService, @IExtensionService private extensionService: IExtensionService, @IRequestService private requestService: IRequestService, - @IViewletService private viewletService: IViewletService + @IViewletService private viewletService: IViewletService, + @INotificationService private notificationService: INotificationService ) { super(); @@ -310,10 +312,12 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe } if (countBadRecommendations > 0) { - console.log('The below ' + + this.notificationService.warn( + 'The below ' + countBadRecommendations + ' extension(s) in workspace recommendations have issues:\n' + - badRecommendationsString); + badRecommendationsString + ); } return validRecommendations; diff --git a/src/vs/workbench/parts/tasks/test/common/problemMatcher.test.ts b/src/vs/workbench/parts/tasks/test/common/problemMatcher.test.ts index d29950816a7..f38ccaafc6c 100644 --- a/src/vs/workbench/parts/tasks/test/common/problemMatcher.test.ts +++ b/src/vs/workbench/parts/tasks/test/common/problemMatcher.test.ts @@ -225,7 +225,6 @@ suite('ProblemPatternParser', () => { { regexp: 'test', file: 2, kind: 'file', message: 6 } ]; let parsed = parser.parse(problemPattern); - console.log(reporter.messages); assert(reporter.isOK()); assert.deepEqual(parsed, [{ From 3f4df74ec7ad4b94365c78b11f26b3a1bd87e028 Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Tue, 6 Mar 2018 16:02:18 +0100 Subject: [PATCH 112/658] Avoid use of "*" selector in CSS (fixes #45060) --- .../page/electron-browser/welcomePage.css | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.css b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.css index 2c81b8e9b3e..ee971606531 100644 --- a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.css +++ b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.css @@ -22,10 +22,19 @@ flex-flow: row; } -.monaco-workbench > .part.editor > .content .welcomePage .row * { - min-width: 0; - white-space: nowrap; - text-overflow: ellipsis; +.monaco-workbench > .part.editor > .content .welcomePage .row .section { + overflow: hidden; +} + +.monaco-workbench > .part.editor > .content .welcomePage .row .splash { + overflow: hidden; +} + +.monaco-workbench > .part.editor > .content .welcomePage .row .commands { + overflow: hidden; +} + +.monaco-workbench > .part.editor > .content .welcomePage .row .commands ul { overflow: hidden; } @@ -95,6 +104,13 @@ padding: 0; } +.monaco-workbench > .part.editor > .content .welcomePage .splash li { + min-width: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + .monaco-workbench > .part.editor > .content .welcomePage.emptyRecent .splash .recent .list { display: none; } @@ -109,19 +125,16 @@ margin-top: 5px; } -.monaco-workbench > .part.editor > .content .welcomePage .splash .recent li { - min-width: 0; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} .monaco-workbench > .part.editor > .content .welcomePage .splash .recent .path { padding-left: 1em; } .monaco-workbench > .part.editor > .content .welcomePage .splash .title, .monaco-workbench > .part.editor > .content .welcomePage .splash .showOnStartup { + min-width: 0; white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .monaco-workbench > .part.editor > .content .welcomePage .splash .showOnStartup > .checkbox { @@ -150,6 +163,10 @@ .monaco-workbench > .part.editor > .content .welcomePage .commands li button > span { display: inline-block; width:100%; + min-width: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .monaco-workbench > .part.editor > .content .welcomePage .commands li button h3 { @@ -157,6 +174,10 @@ font-size: 1em; margin: 0; margin-bottom: .25em; + min-width: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .monaco-workbench > .part.editor > .content .welcomePage .commands li button { From f1b38297049ad43c5852f88a835814f41b0398c4 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 16:11:17 +0100 Subject: [PATCH 113/658] fix hygiene --- build/gulpfile.hygiene.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js index 2d4f1cde20b..291a89bc599 100644 --- a/build/gulpfile.hygiene.js +++ b/build/gulpfile.hygiene.js @@ -208,11 +208,7 @@ function hygiene(some) { tslint: undefined }).then(result => { if (result.error) { - fs.writeFileSync('C:\\Users\\joao\\Desktop\\src.txt', result.src); - fs.writeFileSync('C:\\Users\\joao\\Desktop\\dest.txt', result.dest); - - - console.error(result.src, result.message); + console.error(result.message); errorCount++; } cb(null, file); From 81f1deec2fb233b5e0da3739fea712f3f0a5cb82 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 6 Mar 2018 16:21:36 +0100 Subject: [PATCH 114/658] #39576 Use proxy only for extension calls --- .../common/configurationModels.ts | 47 ++++--------------- .../api/node/extHostConfiguration.ts | 41 ++++++++++++++-- 2 files changed, 46 insertions(+), 42 deletions(-) diff --git a/src/vs/platform/configuration/common/configurationModels.ts b/src/vs/platform/configuration/common/configurationModels.ts index 02827df0c62..cc4a855cf08 100644 --- a/src/vs/platform/configuration/common/configurationModels.ts +++ b/src/vs/platform/configuration/common/configurationModels.ts @@ -14,8 +14,6 @@ import { OVERRIDE_PROPERTY_PATTERN } from 'vs/platform/configuration/common/conf import { IOverrides, overrideIdentifierFromKey, addToValueTree, toValuesTree, IConfigurationModel, getConfigurationValue, IConfigurationOverrides, IConfigurationData, getDefaultValues, getConfigurationKeys, IConfigurationChangeEvent, ConfigurationTarget, removeFromValueTree, toOverrides } from 'vs/platform/configuration/common/configuration'; import { Workspace } from 'vs/platform/workspace/common/workspace'; -declare const Proxy: any; // TODO@TypeScript - export class ConfigurationModel implements IConfigurationModel { private isFrozen: boolean = false; @@ -288,13 +286,13 @@ export class Configuration { private _workspaceConfiguration: ConfigurationModel = new ConfigurationModel(), private _folderConfigurations: StrictResourceMap = new StrictResourceMap(), private _memoryConfiguration: ConfigurationModel = new ConfigurationModel(), - private _memoryConfigurationByResource: StrictResourceMap = new StrictResourceMap()) { + private _memoryConfigurationByResource: StrictResourceMap = new StrictResourceMap(), + private _freeze: boolean = true) { } getValue(section: string, overrides: IConfigurationOverrides, workspace: Workspace): any { const consolidateConfigurationModel = this.getConsolidateConfigurationModel(overrides, workspace); - const result = consolidateConfigurationModel.getValue(section); - return this.toReadonlyValue(result); + return consolidateConfigurationModel.getValue(section); } updateValue(key: string, value: any, overrides: IConfigurationOverrides = {}): void { @@ -337,7 +335,7 @@ export class Configuration { workspace: workspace ? overrides.overrideIdentifier ? this._workspaceConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this._workspaceConfiguration.freeze().getValue(key) : void 0, //Check on workspace exists or not because _workspaceConfiguration is never null workspaceFolder: folderConfigurationModel ? overrides.overrideIdentifier ? folderConfigurationModel.freeze().override(overrides.overrideIdentifier).getValue(key) : folderConfigurationModel.freeze().getValue(key) : void 0, memory: overrides.overrideIdentifier ? memoryConfigurationModel.freeze().override(overrides.overrideIdentifier).getValue(key) : memoryConfigurationModel.freeze().getValue(key), - value: this.toReadonlyValue(consolidateConfigurationModel.getValue(key)) + value: consolidateConfigurationModel.getValue(key) }; } @@ -425,6 +423,9 @@ export class Configuration { private getWorkspaceConsolidatedConfiguration(): ConfigurationModel { if (!this._workspaceConsolidatedConfiguration) { this._workspaceConsolidatedConfiguration = this._defaultConfiguration.merge(this._userConfiguration, this._workspaceConfiguration, this._memoryConfiguration); + if (this._freeze) { + this._workspaceConfiguration = this._workspaceConfiguration.freeze(); + } } return this._workspaceConsolidatedConfiguration; } @@ -436,6 +437,9 @@ export class Configuration { const folderConfiguration = this._folderConfigurations.get(folder); if (folderConfiguration) { folderConsolidatedConfiguration = workspaceConsolidateConfiguration.merge(folderConfiguration); + if (this._freeze) { + folderConsolidatedConfiguration = folderConsolidatedConfiguration.freeze(); + } this._foldersConsolidatedConfigurations.set(folder, folderConsolidatedConfiguration); } else { folderConsolidatedConfiguration = workspaceConsolidateConfiguration; @@ -454,22 +458,6 @@ export class Configuration { return null; } - private toReadonlyValue(result: any): any { - const readonlyProxy = (target) => { - return types.isObject(target) ? - new Proxy(target, { - get: (target: any, property: string) => readonlyProxy(target[property]), - set: (target: any, property: string, value: any) => { throw new Error(`TypeError: Cannot assign to read only property '${property}' of object`); }, - deleteProperty: (target: any, property: string) => { throw new Error(`TypeError: Cannot delete read only property '${property}' of object`); }, - defineProperty: (target: any, property: string) => { throw new Error(`TypeError: Cannot define property '${property}' for a readonly object`); }, - setPrototypeOf: (target: any) => { throw new Error(`TypeError: Cannot set prototype for a readonly object`); }, - isExtensible: () => false, - preventExtensions: () => true - }) : target; - }; - return readonlyProxy(result); - } - toData(): IConfigurationData { return { defaults: { @@ -512,21 +500,6 @@ export class Configuration { } return all; } - - public static parse(data: IConfigurationData): Configuration { - const defaultConfiguration = Configuration.parseConfigurationModel(data.defaults); - const userConfiguration = Configuration.parseConfigurationModel(data.user); - const workspaceConfiguration = Configuration.parseConfigurationModel(data.workspace); - const folders: StrictResourceMap = Object.keys(data.folders).reduce((result, key) => { - result.set(URI.parse(key), Configuration.parseConfigurationModel(data.folders[key])); - return result; - }, new StrictResourceMap()); - return new Configuration(defaultConfiguration, userConfiguration, workspaceConfiguration, folders); - } - - private static parseConfigurationModel(model: IConfigurationModel): ConfigurationModel { - return new ConfigurationModel(model.contents, model.keys, model.overrides).freeze(); - } } export class AbstractConfigurationChangeEvent { diff --git a/src/vs/workbench/api/node/extHostConfiguration.ts b/src/vs/workbench/api/node/extHostConfiguration.ts index 415420d4415..c7c10c31fb2 100644 --- a/src/vs/workbench/api/node/extHostConfiguration.ts +++ b/src/vs/workbench/api/node/extHostConfiguration.ts @@ -11,7 +11,7 @@ import * as vscode from 'vscode'; import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace'; import { ExtHostConfigurationShape, MainThreadConfigurationShape, IWorkspaceConfigurationChangeEventData, IConfigurationInitData } from './extHost.protocol'; import { ConfigurationTarget as ExtHostConfigurationTarget } from './extHostTypes'; -import { IConfigurationData, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; +import { IConfigurationData, ConfigurationTarget, IConfigurationModel } from 'vs/platform/configuration/common/configuration'; import { Configuration, ConfigurationChangeEvent, ConfigurationModel } from 'vs/platform/configuration/common/configurationModels'; import { WorkspaceConfigurationChangeEvent } from 'vs/workbench/services/configuration/common/configurationModels'; import { StrictResourceMap } from 'vs/base/common/map'; @@ -50,7 +50,7 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { constructor(proxy: MainThreadConfigurationShape, extHostWorkspace: ExtHostWorkspace, data: IConfigurationInitData) { this._proxy = proxy; this._extHostWorkspace = extHostWorkspace; - this._configuration = Configuration.parse(data); + this._configuration = ExtHostConfiguration.parse(data); this._configurationScopes = data.configurationScopes; } @@ -59,14 +59,14 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { } $acceptConfigurationChanged(data: IConfigurationData, eventData: IWorkspaceConfigurationChangeEventData) { - this._configuration = Configuration.parse(data); + this._configuration = ExtHostConfiguration.parse(data); this._onDidChangeConfiguration.fire(this._toConfigurationChangeEvent(eventData)); } getConfiguration(section?: string, resource?: URI, extensionId?: string): vscode.WorkspaceConfiguration { - const config = section + const config = this._toReadonlyValue(section ? lookUp(this._configuration.getValue(null, { resource }, this._extHostWorkspace.workspace), section) - : this._configuration.getValue(null, { resource }, this._extHostWorkspace.workspace); + : this._configuration.getValue(null, { resource }, this._extHostWorkspace.workspace)); if (section) { this._validateConfigurationAccess(section, resource, extensionId); @@ -157,6 +157,22 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { return Object.freeze(result); } + private _toReadonlyValue(result: any): any { + const readonlyProxy = (target) => { + return isObject(target) ? + new Proxy(target, { + get: (target: any, property: string) => readonlyProxy(target[property]), + set: (target: any, property: string, value: any) => { throw new Error(`TypeError: Cannot assign to read only property '${property}' of object`); }, + deleteProperty: (target: any, property: string) => { throw new Error(`TypeError: Cannot delete read only property '${property}' of object`); }, + defineProperty: (target: any, property: string) => { throw new Error(`TypeError: Cannot define property '${property}' for a readonly object`); }, + setPrototypeOf: (target: any) => { throw new Error(`TypeError: Cannot set prototype for a readonly object`); }, + isExtensible: () => false, + preventExtensions: () => true + }) : target; + }; + return readonlyProxy(result); + } + private _validateConfigurationAccess(key: string, resource: URI, extensionId: string): void { const scope = this._configurationScopes[key]; const extensionIdText = extensionId ? `[${extensionId}] ` : ''; @@ -187,4 +203,19 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { affectsConfiguration: (section: string, resource?: URI) => event.affectsConfiguration(section, resource) }); } + + private static parse(data: IConfigurationData): Configuration { + const defaultConfiguration = ExtHostConfiguration.parseConfigurationModel(data.defaults); + const userConfiguration = ExtHostConfiguration.parseConfigurationModel(data.user); + const workspaceConfiguration = ExtHostConfiguration.parseConfigurationModel(data.workspace); + const folders: StrictResourceMap = Object.keys(data.folders).reduce((result, key) => { + result.set(URI.parse(key), ExtHostConfiguration.parseConfigurationModel(data.folders[key])); + return result; + }, new StrictResourceMap()); + return new Configuration(defaultConfiguration, userConfiguration, workspaceConfiguration, folders, new ConfigurationModel(), new StrictResourceMap(), false); + } + + private static parseConfigurationModel(model: IConfigurationModel): ConfigurationModel { + return new ConfigurationModel(model.contents, model.keys, model.overrides).freeze(); + } } From f5e6fc5fabd7ce522052a3f462c58d9b7b0aba12 Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Tue, 6 Mar 2018 16:26:57 +0100 Subject: [PATCH 115/658] Include user input and NFD glob on Mac (fixes #43691) --- .../services/search/node/ripgrepFileSearch.ts | 21 ++++++++++++++++--- .../services/search/test/node/search.test.ts | 20 ++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/services/search/node/ripgrepFileSearch.ts b/src/vs/workbench/services/search/node/ripgrepFileSearch.ts index acaccc6693a..323ad7940ea 100644 --- a/src/vs/workbench/services/search/node/ripgrepFileSearch.ts +++ b/src/vs/workbench/services/search/node/ripgrepFileSearch.ts @@ -32,14 +32,29 @@ function getRgArgs(config: IRawSearch, folderQuery: IFolderSearch, includePatter // includePattern can't have siblingClauses foldersToIncludeGlobs([folderQuery], includePattern, false).forEach(globArg => { - args.push('-g', anchor(isMac ? normalizeNFD(globArg) : globArg)); + const inclusion = anchor(globArg); + args.push('-g', inclusion); + if (isMac) { + const normalized = normalizeNFD(inclusion); + if (normalized !== inclusion) { + args.push('-g', normalized); + } + } }); let siblingClauses: glob.IExpression; const rgGlobs = foldersToRgExcludeGlobs([folderQuery], excludePattern, undefined, false); - rgGlobs.globArgs - .forEach(rgGlob => args.push('-g', `!${anchor(isMac ? normalizeNFD(rgGlob) : rgGlob)}`)); + rgGlobs.globArgs.forEach(globArg => { + const exclusion = `!${anchor(globArg)}`; + args.push('-g', exclusion); + if (isMac) { + const normalized = normalizeNFD(exclusion); + if (normalized !== exclusion) { + args.push('-g', normalized); + } + } + }); siblingClauses = rgGlobs.siblingClauses; if (folderQuery.disregardIgnoreFiles !== false) { diff --git a/src/vs/workbench/services/search/test/node/search.test.ts b/src/vs/workbench/services/search/test/node/search.test.ts index ed2bc113e36..9aa0a17f54e 100644 --- a/src/vs/workbench/services/search/test/node/search.test.ts +++ b/src/vs/workbench/services/search/test/node/search.test.ts @@ -483,6 +483,26 @@ suite('FileSearchEngine', () => { }); }); + test('Files: *.* include with unicode', function (done: () => void) { + this.timeout(testTimeout); + let engine = new FileSearchEngine({ + folderQueries: ROOT_FOLDER_QUERY, + filePattern: '*.*', + includePattern: { '**/üm laut汉语/*': true } + }); + + let count = 0; + engine.search((result) => { + if (result) { + count++; + } + }, () => { }, (error) => { + assert.ok(!error); + assert.equal(count, 1); + done(); + }); + }); + test('Files: multiroot with exclude', function (done: () => void) { this.timeout(testTimeout); const folderQueries: IFolderSearch[] = [ From f1a8e894c1b72407d2daf86c6175282e052ac5f6 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 16:33:20 +0100 Subject: [PATCH 116/658] fix tsfmt --- build/gulpfile.hygiene.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js index 291a89bc599..f8ab3c128ca 100644 --- a/build/gulpfile.hygiene.js +++ b/build/gulpfile.hygiene.js @@ -196,9 +196,10 @@ function hygiene(some) { this.emit('data', file); }); + const endl = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? '\r\n' : '\n'; const formatting = es.map(function (file, cb) { tsfmt.processString(file.path, file.contents.toString('utf8'), { - verify: true, + verify: false, tsfmt: true, // verbose: true // keep checkJS happy @@ -207,8 +208,15 @@ function hygiene(some) { tsconfig: undefined, tslint: undefined }).then(result => { - if (result.error) { - console.error(result.message); + let original = result.src; + let formatted = result.dest; + + if (endl === '\n') { + formatted = formatted.replace(/\r\n/gm, '\n'); + } + + if (original !== formatted) { + console.error('File not formatted:', file.relative); errorCount++; } cb(null, file); From fb692e1c0abb902275ca8e01f29c20382772e961 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 16:45:01 +0100 Subject: [PATCH 117/658] fix tests --- .../test/electron-browser/extensionsTipsService.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts index 604e99701a1..25e4b0b5fd3 100644 --- a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts +++ b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts @@ -23,7 +23,7 @@ import { Emitter } from 'vs/base/common/event'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { TestTextResourceConfigurationService, TestContextService, TestLifecycleService, TestEnvironmentService } from 'vs/workbench/test/workbenchTestServices'; +import { TestTextResourceConfigurationService, TestContextService, TestLifecycleService, TestEnvironmentService, TestNotificationService } from 'vs/workbench/test/workbenchTestServices'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import URI from 'vs/base/common/uri'; import { testWorkspace } from 'vs/platform/workspace/test/common/testWorkspace'; @@ -47,6 +47,7 @@ import { ITextModel } from 'vs/editor/common/model'; import { IModelService } from 'vs/editor/common/services/modelService'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { INotificationService } from '../../../../../platform/notification/common/notification'; const mockExtensionGallery: IGalleryExtension[] = [ aGalleryExtension('MockExtension1', { @@ -183,6 +184,7 @@ suite('ExtensionsTipsService Test', () => { instantiationService.stub(ILifecycleService, new TestLifecycleService()); testConfigurationService = new TestConfigurationService(); instantiationService.stub(IConfigurationService, testConfigurationService); + instantiationService.stub(INotificationService, new TestNotificationService()); instantiationService.stub(IExtensionManagementService, ExtensionManagementService); instantiationService.stub(IExtensionManagementService, 'onInstallExtension', installEvent.event); instantiationService.stub(IExtensionManagementService, 'onDidInstallExtension', didInstallEvent.event); From 65c6a9fee6d3043a42e1abfca6bb45d6754ad2bc Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 6 Mar 2018 16:40:01 +0100 Subject: [PATCH 118/658] actually use view model sort, #14783 --- .../parts/markers/browser/markersPanel.ts | 1 - .../markers/browser/markersTreeViewer.ts | 10 +----- .../parts/markers/common/markersModel.ts | 32 ++++++++----------- .../markers/test/common/markersModel.test.ts | 16 ++++++++-- 4 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/vs/workbench/parts/markers/browser/markersPanel.ts b/src/vs/workbench/parts/markers/browser/markersPanel.ts index 46d1e4e18e8..0ddd313a538 100644 --- a/src/vs/workbench/parts/markers/browser/markersPanel.ts +++ b/src/vs/workbench/parts/markers/browser/markersPanel.ts @@ -200,7 +200,6 @@ export class MarkersPanel extends Panel { filter: new Viewer.DataFilter(), renderer, controller, - sorter: new Viewer.Sorter(), accessibilityProvider: new Viewer.MarkersTreeAccessibilityProvider(), dnd }, { diff --git a/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts b/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts index ab5b816e836..f58e565e034 100644 --- a/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts +++ b/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts @@ -7,7 +7,7 @@ import { TPromise, Promise } from 'vs/base/common/winjs.base'; import * as dom from 'vs/base/browser/dom'; import * as network from 'vs/base/common/network'; -import { IDataSource, ITree, IRenderer, IAccessibilityProvider, ISorter, IFilter } from 'vs/base/parts/tree/browser/tree'; +import { IDataSource, ITree, IRenderer, IAccessibilityProvider, IFilter } from 'vs/base/parts/tree/browser/tree'; import Severity from 'vs/base/common/severity'; import { CountBadge } from 'vs/base/browser/ui/countBadge/countBadge'; import { FileLabel, ResourceLabel } from 'vs/workbench/browser/labels'; @@ -230,13 +230,5 @@ export class MarkersTreeAccessibilityProvider implements IAccessibilityProvider } return null; } - } -export class Sorter implements ISorter { - - public compare(tree: ITree, element: any, otherElement: any): number { - return MarkersModel.compare(element, otherElement); - } - -} diff --git a/src/vs/workbench/parts/markers/common/markersModel.ts b/src/vs/workbench/parts/markers/common/markersModel.ts index 6fb81114875..268aaa2cdd2 100644 --- a/src/vs/workbench/parts/markers/common/markersModel.ts +++ b/src/vs/workbench/parts/markers/common/markersModel.ts @@ -127,6 +127,7 @@ export class FilterOptions { export class MarkersModel { + private _cachedSortedResources: Resource[]; private _markersByResource: Map; private _filterOptions: FilterOptions; @@ -155,7 +156,10 @@ export class MarkersModel { } public get resources(): Resource[] { - return values(this._markersByResource); + if (!this._cachedSortedResources) { + this._cachedSortedResources = values(this._markersByResource).sort(Resource.compare); + } + return this._cachedSortedResources; } public forEachFilteredResource(callback: (resource: Resource) => any) { @@ -201,6 +205,7 @@ export class MarkersModel { this._markersByResource.set(resource.toString(), this.createResource(resource, markers)); } }); + this._cachedSortedResources = undefined; } public updateFilterOptions(filterOptions: FilterOptions): void { @@ -238,19 +243,20 @@ export class MarkersModel { private createResource(uri: URI, rawMarkers: IMarker[]): Resource { - const markers: Marker[] = []; - const resource = new Resource(uri, markers); - - resource.filteredMarkersCount = 0; - resource.uriMatches = this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, paths.basename(uri.fsPath)) : []; - + let markers: Marker[] = []; + let filteredCount = 0; for (let i = 0; i < rawMarkers.length; i++) { let marker = this.createMarker(rawMarkers[i], i, uri.toString()); markers.push(marker); if (marker.isSelected) { - resource.filteredMarkersCount += 1; + filteredCount += 1; } } + + const resource = new Resource(uri, markers); + resource.filteredMarkersCount = filteredCount; + resource.uriMatches = this._filterOptions.hasFilters() ? FilterOptions._filter(this._filterOptions.filter, paths.basename(uri.fsPath)) : []; + return resource; } @@ -305,14 +311,4 @@ export class MarkersModel { } return Messages.MARKERS_PANEL_NO_PROBLEMS_BUILT; } - - public static compare(a: any, b: any): number { - if (a instanceof Resource && b instanceof Resource) { - return Resource.compare(a, b); - } - if (a instanceof Marker && b instanceof Marker) { - return Marker.compare(a, b); - } - return 0; - } } diff --git a/src/vs/workbench/parts/markers/test/common/markersModel.test.ts b/src/vs/workbench/parts/markers/test/common/markersModel.test.ts index 005aa4146b8..aeefe2c50f3 100644 --- a/src/vs/workbench/parts/markers/test/common/markersModel.test.ts +++ b/src/vs/workbench/parts/markers/test/common/markersModel.test.ts @@ -18,6 +18,16 @@ class TestMarkersModel extends MarkersModel { this.forEachFilteredResource(resource => res.push(resource)); return res; } + + static compare(a: any, b: any): number { + if (a instanceof Resource && b instanceof Resource) { + return Resource.compare(a, b); + } + if (a instanceof Marker && b instanceof Marker) { + return Marker.compare(a, b); + } + return 0; + } } suite('MarkersModel Test', () => { @@ -63,7 +73,7 @@ suite('MarkersModel Test', () => { let marker6 = aMarker('c/res2', Severity.Info); let testObject = new TestMarkersModel([marker1, marker2, marker3, marker4, marker5, marker6]); - let actuals = testObject.filteredResources.sort(MarkersModel.compare); + let actuals = testObject.filteredResources.sort(TestMarkersModel.compare); assert.equal(5, actuals.length); assert.ok(compareResource(actuals[0], 'a/res2')); @@ -82,7 +92,7 @@ suite('MarkersModel Test', () => { let marker6 = aMarker('c/res2'); let testObject = new TestMarkersModel([marker1, marker2, marker3, marker4, marker5, marker6]); - let actuals = testObject.filteredResources.sort(MarkersModel.compare); + let actuals = testObject.filteredResources.sort(TestMarkersModel.compare); assert.equal(5, actuals.length); assert.ok(compareResource(actuals[0], 'a/res1')); @@ -110,7 +120,7 @@ suite('MarkersModel Test', () => { let marker15 = anErrorWithRange(8, 2, 8, 4); let testObject = new TestMarkersModel([marker1, marker2, marker3, marker4, marker5, marker6, marker7, marker8, marker9, marker10, marker11, marker12, marker13, marker14, marker15]); - let actuals = testObject.filteredResources[0].markers.sort(MarkersModel.compare); + let actuals = testObject.filteredResources[0].markers.sort(TestMarkersModel.compare); assert.equal(actuals[0].raw, marker6); assert.equal(actuals[1].raw, marker14); From 4130f9286199150e9e49b113258717af6e42ab43 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 6 Mar 2018 17:28:22 +0100 Subject: [PATCH 119/658] stop using any --- src/vs/workbench/parts/markers/browser/markersPanel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/markers/browser/markersPanel.ts b/src/vs/workbench/parts/markers/browser/markersPanel.ts index 0ddd313a538..273330a09b9 100644 --- a/src/vs/workbench/parts/markers/browser/markersPanel.ts +++ b/src/vs/workbench/parts/markers/browser/markersPanel.ts @@ -346,7 +346,7 @@ export class MarkersPanel extends Panel { let selectedElement = this.tree.getSelection(); if (selectedElement && selectedElement.length > 0) { if (selectedElement[0] instanceof Marker) { - if (resource.uri.toString() === selectedElement[0].marker.resource.toString()) { + if (resource.uri.toString() === (selectedElement[0]).raw.resource.toString()) { return true; } } From df78b782c8589aa4010c8a65ddcfba6835244254 Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 6 Mar 2018 17:30:11 +0100 Subject: [PATCH 120/658] debug: more precise place to send activation event 'onDebugInitialConfigurations' fixes #45089 --- .../debugConfigurationManager.ts | 166 +++++++++--------- 1 file changed, 84 insertions(+), 82 deletions(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts index ead08168dd3..1e94464a7e8 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts @@ -239,8 +239,7 @@ export class ConfigurationManager implements IConfigurationManager { @IInstantiationService private instantiationService: IInstantiationService, @ICommandService private commandService: ICommandService, @IStorageService private storageService: IStorageService, - @ILifecycleService lifecycleService: ILifecycleService, - @IExtensionService private extensionService: IExtensionService + @ILifecycleService lifecycleService: ILifecycleService ) { this.providers = []; this.adapters = []; @@ -457,43 +456,41 @@ export class ConfigurationManager implements IConfigurationManager { } public guessAdapter(type?: string): TPromise { - return this.extensionService.activateByEvent('onDebugInitialConfigurations').then(() => this.extensionService.activateByEvent('onDebug').then(() => { - if (type) { - const adapter = this.getAdapter(type); - return TPromise.as(adapter); - } + if (type) { + const adapter = this.getAdapter(type); + return TPromise.as(adapter); + } - const editor = this.editorService.getActiveEditor(); - let candidates: Adapter[]; - if (editor) { - const codeEditor = editor.getControl(); - if (isCodeEditor(codeEditor)) { - const model = codeEditor.getModel(); - const language = model ? model.getLanguageIdentifier().language : undefined; - const adapters = this.adapters.filter(a => a.languages && a.languages.indexOf(language) >= 0); - if (adapters.length === 1) { - return TPromise.as(adapters[0]); - } - if (adapters.length > 1) { - candidates = adapters; - } + const editor = this.editorService.getActiveEditor(); + let candidates: Adapter[]; + if (editor) { + const codeEditor = editor.getControl(); + if (isCodeEditor(codeEditor)) { + const model = codeEditor.getModel(); + const language = model ? model.getLanguageIdentifier().language : undefined; + const adapters = this.adapters.filter(a => a.languages && a.languages.indexOf(language) >= 0); + if (adapters.length === 1) { + return TPromise.as(adapters[0]); + } + if (adapters.length > 1) { + candidates = adapters; } } + } - if (!candidates) { - candidates = this.adapters.filter(a => a.hasInitialConfiguration() || a.hasConfigurationProvider); - } - return this.quickOpenService.pick([...candidates, { label: 'More...', separator: { border: true } }], { placeHolder: nls.localize('selectDebug', "Select Environment") }) - .then(picked => { - if (picked instanceof Adapter) { - return picked; - } - if (picked) { - this.commandService.executeCommand('debug.installAdditionalDebuggers'); - } - return undefined; - }); - })); + if (!candidates) { + candidates = this.adapters.filter(a => a.hasInitialConfiguration() || a.hasConfigurationProvider); + } + return this.quickOpenService.pick([...candidates, { label: 'More...', separator: { border: true } }], { placeHolder: nls.localize('selectDebug', "Select Environment") }) + .then(picked => { + if (picked instanceof Adapter) { + return picked; + } + if (picked) { + this.commandService.executeCommand('debug.installAdditionalDebuggers'); + } + return undefined; + }); } private store(): void { @@ -517,7 +514,8 @@ class Launch implements ILaunch { @IWorkbenchEditorService protected editorService: IWorkbenchEditorService, @IConfigurationService protected configurationService: IConfigurationService, @IConfigurationResolverService private configurationResolverService: IConfigurationResolverService, - @IWorkspaceContextService protected contextService: IWorkspaceContextService + @IWorkspaceContextService protected contextService: IWorkspaceContextService, + @IExtensionService private extensionService: IExtensionService ) { // noop } @@ -610,58 +608,60 @@ class Launch implements ILaunch { } public openConfigFile(sideBySide: boolean, type?: string): TPromise { - const resource = this.uri; - let pinned = false; + return this.extensionService.activateByEvent('onDebugInitialConfigurations').then(() => this.extensionService.activateByEvent('onDebug').then(() => { + const resource = this.uri; + let pinned = false; - return this.fileService.resolveContent(resource).then(content => content.value, err => { + return this.fileService.resolveContent(resource).then(content => content.value, err => { - // launch.json not found: create one by collecting launch configs from debugConfigProviders + // launch.json not found: create one by collecting launch configs from debugConfigProviders - return this.configurationManager.guessAdapter(type).then(adapter => { - if (adapter) { - return this.configurationManager.provideDebugConfigurations(this.workspace.uri, adapter.type).then(initialConfigs => { - return adapter.getInitialConfigurationContent(initialConfigs); + return this.configurationManager.guessAdapter(type).then(adapter => { + if (adapter) { + return this.configurationManager.provideDebugConfigurations(this.workspace.uri, adapter.type).then(initialConfigs => { + return adapter.getInitialConfigurationContent(initialConfigs); + }); + } else { + return undefined; + } + }).then(content => { + + if (!content) { + return undefined; + } + + pinned = true; // pin only if config file is created #8727 + return this.fileService.updateContent(resource, content).then(() => { + // convert string into IContent; see #32135 + return content; }); - } else { - return undefined; - } + }); }).then(content => { - if (!content) { return undefined; } - - pinned = true; // pin only if config file is created #8727 - return this.fileService.updateContent(resource, content).then(() => { - // convert string into IContent; see #32135 - return content; - }); - }); - }).then(content => { - if (!content) { - return undefined; - } - const index = content.indexOf(`"${this.configurationManager.selectedConfiguration.name}"`); - let startLineNumber = 1; - for (let i = 0; i < index; i++) { - if (content.charAt(i) === '\n') { - startLineNumber++; + const index = content.indexOf(`"${this.configurationManager.selectedConfiguration.name}"`); + let startLineNumber = 1; + for (let i = 0; i < index; i++) { + if (content.charAt(i) === '\n') { + startLineNumber++; + } } - } - const selection = startLineNumber > 1 ? { startLineNumber, startColumn: 4 } : undefined; + const selection = startLineNumber > 1 ? { startLineNumber, startColumn: 4 } : undefined; - return this.editorService.openEditor({ - resource: resource, - options: { - forceOpen: true, - selection, - pinned, - revealIfVisible: true - }, - }, sideBySide); - }, (error) => { - throw new Error(nls.localize('DebugConfig.failed', "Unable to create 'launch.json' file inside the '.vscode' folder ({0}).", error)); - }); + return this.editorService.openEditor({ + resource: resource, + options: { + forceOpen: true, + selection, + pinned, + revealIfVisible: true + }, + }, sideBySide); + }, (error) => { + throw new Error(nls.localize('DebugConfig.failed', "Unable to create 'launch.json' file inside the '.vscode' folder ({0}).", error)); + }); + })); } } @@ -673,9 +673,10 @@ class WorkspaceLaunch extends Launch implements ILaunch { @IWorkbenchEditorService editorService: IWorkbenchEditorService, @IConfigurationService configurationService: IConfigurationService, @IConfigurationResolverService configurationResolverService: IConfigurationResolverService, - @IWorkspaceContextService contextService: IWorkspaceContextService + @IWorkspaceContextService contextService: IWorkspaceContextService, + @IExtensionService extensionService: IExtensionService ) { - super(configurationManager, undefined, fileService, editorService, configurationService, configurationResolverService, contextService); + super(configurationManager, undefined, fileService, editorService, configurationService, configurationResolverService, contextService, extensionService); } get uri(): uri { @@ -704,9 +705,10 @@ class UserLaunch extends Launch implements ILaunch { @IConfigurationService configurationService: IConfigurationService, @IConfigurationResolverService configurationResolverService: IConfigurationResolverService, @IPreferencesService private preferencesService: IPreferencesService, - @IWorkspaceContextService contextService: IWorkspaceContextService + @IWorkspaceContextService contextService: IWorkspaceContextService, + @IExtensionService extensionService: IExtensionService ) { - super(configurationManager, undefined, fileService, editorService, configurationService, configurationResolverService, contextService); + super(configurationManager, undefined, fileService, editorService, configurationService, configurationResolverService, contextService, extensionService); } get uri(): uri { From 86758e1df7b3d7cb58e98bdac8cef9b873686f97 Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 6 Mar 2018 17:52:16 +0100 Subject: [PATCH 121/658] debug: better updating of debug toolbar fixes #45062 --- .../parts/debug/browser/debugActionsWidget.ts | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugActionsWidget.ts b/src/vs/workbench/parts/debug/browser/debugActionsWidget.ts index 43fed391592..8eb08ca23f2 100644 --- a/src/vs/workbench/parts/debug/browser/debugActionsWidget.ts +++ b/src/vs/workbench/parts/debug/browser/debugActionsWidget.ts @@ -29,6 +29,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { INotificationService } from 'vs/platform/notification/common/notification'; +import { RunOnceScheduler } from 'vs/base/common/async'; const $ = builder.$; const DEBUG_ACTIONS_WIDGET_POSITION_KEY = 'debug.actionswidgetposition'; @@ -51,6 +52,7 @@ export class DebugActionsWidget extends Themable implements IWorkbenchContributi private actionBar: ActionBar; private allActions: AbstractDebugAction[]; private activeActions: AbstractDebugAction[]; + private updateScheduler: RunOnceScheduler; private isVisible: boolean; private isBuilt: boolean; @@ -88,6 +90,21 @@ export class DebugActionsWidget extends Themable implements IWorkbenchContributi } }); + this.updateScheduler = new RunOnceScheduler(() => { + const state = this.debugService.state; + if (state === State.Inactive || state === State.Initializing || this.configurationService.getValue('debug').hideActionBar) { + return this.hide(); + } + + const actions = this.getActions(); + if (!arrays.equals(actions, this.activeActions, (first, second) => first.id === second.id)) { + this.actionBar.clear(); + this.actionBar.push(actions, { icon: true, label: false }); + this.activeActions = actions; + } + this.show(); + }, 20); + this.updateStyles(); this.toUnbind.push(this.actionBar); @@ -98,7 +115,8 @@ export class DebugActionsWidget extends Themable implements IWorkbenchContributi } private registerListeners(): void { - this.toUnbind.push(this.debugService.onDidChangeState(state => this.update(state))); + this.toUnbind.push(this.debugService.onDidChangeState(() => this.updateScheduler.schedule())); + this.toUnbind.push(this.debugService.getViewModel().onDidFocusProcess(() => this.updateScheduler.schedule())); this.toUnbind.push(this.configurationService.onDidChangeConfiguration(e => this.onDidConfigurationChange(e))); this.toUnbind.push(this.actionBar.actionRunner.onDidRun((e: IRunEvent) => { // check for error @@ -200,24 +218,10 @@ export class DebugActionsWidget extends Themable implements IWorkbenchContributi private onDidConfigurationChange(event: IConfigurationChangeEvent): void { if (event.affectsConfiguration('debug.hideActionBar')) { - this.update(this.debugService.state); + this.updateScheduler.schedule(); } } - private update(state: State): void { - if (state === State.Inactive || state === State.Initializing || this.configurationService.getValue('debug').hideActionBar) { - return this.hide(); - } - - const actions = this.getActions(); - if (!arrays.equals(actions, this.activeActions, (first, second) => first.id === second.id)) { - this.actionBar.clear(); - this.actionBar.push(actions, { icon: true, label: false }); - this.activeActions = actions; - } - this.show(); - } - private show(): void { if (this.isVisible) { return; From 100e9fc4e7748808249bc6895e1d10eb5f520add Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 18:00:34 +0100 Subject: [PATCH 122/658] fix line endings in monaco.d.ts --- build/lib/compilation.js | 1 + build/lib/compilation.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/build/lib/compilation.js b/build/lib/compilation.js index 837202d2126..61c178b392e 100644 --- a/build/lib/compilation.js +++ b/build/lib/compilation.js @@ -27,6 +27,7 @@ if (process.env['VSCODE_NO_SOURCEMAP']) { } options.rootDir = rootDir; options.sourceRoot = util.toFileUri(rootDir); +options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 'CRLF' : 'LF'; function createCompile(build, emitError) { var opts = _.clone(options); opts.inlineSources = !!build; diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts index 3d64fe6f885..cedcb4155b6 100644 --- a/build/lib/compilation.ts +++ b/build/lib/compilation.ts @@ -30,6 +30,7 @@ if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry } options.rootDir = rootDir; options.sourceRoot = util.toFileUri(rootDir); +options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 'CRLF' : 'LF'; function createCompile(build: boolean, emitError?: boolean): (token?: util.ICancellationToken) => NodeJS.ReadWriteStream { const opts = _.clone(options); From d527e92cd62a1a64a3170fbe5e87fa1d1bcc8c67 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 22 Feb 2018 19:04:42 -0800 Subject: [PATCH 123/658] Improve Call Stack performance with many threads, fixes #44248 --- .../parts/debug/electron-browser/debugService.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index c67c9fc6f9d..8b4a2572fa7 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -55,6 +55,7 @@ import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IAction, Action } from 'vs/base/common/actions'; import { normalizeDriveLetter } from 'vs/base/common/labels'; +import { RunOnceScheduler } from 'vs/base/common/async'; const DEBUG_BREAKPOINTS_KEY = 'debug.breakpoint'; const DEBUG_BREAKPOINTS_ACTIVATED_KEY = 'debug.breakpointactivated'; @@ -83,6 +84,7 @@ export class DebugService implements debug.IDebugService { private launchJsonChanged: boolean; private firstSessionStart: boolean; private previousState: debug.State; + private fetchThreadsSchedulers: Map; constructor( @IStorageService private storageService: IStorageService, @@ -115,6 +117,7 @@ export class DebugService implements debug.IDebugService { this._onDidCustomEvent = new Emitter(); this.sessionStates = new Map(); this.allProcesses = new Map(); + this.fetchThreadsSchedulers = new Map(); this.configurationManager = this.instantiationService.createInstance(ConfigurationManager); this.toDispose.push(this.configurationManager); @@ -302,7 +305,18 @@ export class DebugService implements debug.IDebugService { this.toDisposeOnSessionEnd.get(session.getId()).push(session.onDidThread(event => { if (event.body.reason === 'started') { - this.fetchThreads(session).done(undefined, errors.onUnexpectedError); + // debounce to reduce threadsRequest frequency and improve performance + let scheduler = this.fetchThreadsSchedulers.get(session.getId()); + if (!scheduler) { + scheduler = new RunOnceScheduler(() => { + this.fetchThreads(session).done(undefined, errors.onUnexpectedError); + }, 100); + this.fetchThreadsSchedulers.set(session.getId(), scheduler); + this.toDisposeOnSessionEnd.get(session.getId()).push(scheduler); + } + if (!scheduler.isScheduled()) { + scheduler.schedule(); + } } else if (event.body.reason === 'exited') { this.model.clearThreads(session.getId(), true, event.body.threadId); } From 06e72b846fc227eca11dabb67578cd217cc83f58 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 5 Mar 2018 20:03:54 -0800 Subject: [PATCH 124/658] Fix markdown preview file links with spaces Fixes #44817 --- extensions/markdown/src/commands/openDocumentLink.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/extensions/markdown/src/commands/openDocumentLink.ts b/extensions/markdown/src/commands/openDocumentLink.ts index 00a976b99d8..79e5e6c5b2a 100644 --- a/extensions/markdown/src/commands/openDocumentLink.ts +++ b/extensions/markdown/src/commands/openDocumentLink.ts @@ -33,11 +33,12 @@ export class OpenDocumentLinkCommand implements Command { ) { } public execute(args: OpenDocumentLinkArgs) { - return this.tryOpen(args.path, args).catch(() => { - if (path.extname(args.path) === '') { - return this.tryOpen(args.path + '.md', args); + const p = decodeURIComponent(args.path); + return this.tryOpen(p, args).catch(() => { + if (path.extname(p) === '') { + return this.tryOpen(p + '.md', args); } - const resource = vscode.Uri.file(args.path); + const resource = vscode.Uri.file(p); return Promise.resolve(void 0) .then(() => vscode.commands.executeCommand('vscode.open', resource)) .then(() => void 0); From edf1c4baaa32f7cadb8ed7cd4c06036f4f73f6e1 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 6 Mar 2018 19:52:21 +0100 Subject: [PATCH 125/658] #43813 Extract to temp folder and rename --- .../node/extensionManagementService.ts | 68 +++++++++---------- 1 file changed, 31 insertions(+), 37 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index ce3d96615ac..71a17e838ef 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -25,7 +25,7 @@ import { import { getGalleryExtensionIdFromLocal, adoptToGalleryExtensionId, areSameExtensions, getGalleryExtensionId, groupByExtension, getMaliciousExtensionsSet, getLocalExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { localizeManifest } from '../common/extensionNls'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { Limiter } from 'vs/base/common/async'; +import { Limiter, always } from 'vs/base/common/async'; import Event, { Emitter } from 'vs/base/common/event'; import * as semver from 'semver'; import URI from 'vs/base/common/uri'; @@ -49,8 +49,6 @@ const INSTALL_ERROR_GALLERY = 'gallery'; const INSTALL_ERROR_LOCAL = 'local'; const INSTALL_ERROR_EXTRACTING = 'extracting'; const INSTALL_ERROR_DELETING = 'deleting'; -const INSTALL_ERROR_READING_EXTENSION_FROM_DISK = 'readingExtension'; -const INSTALL_ERROR_SAVING_METADATA = 'savingMetadata'; const INSTALL_ERROR_UNKNOWN = 'unknown'; export class ExtensionManagementError extends Error { @@ -411,43 +409,39 @@ export class ExtensionManagementService extends Disposable implements IExtension } private extractAndInstall({ zipPath, id, metadata }: InstallableExtension): TPromise { - const extensionPath = path.join(this.extensionsPath, id); - return pfs.rimraf(extensionPath) - .then(() => { - this.logService.trace(`Started extracting the extension from ${zipPath} to ${extensionPath}`); - return extract(zipPath, extensionPath, { sourcePath: 'extension', overwrite: true }) - .then( - () => { - this.logService.info(`Extracted extension to ${extensionPath}:`, id); - return this.completeInstall(id, extensionPath, metadata); - }, - e => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING))) - .then(null, e => { - this.logService.info('Deleting the extracted extension', id); - return pfs.rimraf(extensionPath).then(() => TPromise.wrapError(e), () => TPromise.wrapError(e)); - }); - }, e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); + const extractPath = path.join(this.extensionsPath, `.${id}`); // Extract to temp path + return this.extract(id, zipPath, extractPath, { sourcePath: 'extension', overwrite: true }) + .then(() => this.completeInstall(id, extractPath)) + .then(() => this.scanExtension(id, this.extensionsPath, LocalExtensionType.User)) + .then(local => { + if (metadata) { + local.metadata = metadata; + return this.saveMetadataForLocalExtension(local); + } + return local; + }); } - private completeInstall(id: string, extensionPath: string, metadata: IGalleryMetadata): TPromise { - return TPromise.join([readManifest(extensionPath), pfs.readdir(extensionPath)]) - .then(null, e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_READING_EXTENSION_FROM_DISK))) - .then(([{ manifest }, children]) => { - const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0]; - const readmeUrl = readme ? URI.file(path.join(extensionPath, readme)).toString() : null; - const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0]; - const changelogUrl = changelog ? URI.file(path.join(extensionPath, changelog)).toString() : null; - const type = LocalExtensionType.User; - const identifier = { id, uuid: metadata ? metadata.id : null }; + private extract(id: string, zipPath: string, extractPath: string, options: any): TPromise { + this.logService.trace(`Started extracting the extension from ${zipPath} to ${extractPath}`); + return pfs.rimraf(extractPath) + .then( + () => extract(zipPath, extractPath, options) + .then( + () => this.logService.info(`Extracted extension to ${extractPath}:`, id), + e => always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), + e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); + } - const local: ILocalExtension = { type, identifier, manifest, metadata, path: extensionPath, readmeUrl, changelogUrl }; - - this.logService.trace(`Updating metadata of the extension:`, id); - return this.saveMetadataForLocalExtension(local) - .then(() => { - this.logService.info(`Updated metadata of the extension:`, id); - return local; - }, e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_SAVING_METADATA))); + private completeInstall(id: string, extractPath: string): TPromise { + return pfs.rename(extractPath, path.join(this.extensionsPath, id)) + .then( + () => this.logService.info('Installation compelted.', id), + e => { + this.logService.info('Deleting the extracted extension', id); + return always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(e)); }); } From 8d812a315ac62c541de6314e32e870f1ed3f517d Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 6 Mar 2018 20:11:53 +0100 Subject: [PATCH 126/658] #43813 Do not consider user extensions starting with `.` --- .../node/extensionManagementService.ts | 3 +++ .../services/extensions/node/extensionPoints.ts | 12 +++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 71a17e838ef..6c1d2abb5e5 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -716,6 +716,9 @@ export class ExtensionManagementService extends Disposable implements IExtension } private scanExtension(folderName: string, root: string, type: LocalExtensionType): TPromise { + if (type === LocalExtensionType.User && folderName.indexOf('.') === 0) { // Do not consider user exension folder starting with `.` + return TPromise.as(null); + } const extensionPath = path.join(root, folderName); return pfs.readdir(extensionPath) .then(children => readManifest(extensionPath) diff --git a/src/vs/workbench/services/extensions/node/extensionPoints.ts b/src/vs/workbench/services/extensions/node/extensionPoints.ts index 351532c46d1..cdcc36031bc 100644 --- a/src/vs/workbench/services/extensions/node/extensionPoints.ts +++ b/src/vs/workbench/services/extensions/node/extensionPoints.ts @@ -546,11 +546,13 @@ export class ExtensionScanner { const gallery: IExtensionReference[] = []; refs.forEach(ref => { - const { id, version } = getIdAndVersionFromLocalExtensionId(ref.name); - if (!id || !version) { - nonGallery.push(ref); - } else { - gallery.push(ref); + if (ref.name.indexOf('.') !== 0) { // Do not consider user extension folder starting with `.` + const { id, version } = getIdAndVersionFromLocalExtensionId(ref.name); + if (!id || !version) { + nonGallery.push(ref); + } else { + gallery.push(ref); + } } }); refs = [...nonGallery, ...gallery]; From a5ecf9d363cbe8c4bcc564fd8c40ad9c3e68fde5 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Tue, 6 Mar 2018 21:12:31 +0100 Subject: [PATCH 127/658] Fixes #3221: Task runner problemMatcher could use an origin or source field --- extensions/less/package.json | 1 + extensions/typescript/package.json | 2 + .../parts/tasks/common/problemMatcher.ts | 50 +++++++++++++++---- 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/extensions/less/package.json b/extensions/less/package.json index 147a8c1a002..20808a28527 100644 --- a/extensions/less/package.json +++ b/extensions/less/package.json @@ -26,6 +26,7 @@ "name": "lessc", "label": "Lessc compiler", "owner": "lessc", + "source": "less", "fileLocation": "absolute", "pattern": { "regexp": "(.*)\\sin\\s(.*)\\son line\\s(\\d+),\\scolumn\\s(\\d+)", diff --git a/extensions/typescript/package.json b/extensions/typescript/package.json index b89cf0654bd..efac422b8ad 100644 --- a/extensions/typescript/package.json +++ b/extensions/typescript/package.json @@ -552,6 +552,7 @@ "name": "tsc", "label": "%typescript.problemMatchers.tsc.label%", "owner": "typescript", + "source": "ts", "applyTo": "closedDocuments", "fileLocation": [ "relative", @@ -563,6 +564,7 @@ "name": "tsc-watch", "label": "%typescript.problemMatchers.tscWatch.label%", "owner": "typescript", + "source": "ts", "applyTo": "closedDocuments", "fileLocation": [ "relative", diff --git a/src/vs/workbench/parts/tasks/common/problemMatcher.ts b/src/vs/workbench/parts/tasks/common/problemMatcher.ts index 813877737db..4f08fc9e089 100644 --- a/src/vs/workbench/parts/tasks/common/problemMatcher.ts +++ b/src/vs/workbench/parts/tasks/common/problemMatcher.ts @@ -127,6 +127,7 @@ export module ApplyToKind { export interface ProblemMatcher { owner: string; + source?: string; applyTo: ApplyToKind; fileLocation: FileLocationKind; filePrefix?: string; @@ -278,9 +279,12 @@ abstract class AbstractLineMatcher implements ILineMatcher { endColumn: location.endCharacter, message: data.message }; - if (!Types.isUndefined(data.code)) { + if (data.code !== void 0) { marker.code = data.code; } + if (this.matcher.source !== void 0) { + marker.source = this.matcher.source; + } return { description: this.matcher, resource: this.getResource(data.file), @@ -638,21 +642,27 @@ export namespace Config { export interface ProblemMatcher { /** - * The name of a base problem matcher to use. If specified the - * base problem matcher will be used as a template and properties - * specified here will replace properties of the base problem - * matcher - */ + * The name of a base problem matcher to use. If specified the + * base problem matcher will be used as a template and properties + * specified here will replace properties of the base problem + * matcher + */ base?: string; /** - * The owner of the produced VSCode problem. This is typically - * the identifier of a VSCode language service if the problems are - * to be merged with the one produced by the language service - * or a generated internal id. Defaults to the generated internal id. - */ + * The owner of the produced VSCode problem. This is typically + * the identifier of a VSCode language service if the problems are + * to be merged with the one produced by the language service + * or a generated internal id. Defaults to the generated internal id. + */ owner?: string; + /** + * A human-readable string describing the source of this problem. + * E.g. 'typescript' or 'super lint'. + */ + source?: string; + /** * Specifies to which kind of documents the problems found by this * matcher are applied. Valid values are: @@ -1240,6 +1250,7 @@ export class ProblemMatcherParser extends Parser { let result: ProblemMatcher = null; let owner = description.owner ? description.owner : UUID.generateUuid(); + let source = Types.isString(description.source) ? description.source : undefined; let applyTo = Types.isString(description.applyTo) ? ApplyToKind.fromString(description.applyTo) : ApplyToKind.allDocuments; if (!applyTo) { applyTo = ApplyToKind.allDocuments; @@ -1289,6 +1300,9 @@ export class ProblemMatcherParser extends Parser { if (description.owner) { result.owner = owner; } + if (source) { + result.source = source; + } if (fileLocation) { result.fileLocation = fileLocation; } @@ -1310,6 +1324,9 @@ export class ProblemMatcherParser extends Parser { fileLocation: fileLocation, pattern: pattern, }; + if (source) { + result.source = source; + } if (filePrefix) { result.filePrefix = filePrefix; } @@ -1457,6 +1474,10 @@ export namespace Schemas { type: 'string', description: localize('ProblemMatcherSchema.owner', 'The owner of the problem inside Code. Can be omitted if base is specified. Defaults to \'external\' if omitted and base is not specified.') }, + source: { + type: 'string', + description: localize('ProblemMatcherSchema.source', 'A human-readable string describing the source of this diagnostic, e.g. \'typescript\' or \'super lint\'.') + }, severity: { type: 'string', enum: ['error', 'warning', 'info'], @@ -1646,6 +1667,7 @@ class ProblemMatcherRegistryImpl implements IProblemMatcherRegistry { label: localize('lessCompile', 'Less problems'), deprecated: true, owner: 'lessCompile', + source: 'less', applyTo: ApplyToKind.allDocuments, fileLocation: FileLocationKind.Absolute, pattern: ProblemPatternRegistry.get('lessCompile'), @@ -1656,6 +1678,7 @@ class ProblemMatcherRegistryImpl implements IProblemMatcherRegistry { name: 'gulp-tsc', label: localize('gulp-tsc', 'Gulp TSC Problems'), owner: 'typescript', + source: 'ts', applyTo: ApplyToKind.closedDocuments, fileLocation: FileLocationKind.Relative, filePrefix: '${workspaceFolder}', @@ -1666,6 +1689,7 @@ class ProblemMatcherRegistryImpl implements IProblemMatcherRegistry { name: 'jshint', label: localize('jshint', 'JSHint problems'), owner: 'jshint', + source: 'jshint', applyTo: ApplyToKind.allDocuments, fileLocation: FileLocationKind.Absolute, pattern: ProblemPatternRegistry.get('jshint') @@ -1675,6 +1699,7 @@ class ProblemMatcherRegistryImpl implements IProblemMatcherRegistry { name: 'jshint-stylish', label: localize('jshint-stylish', 'JSHint stylish problems'), owner: 'jshint', + source: 'jshint', applyTo: ApplyToKind.allDocuments, fileLocation: FileLocationKind.Absolute, pattern: ProblemPatternRegistry.get('jshint-stylish') @@ -1684,6 +1709,7 @@ class ProblemMatcherRegistryImpl implements IProblemMatcherRegistry { name: 'eslint-compact', label: localize('eslint-compact', 'ESLint compact problems'), owner: 'eslint', + source: 'eslint', applyTo: ApplyToKind.allDocuments, fileLocation: FileLocationKind.Absolute, filePrefix: '${workspaceFolder}', @@ -1694,6 +1720,7 @@ class ProblemMatcherRegistryImpl implements IProblemMatcherRegistry { name: 'eslint-stylish', label: localize('eslint-stylish', 'ESLint stylish problems'), owner: 'eslint', + source: 'eslint', applyTo: ApplyToKind.allDocuments, fileLocation: FileLocationKind.Absolute, pattern: ProblemPatternRegistry.get('eslint-stylish') @@ -1703,6 +1730,7 @@ class ProblemMatcherRegistryImpl implements IProblemMatcherRegistry { name: 'go', label: localize('go', 'Go problems'), owner: 'go', + source: 'go', applyTo: ApplyToKind.allDocuments, fileLocation: FileLocationKind.Relative, filePrefix: '${workspaceFolder}', From 1241e55211d450cc442449966a93ceda9ebe3724 Mon Sep 17 00:00:00 2001 From: Cherry Wang Date: Tue, 6 Mar 2018 12:43:13 -0800 Subject: [PATCH 128/658] Debug icon consistensy pass --- .../parts/debug/browser/media/add-focus.svg | 2 +- .../parts/debug/browser/media/add-inverse.svg | 2 +- .../parts/debug/browser/media/add.svg | 2 +- .../media/breakpoint-conditional-dark.svg | 11 +---------- ...breakpoint-conditional-disabled-inverse.svg | 1 + .../media/breakpoint-conditional-disabled.svg | 1 + ...eakpoint-conditional-unverified-inverse.svg | 1 + .../breakpoint-conditional-unverified.svg | 1 + .../browser/media/breakpoint-conditional.svg | 11 +---------- .../debug/browser/media/breakpoint-dark.svg | 2 +- .../browser/media/breakpoint-disabled-dark.svg | 2 +- .../browser/media/breakpoint-disabled.svg | 2 +- .../browser/media/breakpoint-function-dark.svg | 2 +- .../breakpoint-function-disabled-dark.svg | 2 +- .../media/breakpoint-function-disabled.svg | 2 +- .../breakpoint-function-unverified-dark.svg | 2 +- .../media/breakpoint-function-unverified.svg | 2 +- .../browser/media/breakpoint-function.svg | 2 +- .../debug/browser/media/breakpoint-hint.svg | 2 +- .../media/breakpoint-log-disabled-inverse.svg | 1 + .../browser/media/breakpoint-log-disabled.svg | 1 + .../browser/media/breakpoint-log-inverse.svg | 1 + .../breakpoint-log-unverified-inverse.svg | 1 + .../media/breakpoint-log-unverified.svg | 1 + .../debug/browser/media/breakpoint-log.svg | 1 + .../media/breakpoint-unsupported-dark.svg | 18 +----------------- .../browser/media/breakpoint-unsupported.svg | 18 +----------------- .../media/breakpoint-unverified-dark.svg | 2 +- .../browser/media/breakpoint-unverified.svg | 2 +- .../parts/debug/browser/media/breakpoint.svg | 2 +- .../media/breakpoints-activate-inverse.svg | 2 +- .../browser/media/breakpoints-activate.svg | 2 +- .../debug/browser/media/clear-repl-inverse.svg | 2 +- .../parts/debug/browser/media/clear-repl.svg | 2 +- .../debug/browser/media/configure-inverse.svg | 2 +- .../parts/debug/browser/media/configure.svg | 2 +- .../debug/browser/media/continue-inverse.svg | 4 +--- .../parts/debug/browser/media/continue.svg | 4 +--- .../media/current-and-breakpoint-inverse.svg | 1 + .../browser/media/current-and-breakpoint.svg | 2 +- .../browser/media/current-arrow-inverse.svg | 1 + .../debug/browser/media/current-arrow.svg | 2 +- .../parts/debug/browser/media/debug-dark.svg | 2 +- .../debug/browser/media/disconnect-inverse.svg | 2 +- .../parts/debug/browser/media/disconnect.svg | 2 +- .../parts/debug/browser/media/drag.svg | 9 +-------- .../debug/browser/media/pause-inverse.svg | 2 +- .../parts/debug/browser/media/pause.svg | 2 +- .../debug/browser/media/remove-all-inverse.svg | 2 +- .../parts/debug/browser/media/remove-all.svg | 2 +- .../parts/debug/browser/media/remove-focus.svg | 2 +- .../debug/browser/media/remove-inverse.svg | 2 +- .../parts/debug/browser/media/remove.svg | 2 +- .../parts/debug/browser/media/repl-inverse.svg | 2 +- .../parts/debug/browser/media/repl.svg | 2 +- .../debug/browser/media/restart-inverse.svg | 2 +- .../parts/debug/browser/media/restart.svg | 2 +- .../media/stackframe-and-breakpoint-dark.svg | 2 +- .../media/stackframe-and-breakpoint.svg | 2 +- .../browser/media/stackframe-arrow-dark.svg | 2 +- .../debug/browser/media/stackframe-arrow.svg | 2 +- .../debug/browser/media/step-into-inverse.svg | 2 +- .../parts/debug/browser/media/step-into.svg | 2 +- .../debug/browser/media/step-out-inverse.svg | 2 +- .../parts/debug/browser/media/step-out.svg | 2 +- .../debug/browser/media/step-over-inverse.svg | 2 +- .../parts/debug/browser/media/step-over.svg | 2 +- .../parts/debug/browser/media/stop-inverse.svg | 2 +- .../parts/debug/browser/media/stop.svg | 2 +- 69 files changed, 69 insertions(+), 118 deletions(-) create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled-inverse.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified-inverse.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled-inverse.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-inverse.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified-inverse.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/current-and-breakpoint-inverse.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/current-arrow-inverse.svg diff --git a/src/vs/workbench/parts/debug/browser/media/add-focus.svg b/src/vs/workbench/parts/debug/browser/media/add-focus.svg index 5e9f5851e8b..769bd3b12bd 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-focus.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add-focus \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg index 3475c1e1963..7d3fd77ffd6 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add.svg b/src/vs/workbench/parts/debug/browser/media/add.svg index bdecdb0e45b..2b679663e80 100644 --- a/src/vs/workbench/parts/debug/browser/media/add.svg +++ b/src/vs/workbench/parts/debug/browser/media/add.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg index 720679e07e8..f3ac963c89f 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg @@ -1,10 +1 @@ - - - - - - +breakpoint-conditional \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled-inverse.svg new file mode 100644 index 00000000000..0ae526f5b8e --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled-inverse.svg @@ -0,0 +1 @@ +breakpoint-conditional-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg new file mode 100644 index 00000000000..ae7c86d8e51 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg @@ -0,0 +1 @@ +breakpoint-conditional-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified-inverse.svg new file mode 100644 index 00000000000..7b778685cf7 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified-inverse.svg @@ -0,0 +1 @@ +breakpoint-conditional-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg new file mode 100644 index 00000000000..f4781277d91 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg @@ -0,0 +1 @@ +breakpoint-conditional-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg index 77dd991c2b6..455743a5669 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg @@ -1,10 +1 @@ - - - - - - +breakpoint-conditional \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg index 5ccf397efaf..0e4f3d9335e 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg index bf58a18178f..ca71813cb12 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg index 9780270357d..b9cc51c1547 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg index 6b2651a9a39..1689f2b9df1 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg @@ -1 +1 @@ -BreakpointFunction_16xMD +breakpoint-function \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg index fe6aaa60d76..2fcd2fec257 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg @@ -1 +1 @@ -BreakpointFunction_disabled_16xMD +breakpoint-function-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg index e45fd9cb12c..3b191a8229b 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg @@ -1 +1 @@ -BreakpointFunction_disabled_16xMD +breakpoint-function-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg index 13903346b2d..563db01b13b 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg @@ -1 +1 @@ -BreakpointFunctionUnverified_16xMD +breakpoint-function-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg index 0af1324d785..3e01ce1345c 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg @@ -1 +1 @@ -BreakpointFunctionUnverified_16xMD +breakpoint-function-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg index 6bc70465fa3..2bc6454e520 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg @@ -1 +1 @@ -BreakpointFunction_16xMD \ No newline at end of file +breakpoint-function \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg index 24f20069526..3efaf911de1 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled-inverse.svg new file mode 100644 index 00000000000..3d88ef0981d --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled-inverse.svg @@ -0,0 +1 @@ +breakpoint-log-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg new file mode 100644 index 00000000000..f37856481f5 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg @@ -0,0 +1 @@ +breakpoint-log-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-inverse.svg new file mode 100644 index 00000000000..c13d9120e9d --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-inverse.svg @@ -0,0 +1 @@ +breakpoint-log \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified-inverse.svg new file mode 100644 index 00000000000..fe9dc78bc3a --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified-inverse.svg @@ -0,0 +1 @@ +breakpoint-log-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg new file mode 100644 index 00000000000..b0e1624bf79 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg @@ -0,0 +1 @@ +breakpoint-log-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg new file mode 100644 index 00000000000..d6094ade2e8 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg @@ -0,0 +1 @@ +breakpoint-log \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg index fffcfb8cb47..def401ddd8f 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg @@ -1,17 +1 @@ - - - - - - - - - - - - - +breakpoint-unsupported \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg index cc0c89e1b74..f7d377af128 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg @@ -1,17 +1 @@ - - - - - - - - - - - - - +breakpoint-unsupported \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg index 4a2575a3056..11f3221ae76 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg index 617e7ede7bd..511448bae65 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg index 7629294bcc5..e00d15a298f 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg index 07344800a2f..71fd2e1001e 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoints-activate \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg index b32b1cd6de6..34809f9b1b6 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoints-activate \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg index 7df4455d7c3..f6d7128f4bc 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +clear-repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg index 6e4d3a1d481..7867d13d754 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg @@ -1 +1 @@ - \ No newline at end of file +clear-repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg index 61baaea2b8b..bbfbd366eb9 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure.svg b/src/vs/workbench/parts/debug/browser/media/configure.svg index 3dec2ba50fd..c97bb48bdcc 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg index f82c45c1109..5abc15f219b 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg @@ -1,3 +1 @@ - -]> \ No newline at end of file +continue \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue.svg b/src/vs/workbench/parts/debug/browser/media/continue.svg index c605d45ef98..99a6e9aef93 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue.svg @@ -1,3 +1 @@ - -]> \ No newline at end of file +continue \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint-inverse.svg b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint-inverse.svg new file mode 100644 index 00000000000..ad14622f6c6 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint-inverse.svg @@ -0,0 +1 @@ +current-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg index 7a3e6f26357..d947abab683 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +current-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/current-arrow-inverse.svg b/src/vs/workbench/parts/debug/browser/media/current-arrow-inverse.svg new file mode 100644 index 00000000000..1072df661d7 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/current-arrow-inverse.svg @@ -0,0 +1 @@ +current-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg index bd1ca579f13..3ea9f6b07b8 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg @@ -1 +1 @@ - \ No newline at end of file +current-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg index 9a969fb3589..cedddacf03e 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg @@ -1 +1 @@ - \ No newline at end of file +debug-dark \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg index e00fd4062df..2d1e78b5b68 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg @@ -1 +1 @@ -Plan de travail 1 \ No newline at end of file +disconnect \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect.svg b/src/vs/workbench/parts/debug/browser/media/disconnect.svg index 2a87ce11ef8..b2deb2b91df 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect.svg @@ -1 +1 @@ -Plan de travail 1 \ No newline at end of file +disconnect \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/drag.svg b/src/vs/workbench/parts/debug/browser/media/drag.svg index 7f4145d742b..522bf98284a 100644 --- a/src/vs/workbench/parts/debug/browser/media/drag.svg +++ b/src/vs/workbench/parts/debug/browser/media/drag.svg @@ -1,8 +1 @@ - - - - - - - - \ No newline at end of file +drag \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg index 7418a236159..0185b23700d 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +pause \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause.svg b/src/vs/workbench/parts/debug/browser/media/pause.svg index f8e3b859b18..9a4beeb7710 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause.svg @@ -1 +1 @@ - \ No newline at end of file +pause \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg index 74e8dd8a024..10c09869bec 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +remove-all \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all.svg b/src/vs/workbench/parts/debug/browser/media/remove-all.svg index 7250ff6b54e..a8acad64a4e 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all.svg @@ -1 +1 @@ - \ No newline at end of file +remove-all \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg index 865c5aaea5a..e1af90b8058 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg @@ -1 +1 @@ - \ No newline at end of file +remove-focus \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg index 751e89b3b02..e78bb998737 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +remove \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove.svg b/src/vs/workbench/parts/debug/browser/media/remove.svg index fde34404d4e..31d6abd6bab 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove.svg @@ -1 +1 @@ - \ No newline at end of file +remove \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg index f9fcfba75e2..a8939860d05 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl.svg b/src/vs/workbench/parts/debug/browser/media/repl.svg index 93558e96b47..8175eb32f94 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl.svg @@ -1 +1 @@ - \ No newline at end of file +repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg index 1443bb3158b..c9071eb96c6 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +restart \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart.svg b/src/vs/workbench/parts/debug/browser/media/restart.svg index 3d7a499db2a..94ebb45d0bc 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart.svg @@ -1 +1 @@ - \ No newline at end of file +restart \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg index 1d6a7c3ec3d..ad14622f6c6 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg @@ -1 +1 @@ - \ No newline at end of file +current-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg index 2d5823561e2..d947abab683 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +current-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg index f965fddd633..1072df661d7 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg @@ -1 +1 @@ - \ No newline at end of file +current-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg index e39215f9a7c..3ea9f6b07b8 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg @@ -1 +1 @@ - \ No newline at end of file +current-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg index b7de8c5fd13..8cfab5c40b1 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-into \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into.svg b/src/vs/workbench/parts/debug/browser/media/step-into.svg index b92fb4ef806..a4beee54411 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into.svg @@ -1 +1 @@ - \ No newline at end of file +step-into \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg index fc66ca1b80d..045a84ff032 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-out \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out.svg b/src/vs/workbench/parts/debug/browser/media/step-out.svg index 0fdc63f6ef9..850aed93c2e 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out.svg @@ -1 +1 @@ - \ No newline at end of file +step-out \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg index 98c1026db46..f3a1aa36f22 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-over \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over.svg b/src/vs/workbench/parts/debug/browser/media/step-over.svg index a716cbcf559..3343de71d83 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over.svg @@ -1 +1 @@ - \ No newline at end of file +step-over \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg index a0e6bcb42d6..c8e37202875 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +stop \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop.svg b/src/vs/workbench/parts/debug/browser/media/stop.svg index 333812dcdaf..57c29044b12 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop.svg @@ -1 +1 @@ - \ No newline at end of file +stop \ No newline at end of file From d00c936f8b93a3561d56d789aa13315c5e6da794 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 22:24:47 +0100 Subject: [PATCH 129/658] formatting is pain --- build/gulpfile.hygiene.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js index f8ab3c128ca..e3e5156db08 100644 --- a/build/gulpfile.hygiene.js +++ b/build/gulpfile.hygiene.js @@ -196,7 +196,6 @@ function hygiene(some) { this.emit('data', file); }); - const endl = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? '\r\n' : '\n'; const formatting = es.map(function (file, cb) { tsfmt.processString(file.path, file.contents.toString('utf8'), { verify: false, @@ -208,12 +207,8 @@ function hygiene(some) { tsconfig: undefined, tslint: undefined }).then(result => { - let original = result.src; - let formatted = result.dest; - - if (endl === '\n') { - formatted = formatted.replace(/\r\n/gm, '\n'); - } + let original = result.src.replace(/\r\n/gm, '\n'); + let formatted = result.dest.replace(/\r\n/gm, '\n'); if (original !== formatted) { console.error('File not formatted:', file.relative); From 059f88f6f09ea1f41d3ef0c7de431b2e2a9d62c9 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Tue, 6 Mar 2018 14:40:00 -0800 Subject: [PATCH 130/658] Fix broken test --- .../parts/extensions/electron-browser/extensionTipsService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts index 94e15ac5b32..634670b5e77 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts @@ -311,7 +311,7 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe }); } - if (countBadRecommendations > 0) { + if (countBadRecommendations > 0 && this.notificationService) { this.notificationService.warn( 'The below ' + countBadRecommendations + From f6ff0e52f3ecad9c8a5f0248f36200e0051d3ece Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 11:28:37 -0800 Subject: [PATCH 131/658] Make webview showFind a command instead of an action --- .../html/browser/webview.contribution.ts | 16 ++++++++------- .../parts/html/browser/webviewCommands.ts | 20 ++++++------------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/vs/workbench/parts/html/browser/webview.contribution.ts b/src/vs/workbench/parts/html/browser/webview.contribution.ts index 79ce5b3c4bf..cb1cf311a16 100644 --- a/src/vs/workbench/parts/html/browser/webview.contribution.ts +++ b/src/vs/workbench/parts/html/browser/webview.contribution.ts @@ -12,18 +12,20 @@ import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/wor import { KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from './webviewEditor'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { Registry } from 'vs/platform/registry/common/platform'; -import { ShowWebViewEditorFindWidgetAction, ShowWebViewEditorFindTermCommand, HideWebViewEditorFindCommand, OpenWebviewDeveloperToolsAction, ReloadWebviewAction } from './webviewCommands'; +import { ShowWebViewEditorFindTermCommand, HideWebViewEditorFindCommand, OpenWebviewDeveloperToolsAction, ReloadWebviewAction, ShowWebViewEditorFindWidgetCommand } from './webviewCommands'; - -const category = 'Webview'; const webviewDeveloperCategory = nls.localize('developer', "Developer"); const actionRegistry = Registry.as(ActionExtensions.WorkbenchActions); -actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ShowWebViewEditorFindWidgetAction, ShowWebViewEditorFindWidgetAction.ID, ShowWebViewEditorFindWidgetAction.LABEL, { - primary: KeyMod.CtrlCmd | KeyCode.KEY_F -}, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS), - 'Webview: Focus Find Widget', category); +const showNextFindWdigetCommand = new ShowWebViewEditorFindWidgetCommand({ + id: ShowWebViewEditorFindWidgetCommand.ID, + precondition: KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, + kbOpts: { + primary: KeyMod.CtrlCmd | KeyCode.KEY_F + } +}); +KeybindingsRegistry.registerCommandAndKeybindingRule(showNextFindWdigetCommand.toCommandAndKeybindingRule(KeybindingsRegistry.WEIGHT.editorContrib())); const showNextFindTermCommand = new ShowWebViewEditorFindTermCommand({ diff --git a/src/vs/workbench/parts/html/browser/webviewCommands.ts b/src/vs/workbench/parts/html/browser/webviewCommands.ts index 8cb01625d73..819f58ea21e 100644 --- a/src/vs/workbench/parts/html/browser/webviewCommands.ts +++ b/src/vs/workbench/parts/html/browser/webviewCommands.ts @@ -12,28 +12,20 @@ import { Action } from 'vs/base/common/actions'; import { TPromise } from 'vs/base/common/winjs.base'; import { BaseWebviewEditor } from './webviewEditor'; -export class ShowWebViewEditorFindWidgetAction extends Action { +export class ShowWebViewEditorFindWidgetCommand extends Command { public static readonly ID = 'editor.action.webvieweditor.showFind'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.showFind', "Focus Find Widget"); - public constructor( - id: string, - label: string, - @IWorkbenchEditorService private workbenchEditorService: IWorkbenchEditorService - ) { - super(id, label); - } - - public run(): TPromise { - const webViewEditor = this.getWebViewEditor(); + public runCommand(accessor: ServicesAccessor, args: any): void { + const webViewEditor = this.getWebViewEditor(accessor); if (webViewEditor) { webViewEditor.showFind(); } return null; } - private getWebViewEditor(): BaseWebviewEditor { - const activeEditor = this.workbenchEditorService.getActiveEditor() as BaseWebviewEditor; + private getWebViewEditor(accessor: ServicesAccessor): BaseWebviewEditor { + const workbenchEditorService = accessor.get(IWorkbenchEditorService); + const activeEditor = workbenchEditorService.getActiveEditor() as BaseWebviewEditor; if (activeEditor.isWebviewEditor) { return activeEditor; } From 721ff3175d45eefc1346bd9e5a0f49156bfd57c0 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 11:32:18 -0800 Subject: [PATCH 132/658] Move some command ids into command objects --- .../parts/html/browser/webview.contribution.ts | 2 +- src/vs/workbench/parts/html/browser/webviewCommands.ts | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/parts/html/browser/webview.contribution.ts b/src/vs/workbench/parts/html/browser/webview.contribution.ts index cb1cf311a16..f1e01512f60 100644 --- a/src/vs/workbench/parts/html/browser/webview.contribution.ts +++ b/src/vs/workbench/parts/html/browser/webview.contribution.ts @@ -48,7 +48,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule(showPreviousFindTermCommand const hideCommand = new HideWebViewEditorFindCommand({ - id: 'editor.action.webvieweditor.hideFind', + id: HideWebViewEditorFindCommand.Id, precondition: ContextKeyExpr.and( KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE), diff --git a/src/vs/workbench/parts/html/browser/webviewCommands.ts b/src/vs/workbench/parts/html/browser/webviewCommands.ts index 819f58ea21e..856bcd39443 100644 --- a/src/vs/workbench/parts/html/browser/webviewCommands.ts +++ b/src/vs/workbench/parts/html/browser/webviewCommands.ts @@ -34,6 +34,8 @@ export class ShowWebViewEditorFindWidgetCommand extends Command { } export class HideWebViewEditorFindCommand extends Command { + public static readonly Id = 'editor.action.webvieweditor.hideFind'; + public runCommand(accessor: ServicesAccessor, args: any): void { const webViewEditor = this.getWebViewEditor(accessor); if (webViewEditor) { @@ -51,6 +53,8 @@ export class HideWebViewEditorFindCommand extends Command { } export class ShowWebViewEditorFindTermCommand extends Command { + public static readonly Id = 'editor.action.webvieweditor.showPreviousFindTerm'; + constructor(opts: ICommandOptions, private _next: boolean) { super(opts); } @@ -75,10 +79,9 @@ export class ShowWebViewEditorFindTermCommand extends Command { } } - export class OpenWebviewDeveloperToolsAction extends Action { static readonly ID = 'workbench.action.webview.openDeveloperTools'; - static LABEL = nls.localize('openToolsLabel', "Open Webview Developer Tools"); + static readonly LABEL = nls.localize('openToolsLabel', "Open Webview Developer Tools"); public constructor( id: string, @@ -100,10 +103,9 @@ export class OpenWebviewDeveloperToolsAction extends Action { } } - export class ReloadWebviewAction extends Action { static readonly ID = 'workbench.action.webview.reloadWebviewAction'; - static LABEL = nls.localize('refreshWebviewLabel', "Reload Webviews"); + static readonly LABEL = nls.localize('refreshWebviewLabel', "Reload Webviews"); public constructor( id: string, From f7588d0e0b766d1d2fdc8997413d71d2618e0fbb Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 11:38:14 -0800 Subject: [PATCH 133/658] Remove html preview editor css file I believe that overflow is already handled by the webview itself --- src/vs/workbench/parts/html/browser/html.contribution.ts | 1 - .../parts/html/browser/media/htmlPreviewPart.css | 8 -------- 2 files changed, 9 deletions(-) delete mode 100644 src/vs/workbench/parts/html/browser/media/htmlPreviewPart.css diff --git a/src/vs/workbench/parts/html/browser/html.contribution.ts b/src/vs/workbench/parts/html/browser/html.contribution.ts index 4aa5a6481f5..39148712de0 100644 --- a/src/vs/workbench/parts/html/browser/html.contribution.ts +++ b/src/vs/workbench/parts/html/browser/html.contribution.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import 'vs/css!./media/htmlPreviewPart'; import URI from 'vs/base/common/uri'; import { localize } from 'vs/nls'; import { CommandsRegistry } from 'vs/platform/commands/common/commands'; diff --git a/src/vs/workbench/parts/html/browser/media/htmlPreviewPart.css b/src/vs/workbench/parts/html/browser/media/htmlPreviewPart.css deleted file mode 100644 index b2dc40e30c4..00000000000 --- a/src/vs/workbench/parts/html/browser/media/htmlPreviewPart.css +++ /dev/null @@ -1,8 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.htmlPreviewPart { - overflow: hidden; -} \ No newline at end of file From f7d6eaaa1bdd8f6f92959551093ed16afe173b8e Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 12:00:31 -0800 Subject: [PATCH 134/658] Mark fields private --- .../editor/contrib/find/simpleFindWidget.ts | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/vs/editor/contrib/find/simpleFindWidget.ts b/src/vs/editor/contrib/find/simpleFindWidget.ts index b4c396e4e40..d57dcabbe6f 100644 --- a/src/vs/editor/contrib/find/simpleFindWidget.ts +++ b/src/vs/editor/contrib/find/simpleFindWidget.ts @@ -23,20 +23,21 @@ const NLS_NEXT_MATCH_BTN_LABEL = nls.localize('label.nextMatchButton', "Next mat const NLS_CLOSE_BTN_LABEL = nls.localize('label.closeButton', "Close"); export abstract class SimpleFindWidget extends Widget { - protected _findInput: FindInput; - protected _domNode: HTMLElement; - protected _innerDomNode: HTMLElement; - protected _isVisible: boolean; - protected _focusTracker: dom.IFocusTracker; - protected _findInputFocusTracker: dom.IFocusTracker; - protected _findHistory: HistoryNavigator; - protected _updateHistoryDelayer: Delayer; + private _findInput: FindInput; + private _domNode: HTMLElement; + private _innerDomNode: HTMLElement; + private _isVisible: boolean; + private _focusTracker: dom.IFocusTracker; + private _findInputFocusTracker: dom.IFocusTracker; + private _findHistory: HistoryNavigator; + private _updateHistoryDelayer: Delayer; constructor( @IContextViewService private readonly _contextViewService: IContextViewService, private animate: boolean = true ) { super(); + this._findInput = this._register(new FindInput(null, this._contextViewService, { label: NLS_FIND_INPUT_LABEL, placeholder: NLS_FIND_INPUT_PLACEHOLDER, @@ -136,8 +137,8 @@ export abstract class SimpleFindWidget extends Widget { return this._findInput.getValue(); } - public updateTheme(theme?: ITheme): void { - let inputStyles = { + public updateTheme(theme: ITheme): void { + const inputStyles = { inputActiveOptionBorder: theme.getColor(inputActiveOptionBorder), inputBackground: theme.getColor(inputBackground), inputForeground: theme.getColor(inputForeground), From 1d8df3cca9e51b1dcc5e5877114141166a5574d2 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 12:02:12 -0800 Subject: [PATCH 135/658] Remove noanimation on find widget since this does not seem to be used anywhere --- src/vs/editor/contrib/find/findWidget.css | 8 -------- src/vs/editor/contrib/find/findWidget.ts | 6 ------ src/vs/editor/contrib/find/simpleFindWidget.ts | 13 ++++--------- 3 files changed, 4 insertions(+), 23 deletions(-) diff --git a/src/vs/editor/contrib/find/findWidget.css b/src/vs/editor/contrib/find/findWidget.css index c8514824375..eb838937d58 100644 --- a/src/vs/editor/contrib/find/findWidget.css +++ b/src/vs/editor/contrib/find/findWidget.css @@ -71,14 +71,6 @@ font-size: 13px; } -.monaco-editor .find-widget.visible.noanimation { - -webkit-transition: none; - -o-transition: none; - -moz-transition: none; - -ms-transition: none; - transition: none; -} - .monaco-editor .find-widget > .find-part, .monaco-editor .find-widget > .replace-part { margin: 4px 0 0 17px; diff --git a/src/vs/editor/contrib/find/findWidget.ts b/src/vs/editor/contrib/find/findWidget.ts index d5c25699fbc..6832275ce76 100644 --- a/src/vs/editor/contrib/find/findWidget.ts +++ b/src/vs/editor/contrib/find/findWidget.ts @@ -382,12 +382,6 @@ export class FindWidget extends Widget implements IOverlayWidget, IHorizontalSas setTimeout(() => { dom.addClass(this._domNode, 'visible'); this._domNode.setAttribute('aria-hidden', 'false'); - if (!animate) { - dom.addClass(this._domNode, 'noanimation'); - setTimeout(() => { - dom.removeClass(this._domNode, 'noanimation'); - }, 200); - } }, 0); this._codeEditor.layoutOverlayWidget(this); diff --git a/src/vs/editor/contrib/find/simpleFindWidget.ts b/src/vs/editor/contrib/find/simpleFindWidget.ts index d57dcabbe6f..6e640760878 100644 --- a/src/vs/editor/contrib/find/simpleFindWidget.ts +++ b/src/vs/editor/contrib/find/simpleFindWidget.ts @@ -33,8 +33,7 @@ export abstract class SimpleFindWidget extends Widget { private _updateHistoryDelayer: Delayer; constructor( - @IContextViewService private readonly _contextViewService: IContextViewService, - private animate: boolean = true + @IContextViewService private readonly _contextViewService: IContextViewService ) { super(); @@ -66,7 +65,7 @@ export abstract class SimpleFindWidget extends Widget { } })); - let prevBtn = new SimpleButton({ + const prevBtn = new SimpleButton({ label: NLS_PREVIOUS_MATCH_BTN_LABEL, className: 'previous', onTrigger: () => { @@ -75,7 +74,7 @@ export abstract class SimpleFindWidget extends Widget { onKeyDown: (e) => { } }); - let nextBtn = new SimpleButton({ + const nextBtn = new SimpleButton({ label: NLS_NEXT_MATCH_BTN_LABEL, className: 'next', onTrigger: () => { @@ -84,7 +83,7 @@ export abstract class SimpleFindWidget extends Widget { onKeyDown: (e) => { } }); - let closeBtn = new SimpleButton({ + const closeBtn = new SimpleButton({ label: NLS_CLOSE_BTN_LABEL, className: 'close-fw', onTrigger: () => { @@ -172,11 +171,7 @@ export abstract class SimpleFindWidget extends Widget { setTimeout(() => { dom.addClass(this._innerDomNode, 'visible'); this._innerDomNode.setAttribute('aria-hidden', 'false'); - if (!this.animate) { - dom.addClass(this._innerDomNode, 'noanimation'); - } setTimeout(() => { - dom.removeClass(this._innerDomNode, 'noanimation'); this._findInput.select(); }, 200); }, 0); From 97b8db01361d30f1f52dc593c72041e14e05cbb9 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 13:38:51 -0800 Subject: [PATCH 136/658] Make onKeyDown optional --- src/vs/editor/contrib/find/findWidget.ts | 24 +++++++++---------- .../editor/contrib/find/simpleFindWidget.ts | 15 +++++------- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/vs/editor/contrib/find/findWidget.ts b/src/vs/editor/contrib/find/findWidget.ts index 6832275ce76..7e5869f9af2 100644 --- a/src/vs/editor/contrib/find/findWidget.ts +++ b/src/vs/editor/contrib/find/findWidget.ts @@ -720,8 +720,7 @@ export class FindWidget extends Widget implements IOverlayWidget, IHorizontalSas className: 'previous', onTrigger: () => { this._codeEditor.getAction(FIND_IDS.PreviousMatchFindAction).run().done(null, onUnexpectedError); - }, - onKeyDown: (e) => { } + } })); // Next button @@ -730,8 +729,7 @@ export class FindWidget extends Widget implements IOverlayWidget, IHorizontalSas className: 'next', onTrigger: () => { this._codeEditor.getAction(FIND_IDS.NextMatchFindAction).run().done(null, onUnexpectedError); - }, - onKeyDown: (e) => { } + } })); let findPart = document.createElement('div'); @@ -822,8 +820,7 @@ export class FindWidget extends Widget implements IOverlayWidget, IHorizontalSas className: 'replace-all', onTrigger: () => { this._controller.replaceAll(); - }, - onKeyDown: (e) => { } + } })); let replacePart = document.createElement('div'); @@ -852,8 +849,7 @@ export class FindWidget extends Widget implements IOverlayWidget, IHorizontalSas this._replaceInputBox.width = this._findInput.inputBox.width; } this._showViewZone(); - }, - onKeyDown: (e) => { } + } })); this._toggleReplaceBtn.toggleClass('expand', this._isReplaceVisible); this._toggleReplaceBtn.toggleClass('collapse', !this._isReplaceVisible); @@ -986,10 +982,10 @@ class SimpleCheckbox extends Widget { } export interface ISimpleButtonOpts { - label: string; - className: string; - onTrigger: () => void; - onKeyDown: (e: IKeyboardEvent) => void; + readonly label: string; + readonly className: string; + readonly onTrigger: () => void; + readonly onKeyDown?: (e: IKeyboardEvent) => void; } export class SimpleButton extends Widget { @@ -1018,7 +1014,9 @@ export class SimpleButton extends Widget { e.preventDefault(); return; } - this._opts.onKeyDown(e); + if (this._opts.onKeyDown) { + this._opts.onKeyDown(e); + } }); } diff --git a/src/vs/editor/contrib/find/simpleFindWidget.ts b/src/vs/editor/contrib/find/simpleFindWidget.ts index 6e640760878..91200d7a3b8 100644 --- a/src/vs/editor/contrib/find/simpleFindWidget.ts +++ b/src/vs/editor/contrib/find/simpleFindWidget.ts @@ -70,8 +70,7 @@ export abstract class SimpleFindWidget extends Widget { className: 'previous', onTrigger: () => { this.find(true); - }, - onKeyDown: (e) => { } + } }); const nextBtn = new SimpleButton({ @@ -79,8 +78,7 @@ export abstract class SimpleFindWidget extends Widget { className: 'next', onTrigger: () => { this.find(false); - }, - onKeyDown: (e) => { } + } }); const closeBtn = new SimpleButton({ @@ -88,8 +86,7 @@ export abstract class SimpleFindWidget extends Widget { className: 'close-fw', onTrigger: () => { this.hide(); - }, - onKeyDown: (e) => { } + } }); this._innerDomNode = document.createElement('div'); @@ -197,14 +194,14 @@ export abstract class SimpleFindWidget extends Widget { } public showNextFindTerm() { - let next = this._findHistory.next(); + const next = this._findHistory.next(); if (next) { this._findInput.setValue(next); } } public showPreviousFindTerm() { - let previous = this._findHistory.previous(); + const previous = this._findHistory.previous(); if (previous) { this._findInput.setValue(previous); } @@ -218,7 +215,7 @@ registerThemingParticipant((theme, collector) => { collector.addRule(`.monaco-workbench .simple-find-part { background-color: ${findWidgetBGColor} !important; }`); } - let widgetShadowColor = theme.getColor(widgetShadow); + const widgetShadowColor = theme.getColor(widgetShadow); if (widgetShadowColor) { collector.addRule(`.monaco-workbench .simple-find-part { box-shadow: 0 2px 8px ${widgetShadowColor}; }`); } From 2501075d41b76d9c9142326dd57e1869993a3d88 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 13:42:34 -0800 Subject: [PATCH 137/658] Marking more properties readonly --- src/vs/base/browser/ui/checkbox/checkbox.ts | 14 ++++----- src/vs/base/browser/ui/findinput/findInput.ts | 16 +++++----- .../ui/findinput/findInputCheckboxes.ts | 10 +++--- src/vs/editor/contrib/find/findWidget.ts | 31 ++++++++++--------- 4 files changed, 36 insertions(+), 35 deletions(-) diff --git a/src/vs/base/browser/ui/checkbox/checkbox.ts b/src/vs/base/browser/ui/checkbox/checkbox.ts index 17fc633c45d..6ae948d2402 100644 --- a/src/vs/base/browser/ui/checkbox/checkbox.ts +++ b/src/vs/base/browser/ui/checkbox/checkbox.ts @@ -15,11 +15,11 @@ import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { Color } from 'vs/base/common/color'; export interface ICheckboxOpts extends ICheckboxStyles { - actionClassName: string; - title: string; - isChecked: boolean; - onChange: (viaKeyboard: boolean) => void; - onKeyDown?: (e: IKeyboardEvent) => void; + readonly actionClassName: string; + readonly title: string; + readonly isChecked: boolean; + readonly onChange: (viaKeyboard: boolean) => void; + readonly onKeyDown?: (e: IKeyboardEvent) => void; } export interface ICheckboxStyles { @@ -32,8 +32,8 @@ const defaultOpts = { export class Checkbox extends Widget { - private _opts: ICheckboxOpts; - public domNode: HTMLElement; + private readonly _opts: ICheckboxOpts; + public readonly domNode: HTMLElement; private _checked: boolean; diff --git a/src/vs/base/browser/ui/findinput/findInput.ts b/src/vs/base/browser/ui/findinput/findInput.ts index fe0788dbf3a..c57c1eb7e71 100644 --- a/src/vs/base/browser/ui/findinput/findInput.ts +++ b/src/vs/base/browser/ui/findinput/findInput.ts @@ -20,14 +20,14 @@ import { Color } from 'vs/base/common/color'; import { ICheckboxStyles } from 'vs/base/browser/ui/checkbox/checkbox'; export interface IFindInputOptions extends IFindInputStyles { - placeholder?: string; - width?: number; - validation?: IInputValidator; - label: string; + readonly placeholder?: string; + readonly width?: number; + readonly validation?: IInputValidator; + readonly label: string; - appendCaseSensitiveLabel?: string; - appendWholeWordsLabel?: string; - appendRegexLabel?: string; + readonly appendCaseSensitiveLabel?: string; + readonly appendWholeWordsLabel?: string; + readonly appendRegexLabel?: string; } export interface IFindInputStyles extends IInputBoxStyles { @@ -38,7 +38,7 @@ const NLS_DEFAULT_LABEL = nls.localize('defaultLabel', "input"); export class FindInput extends Widget { - static OPTION_CHANGE: string = 'optionChange'; + static readonly OPTION_CHANGE: string = 'optionChange'; private contextViewProvider: IContextViewProvider; private width: number; diff --git a/src/vs/base/browser/ui/findinput/findInputCheckboxes.ts b/src/vs/base/browser/ui/findinput/findInputCheckboxes.ts index 8fbfd3ae1f2..aa26c1a5409 100644 --- a/src/vs/base/browser/ui/findinput/findInputCheckboxes.ts +++ b/src/vs/base/browser/ui/findinput/findInputCheckboxes.ts @@ -12,11 +12,11 @@ import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { Color } from 'vs/base/common/color'; export interface IFindInputCheckboxOpts { - appendTitle: string; - isChecked: boolean; - onChange: (viaKeyboard: boolean) => void; - onKeyDown?: (e: IKeyboardEvent) => void; - inputActiveOptionBorder?: Color; + readonly appendTitle: string; + readonly isChecked: boolean; + readonly onChange: (viaKeyboard: boolean) => void; + readonly onKeyDown?: (e: IKeyboardEvent) => void; + readonly inputActiveOptionBorder?: Color; } const NLS_CASE_SENSITIVE_CHECKBOX_LABEL = nls.localize('caseDescription', "Match Case"); diff --git a/src/vs/editor/contrib/find/findWidget.ts b/src/vs/editor/contrib/find/findWidget.ts index 7e5869f9af2..9aaed2f4410 100644 --- a/src/vs/editor/contrib/find/findWidget.ts +++ b/src/vs/editor/contrib/find/findWidget.ts @@ -65,10 +65,10 @@ const FIND_REPLACE_AREA_HEIGHT = 64; // The height of Find Widget when Replace I export class FindWidgetViewZone implements IViewZone { - public afterLineNumber: number; + public readonly afterLineNumber: number; public heightInPx: number; - public suppressMouseDown: boolean; - public domNode: HTMLElement; + public readonly suppressMouseDown: boolean; + public readonly domNode: HTMLElement; constructor(afterLineNumber: number) { this.afterLineNumber = afterLineNumber; @@ -82,11 +82,11 @@ export class FindWidgetViewZone implements IViewZone { export class FindWidget extends Widget implements IOverlayWidget, IHorizontalSashLayoutProvider { private static readonly ID = 'editor.contrib.findWidget'; - private _codeEditor: ICodeEditor; + private readonly _codeEditor: ICodeEditor; private _state: FindReplaceState; private _controller: IFindController; - private _contextViewProvider: IContextViewProvider; - private _keybindingService: IKeybindingService; + private readonly _contextViewProvider: IContextViewProvider; + private readonly _keybindingService: IKeybindingService; private _domNode: HTMLElement; private _findInput: FindInput; @@ -901,19 +901,19 @@ export class FindWidget extends Widget implements IOverlayWidget, IHorizontalSas } interface ISimpleCheckboxOpts { - parent: HTMLElement; - title: string; - onChange: () => void; + readonly parent: HTMLElement; + readonly title: string; + readonly onChange: () => void; } class SimpleCheckbox extends Widget { private static _COUNTER = 0; - private _opts: ISimpleCheckboxOpts; - private _domNode: HTMLElement; - private _checkbox: HTMLInputElement; - private _label: HTMLLabelElement; + private readonly _opts: ISimpleCheckboxOpts; + private readonly _domNode: HTMLElement; + private readonly _checkbox: HTMLInputElement; + private readonly _label: HTMLLabelElement; constructor(opts: ISimpleCheckboxOpts) { super(); @@ -990,8 +990,8 @@ export interface ISimpleButtonOpts { export class SimpleButton extends Widget { - private _opts: ISimpleButtonOpts; - private _domNode: HTMLElement; + private readonly _opts: ISimpleButtonOpts; + private readonly _domNode: HTMLElement; constructor(opts: ISimpleButtonOpts) { super(); @@ -1008,6 +1008,7 @@ export class SimpleButton extends Widget { this._opts.onTrigger(); e.preventDefault(); }); + this.onkeydown(this._domNode, (e) => { if (e.equals(KeyCode.Space) || e.equals(KeyCode.Enter)) { this._opts.onTrigger(); From bb1f0f0407d73b882ac2ffd5be811f7c10430fbf Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 13:51:19 -0800 Subject: [PATCH 138/658] Use more specific name for renderOcticons --- src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts | 2 +- src/vs/base/browser/ui/octiconLabel/octiconLabel.mock.ts | 2 +- src/vs/base/browser/ui/octiconLabel/octiconLabel.ts | 6 +++--- src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts b/src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts index 95cf18196c1..e45a8435c32 100644 --- a/src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts +++ b/src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts @@ -7,7 +7,7 @@ import { IDisposable } from 'vs/base/common/lifecycle'; import * as dom from 'vs/base/browser/dom'; import * as objects from 'vs/base/common/objects'; -import { render as renderOcticons } from 'vs/base/browser/ui/octiconLabel/octiconLabel'; +import { renderOcticons } from 'vs/base/browser/ui/octiconLabel/octiconLabel'; export interface IHighlight { start: number; diff --git a/src/vs/base/browser/ui/octiconLabel/octiconLabel.mock.ts b/src/vs/base/browser/ui/octiconLabel/octiconLabel.mock.ts index 46bf06ccb39..181885fc256 100644 --- a/src/vs/base/browser/ui/octiconLabel/octiconLabel.mock.ts +++ b/src/vs/base/browser/ui/octiconLabel/octiconLabel.mock.ts @@ -24,7 +24,7 @@ class MockOcticonLabel { } var mock: typeof octiconLabel = { - render: render, + renderOcticons: render, OcticonLabel: MockOcticonLabel }; export = mock; \ No newline at end of file diff --git a/src/vs/base/browser/ui/octiconLabel/octiconLabel.ts b/src/vs/base/browser/ui/octiconLabel/octiconLabel.ts index e7339c58bbd..e55a3c61e92 100644 --- a/src/vs/base/browser/ui/octiconLabel/octiconLabel.ts +++ b/src/vs/base/browser/ui/octiconLabel/octiconLabel.ts @@ -14,20 +14,20 @@ function expand(text: string): string { }); } -export function render(label: string): string { +export function renderOcticons(label: string): string { return expand(escape(label)); } export class OcticonLabel { - private _container: HTMLElement; + private readonly _container: HTMLElement; constructor(container: HTMLElement) { this._container = container; } set text(text: string) { - this._container.innerHTML = render(text || ''); + this._container.innerHTML = renderOcticons(text || ''); } set title(title: string) { diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index 298eb054201..ba38ee61c97 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -47,7 +47,7 @@ import { InputBox, MessageType } from 'vs/base/browser/ui/inputbox/inputBox'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import { Command } from 'vs/editor/common/modes'; -import { render as renderOcticons } from 'vs/base/browser/ui/octiconLabel/octiconLabel'; +import { renderOcticons } from 'vs/base/browser/ui/octiconLabel/octiconLabel'; import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; import * as platform from 'vs/base/common/platform'; import { format } from 'vs/base/common/strings'; From ddab4d65a2784c5f942a04450d516ceb1c95b1ef Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 14:04:49 -0800 Subject: [PATCH 139/658] Don't take parent in webview ctor --- .../parts/extensions/browser/extensionEditor.ts | 3 ++- .../parts/html/browser/htmlPreviewPart.ts | 2 +- src/vs/workbench/parts/html/browser/webview.ts | 16 +++++++++------- .../webview/electron-browser/webviewEditor.ts | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts b/src/vs/workbench/parts/extensions/browser/extensionEditor.ts index 2ff081caed9..a025a7cb8b6 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionEditor.ts @@ -426,7 +426,8 @@ export class ExtensionEditor extends BaseEditor { .then(body => { const allowedBadgeProviders = this.extensionsWorkbenchService.allowedBadgeProviders; const webViewOptions = allowedBadgeProviders.length > 0 ? { allowScripts: false, allowSvgs: false, svgWhiteList: allowedBadgeProviders } : {}; - this.activeWebview = new Webview(this.content, this.partService.getContainer(Parts.EDITOR_PART), this.themeService, this.environmentService, this.contextViewService, this.contextKey, this.findInputFocusContextKey, webViewOptions); + this.activeWebview = new Webview(this.partService.getContainer(Parts.EDITOR_PART), this.themeService, this.environmentService, this.contextViewService, this.contextKey, this.findInputFocusContextKey, webViewOptions); + this.activeWebview.mountTo(this.content); const removeLayoutParticipant = arrays.insert(this.layoutParticipants, this.activeWebview); this.contentDisposables.push(toDisposable(removeLayoutParticipant)); this.activeWebview.contents = body; diff --git a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts index deae182e531..a1bce8f5e1f 100644 --- a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts +++ b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts @@ -93,7 +93,6 @@ export class HtmlPreviewPart extends BaseWebviewEditor { } this._webview = new Webview( - this.content, this.partService.getContainer(Parts.EDITOR_PART), this.themeService, this._environmentService, @@ -104,6 +103,7 @@ export class HtmlPreviewPart extends BaseWebviewEditor { ...webviewOptions, useSameOriginForRoot: true }); + this._webview.mountTo(this.content); if (this.input && this.input instanceof HtmlInput) { const state = this.loadViewState(this.input.getResource()); diff --git a/src/vs/workbench/parts/html/browser/webview.ts b/src/vs/workbench/parts/html/browser/webview.ts index 00669ce6dad..33a00e419d3 100644 --- a/src/vs/workbench/parts/html/browser/webview.ts +++ b/src/vs/workbench/parts/html/browser/webview.ts @@ -37,7 +37,6 @@ export class Webview { private _contents: string = ''; constructor( - private readonly parent: HTMLElement, private readonly _styleElement: Element, private readonly _themeService: IThemeService, private readonly _environmentService: IEnvironmentService, @@ -180,11 +179,11 @@ export class Webview { this.style(this._themeService.getTheme()); this._themeService.onThemeChange(this.style, this, this._disposables); + } - if (parent) { - parent.appendChild(this._webviewFindWidget.getDomNode()); - parent.appendChild(this._webview); - } + public mountTo(parent: HTMLElement) { + parent.appendChild(this._webviewFindWidget.getDomNode()); + parent.appendChild(this._webview); } public notifyFindWidgetFocusChanged(isFocused: boolean) { @@ -293,9 +292,12 @@ export class Webview { } contents.setZoomFactor(factor); + if (!this._webview || !this._webview.parentElement) { + return; + } - const width = this.parent.clientWidth; - const height = this.parent.clientHeight; + const width = this._webview.parentElement.clientWidth; + const height = this._webview.parentElement.clientHeight; contents.setSize({ normal: { width: Math.floor(width * factor), diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index 685a91c94db..7cdd29a490d 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -191,7 +191,6 @@ export class WebviewEditor extends BaseWebviewEditor { this.findWidgetVisible = KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE.bindTo(this._contextKeyService); this._webview = new Webview( - this.webviewContent, this._partService.getContainer(Parts.EDITOR_PART), this.themeService, this._environmentService, @@ -202,6 +201,7 @@ export class WebviewEditor extends BaseWebviewEditor { enableWrappedPostMessage: true, useSameOriginForRoot: false }); + this._webview.mountTo(this.webviewContent); input.webview = this._webview; if (input.options.tryRestoreScrollPosition) { From 2124bf22d0f00ed4a8d88b36735fad3bdd3052d3 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 14:36:20 -0800 Subject: [PATCH 140/658] Move find widget dispose to widget itself --- src/vs/editor/contrib/find/simpleFindWidget.ts | 8 ++++++++ src/vs/workbench/parts/html/browser/webview.ts | 6 +++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/contrib/find/simpleFindWidget.ts b/src/vs/editor/contrib/find/simpleFindWidget.ts index 91200d7a3b8..88727a5dc73 100644 --- a/src/vs/editor/contrib/find/simpleFindWidget.ts +++ b/src/vs/editor/contrib/find/simpleFindWidget.ts @@ -149,6 +149,14 @@ export abstract class SimpleFindWidget extends Widget { this._findInput.style(inputStyles); } + dipose() { + super.dispose(); + + if (this._domNode && this._domNode.parentElement) { + this._domNode.parentElement.removeChild(this._domNode); + } + } + public getDomNode(): HTMLElement { return this._domNode; } diff --git a/src/vs/workbench/parts/html/browser/webview.ts b/src/vs/workbench/parts/html/browser/webview.ts index 33a00e419d3..ebeb734569b 100644 --- a/src/vs/workbench/parts/html/browser/webview.ts +++ b/src/vs/workbench/parts/html/browser/webview.ts @@ -204,9 +204,9 @@ export class Webview { if (this._webview.parentElement) { this._webview.parentElement.removeChild(this._webview); - const findWidgetDomNode = this._webviewFindWidget.getDomNode(); - findWidgetDomNode.parentElement.removeChild(findWidgetDomNode); } + + this._webviewFindWidget.dispose(); } private readonly _onDidClickLink = new Emitter(); @@ -331,7 +331,7 @@ export class Webview { this._environmentService.extensionDevelopmentPath ]); registerFileProtocol(contents, 'vscode-workspace-resource', () => - this._options.localResourceRoots.map(uri => uri.fsPath) + (this._options.localResourceRoots || []).map(uri => uri.fsPath) ); } From 4db9fc6551a1511230350f93d5c1cdaa1899ca98 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 14:37:36 -0800 Subject: [PATCH 141/658] Annotating a few properties that can be undefined --- src/vs/workbench/parts/html/browser/webviewEditor.ts | 2 +- .../parts/webview/electron-browser/webviewEditor.ts | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/html/browser/webviewEditor.ts b/src/vs/workbench/parts/html/browser/webviewEditor.ts index 5ec3147811f..c208bfaf888 100644 --- a/src/vs/workbench/parts/html/browser/webviewEditor.ts +++ b/src/vs/workbench/parts/html/browser/webviewEditor.ts @@ -25,7 +25,7 @@ export const KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE = new RawContextKey< */ export abstract class BaseWebviewEditor extends BaseEditor { - protected _webview: Webview; + protected _webview: Webview | undefined; protected contextKey: IContextKey; protected findWidgetVisible: IContextKey; protected findInputFocusContextKey: IContextKey; diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index 7cdd29a490d..ad84aa7cba4 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -29,7 +29,7 @@ export class WebviewEditor extends BaseWebviewEditor { private editorFrame: HTMLElement; private content: HTMLElement; - private webviewContent: HTMLElement; + private webviewContent: HTMLElement | undefined; private _onDidFocusWebview: Emitter; private _webviewFocusTracker?: DOM.IFocusTracker; private _webviewFocusListenerDisposable?: IDisposable; @@ -56,7 +56,7 @@ export class WebviewEditor extends BaseWebviewEditor { private doUpdateContainer() { const webviewContainer = this.input && (this.input as WebviewInput).container; - if (webviewContainer) { + if (webviewContainer && webviewContainer.parentElement) { const frameRect = this.editorFrame.getBoundingClientRect(); const containerRect = webviewContainer.parentElement.getBoundingClientRect(); @@ -164,7 +164,11 @@ export class WebviewEditor extends BaseWebviewEditor { localResourceRoots: (input && input.options.localResourceRoots) || this._contextService.getWorkspace().folders.map(x => x.uri) }; input.setHtml(input.html); - this.webviewContent.style.visibility = 'visible'; + + if (this.webviewContent) { + this.webviewContent.style.visibility = 'visible'; + } + this.doUpdateContainer(); } From f565366b1cf9b6f9fdd0495dd60050237bfd7ed2 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 14:48:18 -0800 Subject: [PATCH 142/658] Enable alwaysStrict for src --- src/tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tsconfig.json b/src/tsconfig.json index e8f68d0088d..d2b9e229c4a 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -12,6 +12,7 @@ "noImplicitReturns": true, "noUnusedLocals": true, "noImplicitThis": true, + "alwaysStrict": true, "baseUrl": ".", "outDir": "../out", "typeRoots": [ From 166360107bba28355677a24d95cbe83b3848fdb9 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 16:05:47 -0800 Subject: [PATCH 143/658] Rename file --- .../html/browser/{webviewEditor.ts => baseWebviewEditor.ts} | 0 src/vs/workbench/parts/html/browser/htmlPreviewPart.ts | 2 +- src/vs/workbench/parts/html/browser/webview.contribution.ts | 2 +- src/vs/workbench/parts/html/browser/webviewCommands.ts | 2 +- .../workbench/parts/webview/electron-browser/webviewEditor.ts | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename src/vs/workbench/parts/html/browser/{webviewEditor.ts => baseWebviewEditor.ts} (100%) diff --git a/src/vs/workbench/parts/html/browser/webviewEditor.ts b/src/vs/workbench/parts/html/browser/baseWebviewEditor.ts similarity index 100% rename from src/vs/workbench/parts/html/browser/webviewEditor.ts rename to src/vs/workbench/parts/html/browser/baseWebviewEditor.ts diff --git a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts index a1bce8f5e1f..03d181f812a 100644 --- a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts +++ b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts @@ -24,7 +24,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { Webview, WebviewOptions } from './webview'; import { IStorageService } from 'vs/platform/storage/common/storage'; -import { BaseWebviewEditor } from './webviewEditor'; +import { BaseWebviewEditor } from './baseWebviewEditor'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import URI from 'vs/base/common/uri'; import { Scope } from 'vs/workbench/common/memento'; diff --git a/src/vs/workbench/parts/html/browser/webview.contribution.ts b/src/vs/workbench/parts/html/browser/webview.contribution.ts index f1e01512f60..7915b40d09a 100644 --- a/src/vs/workbench/parts/html/browser/webview.contribution.ts +++ b/src/vs/workbench/parts/html/browser/webview.contribution.ts @@ -9,7 +9,7 @@ import { ContextKeyExpr, } from 'vs/platform/contextkey/common/contextkey'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; -import { KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from './webviewEditor'; +import { KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from './baseWebviewEditor'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { Registry } from 'vs/platform/registry/common/platform'; import { ShowWebViewEditorFindTermCommand, HideWebViewEditorFindCommand, OpenWebviewDeveloperToolsAction, ReloadWebviewAction, ShowWebViewEditorFindWidgetCommand } from './webviewCommands'; diff --git a/src/vs/workbench/parts/html/browser/webviewCommands.ts b/src/vs/workbench/parts/html/browser/webviewCommands.ts index 856bcd39443..eed860fc157 100644 --- a/src/vs/workbench/parts/html/browser/webviewCommands.ts +++ b/src/vs/workbench/parts/html/browser/webviewCommands.ts @@ -10,7 +10,7 @@ import { Command, ICommandOptions } from 'vs/editor/browser/editorExtensions'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { Action } from 'vs/base/common/actions'; import { TPromise } from 'vs/base/common/winjs.base'; -import { BaseWebviewEditor } from './webviewEditor'; +import { BaseWebviewEditor } from './baseWebviewEditor'; export class ShowWebViewEditorFindWidgetCommand extends Command { public static readonly ID = 'editor.action.webvieweditor.showFind'; diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index ad84aa7cba4..fa189679a7b 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -9,7 +9,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IDisposable, } from 'vs/base/common/lifecycle'; import { EditorOptions } from 'vs/workbench/common/editor'; import { Position } from 'vs/platform/editor/common/editor'; -import { BaseWebviewEditor as BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from 'vs/workbench/parts/html/browser/webviewEditor'; +import { BaseWebviewEditor as BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from 'vs/workbench/parts/html/browser/baseWebviewEditor'; import { Builder, Dimension } from 'vs/base/browser/builder'; import { Webview } from 'vs/workbench/parts/html/browser/webview'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; From ca17963f4466c2cf37538f8f346c5cef69a328f6 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 6 Mar 2018 16:22:22 -0800 Subject: [PATCH 144/658] Move html into electron browser These files depend on electron APIs such as webview. They should life in electron browser rather than browser --- build/gulpfile.vscode.js | 2 +- .../{browser => electron-browser}/extensionEditor.ts | 2 +- .../extensions/electron-browser/extensions.contribution.ts | 2 +- .../{browser => electron-browser}/media/extensionEditor.css | 0 .../{browser => electron-browser}/media/markdown.css | 0 .../html/{browser => electron-browser}/baseWebviewEditor.ts | 0 .../html/{browser => electron-browser}/html.contribution.ts | 2 +- .../html/{browser => electron-browser}/htmlPreviewPart.ts | 0 .../parts/html/{browser => electron-browser}/webview-pre.js | 0 .../{browser => electron-browser}/webview.contribution.ts | 0 .../parts/html/{browser => electron-browser}/webview.html | 0 .../parts/html/{browser => electron-browser}/webview.ts | 0 .../html/{browser => electron-browser}/webviewCommands.ts | 0 .../html/{browser => electron-browser}/webviewFindWidget.ts | 0 .../workbench/parts/webview/electron-browser/webviewEditor.ts | 4 ++-- .../workbench/parts/webview/electron-browser/webviewInput.ts | 2 +- src/vs/workbench/workbench.main.ts | 2 +- 17 files changed, 8 insertions(+), 8 deletions(-) rename src/vs/workbench/parts/extensions/{browser => electron-browser}/extensionEditor.ts (99%) rename src/vs/workbench/parts/extensions/{browser => electron-browser}/media/extensionEditor.css (100%) rename src/vs/workbench/parts/extensions/{browser => electron-browser}/media/markdown.css (100%) rename src/vs/workbench/parts/html/{browser => electron-browser}/baseWebviewEditor.ts (100%) rename src/vs/workbench/parts/html/{browser => electron-browser}/html.contribution.ts (97%) rename src/vs/workbench/parts/html/{browser => electron-browser}/htmlPreviewPart.ts (100%) rename src/vs/workbench/parts/html/{browser => electron-browser}/webview-pre.js (100%) rename src/vs/workbench/parts/html/{browser => electron-browser}/webview.contribution.ts (100%) rename src/vs/workbench/parts/html/{browser => electron-browser}/webview.html (100%) rename src/vs/workbench/parts/html/{browser => electron-browser}/webview.ts (100%) rename src/vs/workbench/parts/html/{browser => electron-browser}/webviewCommands.ts (100%) rename src/vs/workbench/parts/html/{browser => electron-browser}/webviewFindWidget.ts (100%) diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index e92b517d9ca..c5b8ae58e26 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -78,7 +78,7 @@ const vscodeResources = [ 'out-build/vs/workbench/electron-browser/bootstrap/**', 'out-build/vs/workbench/parts/debug/**/*.json', 'out-build/vs/workbench/parts/execution/**/*.scpt', - 'out-build/vs/workbench/parts/html/browser/webview-pre.js', + 'out-build/vs/workbench/parts/html/electron-browser/webview-pre.js', 'out-build/vs/**/markdown.css', 'out-build/vs/workbench/parts/tasks/**/*.json', 'out-build/vs/workbench/parts/terminal/electron-browser/terminalProcess.js', diff --git a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts similarity index 99% rename from src/vs/workbench/parts/extensions/browser/extensionEditor.ts rename to src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts index a025a7cb8b6..abf2fbd7d8e 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts @@ -33,7 +33,7 @@ import { RatingsWidget, InstallCountWidget } from 'vs/workbench/parts/extensions import { EditorOptions } from 'vs/workbench/common/editor'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { CombinedInstallAction, UpdateAction, EnableAction, DisableAction, ReloadAction, MaliciousStatusLabelAction } from 'vs/workbench/parts/extensions/browser/extensionsActions'; -import { Webview } from 'vs/workbench/parts/html/browser/webview'; +import { Webview } from 'vs/workbench/parts/html/electron-browser/webview'; import { KeybindingIO } from 'vs/workbench/services/keybinding/common/keybindingIO'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement'; diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts index 6605fe844f3..4bfc9601b56 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.ts @@ -26,7 +26,7 @@ import { } from 'vs/workbench/parts/extensions/browser/extensionsActions'; import { ExtensionsInput } from 'vs/workbench/parts/extensions/common/extensionsInput'; import { ViewletRegistry, Extensions as ViewletExtensions, ViewletDescriptor } from 'vs/workbench/browser/viewlet'; -import { ExtensionEditor } from 'vs/workbench/parts/extensions/browser/extensionEditor'; +import { ExtensionEditor } from 'vs/workbench/parts/extensions/electron-browser/extensionEditor'; import { StatusUpdater, ExtensionsViewlet, MaliciousExtensionChecker } from 'vs/workbench/parts/extensions/electron-browser/extensionsViewlet'; import { IQuickOpenRegistry, Extensions, QuickOpenHandlerDescriptor } from 'vs/workbench/browser/quickopen'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry'; diff --git a/src/vs/workbench/parts/extensions/browser/media/extensionEditor.css b/src/vs/workbench/parts/extensions/electron-browser/media/extensionEditor.css similarity index 100% rename from src/vs/workbench/parts/extensions/browser/media/extensionEditor.css rename to src/vs/workbench/parts/extensions/electron-browser/media/extensionEditor.css diff --git a/src/vs/workbench/parts/extensions/browser/media/markdown.css b/src/vs/workbench/parts/extensions/electron-browser/media/markdown.css similarity index 100% rename from src/vs/workbench/parts/extensions/browser/media/markdown.css rename to src/vs/workbench/parts/extensions/electron-browser/media/markdown.css diff --git a/src/vs/workbench/parts/html/browser/baseWebviewEditor.ts b/src/vs/workbench/parts/html/electron-browser/baseWebviewEditor.ts similarity index 100% rename from src/vs/workbench/parts/html/browser/baseWebviewEditor.ts rename to src/vs/workbench/parts/html/electron-browser/baseWebviewEditor.ts diff --git a/src/vs/workbench/parts/html/browser/html.contribution.ts b/src/vs/workbench/parts/html/electron-browser/html.contribution.ts similarity index 97% rename from src/vs/workbench/parts/html/browser/html.contribution.ts rename to src/vs/workbench/parts/html/electron-browser/html.contribution.ts index 39148712de0..a41a48b95a8 100644 --- a/src/vs/workbench/parts/html/browser/html.contribution.ts +++ b/src/vs/workbench/parts/html/electron-browser/html.contribution.ts @@ -11,7 +11,7 @@ import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiati import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { Position as EditorPosition } from 'vs/platform/editor/common/editor'; import { HtmlInput, HtmlInputOptions } from '../common/htmlInput'; -import { HtmlPreviewPart } from 'vs/workbench/parts/html/browser/htmlPreviewPart'; +import { HtmlPreviewPart } from './htmlPreviewPart'; import { Registry } from 'vs/platform/registry/common/platform'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; diff --git a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts b/src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.ts similarity index 100% rename from src/vs/workbench/parts/html/browser/htmlPreviewPart.ts rename to src/vs/workbench/parts/html/electron-browser/htmlPreviewPart.ts diff --git a/src/vs/workbench/parts/html/browser/webview-pre.js b/src/vs/workbench/parts/html/electron-browser/webview-pre.js similarity index 100% rename from src/vs/workbench/parts/html/browser/webview-pre.js rename to src/vs/workbench/parts/html/electron-browser/webview-pre.js diff --git a/src/vs/workbench/parts/html/browser/webview.contribution.ts b/src/vs/workbench/parts/html/electron-browser/webview.contribution.ts similarity index 100% rename from src/vs/workbench/parts/html/browser/webview.contribution.ts rename to src/vs/workbench/parts/html/electron-browser/webview.contribution.ts diff --git a/src/vs/workbench/parts/html/browser/webview.html b/src/vs/workbench/parts/html/electron-browser/webview.html similarity index 100% rename from src/vs/workbench/parts/html/browser/webview.html rename to src/vs/workbench/parts/html/electron-browser/webview.html diff --git a/src/vs/workbench/parts/html/browser/webview.ts b/src/vs/workbench/parts/html/electron-browser/webview.ts similarity index 100% rename from src/vs/workbench/parts/html/browser/webview.ts rename to src/vs/workbench/parts/html/electron-browser/webview.ts diff --git a/src/vs/workbench/parts/html/browser/webviewCommands.ts b/src/vs/workbench/parts/html/electron-browser/webviewCommands.ts similarity index 100% rename from src/vs/workbench/parts/html/browser/webviewCommands.ts rename to src/vs/workbench/parts/html/electron-browser/webviewCommands.ts diff --git a/src/vs/workbench/parts/html/browser/webviewFindWidget.ts b/src/vs/workbench/parts/html/electron-browser/webviewFindWidget.ts similarity index 100% rename from src/vs/workbench/parts/html/browser/webviewFindWidget.ts rename to src/vs/workbench/parts/html/electron-browser/webviewFindWidget.ts diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts index fa189679a7b..634b874d376 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts @@ -9,9 +9,9 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IDisposable, } from 'vs/base/common/lifecycle'; import { EditorOptions } from 'vs/workbench/common/editor'; import { Position } from 'vs/platform/editor/common/editor'; -import { BaseWebviewEditor as BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from 'vs/workbench/parts/html/browser/baseWebviewEditor'; +import { BaseWebviewEditor as BaseWebviewEditor, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FOCUS, KEYBINDING_CONTEXT_WEBVIEWEDITOR_FIND_WIDGET_INPUT_FOCUSED, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE } from 'vs/workbench/parts/html/electron-browser/baseWebviewEditor'; import { Builder, Dimension } from 'vs/base/browser/builder'; -import { Webview } from 'vs/workbench/parts/html/browser/webview'; +import { Webview } from 'vs/workbench/parts/html/electron-browser/webview'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; diff --git a/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts b/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts index 4d6c64fdd9d..7e451dee886 100644 --- a/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts +++ b/src/vs/workbench/parts/webview/electron-browser/webviewInput.ts @@ -9,7 +9,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { EditorInput, EditorModel } from 'vs/workbench/common/editor'; import { IEditorModel, Position, IEditorInput } from 'vs/platform/editor/common/editor'; -import { Webview } from 'vs/workbench/parts/html/browser/webview'; +import { Webview } from 'vs/workbench/parts/html/electron-browser/webview'; import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; import * as vscode from 'vscode'; import URI from 'vs/base/common/uri'; diff --git a/src/vs/workbench/workbench.main.ts b/src/vs/workbench/workbench.main.ts index 6f2e0dec459..ff1a9f22748 100644 --- a/src/vs/workbench/workbench.main.ts +++ b/src/vs/workbench/workbench.main.ts @@ -66,7 +66,7 @@ import 'vs/workbench/parts/debug/browser/debugViewlet'; // can be packaged separ import 'vs/workbench/parts/markers/markers.contribution'; import 'vs/workbench/parts/markers/browser/markersPanel'; // can be packaged separately -import 'vs/workbench/parts/html/browser/html.contribution'; +import 'vs/workbench/parts/html/electron-browser/html.contribution'; import 'vs/workbench/parts/webview/electron-browser/webview.contribution'; From dd846a08d5d4020886aef4f2516f793932203813 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Tue, 6 Mar 2018 17:08:54 -0800 Subject: [PATCH 145/658] Avoid Ememt test failures in updating workspace config --- scripts/test-integration.bat | 2 +- scripts/test-integration.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/test-integration.bat b/scripts/test-integration.bat index 27bf0b6ac5f..13b6e4c9e14 100644 --- a/scripts/test-integration.bat +++ b/scripts/test-integration.bat @@ -18,7 +18,7 @@ if %errorlevel% neq 0 exit /b %errorlevel% call .\scripts\code.bat %~dp0\..\extensions\vscode-colorize-tests\test --extensionDevelopmentPath=%~dp0\..\extensions\vscode-colorize-tests --extensionTestsPath=%~dp0\..\extensions\vscode-colorize-tests\out --disableExtensions --user-data-dir=%VSCODEUSERDATADIR% if %errorlevel% neq 0 exit /b %errorlevel% -call .\scripts\code.bat $%~dp0\..\extensions\emmet\test-fixtures --extensionDevelopmentPath=%~dp0\..\extensions\emmet --extensionTestsPath=%~dp0\..\extensions\emmet\out\test --disableExtensions --user-data-dir=%VSCODEUSERDATADIR% +call .\scripts\code.bat $%~dp0\..\extensions\emmet\test-fixtures --extensionDevelopmentPath=%~dp0\..\extensions\emmet --extensionTestsPath=%~dp0\..\extensions\emmet\out\test --disableExtensions --user-data-dir=%VSCODEUSERDATADIR% . if %errorlevel% neq 0 exit /b %errorlevel% :: Integration & performance tests in AMD diff --git a/scripts/test-integration.sh b/scripts/test-integration.sh index d190d211bc1..76b4777ee2e 100755 --- a/scripts/test-integration.sh +++ b/scripts/test-integration.sh @@ -17,7 +17,7 @@ cd $ROOT ./scripts/code.sh $ROOT/extensions/vscode-api-tests/testworkspace.code-workspace --extensionDevelopmentPath=$ROOT/extensions/vscode-api-tests --extensionTestsPath=$ROOT/extensions/vscode-api-tests/out/workspace-tests --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started ./scripts/code.sh $ROOT/extensions/vscode-colorize-tests/test --extensionDevelopmentPath=$ROOT/extensions/vscode-colorize-tests --extensionTestsPath=$ROOT/extensions/vscode-colorize-tests/out --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started mkdir $ROOT/extensions/emmet/test-fixtures -./scripts/code.sh $ROOT/extensions/emmet/test-fixtures --extensionDevelopmentPath=$ROOT/extensions/emmet --extensionTestsPath=$ROOT/extensions/emmet/out/test --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started +./scripts/code.sh $ROOT/extensions/emmet/test-fixtures --extensionDevelopmentPath=$ROOT/extensions/emmet --extensionTestsPath=$ROOT/extensions/emmet/out/test --disableExtensions --user-data-dir=$VSCODEUSERDATADIR --skip-getting-started . rm -r $ROOT/extensions/emmet/test-fixtures # Integration tests in AMD From 2e746d81188b3aba80502eed4d88ec23d3763ded Mon Sep 17 00:00:00 2001 From: Gus Hurovich Date: Tue, 6 Mar 2018 17:11:07 -0800 Subject: [PATCH 146/658] Emmet - Wrap with abbreviation with live preview (#45092) * Revert "Fix for Emmet's wrap with abbreviation inserting extra spaces (#43345)" This reverts commit 7420a04c64e34f015d3b999066d16054fbd5cdc7. * Adding ability for emmet to wrap with abbreviation in real time. Currently it's only working for single cursor. * Fixes to wrap in real time: - Removed flickering when typing abbreviation - Removed tabstops - Fixed bug when wrapping multiline text * Fixes to a few issues. - Added checks for not reverting previews more times than needed, that was causing extra text to be deleted. - Fixed issue when wrapping nodes with multiple level of indentation. - Removed all the undo commands. Now all the logic of going back to the original state is handled by revertPreview. * Ammend for previous revert * Reapplying reverted commit, fixing the bug for this branch's version Refactoring some of the code, now a single object contains the current and original ranges, as well as the original content to wrap * Adding multicursor support * Renaming, refactoring and other stuff * More refactorings * More renaming and refactoring * Replacing placeholders when previewing, simplifying the extracting of preceeding whitespace, added a check for validity of expandedtext on each selection. * More refactoring * Adding a comment. * Readding test removed by mistake. * Refactoring * Carefully reverting changes in yarn.lock * carefully but right --- extensions/emmet/src/abbreviationActions.ts | 156 ++++++++++++++++---- 1 file changed, 129 insertions(+), 27 deletions(-) diff --git a/extensions/emmet/src/abbreviationActions.ts b/extensions/emmet/src/abbreviationActions.ts index 309b345c28a..a255eddb2ed 100644 --- a/extensions/emmet/src/abbreviationActions.ts +++ b/extensions/emmet/src/abbreviationActions.ts @@ -24,6 +24,13 @@ interface ExpandAbbreviationInput { filter?: string; } +interface PreviewRangesWithContent { + previewRange: vscode.Range; + originalRange: vscode.Range; + originalContent: string; + textToWrapInPreview: string[]; +} + export function wrapWithAbbreviation(args: any) { if (!validate(false) || !vscode.window.activeTextEditor) { return; @@ -32,50 +39,145 @@ export function wrapWithAbbreviation(args: any) { const editor = vscode.window.activeTextEditor; let rootNode = parseDocument(editor.document, false); - const syntax = getSyntaxFromArgs({ language: editor.document.languageId }); + const syntax = getSyntaxFromArgs({ language: editor.document.languageId }) || ''; if (!syntax) { return; } - const abbreviationPromise = (args && args['abbreviation']) ? Promise.resolve(args['abbreviation']) : vscode.window.showInputBox({ prompt: 'Enter Abbreviation' }); + let inPreview = false; + + // Fetch general information for the succesive expansions. i.e. the ranges to replace and its contents + let rangesToReplace: PreviewRangesWithContent[] = []; + + editor.selections.sort((a: vscode.Selection, b: vscode.Selection) => { return a.start.line - b.start.line; }).forEach(selection => { + let rangeToReplace: vscode.Range = selection.isReversed ? new vscode.Range(selection.active, selection.anchor) : selection; + if (rangeToReplace.isEmpty) { + let { active } = selection; + let currentNode = getNode(rootNode, active, true); + if (currentNode && (currentNode.start.line === active.line || currentNode.end.line === active.line)) { + rangeToReplace = new vscode.Range(currentNode.start, currentNode.end); + } else { + rangeToReplace = new vscode.Range(rangeToReplace.start.line, 0, rangeToReplace.start.line, editor.document.lineAt(rangeToReplace.start.line).text.length); + } + } + + const firstLineOfSelection = editor.document.lineAt(rangeToReplace.start).text.substr(rangeToReplace.start.character); + const matches = firstLineOfSelection.match(/^(\s*)/); + const extraWhiteSpaceSelected = matches ? matches[1].length : 0; + + rangeToReplace = new vscode.Range(rangeToReplace.start.line, rangeToReplace.start.character + extraWhiteSpaceSelected, rangeToReplace.end.line, rangeToReplace.end.character); + + const wholeFirstLine = editor.document.lineAt(rangeToReplace.start).text; + const otherMatches = wholeFirstLine.match(/^(\s*)/); + const preceedingWhiteSpace = otherMatches ? otherMatches[1] : ''; + let textToReplace = editor.document.getText(rangeToReplace); + let textToWrapInPreview = rangeToReplace.isSingleLine ? [textToReplace] : ['\n\t' + textToReplace.split('\n' + preceedingWhiteSpace).join('\n\t') + '\n']; + rangesToReplace.push({ previewRange: rangeToReplace, originalRange: rangeToReplace, originalContent: textToReplace, textToWrapInPreview }); + }); + + let abbreviationPromise; + let currentValue = ''; + + function inputChanged(value: string): string { + if (value !== currentValue) { + currentValue = value; + makeChanges(value, inPreview, false).then((out) => { + if (typeof out === 'boolean') { + inPreview = out; + } + }); + } + return ''; + } + + abbreviationPromise = (args && args['abbreviation']) ? Promise.resolve(args['abbreviation']) : vscode.window.showInputBox({ prompt: 'Enter Abbreviation', validateInput: inputChanged }); const helper = getEmmetHelper(); - return abbreviationPromise.then(inputAbbreviation => { - if (!inputAbbreviation || !inputAbbreviation.trim() || !helper.isAbbreviationValid(syntax, inputAbbreviation)) { return false; } + function makeChanges(inputAbbreviation: string | undefined, inPreview: boolean, definitive: boolean): Thenable { + if (!inputAbbreviation || !inputAbbreviation.trim() || !helper.isAbbreviationValid(syntax, inputAbbreviation)) { + return inPreview ? revertPreview(editor, rangesToReplace).then(() => { return false; }) : Promise.resolve(inPreview); + } let extractedResults = helper.extractAbbreviationFromText(inputAbbreviation); if (!extractedResults) { - return false; + return Promise.resolve(inPreview); + } else if (extractedResults.abbreviation !== inputAbbreviation) { + // Not clear what should we do in this case. Warn the user? How? } + let { abbreviation, filter } = extractedResults; + if (definitive) { + const revertPromise = inPreview ? revertPreview(editor, rangesToReplace) : Promise.resolve(); + return revertPromise.then(() => { + const expandAbbrList: ExpandAbbreviationInput[] = rangesToReplace.map(rangesAndContent => { + let rangeToReplace = rangesAndContent.originalRange; + let textToWrap = rangeToReplace.isSingleLine ? ['$TM_SELECTED_TEXT'] : ['\n\t$TM_SELECTED_TEXT\n']; + return { syntax, abbreviation, rangeToReplace, textToWrap, filter }; + }); + return expandAbbreviationInRange(editor, expandAbbrList, true).then(() => { return true; }); + }); + } - let expandAbbrList: ExpandAbbreviationInput[] = []; - - editor.selections.forEach(selection => { - let rangeToReplace: vscode.Range = selection.isReversed ? new vscode.Range(selection.active, selection.anchor) : selection; - if (rangeToReplace.isEmpty) { - let { active } = selection; - let currentNode = getNode(rootNode, active, true); - if (currentNode && (currentNode.start.line === active.line || currentNode.end.line === active.line)) { - rangeToReplace = new vscode.Range(currentNode.start, currentNode.end); - } else { - rangeToReplace = new vscode.Range(rangeToReplace.start.line, 0, rangeToReplace.start.line, editor.document.lineAt(rangeToReplace.start.line).text.length); - } - } - - const firstLineOfSelection = editor.document.lineAt(rangeToReplace.start).text.substr(rangeToReplace.start.character); - const matches = firstLineOfSelection.match(/^(\s*)/); - const preceedingWhiteSpace = matches ? matches[1].length : 0; - - rangeToReplace = new vscode.Range(rangeToReplace.start.line, rangeToReplace.start.character + preceedingWhiteSpace, rangeToReplace.end.line, rangeToReplace.end.character); - let textToWrap = rangeToReplace.isSingleLine ? ['$TM_SELECTED_TEXT'] : ['\n\t$TM_SELECTED_TEXT\n']; - expandAbbrList.push({ syntax, abbreviation, rangeToReplace, textToWrap, filter }); + const expandAbbrList: ExpandAbbreviationInput[] = rangesToReplace.map(rangesAndContent => { + return { syntax, abbreviation, rangeToReplace: rangesAndContent.originalRange, textToWrap: rangesAndContent.textToWrapInPreview, filter }; }); - return expandAbbreviationInRange(editor, expandAbbrList, true); + return applyPreview(editor, expandAbbrList, rangesToReplace); + } + + // On inputBox closing + return abbreviationPromise.then(inputAbbreviation => { + return makeChanges(inputAbbreviation, inPreview, true); }); } +function revertPreview(editor: vscode.TextEditor, rangesToReplace: PreviewRangesWithContent[]): Thenable { + return editor.edit(builder => { + for (let i = 0; i < rangesToReplace.length; i++) { + builder.replace(rangesToReplace[i].previewRange, rangesToReplace[i].originalContent); + rangesToReplace[i].previewRange = rangesToReplace[i].originalRange; + } + }, { undoStopBefore: false, undoStopAfter: false }); +} + +function applyPreview(editor: vscode.TextEditor, expandAbbrList: ExpandAbbreviationInput[], rangesToReplace: PreviewRangesWithContent[]): Thenable { + let totalLinesInserted = 0; + + return editor.edit(builder => { + for (let i = 0; i < rangesToReplace.length; i++) { + const expandedText = expandAbbr(expandAbbrList[i]) || ''; + if (!expandedText) { + // Failed to expand text. We already showed an error inside expandAbbr. + break; + } + + const oldPreviewRange = rangesToReplace[i].previewRange; + const preceedingText = editor.document.getText(new vscode.Range(oldPreviewRange.start.line, 0, oldPreviewRange.start.line, oldPreviewRange.start.character)); + const indentPrefix = (preceedingText.match(/^(\s*)/) || ['', ''])[1]; + + let newText = expandedText.replace(/\n/g, '\n' + indentPrefix); // Adding indentation on each line of expanded text + newText = newText.replace(/\$\{[\d]*\}/g, '|'); // Removing Tabstops + newText = newText.replace(/\$\{[\d]*(:[^}]*)?\}/g, (match) => { // Replacing Placeholders + return match.replace(/^\$\{[\d]*:/, '').replace('}', ''); + }); + builder.replace(oldPreviewRange, newText); + + const expandedTextLines = newText.split('\n'); + const oldPreviewLines = oldPreviewRange.end.line - oldPreviewRange.start.line + 1; + const newLinesInserted = expandedTextLines.length - oldPreviewLines; + + let lastLineEnd = expandedTextLines[expandedTextLines.length - 1].length; + if (expandedTextLines.length === 1) { + // If the expandedText is single line, add the length of preceeding whitespace as it will not be included in line length. + lastLineEnd += oldPreviewRange.start.character; + } + + rangesToReplace[i].previewRange = new vscode.Range(oldPreviewRange.start.line + totalLinesInserted, oldPreviewRange.start.character, oldPreviewRange.end.line + totalLinesInserted + newLinesInserted, lastLineEnd); + totalLinesInserted += newLinesInserted; + } + }, { undoStopBefore: false, undoStopAfter: false }); +} + export function wrapIndividualLinesWithAbbreviation(args: any) { if (!validate(false) || !vscode.window.activeTextEditor) { return; From d57f706a4204e09ac1fd640ef557f8235cfba912 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Tue, 6 Mar 2018 18:57:27 -0800 Subject: [PATCH 147/658] Fix #44654 - allow invoking pattern-cycling commands from command palette --- .../parts/search/browser/searchActions.ts | 18 ++++++------------ .../electron-browser/search.contribution.ts | 12 ++++++------ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/vs/workbench/parts/search/browser/searchActions.ts b/src/vs/workbench/parts/search/browser/searchActions.ts index 004fede229c..4a47d84807b 100644 --- a/src/vs/workbench/parts/search/browser/searchActions.ts +++ b/src/vs/workbench/parts/search/browser/searchActions.ts @@ -83,7 +83,6 @@ export class ShowNextSearchIncludeAction extends Action { public static readonly ID = 'search.history.showNextIncludePattern'; public static readonly LABEL = nls.localize('nextSearchIncludePattern', "Show Next Search Include Pattern"); - public static CONTEXT_KEY_EXPRESSION: ContextKeyExpr = ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternIncludesFocusedKey); constructor(id: string, label: string, @IViewletService private viewletService: IViewletService, @@ -91,7 +90,7 @@ export class ShowNextSearchIncludeAction extends Action { @IContextKeyService private contextKeyService: IContextKeyService ) { super(id, label); - this.enabled = this.contextKeyService.contextMatchesRules(ShowNextSearchIncludeAction.CONTEXT_KEY_EXPRESSION); + this.enabled = this.contextKeyService.contextMatchesRules(Constants.SearchViewVisibleKey); } public run(): TPromise { @@ -105,7 +104,6 @@ export class ShowPreviousSearchIncludeAction extends Action { public static readonly ID = 'search.history.showPreviousIncludePattern'; public static readonly LABEL = nls.localize('previousSearchIncludePattern', "Show Previous Search Include Pattern"); - public static CONTEXT_KEY_EXPRESSION: ContextKeyExpr = ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternIncludesFocusedKey); constructor(id: string, label: string, @IViewletService private viewletService: IViewletService, @@ -113,7 +111,7 @@ export class ShowPreviousSearchIncludeAction extends Action { @IContextKeyService private contextKeyService: IContextKeyService ) { super(id, label); - this.enabled = this.contextKeyService.contextMatchesRules(ShowPreviousSearchIncludeAction.CONTEXT_KEY_EXPRESSION); + this.enabled = this.contextKeyService.contextMatchesRules(Constants.SearchViewVisibleKey); } public run(): TPromise { @@ -127,7 +125,6 @@ export class ShowNextSearchExcludeAction extends Action { public static readonly ID = 'search.history.showNextExcludePattern'; public static readonly LABEL = nls.localize('nextSearchExcludePattern', "Show Next Search Exclude Pattern"); - public static CONTEXT_KEY_EXPRESSION: ContextKeyExpr = ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternExcludesFocusedKey); constructor(id: string, label: string, @IViewletService private viewletService: IViewletService, @@ -135,7 +132,7 @@ export class ShowNextSearchExcludeAction extends Action { @IContextKeyService private contextKeyService: IContextKeyService ) { super(id, label); - this.enabled = this.contextKeyService.contextMatchesRules(ShowNextSearchExcludeAction.CONTEXT_KEY_EXPRESSION); + this.enabled = this.contextKeyService.contextMatchesRules(Constants.SearchViewVisibleKey); } public run(): TPromise { @@ -149,7 +146,6 @@ export class ShowPreviousSearchExcludeAction extends Action { public static readonly ID = 'search.history.showPreviousExcludePattern'; public static readonly LABEL = nls.localize('previousSearchExcludePattern', "Show Previous Search Exclude Pattern"); - public static CONTEXT_KEY_EXPRESSION: ContextKeyExpr = ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternExcludesFocusedKey); constructor(id: string, label: string, @IViewletService private viewletService: IViewletService, @@ -157,7 +153,7 @@ export class ShowPreviousSearchExcludeAction extends Action { @IPanelService private panelService: IPanelService ) { super(id, label); - this.enabled = this.contextKeyService.contextMatchesRules(ShowPreviousSearchExcludeAction.CONTEXT_KEY_EXPRESSION); + this.enabled = this.contextKeyService.contextMatchesRules(Constants.SearchViewVisibleKey); } public run(): TPromise { @@ -171,7 +167,6 @@ export class ShowNextSearchTermAction extends Action { public static readonly ID = 'search.history.showNext'; public static readonly LABEL = nls.localize('nextSearchTerm', "Show Next Search Term"); - public static CONTEXT_KEY_EXPRESSION: ContextKeyExpr = ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.SearchInputBoxFocusedKey); constructor(id: string, label: string, @IViewletService private viewletService: IViewletService, @@ -179,7 +174,7 @@ export class ShowNextSearchTermAction extends Action { @IPanelService private panelService: IPanelService ) { super(id, label); - this.enabled = this.contextKeyService.contextMatchesRules(ShowNextSearchTermAction.CONTEXT_KEY_EXPRESSION); + this.enabled = this.contextKeyService.contextMatchesRules(Constants.SearchViewVisibleKey); } public run(): TPromise { @@ -193,7 +188,6 @@ export class ShowPreviousSearchTermAction extends Action { public static readonly ID = 'search.history.showPrevious'; public static readonly LABEL = nls.localize('previousSearchTerm', "Show Previous Search Term"); - public static CONTEXT_KEY_EXPRESSION: ContextKeyExpr = ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.SearchInputBoxFocusedKey); constructor(id: string, label: string, @IViewletService private viewletService: IViewletService, @@ -201,7 +195,7 @@ export class ShowPreviousSearchTermAction extends Action { @IPanelService private panelService: IPanelService ) { super(id, label); - this.enabled = this.contextKeyService.contextMatchesRules(ShowPreviousSearchTermAction.CONTEXT_KEY_EXPRESSION); + this.enabled = this.contextKeyService.contextMatchesRules(Constants.SearchViewVisibleKey); } public run(): TPromise { diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts index 5eef88e5328..b55114b3112 100644 --- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts @@ -347,14 +347,14 @@ KeybindingsRegistry.registerCommandAndKeybindingRule(objects.assign({ }, ToggleRegexKeybinding)); // Terms navigation actions -registry.registerWorkbenchAction(new SyncActionDescriptor(ShowNextSearchTermAction, ShowNextSearchTermAction.ID, ShowNextSearchTermAction.LABEL, ShowNextFindTermKeybinding, ShowNextSearchTermAction.CONTEXT_KEY_EXPRESSION), 'Search: Show Next Search Term', category); -registry.registerWorkbenchAction(new SyncActionDescriptor(ShowPreviousSearchTermAction, ShowPreviousSearchTermAction.ID, ShowPreviousSearchTermAction.LABEL, ShowPreviousFindTermKeybinding, ShowPreviousSearchTermAction.CONTEXT_KEY_EXPRESSION), 'Search: Show Previous Search Term', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(ShowNextSearchTermAction, ShowNextSearchTermAction.ID, ShowNextSearchTermAction.LABEL, ShowNextFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.SearchInputBoxFocusedKey)), 'Search: Show Next Search Term', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(ShowPreviousSearchTermAction, ShowPreviousSearchTermAction.ID, ShowPreviousSearchTermAction.LABEL, ShowPreviousFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.SearchInputBoxFocusedKey)), 'Search: Show Previous Search Term', category); -registry.registerWorkbenchAction(new SyncActionDescriptor(ShowNextSearchIncludeAction, ShowNextSearchIncludeAction.ID, ShowNextSearchIncludeAction.LABEL, ShowNextFindTermKeybinding, ShowNextSearchIncludeAction.CONTEXT_KEY_EXPRESSION), 'Search: Show Next Search Include Pattern', category); -registry.registerWorkbenchAction(new SyncActionDescriptor(ShowPreviousSearchIncludeAction, ShowPreviousSearchIncludeAction.ID, ShowPreviousSearchIncludeAction.LABEL, ShowPreviousFindTermKeybinding, ShowPreviousSearchIncludeAction.CONTEXT_KEY_EXPRESSION), 'Search: Show Previous Search Include Pattern', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(ShowNextSearchIncludeAction, ShowNextSearchIncludeAction.ID, ShowNextSearchIncludeAction.LABEL, ShowNextFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternIncludesFocusedKey)), 'Search: Show Next Search Include Pattern', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(ShowPreviousSearchIncludeAction, ShowPreviousSearchIncludeAction.ID, ShowPreviousSearchIncludeAction.LABEL, ShowPreviousFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternIncludesFocusedKey)), 'Search: Show Previous Search Include Pattern', category); -registry.registerWorkbenchAction(new SyncActionDescriptor(ShowNextSearchExcludeAction, ShowNextSearchExcludeAction.ID, ShowNextSearchExcludeAction.LABEL, ShowNextFindTermKeybinding, ShowNextSearchExcludeAction.CONTEXT_KEY_EXPRESSION), 'Search: Show Next Search Exclude Pattern', category); -registry.registerWorkbenchAction(new SyncActionDescriptor(ShowPreviousSearchExcludeAction, ShowPreviousSearchExcludeAction.ID, ShowPreviousSearchExcludeAction.LABEL, ShowPreviousFindTermKeybinding, ShowPreviousSearchExcludeAction.CONTEXT_KEY_EXPRESSION), 'Search: Show Previous Search Exclude Pattern', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(ShowNextSearchExcludeAction, ShowNextSearchExcludeAction.ID, ShowNextSearchExcludeAction.LABEL, ShowNextFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternExcludesFocusedKey)), 'Search: Show Next Search Exclude Pattern', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(ShowPreviousSearchExcludeAction, ShowPreviousSearchExcludeAction.ID, ShowPreviousSearchExcludeAction.LABEL, ShowPreviousFindTermKeybinding, ContextKeyExpr.and(Constants.SearchViewVisibleKey, Constants.PatternExcludesFocusedKey)), 'Search: Show Previous Search Exclude Pattern', category); registry.registerWorkbenchAction(new SyncActionDescriptor(CollapseDeepestExpandedLevelAction, CollapseDeepestExpandedLevelAction.ID, CollapseDeepestExpandedLevelAction.LABEL), 'Search: Collapse All', category); From a88797d48b1cbfd786edba4caa420067c60488d4 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Tue, 6 Mar 2018 19:21:04 -0800 Subject: [PATCH 148/658] Remove unused import --- src/vs/workbench/parts/search/browser/searchActions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/search/browser/searchActions.ts b/src/vs/workbench/parts/search/browser/searchActions.ts index 4a47d84807b..a64c73b739c 100644 --- a/src/vs/workbench/parts/search/browser/searchActions.ts +++ b/src/vs/workbench/parts/search/browser/searchActions.ts @@ -19,7 +19,7 @@ import { ResolvedKeybinding, createKeybinding } from 'vs/base/common/keyCodes'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { OS } from 'vs/base/common/platform'; -import { IContextKeyService, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { VIEW_ID } from 'vs/platform/search/common/search'; From 72dc9967088a6535da379886cd56a407b34dfd30 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 07:18:27 +0100 Subject: [PATCH 149/658] debt - merge confirm methods into one --- .../standalone/browser/simpleServices.ts | 20 +++++++++---------- src/vs/platform/dialogs/common/dialogs.ts | 17 ++++++++++------ .../extensionProfileService.ts | 4 ++-- .../files/electron-browser/fileActions.ts | 18 ++++++++--------- .../electron-browser/views/explorerViewer.ts | 18 ++++++++--------- .../electron-browser/startupProfiler.ts | 4 ++-- .../relauncher.contribution.ts | 4 ++-- .../parts/search/browser/searchView.ts | 4 ++-- .../electron-browser/task.contribution.ts | 12 +++++------ .../electron-browser/terminalService.ts | 2 +- .../dialogs/electron-browser/dialogs.ts | 8 +------- .../workbench/test/workbenchTestServices.ts | 6 +----- 12 files changed, 56 insertions(+), 61 deletions(-) diff --git a/src/vs/editor/standalone/browser/simpleServices.ts b/src/vs/editor/standalone/browser/simpleServices.ts index 7ab25de63db..790a54f05d9 100644 --- a/src/vs/editor/standalone/browser/simpleServices.ts +++ b/src/vs/editor/standalone/browser/simpleServices.ts @@ -240,7 +240,16 @@ export class SimpleConfirmationService implements IConfirmationService { public _serviceBrand: any; - public confirm(confirmation: IConfirmation): TPromise { + public confirm(confirmation: IConfirmation): TPromise { + return this.doConfirm(confirmation).then(confirmed => { + return { + confirmed, + checkboxChecked: false // unsupported + } as IConfirmationResult; + }); + } + + private doConfirm(confirmation: IConfirmation): TPromise { let messageText = confirmation.message; if (confirmation.detail) { messageText = messageText + '\n\n' + confirmation.detail; @@ -248,15 +257,6 @@ export class SimpleConfirmationService implements IConfirmationService { return TPromise.wrap(window.confirm(messageText)); } - - public confirmWithCheckbox(confirmation: IConfirmation): TPromise { - return this.confirm(confirmation).then(confirmed => { - return { - confirmed, - checkboxChecked: false // unsupported - } as IConfirmationResult; - }); - } } export class SimpleNotificationService implements INotificationService { diff --git a/src/vs/platform/dialogs/common/dialogs.ts b/src/vs/platform/dialogs/common/dialogs.ts index 6b01e74d0e1..5a05a12584e 100644 --- a/src/vs/platform/dialogs/common/dialogs.ts +++ b/src/vs/platform/dialogs/common/dialogs.ts @@ -22,7 +22,17 @@ export interface IConfirmation { } export interface IConfirmationResult { + + /** + * Will be true if the dialog was confirmed with the primary button + * pressed. + */ confirmed: boolean; + + /** + * This will only be defined if the confirmation was created + * with the checkox option defined. + */ checkboxChecked?: boolean; } @@ -35,12 +45,7 @@ export interface IConfirmationService { /** * Ask the user for confirmation with a modal dialog. */ - confirm(confirmation: IConfirmation): TPromise; - - /** - * Ask the user for confirmation with a checkbox in a modal dialog. - */ - confirmWithCheckbox(confirmation: IConfirmation): TPromise; + confirm(confirmation: IConfirmation): TPromise; } export const IChoiceService = createDecorator('choiceService'); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.ts index 4c04549cb5a..931674a5401 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.ts @@ -81,8 +81,8 @@ export class ExtensionHostProfileService extends Disposable implements IExtensio detail: nls.localize('restart2', "In order to profile extensions a restart is required. Do you want to restart '{0}' now?", product.nameLong), primaryButton: nls.localize('restart3', "Restart"), secondaryButton: nls.localize('cancel', "Cancel") - }).then(restart => { - if (restart) { + }).then(res => { + if (res.confirmed) { this._windowsService.relaunch({ addArgs: [`--inspect-extensions=${randomPort()}`] }); } }); diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index aaf798ebb8a..a7e0cfe292a 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -616,8 +616,8 @@ class BaseDeleteFileAction extends BaseFileAction { type: 'warning', detail: nls.localize('dirtyWarning', "Your changes will be lost if you don't save them."), primaryButton - }).then(confirmed => { - if (!confirmed) { + }).then(res => { + if (!res.confirmed) { return false; } @@ -644,7 +644,7 @@ class BaseDeleteFileAction extends BaseFileAction { const message = distinctElements.length > 1 ? getConfirmMessage(nls.localize('confirmMoveTrashMessageMultiple', "Are you sure you want to delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)) : distinctElements[0].isDirectory ? nls.localize('confirmMoveTrashMessageFolder', "Are you sure you want to delete '{0}' and its contents?", distinctElements[0].name) : nls.localize('confirmMoveTrashMessageFile', "Are you sure you want to delete '{0}'?", distinctElements[0].name); - confirmDeletePromise = this.confirmationService.confirmWithCheckbox({ + confirmDeletePromise = this.confirmationService.confirm({ message, detail: isWindows ? nls.localize('undoBin', "You can restore from the Recycle Bin.") : nls.localize('undoTrash', "You can restore from the Trash."), primaryButton, @@ -660,7 +660,7 @@ class BaseDeleteFileAction extends BaseFileAction { const message = distinctElements.length > 1 ? getConfirmMessage(nls.localize('confirmDeleteMessageMultiple', "Are you sure you want to permanently delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)) : distinctElements[0].isDirectory ? nls.localize('confirmDeleteMessageFolder', "Are you sure you want to permanently delete '{0}' and its contents?", distinctElements[0].name) : nls.localize('confirmDeleteMessageFile', "Are you sure you want to permanently delete '{0}'?", distinctElements[0].name); - confirmDeletePromise = this.confirmationService.confirmWithCheckbox({ + confirmDeletePromise = this.confirmationService.confirm({ message, detail: nls.localize('irreversible', "This action is irreversible!"), primaryButton, @@ -708,12 +708,12 @@ class BaseDeleteFileAction extends BaseFileAction { detail: detailMessage, type: 'warning', primaryButton - }).then(confirmed => { + }).then(res => { // Focus back to tree this.tree.domFocus(); - if (confirmed) { + if (res.confirmed) { if (this.useTrash) { this.useTrash = false; // Delete Permanently } @@ -787,7 +787,7 @@ export class ImportFileAction extends BaseFileAction { targetNames[isLinux ? child.name : child.name.toLowerCase()] = child; }); - let overwritePromise = TPromise.as(true); + let overwritePromise: TPromise = TPromise.as({ confirmed: true }); if (resources.some(resource => { return !!targetNames[isLinux ? paths.basename(resource.fsPath) : paths.basename(resource.fsPath).toLowerCase()]; })) { @@ -801,8 +801,8 @@ export class ImportFileAction extends BaseFileAction { overwritePromise = this.confirmationService.confirm(confirm); } - return overwritePromise.then(overwrite => { - if (!overwrite) { + return overwritePromise.then(res => { + if (!res.confirmed) { return void 0; } diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index a462c10c039..159a026881d 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -889,7 +889,7 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { if (folders.length > 0) { // If we are in no-workspace context, ask for confirmation to create a workspace - let confirmedPromise = TPromise.wrap(true); + let confirmedPromise: TPromise = TPromise.wrap({ confirmed: true }); if (this.contextService.getWorkbenchState() !== WorkbenchState.WORKSPACE) { confirmedPromise = this.confirmationService.confirm({ message: folders.length > 1 ? nls.localize('dropFolders', "Do you want to add the folders to the workspace?") : nls.localize('dropFolder', "Do you want to add the folder to the workspace?"), @@ -898,8 +898,8 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { }); } - return confirmedPromise.then(confirmed => { - if (confirmed) { + return confirmedPromise.then(res => { + if (res.confirmed) { return this.workspaceEditingService.addFolders(folders); } @@ -927,7 +927,7 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { // Handle confirm setting const confirmDragAndDrop = !isCopy && this.configurationService.getValue(FileDragAndDrop.CONFIRM_DND_SETTING_KEY); if (confirmDragAndDrop) { - confirmPromise = this.confirmationService.confirmWithCheckbox({ + confirmPromise = this.confirmationService.confirm({ message: sources.length > 1 ? getConfirmMessage(nls.localize('confirmMultiMove', "Are you sure you want to move the following {0} files?", sources.length), sources.map(s => s.resource)) : nls.localize('confirmMove', "Are you sure you want to move '{0}'?", sources[0].name), checkbox: { @@ -940,16 +940,16 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { confirmPromise = TPromise.as({ confirmed: true } as IConfirmationResult); } - return confirmPromise.then(confirmation => { + return confirmPromise.then(res => { // Check for confirmation checkbox let updateConfirmSettingsPromise: TPromise = TPromise.as(void 0); - if (confirmation.confirmed && confirmation.checkboxChecked === true) { + if (res.confirmed && res.checkboxChecked === true) { updateConfirmSettingsPromise = this.configurationService.updateValue(FileDragAndDrop.CONFIRM_DND_SETTING_KEY, false, ConfigurationTarget.USER); } return updateConfirmSettingsPromise.then(() => { - if (confirmation.confirmed) { + if (res.confirmed) { return TPromise.join(sources.map(source => this.doHandleExplorerDrop(tree, source, target, isCopy))).then(() => void 0); } @@ -1053,8 +1053,8 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { }; // Move with overwrite if the user confirms - return this.confirmationService.confirm(confirm).then(confirmed => { - if (confirmed) { + return this.confirmationService.confirm(confirm).then(res => { + if (res.confirmed) { const targetDirty = this.textFileService.getDirty().filter(d => resources.isEqualOrParent(d, targetResource, !isLinux /* ignorecase */)); // Make sure to revert all dirty in target first to be able to overwrite properly diff --git a/src/vs/workbench/parts/performance/electron-browser/startupProfiler.ts b/src/vs/workbench/parts/performance/electron-browser/startupProfiler.ts index 196841b0219..a38b6103053 100644 --- a/src/vs/workbench/parts/performance/electron-browser/startupProfiler.ts +++ b/src/vs/workbench/parts/performance/electron-browser/startupProfiler.ts @@ -65,8 +65,8 @@ class StartupProfiler implements IWorkbenchContribution { detail: localize('prof.detail', "Please create an issue and manually attach the following files:\n{0}", profileFiles), primaryButton: localize('prof.restartAndFileIssue', "Create Issue and Restart"), secondaryButton: localize('prof.restart', "Restart") - }).then(primaryButton => { - if (primaryButton) { + }).then(res => { + if (res.confirmed) { const action = this._instantiationService.createInstance(ReportPerformanceIssueAction, ReportPerformanceIssueAction.ID, ReportPerformanceIssueAction.LABEL); TPromise.join([ this._windowsService.showItemInFolder(join(dir, files[0])), diff --git a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts index b99fa6cc3e1..f737a094f3c 100644 --- a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts +++ b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts @@ -151,8 +151,8 @@ export class SettingsChangeRelauncher implements IWorkbenchContribution { message, detail, primaryButton - }).then(confirm => { - if (confirm) { + }).then(res => { + if (res.confirmed) { confirmed(); } }); diff --git a/src/vs/workbench/parts/search/browser/searchView.ts b/src/vs/workbench/parts/search/browser/searchView.ts index 2341f979592..c01de3bf054 100644 --- a/src/vs/workbench/parts/search/browser/searchView.ts +++ b/src/vs/workbench/parts/search/browser/searchView.ts @@ -400,8 +400,8 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { type: 'question' }; - this.confirmationService.confirm(confirmation).then(confirmed => { - if (confirmed) { + this.confirmationService.confirm(confirmation).then(res => { + if (res.confirmed) { this.searchWidget.setReplaceAllActionState(false); this.viewModel.searchResult.replaceAll(progressRunner).then(() => { progressRunner.done(); diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index 4f916b9b3cf..8e185597163 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -46,7 +46,7 @@ import { IProgressService2, IProgressOptions, ProgressLocation } from 'vs/platfo import { IOpenerService } from 'vs/platform/opener/common/opener'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IConfirmationService, IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IConfirmationService, IChoiceService, IConfirmationResult } from 'vs/platform/dialogs/common/dialogs'; import { IModelService } from 'vs/editor/common/services/modelService'; @@ -1621,9 +1621,9 @@ class TaskService implements ITaskService { return false; } - let terminatePromise: TPromise; + let terminatePromise: TPromise; if (this._taskSystem.canAutoTerminate()) { - terminatePromise = TPromise.wrap(true); + terminatePromise = TPromise.wrap({ confirmed: true }); } else { terminatePromise = this.confirmationService.confirm({ message: nls.localize('TaskSystem.runningTask', 'There is a task running. Do you want to terminate it?'), @@ -1632,8 +1632,8 @@ class TaskService implements ITaskService { }); } - return terminatePromise.then(terminate => { - if (terminate) { + return terminatePromise.then(res => { + if (res.confirmed) { return this._taskSystem.terminateAll().then((responses) => { let success = true; let code: number = undefined; @@ -1654,7 +1654,7 @@ class TaskService implements ITaskService { message: nls.localize('TaskSystem.noProcess', 'The launched task doesn\'t exist anymore. If the task spawned background processes exiting VS Code might result in orphaned processes. To avoid this start the last background process with a wait flag.'), primaryButton: nls.localize({ key: 'TaskSystem.exitAnyways', comment: ['&& denotes a mnemonic'] }, "&&Exit Anyways"), type: 'info' - }).then(confirmed => !confirmed); + }).then(res => !res.confirmed); } return true; // veto }, (err) => { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index ff1d3d7d827..5f9e7c6b90d 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -228,7 +228,7 @@ export class TerminalService extends AbstractTerminalService implements ITermina return this._confirmationService.confirm({ message, type: 'warning', - }).then(confirmed => !confirmed); + }).then(res => !res.confirmed); } public setContainers(panelContainer: HTMLElement, terminalContainer: HTMLElement): void { diff --git a/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts b/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts index f848ba8961e..cb25c7f1925 100644 --- a/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts +++ b/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts @@ -44,7 +44,7 @@ export class DialogService implements IChoiceService, IConfirmationService { ) { } - public confirmWithCheckbox(confirmation: IConfirmation): TPromise { + public confirm(confirmation: IConfirmation): TPromise { const { options, buttonIndexMap } = this.massageMessageBoxOptions(this.getConfirmOptions(confirmation)); return this.windowService.showMessageBox(options).then(result => { @@ -55,12 +55,6 @@ export class DialogService implements IChoiceService, IConfirmationService { }); } - public confirm(confirmation: IConfirmation): TPromise { - const { options, buttonIndexMap } = this.massageMessageBoxOptions(this.getConfirmOptions(confirmation)); - - return this.windowService.showMessageBox(options).then(result => buttonIndexMap[result.button] === 0 ? true : false); - } - private getConfirmOptions(confirmation: IConfirmation): Electron.MessageBoxOptions { const buttons: string[] = []; if (confirmation.primaryButton) { diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 67cdf00b9bb..820b451091d 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -337,11 +337,7 @@ export class TestConfirmationService implements IConfirmationService { public _serviceBrand: any; - public confirm(confirmation: IConfirmation): TPromise { - return TPromise.wrap(false); - } - - public confirmWithCheckbox(confirmation: IConfirmation): Promise { + public confirm(confirmation: IConfirmation): Promise { return TPromise.as({ confirmed: false }); } } From bafcdc68b2831ec05f6a2911c436f958a6931b6e Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 07:21:48 +0100 Subject: [PATCH 150/658] fix #44957 --- src/vs/base/node/config.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/vs/base/node/config.ts b/src/vs/base/node/config.ts index aa39e7d7abb..dcbc909bb9f 100644 --- a/src/vs/base/node/config.ts +++ b/src/vs/base/node/config.ts @@ -12,6 +12,7 @@ import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle'; import Event, { Emitter } from 'vs/base/common/event'; import * as json from 'vs/base/common/json'; import * as extfs from 'vs/base/node/extfs'; +import { isWindows } from 'vs/base/common/platform'; export interface IConfigurationChangeEvent { config: T; @@ -165,8 +166,18 @@ export class ConfigWatcher implements IConfigWatcher, IDisposable { } private onConfigFileChange(eventType: string, filename: string, isParentFolder: boolean): void { - if (isParentFolder && filename !== this.configName) { - return; // a change to a sibling file that is not our config file + if (isParentFolder) { + + // Windows: in some cases the filename contains artifacts from the absolute path + // see https://github.com/nodejs/node/issues/19170 + // As such, we have to ensure that the filename basename is used for comparison. + if (isWindows && filename !== this.configName) { + filename = basename(filename); + } + + if (filename !== this.configName) { + return; // a change to a sibling file that is not our config file + } } if (this.timeoutHandle) { From 16fac7f496a1ecf6701fa8e61f66afef9c6d2158 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 07:42:56 +0100 Subject: [PATCH 151/658] debt - confirmation service => dialog service --- .../editor/standalone/browser/simpleServices.ts | 4 ++-- .../standalone/browser/standaloneServices.ts | 6 +++--- src/vs/platform/dialogs/common/dialogs.ts | 6 +++--- .../platform/notification/common/notification.ts | 4 ++-- src/vs/workbench/electron-browser/shell.ts | 4 ++-- .../electron-browser/extensionProfileService.ts | 6 +++--- .../parts/files/electron-browser/fileActions.ts | 16 ++++++++-------- .../electron-browser/views/explorerViewer.ts | 10 +++++----- .../electron-browser/startupProfiler.ts | 8 ++++---- .../electron-browser/relauncher.contribution.ts | 6 +++--- .../workbench/parts/search/browser/searchView.ts | 6 +++--- .../tasks/electron-browser/task.contribution.ts | 8 ++++---- .../terminal/electron-browser/terminalService.ts | 6 +++--- .../services/dialogs/electron-browser/dialogs.ts | 4 ++-- src/vs/workbench/test/workbenchTestServices.ts | 4 ++-- 15 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/vs/editor/standalone/browser/simpleServices.ts b/src/vs/editor/standalone/browser/simpleServices.ts index 790a54f05d9..3feb60de1c3 100644 --- a/src/vs/editor/standalone/browser/simpleServices.ts +++ b/src/vs/editor/standalone/browser/simpleServices.ts @@ -39,7 +39,7 @@ import { OS } from 'vs/base/common/platform'; import { IRange } from 'vs/editor/common/core/range'; import { ITextModel } from 'vs/editor/common/model'; import { INotificationService, INotification, INotificationHandle, NoOpNotification } from 'vs/platform/notification/common/notification'; -import { IConfirmation, IConfirmationResult, IConfirmationService } from 'vs/platform/dialogs/common/dialogs'; +import { IConfirmation, IConfirmationResult, IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { IPosition, Position as Pos } from 'vs/editor/common/core/position'; export class SimpleEditor implements IEditor { @@ -236,7 +236,7 @@ export class SimpleProgressService implements IProgressService { } } -export class SimpleConfirmationService implements IConfirmationService { +export class SimpleDialogService implements IDialogService { public _serviceBrand: any; diff --git a/src/vs/editor/standalone/browser/standaloneServices.ts b/src/vs/editor/standalone/browser/standaloneServices.ts index 3e056e78703..c84ca2cf87d 100644 --- a/src/vs/editor/standalone/browser/standaloneServices.ts +++ b/src/vs/editor/standalone/browser/standaloneServices.ts @@ -33,7 +33,7 @@ import { CodeEditorServiceImpl } from 'vs/editor/browser/services/codeEditorServ import { SimpleConfigurationService, SimpleResourceConfigurationService, SimpleMenuService, SimpleProgressService, StandaloneCommandService, StandaloneKeybindingService, SimpleNotificationService, - StandaloneTelemetryService, SimpleWorkspaceContextService, SimpleConfirmationService + StandaloneTelemetryService, SimpleWorkspaceContextService, SimpleDialogService } from 'vs/editor/standalone/browser/simpleServices'; import { ContextKeyService } from 'vs/platform/contextkey/browser/contextKeyService'; import { IMenuService } from 'vs/platform/actions/common/actions'; @@ -41,7 +41,7 @@ import { IStandaloneThemeService } from 'vs/editor/standalone/common/standaloneT import { StandaloneThemeServiceImpl } from 'vs/editor/standalone/browser/standaloneThemeServiceImpl'; import { ILogService, NullLogService } from 'vs/platform/log/common/log'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IConfirmationService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; export interface IEditorContextViewService extends IContextViewService { dispose(): void; @@ -126,7 +126,7 @@ export module StaticServices { export const telemetryService = define(ITelemetryService, () => new StandaloneTelemetryService()); - export const confirmationService = define(IConfirmationService, () => new SimpleConfirmationService()); + export const dialogService = define(IDialogService, () => new SimpleDialogService()); export const notificationService = define(INotificationService, () => new SimpleNotificationService()); diff --git a/src/vs/platform/dialogs/common/dialogs.ts b/src/vs/platform/dialogs/common/dialogs.ts index 5a05a12584e..803d3563db0 100644 --- a/src/vs/platform/dialogs/common/dialogs.ts +++ b/src/vs/platform/dialogs/common/dialogs.ts @@ -25,7 +25,7 @@ export interface IConfirmationResult { /** * Will be true if the dialog was confirmed with the primary button - * pressed. + * pressed. */ confirmed: boolean; @@ -36,9 +36,9 @@ export interface IConfirmationResult { checkboxChecked?: boolean; } -export const IConfirmationService = createDecorator('confirmationService'); +export const IDialogService = createDecorator('dialogService'); -export interface IConfirmationService { +export interface IDialogService { _serviceBrand: any; diff --git a/src/vs/platform/notification/common/notification.ts b/src/vs/platform/notification/common/notification.ts index 93fa74ef128..56251e78ec7 100644 --- a/src/vs/platform/notification/common/notification.ts +++ b/src/vs/platform/notification/common/notification.ts @@ -44,7 +44,7 @@ export interface INotification { * close automatically when invoking a secondary action. * * **Note:** If your intent is to show a message with actions to the user, consider - * the `IChoiceService` and `IConfirmationService` instead which are optimized for + * the `IChoiceService` or `IDialogService` instead which are optimized for * this usecase and much easier to use! */ actions?: INotificationActions; @@ -129,7 +129,7 @@ export interface INotificationService { * can be used to control the notification afterwards. * * **Note:** If your intent is to show a message with actions to the user, consider - * the `IChoiceService` and `IConfirmationService` instead which are optimized for + * the `IChoiceService` or `IDialogService` instead which are optimized for * this usecase and much easier to use! */ notify(notification: INotification): INotificationHandle; diff --git a/src/vs/workbench/electron-browser/shell.ts b/src/vs/workbench/electron-browser/shell.ts index d6a534a8a1c..90f799ed4f9 100644 --- a/src/vs/workbench/electron-browser/shell.ts +++ b/src/vs/workbench/electron-browser/shell.ts @@ -94,7 +94,7 @@ import { WorkbenchIssueService } from 'vs/workbench/services/issue/electron-brow import { INotificationService } from 'vs/platform/notification/common/notification'; import { NotificationService } from 'vs/workbench/services/notification/common/notificationService'; import { ChoiceChannel } from 'vs/platform/dialogs/common/choiceIpc'; -import { IChoiceService, IConfirmationService } from 'vs/platform/dialogs/common/dialogs'; +import { IChoiceService, IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { DialogService } from 'vs/workbench/services/dialogs/electron-browser/dialogs'; /** @@ -409,7 +409,7 @@ export class WorkbenchShell { const dialog = instantiationService.createInstance(DialogService); serviceCollection.set(IChoiceService, dialog); - serviceCollection.set(IConfirmationService, dialog); + serviceCollection.set(IDialogService, dialog); const lifecycleService = instantiationService.createInstance(LifecycleService); this.toUnbind.push(lifecycleService.onShutdown(reason => this.dispose(reason))); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.ts index 931674a5401..741fa3f34da 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.ts @@ -17,7 +17,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IExtensionHostProfileService, ProfileSessionState, RuntimeExtensionsInput } from 'vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IWindowsService } from 'vs/platform/windows/common/windows'; -import { IConfirmationService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { randomPort } from 'vs/base/node/ports'; import product from 'vs/platform/node/product'; @@ -43,7 +43,7 @@ export class ExtensionHostProfileService extends Disposable implements IExtensio @IWorkbenchEditorService private readonly _editorService: IWorkbenchEditorService, @IInstantiationService private readonly _instantiationService: IInstantiationService, @IWindowsService private readonly _windowsService: IWindowsService, - @IConfirmationService private readonly _confirmationService: IConfirmationService + @IDialogService private readonly _dialogService: IDialogService ) { super(); this._profile = null; @@ -75,7 +75,7 @@ export class ExtensionHostProfileService extends Disposable implements IExtensio } if (!this._extensionService.canProfileExtensionHost()) { - return this._confirmationService.confirm({ + return this._dialogService.confirm({ type: 'info', message: nls.localize('restart1', "Profile Extensions"), detail: nls.localize('restart2', "In order to profile extensions a restart is required. Do you want to restart '{0}' now?", product.nameLong), diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index a7e0cfe292a..e3e74a240b8 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -51,7 +51,7 @@ import { IListService, ListWidget } from 'vs/platform/list/browser/listService'; import { RawContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { distinctParents, basenameOrAuthority } from 'vs/base/common/resources'; import { Schemas } from 'vs/base/common/network'; -import { IConfirmationService, IConfirmationResult, IConfirmation } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService, IConfirmationResult, IConfirmation } from 'vs/platform/dialogs/common/dialogs'; import { getConfirmMessage } from 'vs/workbench/services/dialogs/electron-browser/dialogs'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; @@ -566,7 +566,7 @@ class BaseDeleteFileAction extends BaseFileAction { private useTrash: boolean, @IFileService fileService: IFileService, @INotificationService notificationService: INotificationService, - @IConfirmationService private confirmationService: IConfirmationService, + @IDialogService private dialogService: IDialogService, @ITextFileService textFileService: ITextFileService, @IConfigurationService private configurationService: IConfigurationService ) { @@ -611,7 +611,7 @@ class BaseDeleteFileAction extends BaseFileAction { message = nls.localize('dirtyMessageFileDelete', "You are deleting a file with unsaved changes. Do you want to continue?"); } - confirmDirtyPromise = this.confirmationService.confirm({ + confirmDirtyPromise = this.dialogService.confirm({ message, type: 'warning', detail: nls.localize('dirtyWarning', "Your changes will be lost if you don't save them."), @@ -644,7 +644,7 @@ class BaseDeleteFileAction extends BaseFileAction { const message = distinctElements.length > 1 ? getConfirmMessage(nls.localize('confirmMoveTrashMessageMultiple', "Are you sure you want to delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)) : distinctElements[0].isDirectory ? nls.localize('confirmMoveTrashMessageFolder', "Are you sure you want to delete '{0}' and its contents?", distinctElements[0].name) : nls.localize('confirmMoveTrashMessageFile', "Are you sure you want to delete '{0}'?", distinctElements[0].name); - confirmDeletePromise = this.confirmationService.confirm({ + confirmDeletePromise = this.dialogService.confirm({ message, detail: isWindows ? nls.localize('undoBin', "You can restore from the Recycle Bin.") : nls.localize('undoTrash', "You can restore from the Trash."), primaryButton, @@ -660,7 +660,7 @@ class BaseDeleteFileAction extends BaseFileAction { const message = distinctElements.length > 1 ? getConfirmMessage(nls.localize('confirmDeleteMessageMultiple', "Are you sure you want to permanently delete the following {0} files?", distinctElements.length), distinctElements.map(e => e.resource)) : distinctElements[0].isDirectory ? nls.localize('confirmDeleteMessageFolder', "Are you sure you want to permanently delete '{0}' and its contents?", distinctElements[0].name) : nls.localize('confirmDeleteMessageFile', "Are you sure you want to permanently delete '{0}'?", distinctElements[0].name); - confirmDeletePromise = this.confirmationService.confirm({ + confirmDeletePromise = this.dialogService.confirm({ message, detail: nls.localize('irreversible', "This action is irreversible!"), primaryButton, @@ -703,7 +703,7 @@ class BaseDeleteFileAction extends BaseFileAction { primaryButton = nls.localize({ key: 'retryButtonLabel', comment: ['&& denotes a mnemonic'] }, "&&Retry"); } - return this.confirmationService.confirm({ + return this.dialogService.confirm({ message: errorMessage, detail: detailMessage, type: 'warning', @@ -745,7 +745,7 @@ export class ImportFileAction extends BaseFileAction { clazz: string, @IFileService fileService: IFileService, @IWorkbenchEditorService private editorService: IWorkbenchEditorService, - @IConfirmationService private confirmationService: IConfirmationService, + @IDialogService private dialogService: IDialogService, @INotificationService notificationService: INotificationService, @ITextFileService textFileService: ITextFileService ) { @@ -798,7 +798,7 @@ export class ImportFileAction extends BaseFileAction { type: 'warning' }; - overwritePromise = this.confirmationService.confirm(confirm); + overwritePromise = this.dialogService.confirm(confirm); } return overwritePromise.then(res => { diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 159a026881d..863c07840f6 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -58,7 +58,7 @@ import { DataTransfers } from 'vs/base/browser/dnd'; import { Schemas } from 'vs/base/common/network'; import { IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { rtrim } from 'vs/base/common/strings'; -import { IConfirmationService, IConfirmationResult, IConfirmation } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService, IConfirmationResult, IConfirmation } from 'vs/platform/dialogs/common/dialogs'; import { getConfirmMessage } from 'vs/workbench/services/dialogs/electron-browser/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; @@ -714,7 +714,7 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { constructor( @INotificationService private notificationService: INotificationService, - @IConfirmationService private confirmationService: IConfirmationService, + @IDialogService private dialogService: IDialogService, @IWorkspaceContextService private contextService: IWorkspaceContextService, @IFileService private fileService: IFileService, @IConfigurationService private configurationService: IConfigurationService, @@ -891,7 +891,7 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { // If we are in no-workspace context, ask for confirmation to create a workspace let confirmedPromise: TPromise = TPromise.wrap({ confirmed: true }); if (this.contextService.getWorkbenchState() !== WorkbenchState.WORKSPACE) { - confirmedPromise = this.confirmationService.confirm({ + confirmedPromise = this.dialogService.confirm({ message: folders.length > 1 ? nls.localize('dropFolders', "Do you want to add the folders to the workspace?") : nls.localize('dropFolder', "Do you want to add the folder to the workspace?"), type: 'question', primaryButton: folders.length > 1 ? nls.localize('addFolders', "&&Add Folders") : nls.localize('addFolder', "&&Add Folder") @@ -927,7 +927,7 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { // Handle confirm setting const confirmDragAndDrop = !isCopy && this.configurationService.getValue(FileDragAndDrop.CONFIRM_DND_SETTING_KEY); if (confirmDragAndDrop) { - confirmPromise = this.confirmationService.confirm({ + confirmPromise = this.dialogService.confirm({ message: sources.length > 1 ? getConfirmMessage(nls.localize('confirmMultiMove', "Are you sure you want to move the following {0} files?", sources.length), sources.map(s => s.resource)) : nls.localize('confirmMove', "Are you sure you want to move '{0}'?", sources[0].name), checkbox: { @@ -1053,7 +1053,7 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { }; // Move with overwrite if the user confirms - return this.confirmationService.confirm(confirm).then(res => { + return this.dialogService.confirm(confirm).then(res => { if (res.confirmed) { const targetDirty = this.textFileService.getDirty().filter(d => resources.isEqualOrParent(d, targetResource, !isLinux /* ignorecase */)); diff --git a/src/vs/workbench/parts/performance/electron-browser/startupProfiler.ts b/src/vs/workbench/parts/performance/electron-browser/startupProfiler.ts index a38b6103053..1b8c90733cd 100644 --- a/src/vs/workbench/parts/performance/electron-browser/startupProfiler.ts +++ b/src/vs/workbench/parts/performance/electron-browser/startupProfiler.ts @@ -18,13 +18,13 @@ import { join, dirname } from 'path'; import { localize } from 'vs/nls'; import { readdir, del, readFile } from 'vs/base/node/pfs'; import { basename } from 'vs/base/common/paths'; -import { IConfirmationService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; class StartupProfiler implements IWorkbenchContribution { constructor( @IWindowsService private readonly _windowsService: IWindowsService, - @IConfirmationService private readonly _confirmationService: IConfirmationService, + @IDialogService private readonly _dialogService: IDialogService, @IEnvironmentService private readonly _environmentService: IEnvironmentService, @IInstantiationService private readonly _instantiationService: IInstantiationService, @ILifecycleService lifecycleService: ILifecycleService, @@ -59,7 +59,7 @@ class StartupProfiler implements IWorkbenchContribution { }).then(files => { const profileFiles = files.reduce((prev, cur) => `${prev}${join(dir, cur)}\n`, '\n'); - return this._confirmationService.confirm({ + return this._dialogService.confirm({ type: 'info', message: localize('prof.message', "Successfully created profiles."), detail: localize('prof.detail', "Please create an issue and manually attach the following files:\n{0}", profileFiles), @@ -73,7 +73,7 @@ class StartupProfiler implements IWorkbenchContribution { action.run(`:warning: Make sure to **attach** these files from your *home*-directory: :warning:\n${files.map(file => `-\`${file}\``).join('\n')}`) ]).then(() => { // keep window stable until restart is selected - return this._confirmationService.confirm({ + return this._dialogService.confirm({ type: 'info', message: localize('prof.thanks', "Thanks for helping us."), detail: localize('prof.detail.restart', "A final restart is required to continue to use '{0}'. Again, thank you for your contribution.", this._environmentService.appNameLong), diff --git a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts index f737a094f3c..9f5b18c4111 100644 --- a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts +++ b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts @@ -19,7 +19,7 @@ import URI from 'vs/base/common/uri'; import { isEqual } from 'vs/base/common/resources'; import { isLinux } from 'vs/base/common/platform'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; -import { IConfirmationService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; interface IConfiguration extends IWindowsConfiguration { update: { channel: string; }; @@ -47,7 +47,7 @@ export class SettingsChangeRelauncher implements IWorkbenchContribution { @IWindowService private windowService: IWindowService, @IConfigurationService private configurationService: IConfigurationService, @IEnvironmentService private envService: IEnvironmentService, - @IConfirmationService private confirmationService: IConfirmationService, + @IDialogService private dialogService: IDialogService, @IWorkspaceContextService private contextService: IWorkspaceContextService, @IExtensionService private extensionService: IExtensionService ) { @@ -146,7 +146,7 @@ export class SettingsChangeRelauncher implements IWorkbenchContribution { private doConfirm(message: string, detail: string, primaryButton: string, confirmed: () => void): void { this.windowService.isFocused().then(focused => { if (focused) { - return this.confirmationService.confirm({ + return this.dialogService.confirm({ type: 'info', message, detail, diff --git a/src/vs/workbench/parts/search/browser/searchView.ts b/src/vs/workbench/parts/search/browser/searchView.ts index c01de3bf054..f5e7e934302 100644 --- a/src/vs/workbench/parts/search/browser/searchView.ts +++ b/src/vs/workbench/parts/search/browser/searchView.ts @@ -56,7 +56,7 @@ import { isDiffEditor, isCodeEditor, ICodeEditor } from 'vs/editor/browser/edito import { TreeResourceNavigator, WorkbenchTree } from 'vs/platform/list/browser/listService'; import { IEditorOptions } from 'vs/editor/common/config/editorOptions'; import { SimpleFileResourceDragAndDrop } from 'vs/workbench/browser/dnd'; -import { IConfirmation, IConfirmationService } from 'vs/platform/dialogs/common/dialogs'; +import { IConfirmation, IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IPanel } from 'vs/workbench/common/panel'; import { IViewlet } from 'vs/workbench/common/viewlet'; @@ -113,7 +113,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { @IEditorGroupService private editorGroupService: IEditorGroupService, @IProgressService private progressService: IProgressService, @INotificationService private notificationService: INotificationService, - @IConfirmationService private confirmationService: IConfirmationService, + @IDialogService private dialogService: IDialogService, @IStorageService private storageService: IStorageService, @IContextViewService private contextViewService: IContextViewService, @IInstantiationService private instantiationService: IInstantiationService, @@ -400,7 +400,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { type: 'question' }; - this.confirmationService.confirm(confirmation).then(res => { + this.dialogService.confirm(confirmation).then(res => { if (res.confirmed) { this.searchWidget.setReplaceAllActionState(false); this.viewModel.searchResult.replaceAll(progressRunner).then(() => { diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index 8e185597163..c2acd6caf5a 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -46,7 +46,7 @@ import { IProgressService2, IProgressOptions, ProgressLocation } from 'vs/platfo import { IOpenerService } from 'vs/platform/opener/common/opener'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IConfirmationService, IChoiceService, IConfirmationResult } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService, IChoiceService, IConfirmationResult } from 'vs/platform/dialogs/common/dialogs'; import { IModelService } from 'vs/editor/common/services/modelService'; @@ -471,7 +471,7 @@ class TaskService implements ITaskService { @IProgressService2 private progressService: IProgressService2, @IOpenerService private openerService: IOpenerService, @IWindowService private readonly _windowService: IWindowService, - @IConfirmationService private confirmationService: IConfirmationService, + @IDialogService private dialogService: IDialogService, @INotificationService private notificationService: INotificationService, @IChoiceService private choiceService: IChoiceService ) { @@ -1625,7 +1625,7 @@ class TaskService implements ITaskService { if (this._taskSystem.canAutoTerminate()) { terminatePromise = TPromise.wrap({ confirmed: true }); } else { - terminatePromise = this.confirmationService.confirm({ + terminatePromise = this.dialogService.confirm({ message: nls.localize('TaskSystem.runningTask', 'There is a task running. Do you want to terminate it?'), primaryButton: nls.localize({ key: 'TaskSystem.terminateTask', comment: ['&& denotes a mnemonic'] }, "&&Terminate Task"), type: 'question' @@ -1650,7 +1650,7 @@ class TaskService implements ITaskService { this.disposeTaskSystemListeners(); return false; // no veto } else if (code && code === TerminateResponseCode.ProcessNotFound) { - return this.confirmationService.confirm({ + return this.dialogService.confirm({ message: nls.localize('TaskSystem.noProcess', 'The launched task doesn\'t exist anymore. If the task spawned background processes exiting VS Code might result in orphaned processes. To avoid this start the last background process with a wait flag.'), primaryButton: nls.localize({ key: 'TaskSystem.exitAnyways', comment: ['&& denotes a mnemonic'] }, "&&Exit Anyways"), type: 'info' diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index 5f9e7c6b90d..3994f5ccb26 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -22,7 +22,7 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag import { getTerminalDefaultShellWindows } from 'vs/workbench/parts/terminal/electron-browser/terminal'; import { TerminalPanel } from 'vs/workbench/parts/terminal/electron-browser/terminalPanel'; import { TerminalTab } from 'vs/workbench/parts/terminal/electron-browser/terminalTab'; -import { IChoiceService, IConfirmationService, Choice } from 'vs/platform/dialogs/common/dialogs'; +import { IChoiceService, IDialogService, Choice } from 'vs/platform/dialogs/common/dialogs'; export class TerminalService extends AbstractTerminalService implements ITerminalService { private _configHelper: TerminalConfigHelper; @@ -43,7 +43,7 @@ export class TerminalService extends AbstractTerminalService implements ITermina @IInstantiationService private readonly _instantiationService: IInstantiationService, @IQuickOpenService private readonly _quickOpenService: IQuickOpenService, @IChoiceService private readonly _choiceService: IChoiceService, - @IConfirmationService private readonly _confirmationService: IConfirmationService + @IDialogService private readonly _dialogService: IDialogService ) { super(contextKeyService, panelService, partService, lifecycleService, storageService); @@ -225,7 +225,7 @@ export class TerminalService extends AbstractTerminalService implements ITermina message = nls.localize('terminalService.terminalCloseConfirmationPlural', "There are {0} active terminal sessions, do you want to kill them?", this.terminalInstances.length); } - return this._confirmationService.confirm({ + return this._dialogService.confirm({ message, type: 'warning', }).then(res => !res.confirmed); diff --git a/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts b/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts index cb25c7f1925..c33af8bfcbe 100644 --- a/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts +++ b/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts @@ -13,7 +13,7 @@ import { isLinux, isMacintosh } from 'vs/base/common/platform'; import { Action } from 'vs/base/common/actions'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; -import { IConfirmationService, IChoiceService, IConfirmation, IConfirmationResult, Choice } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService, IChoiceService, IConfirmation, IConfirmationResult, Choice } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService, INotificationHandle, INotificationActions } from 'vs/platform/notification/common/notification'; import { once } from 'vs/base/common/event'; import URI from 'vs/base/common/uri'; @@ -34,7 +34,7 @@ interface IMassagedMessageBoxOptions { buttonIndexMap: number[]; } -export class DialogService implements IChoiceService, IConfirmationService { +export class DialogService implements IChoiceService, IDialogService { public _serviceBrand: any; diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 820b451091d..c72151054a2 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -62,7 +62,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKeybindingService'; import { ITextBufferFactory, DefaultEndOfLine, EndOfLinePreference } from 'vs/editor/common/model'; import { Range } from 'vs/editor/common/core/range'; -import { IChoiceService, IConfirmation, IConfirmationResult, IConfirmationService } from 'vs/platform/dialogs/common/dialogs'; +import { IChoiceService, IConfirmation, IConfirmationResult, IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService, INotificationHandle, INotification, NoOpNotification } from 'vs/platform/notification/common/notification'; export function createFileInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput { @@ -333,7 +333,7 @@ export class TestNotificationService implements INotificationService { } } -export class TestConfirmationService implements IConfirmationService { +export class TestDialogService implements IDialogService { public _serviceBrand: any; From f11c13d8aedc048c76d44b36d7e7b25a13b99699 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 08:35:58 +0100 Subject: [PATCH 152/658] endl monaco.d.ts --- build/monaco/api.js | 5 ++++- build/monaco/api.ts | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/build/monaco/api.js b/build/monaco/api.js index 608113ffbce..3b1f823649b 100644 --- a/build/monaco/api.js +++ b/build/monaco/api.js @@ -314,10 +314,13 @@ function run(out, inputFiles) { var result = generateDeclarationFile(out, inputFiles, recipe); var currentContent = fs.readFileSync(DECLARATION_PATH).toString(); log('Finished monaco.d.ts generation'); + var one = currentContent.replace(/\r\n/gm, '\n'); + var other = result.replace(/\r\n/gm, '\n'); + var isTheSame = one === other; return { content: result, filePath: DECLARATION_PATH, - isTheSame: currentContent === result + isTheSame: isTheSame }; } exports.run = run; diff --git a/build/monaco/api.ts b/build/monaco/api.ts index 1b7249ef61d..6ebe7f277e7 100644 --- a/build/monaco/api.ts +++ b/build/monaco/api.ts @@ -370,10 +370,14 @@ export function run(out: string, inputFiles: { [file: string]: string; }): IMona let currentContent = fs.readFileSync(DECLARATION_PATH).toString(); log('Finished monaco.d.ts generation'); + const one = currentContent.replace(/\r\n/gm, '\n'); + const other = result.replace(/\r\n/gm, '\n'); + const isTheSame = one === other; + return { content: result, filePath: DECLARATION_PATH, - isTheSame: currentContent === result + isTheSame }; } From 10865a8ce314a98975dc8efff0de6f7fa1a2077a Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 6 Mar 2018 16:45:01 +0100 Subject: [PATCH 153/658] fix tests --- .../test/electron-browser/extensionsTipsService.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts index 604e99701a1..25e4b0b5fd3 100644 --- a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts +++ b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts @@ -23,7 +23,7 @@ import { Emitter } from 'vs/base/common/event'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { TestTextResourceConfigurationService, TestContextService, TestLifecycleService, TestEnvironmentService } from 'vs/workbench/test/workbenchTestServices'; +import { TestTextResourceConfigurationService, TestContextService, TestLifecycleService, TestEnvironmentService, TestNotificationService } from 'vs/workbench/test/workbenchTestServices'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import URI from 'vs/base/common/uri'; import { testWorkspace } from 'vs/platform/workspace/test/common/testWorkspace'; @@ -47,6 +47,7 @@ import { ITextModel } from 'vs/editor/common/model'; import { IModelService } from 'vs/editor/common/services/modelService'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { INotificationService } from '../../../../../platform/notification/common/notification'; const mockExtensionGallery: IGalleryExtension[] = [ aGalleryExtension('MockExtension1', { @@ -183,6 +184,7 @@ suite('ExtensionsTipsService Test', () => { instantiationService.stub(ILifecycleService, new TestLifecycleService()); testConfigurationService = new TestConfigurationService(); instantiationService.stub(IConfigurationService, testConfigurationService); + instantiationService.stub(INotificationService, new TestNotificationService()); instantiationService.stub(IExtensionManagementService, ExtensionManagementService); instantiationService.stub(IExtensionManagementService, 'onInstallExtension', installEvent.event); instantiationService.stub(IExtensionManagementService, 'onDidInstallExtension', didInstallEvent.event); From a447740ae7f1b6707a1286e2cd9839d9454e8a6b Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 09:21:42 +0100 Subject: [PATCH 154/658] fix bad imports --- .../parts/extensions/electron-browser/extensionTipsService.ts | 2 +- .../test/electron-browser/extensionsTipsService.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts index 634670b5e77..2586ce2bed8 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts @@ -37,7 +37,7 @@ import { isNumber } from 'vs/base/common/types'; import { IChoiceService, Choice } from 'vs/platform/dialogs/common/dialogs'; import { language, LANGUAGE_DEFAULT } from 'vs/base/common/platform'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; -import { INotificationService } from '../../../../platform/notification/common/notification'; +import { INotificationService } from 'vs/platform/notification/common/notification'; interface IExtensionsContent { recommendations: string[]; diff --git a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts index 25e4b0b5fd3..af44cde792f 100644 --- a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts +++ b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts @@ -47,7 +47,7 @@ import { ITextModel } from 'vs/editor/common/model'; import { IModelService } from 'vs/editor/common/services/modelService'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; -import { INotificationService } from '../../../../../platform/notification/common/notification'; +import { INotificationService } from 'vs/platform/notification/common/notification'; const mockExtensionGallery: IGalleryExtension[] = [ aGalleryExtension('MockExtension1', { From ca28eb15596b0f1d8c703d468aeb523b41d67a51 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 09:41:23 +0100 Subject: [PATCH 155/658] update build definitions --- build/tfs/linux/build.yml | 16 ++++++++-------- build/tfs/win32/build.yml | 8 -------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 4319d54068c..ef8eaf73441 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -4,14 +4,6 @@ variables: steps: -- task: NodeTool@0 - inputs: - versionSpec: "8.9.1" - -- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 - inputs: - versionSpec: "1.3.2" - - script: | apt-get update apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 dbus xvfb @@ -22,6 +14,14 @@ steps: service xvfb start service dbus start +- task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + +- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + - script: | yarn npm run gulp -- electron-x64 diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 499ae972cfb..4e5cc955737 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -6,14 +6,6 @@ variables: steps: -- powershell: | - Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } - -- script: | - git config --global core.autocrlf false - git config --global core.safescrlf true - git checkout -f master - - task: NodeTool@0 inputs: versionSpec: "8.9.1" From d41bb9dd1c27610006369fd9e32bca4b89453d6e Mon Sep 17 00:00:00 2001 From: Daniel Ye Date: Tue, 6 Mar 2018 17:42:17 -0800 Subject: [PATCH 156/658] 2018-03-06. Merged in translations from Transifex. --- i18n/chs/extensions/bat/package.i18n.json | 4 +++- i18n/chs/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 4 +++- i18n/chs/extensions/cpp/package.i18n.json | 4 +++- i18n/chs/extensions/csharp/package.i18n.json | 4 +++- i18n/chs/extensions/docker/package.i18n.json | 4 +++- i18n/chs/extensions/emmet/package.i18n.json | 1 + .../extension-editing/package.i18n.json | 2 +- i18n/chs/extensions/fsharp/package.i18n.json | 4 +++- i18n/chs/extensions/git/out/commands.i18n.json | 2 +- i18n/chs/extensions/go/package.i18n.json | 4 +++- i18n/chs/extensions/groovy/package.i18n.json | 4 +++- i18n/chs/extensions/grunt/package.i18n.json | 2 +- i18n/chs/extensions/gulp/package.i18n.json | 2 +- .../chs/extensions/handlebars/package.i18n.json | 4 +++- i18n/chs/extensions/hlsl/package.i18n.json | 4 +++- i18n/chs/extensions/ini/package.i18n.json | 4 +++- i18n/chs/extensions/jake/package.i18n.json | 2 +- i18n/chs/extensions/java/package.i18n.json | 4 +++- .../chs/extensions/javascript/package.i18n.json | 4 +++- i18n/chs/extensions/less/package.i18n.json | 4 +++- i18n/chs/extensions/log/package.i18n.json | 2 +- i18n/chs/extensions/lua/package.i18n.json | 4 +++- i18n/chs/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 4 +--- i18n/chs/extensions/markdown/package.i18n.json | 10 +++++++--- .../extensions/merge-conflict/package.i18n.json | 2 +- i18n/chs/extensions/npm/package.i18n.json | 7 +++++-- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/chs/extensions/perl/package.i18n.json | 4 +++- i18n/chs/extensions/php/package.i18n.json | 4 +++- .../chs/extensions/powershell/package.i18n.json | 4 +++- i18n/chs/extensions/pug/package.i18n.json | 4 +++- i18n/chs/extensions/python/package.i18n.json | 4 +++- i18n/chs/extensions/r/package.i18n.json | 4 +++- i18n/chs/extensions/razor/package.i18n.json | 4 +++- i18n/chs/extensions/ruby/package.i18n.json | 4 +++- i18n/chs/extensions/rust/package.i18n.json | 4 +++- i18n/chs/extensions/scss/package.i18n.json | 4 +++- i18n/chs/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/chs/extensions/sql/package.i18n.json | 4 +++- i18n/chs/extensions/swift/package.i18n.json | 4 +++- .../typescript-basics/package.i18n.json | 4 +++- .../chs/extensions/typescript/package.i18n.json | 3 ++- i18n/chs/extensions/vb/package.i18n.json | 4 +++- i18n/chs/extensions/xml/package.i18n.json | 4 +++- i18n/chs/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 2 +- .../issue/issueReporterPage.i18n.json | 5 +++-- .../node/extensionManagementService.i18n.json | 3 +++ .../mainThreadMessageService.i18n.json | 1 + .../notifications/notificationsStatus.i18n.json | 4 +++- .../chs/src/vs/workbench/common/theme.i18n.json | 8 ++++---- .../debug.contribution.i18n.json | 2 +- .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 14 ++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../html/browser/webviewCommands.i18n.json | 2 +- .../search.contribution.i18n.json | 4 ++-- .../terminalColorRegistry.i18n.json | 2 +- .../update/electron-browser/update.i18n.json | 1 + .../common/extensionsRegistry.i18n.json | 1 + i18n/cht/extensions/bat/package.i18n.json | 4 +++- i18n/cht/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 4 +++- .../configuration-editing/package.i18n.json | 3 ++- i18n/cht/extensions/cpp/package.i18n.json | 4 +++- i18n/cht/extensions/csharp/package.i18n.json | 4 +++- i18n/cht/extensions/docker/package.i18n.json | 4 +++- i18n/cht/extensions/emmet/package.i18n.json | 1 + .../extension-editing/package.i18n.json | 4 +++- i18n/cht/extensions/fsharp/package.i18n.json | 4 +++- i18n/cht/extensions/git/out/autofetch.i18n.json | 3 ++- i18n/cht/extensions/git/out/model.i18n.json | 1 + i18n/cht/extensions/go/package.i18n.json | 4 +++- i18n/cht/extensions/groovy/package.i18n.json | 4 +++- i18n/cht/extensions/grunt/package.i18n.json | 6 +++++- i18n/cht/extensions/gulp/package.i18n.json | 6 +++++- .../cht/extensions/handlebars/package.i18n.json | 4 +++- i18n/cht/extensions/hlsl/package.i18n.json | 4 +++- i18n/cht/extensions/html/package.i18n.json | 2 ++ i18n/cht/extensions/ini/package.i18n.json | 4 +++- i18n/cht/extensions/jake/package.i18n.json | 4 ++++ i18n/cht/extensions/java/package.i18n.json | 4 +++- .../cht/extensions/javascript/package.i18n.json | 4 +++- i18n/cht/extensions/json/package.i18n.json | 3 ++- i18n/cht/extensions/less/package.i18n.json | 4 +++- i18n/cht/extensions/log/package.i18n.json | 2 +- i18n/cht/extensions/lua/package.i18n.json | 4 +++- i18n/cht/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 3 +-- i18n/cht/extensions/markdown/package.i18n.json | 10 +++++++++- .../extensions/merge-conflict/package.i18n.json | 1 + i18n/cht/extensions/npm/package.i18n.json | 7 ++++++- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/cht/extensions/perl/package.i18n.json | 4 +++- i18n/cht/extensions/php/package.i18n.json | 4 +++- .../cht/extensions/powershell/package.i18n.json | 4 +++- i18n/cht/extensions/pug/package.i18n.json | 4 +++- i18n/cht/extensions/python/package.i18n.json | 4 +++- i18n/cht/extensions/r/package.i18n.json | 4 +++- i18n/cht/extensions/razor/package.i18n.json | 4 +++- i18n/cht/extensions/ruby/package.i18n.json | 4 +++- i18n/cht/extensions/rust/package.i18n.json | 4 +++- i18n/cht/extensions/scss/package.i18n.json | 4 +++- i18n/cht/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/cht/extensions/sql/package.i18n.json | 4 +++- i18n/cht/extensions/swift/package.i18n.json | 4 +++- .../extensions/theme-defaults/package.i18n.json | 3 ++- .../theme-kimbie-dark/package.i18n.json | 4 +++- .../theme-monokai-dimmed/package.i18n.json | 4 +++- .../extensions/theme-monokai/package.i18n.json | 4 +++- .../theme-quietlight/package.i18n.json | 4 +++- i18n/cht/extensions/theme-red/package.i18n.json | 4 +++- .../cht/extensions/theme-seti/package.i18n.json | 4 +++- .../theme-solarized-dark/package.i18n.json | 4 +++- .../theme-solarized-light/package.i18n.json | 4 +++- .../theme-tomorrow-night-blue/package.i18n.json | 4 +++- .../typescript-basics/package.i18n.json | 4 +++- .../typescript/out/commands.i18n.json | 2 ++ .../out/utils/typingsStatus.i18n.json | 1 + .../cht/extensions/typescript/package.i18n.json | 6 +++++- i18n/cht/extensions/vb/package.i18n.json | 4 +++- i18n/cht/extensions/xml/package.i18n.json | 4 +++- i18n/cht/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 6 +++++- .../issue/issueReporterPage.i18n.json | 4 ++++ .../vs/code/electron-main/logUploader.i18n.json | 4 ++++ .../common/view/editorColorRegistry.i18n.json | 1 + .../node/extensionManagementService.i18n.json | 3 +++ .../mainThreadMessageService.i18n.json | 1 + .../parts/editor/editor.contribution.i18n.json | 2 ++ .../notificationsActions.i18n.json | 4 +++- .../notifications/notificationsCenter.i18n.json | 1 + .../notifications/notificationsStatus.i18n.json | 4 +++- .../cht/src/vs/workbench/common/theme.i18n.json | 7 ++++++- .../electron-browser/actions.i18n.json | 1 + .../debug/browser/breakpointsView.i18n.json | 2 ++ .../debug.contribution.i18n.json | 2 +- .../electronDebugActions.i18n.json | 1 + .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 14 ++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../extensionTipsService.i18n.json | 1 + .../fileActions.contribution.i18n.json | 1 + .../html/browser/webviewCommands.i18n.json | 4 +++- .../search.contribution.i18n.json | 3 ++- .../task.contribution.i18n.json | 3 +++ .../terminal.contribution.i18n.json | 1 + .../terminalColorRegistry.i18n.json | 2 +- .../update/electron-browser/update.i18n.json | 4 ++++ .../common/extensionsRegistry.i18n.json | 1 + .../electron-browser/fileService.i18n.json | 1 + .../common/keybindingEditing.i18n.json | 2 ++ i18n/deu/extensions/bat/package.i18n.json | 4 +++- i18n/deu/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 4 +++- .../configuration-editing/package.i18n.json | 3 ++- i18n/deu/extensions/cpp/package.i18n.json | 4 +++- i18n/deu/extensions/csharp/package.i18n.json | 4 +++- i18n/deu/extensions/css/package.i18n.json | 2 ++ i18n/deu/extensions/docker/package.i18n.json | 4 +++- i18n/deu/extensions/emmet/package.i18n.json | 7 ++++++- .../extension-editing/package.i18n.json | 4 +++- i18n/deu/extensions/fsharp/package.i18n.json | 4 +++- i18n/deu/extensions/git/out/autofetch.i18n.json | 3 ++- i18n/deu/extensions/git/out/commands.i18n.json | 2 +- i18n/deu/extensions/git/out/model.i18n.json | 1 + i18n/deu/extensions/git/package.i18n.json | 2 ++ i18n/deu/extensions/go/package.i18n.json | 4 +++- i18n/deu/extensions/groovy/package.i18n.json | 4 +++- i18n/deu/extensions/grunt/package.i18n.json | 6 +++++- i18n/deu/extensions/gulp/package.i18n.json | 6 +++++- .../deu/extensions/handlebars/package.i18n.json | 4 +++- i18n/deu/extensions/hlsl/package.i18n.json | 4 +++- i18n/deu/extensions/html/package.i18n.json | 3 +++ i18n/deu/extensions/ini/package.i18n.json | 4 +++- i18n/deu/extensions/jake/package.i18n.json | 4 ++++ i18n/deu/extensions/java/package.i18n.json | 4 +++- .../deu/extensions/javascript/package.i18n.json | 4 +++- i18n/deu/extensions/json/package.i18n.json | 5 ++++- i18n/deu/extensions/less/package.i18n.json | 4 +++- i18n/deu/extensions/log/package.i18n.json | 4 +++- i18n/deu/extensions/lua/package.i18n.json | 4 +++- i18n/deu/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 3 +-- i18n/deu/extensions/markdown/package.i18n.json | 10 +++++++++- .../extensions/merge-conflict/package.i18n.json | 1 + i18n/deu/extensions/npm/package.i18n.json | 7 ++++++- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/deu/extensions/perl/package.i18n.json | 4 +++- i18n/deu/extensions/php/package.i18n.json | 4 +++- .../deu/extensions/powershell/package.i18n.json | 4 +++- i18n/deu/extensions/pug/package.i18n.json | 4 +++- i18n/deu/extensions/python/package.i18n.json | 4 +++- i18n/deu/extensions/r/package.i18n.json | 4 +++- i18n/deu/extensions/razor/package.i18n.json | 4 +++- i18n/deu/extensions/ruby/package.i18n.json | 4 +++- i18n/deu/extensions/rust/package.i18n.json | 4 +++- i18n/deu/extensions/scss/package.i18n.json | 4 +++- i18n/deu/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/deu/extensions/sql/package.i18n.json | 4 +++- i18n/deu/extensions/swift/package.i18n.json | 4 +++- .../extensions/theme-abyss/package.i18n.json | 4 +++- .../extensions/theme-defaults/package.i18n.json | 4 +++- .../theme-kimbie-dark/package.i18n.json | 4 +++- .../theme-monokai-dimmed/package.i18n.json | 4 +++- .../extensions/theme-monokai/package.i18n.json | 4 +++- .../theme-quietlight/package.i18n.json | 4 +++- i18n/deu/extensions/theme-red/package.i18n.json | 4 +++- .../deu/extensions/theme-seti/package.i18n.json | 4 +++- .../theme-solarized-dark/package.i18n.json | 4 +++- .../theme-solarized-light/package.i18n.json | 4 +++- .../theme-tomorrow-night-blue/package.i18n.json | 4 +++- .../typescript-basics/package.i18n.json | 4 +++- .../typescript/out/commands.i18n.json | 2 ++ .../out/utils/typingsStatus.i18n.json | 1 + .../deu/extensions/typescript/package.i18n.json | 6 +++++- i18n/deu/extensions/vb/package.i18n.json | 4 +++- i18n/deu/extensions/xml/package.i18n.json | 4 +++- i18n/deu/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 8 ++++++++ .../issue/issueReporterPage.i18n.json | 9 +++++++++ .../vs/code/electron-main/logUploader.i18n.json | 4 ++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../src/vs/code/electron-main/window.i18n.json | 3 ++- .../node/extensionManagementService.i18n.json | 3 +++ .../mainThreadMessageService.i18n.json | 1 + .../mainThreadWebview.i18n.json | 3 ++- .../node/extHostExtensionActivator.i18n.json | 6 +++++- .../actions/toggleCenteredLayout.i18n.json | 1 + .../parts/editor/editor.contribution.i18n.json | 2 ++ .../notificationsActions.i18n.json | 9 ++++++++- .../notifications/notificationsCenter.i18n.json | 5 ++++- .../notificationsCommands.i18n.json | 6 +++++- .../notifications/notificationsStatus.i18n.json | 7 ++++++- .../notifications/notificationsToasts.i18n.json | 3 ++- .../notifications/notificationsViewer.i18n.json | 4 +++- .../deu/src/vs/workbench/common/theme.i18n.json | 10 +++++++++- .../deu/src/vs/workbench/common/views.i18n.json | 3 ++- .../electron-browser/actions.i18n.json | 4 +++- .../main.contribution.i18n.json | 2 ++ .../debug/browser/breakpointsView.i18n.json | 6 +++++- .../parts/debug/browser/debugCommands.i18n.json | 1 + .../browser/debugContentProvider.i18n.json | 3 ++- .../debug.contribution.i18n.json | 2 +- .../electron-browser/debugService.i18n.json | 2 ++ .../electronDebugActions.i18n.json | 1 + .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 17 +++++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../extensionTipsService.i18n.json | 2 ++ .../extensions.contribution.i18n.json | 3 ++- .../extensionsViewlet.i18n.json | 1 + .../node/extensionsWorkbenchService.i18n.json | 1 + .../fileActions.contribution.i18n.json | 1 + .../electron-browser/fileActions.i18n.json | 2 ++ .../electron-browser/saveErrorHandler.i18n.json | 2 ++ .../views/explorerDecorationsProvider.i18n.json | 3 ++- .../views/explorerViewer.i18n.json | 1 + .../html/browser/webviewCommands.i18n.json | 4 +++- .../localizations.contribution.i18n.json | 1 + .../logs/electron-browser/logsActions.i18n.json | 1 + .../browser/keybindingsEditor.i18n.json | 1 + .../quickopen/browser/commandsHandler.i18n.json | 1 + .../dirtydiffDecorator.i18n.json | 2 ++ .../electron-browser/scm.contribution.i18n.json | 3 ++- .../search.contribution.i18n.json | 3 ++- .../parts/tasks/common/problemMatcher.i18n.json | 3 +++ .../task.contribution.i18n.json | 3 +++ .../terminal.contribution.i18n.json | 4 ++++ .../electron-browser/terminalActions.i18n.json | 10 ++++++++++ .../terminalColorRegistry.i18n.json | 1 + .../electron-browser/terminalInstance.i18n.json | 4 +++- .../electron-browser/terminalPanel.i18n.json | 3 ++- ...rtedWorkspaceSettings.contribution.i18n.json | 3 ++- .../update/electron-browser/update.i18n.json | 4 ++++ .../node/configurationEditingService.i18n.json | 10 ++++++++++ .../common/extensionsRegistry.i18n.json | 1 + .../electron-browser/fileService.i18n.json | 3 +++ .../services/files/node/fileService.i18n.json | 1 + .../common/keybindingEditing.i18n.json | 3 +++ .../themes/common/colorExtensionPoint.i18n.json | 1 + .../themes/common/colorThemeSchema.i18n.json | 3 +++ .../node/workspaceEditingService.i18n.json | 3 ++- i18n/esn/extensions/bat/package.i18n.json | 4 +++- i18n/esn/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 4 +++- .../configuration-editing/package.i18n.json | 2 +- i18n/esn/extensions/cpp/package.i18n.json | 4 +++- i18n/esn/extensions/csharp/package.i18n.json | 4 +++- i18n/esn/extensions/docker/package.i18n.json | 4 +++- i18n/esn/extensions/emmet/package.i18n.json | 1 + .../extension-editing/package.i18n.json | 2 +- i18n/esn/extensions/fsharp/package.i18n.json | 4 +++- i18n/esn/extensions/git/out/autofetch.i18n.json | 3 ++- i18n/esn/extensions/git/package.i18n.json | 1 + i18n/esn/extensions/go/package.i18n.json | 4 +++- i18n/esn/extensions/groovy/package.i18n.json | 4 +++- i18n/esn/extensions/gulp/package.i18n.json | 6 +++++- .../esn/extensions/handlebars/package.i18n.json | 4 +++- i18n/esn/extensions/hlsl/package.i18n.json | 4 +++- i18n/esn/extensions/ini/package.i18n.json | 4 +++- i18n/esn/extensions/jake/package.i18n.json | 4 ++++ i18n/esn/extensions/java/package.i18n.json | 4 +++- .../esn/extensions/javascript/package.i18n.json | 4 +++- i18n/esn/extensions/less/package.i18n.json | 4 +++- i18n/esn/extensions/log/package.i18n.json | 2 +- i18n/esn/extensions/lua/package.i18n.json | 4 +++- i18n/esn/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 3 +-- i18n/esn/extensions/markdown/package.i18n.json | 8 +++++++- .../extensions/merge-conflict/package.i18n.json | 1 + i18n/esn/extensions/npm/package.i18n.json | 5 ++++- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/esn/extensions/perl/package.i18n.json | 4 +++- i18n/esn/extensions/php/package.i18n.json | 4 +++- .../esn/extensions/powershell/package.i18n.json | 4 +++- i18n/esn/extensions/pug/package.i18n.json | 4 +++- i18n/esn/extensions/python/package.i18n.json | 4 +++- i18n/esn/extensions/r/package.i18n.json | 4 +++- i18n/esn/extensions/razor/package.i18n.json | 4 +++- i18n/esn/extensions/ruby/package.i18n.json | 4 +++- i18n/esn/extensions/rust/package.i18n.json | 4 +++- i18n/esn/extensions/scss/package.i18n.json | 4 +++- i18n/esn/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/esn/extensions/sql/package.i18n.json | 4 +++- i18n/esn/extensions/swift/package.i18n.json | 4 +++- .../theme-monokai-dimmed/package.i18n.json | 1 + .../esn/extensions/theme-seti/package.i18n.json | 4 +++- .../theme-solarized-dark/package.i18n.json | 4 +++- .../theme-solarized-light/package.i18n.json | 4 +++- .../theme-tomorrow-night-blue/package.i18n.json | 4 +++- .../typescript-basics/package.i18n.json | 4 +++- .../out/utils/typingsStatus.i18n.json | 1 + .../esn/extensions/typescript/package.i18n.json | 3 ++- i18n/esn/extensions/vb/package.i18n.json | 4 +++- i18n/esn/extensions/xml/package.i18n.json | 4 +++- i18n/esn/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 8 ++++++++ .../issue/issueReporterPage.i18n.json | 9 +++++++++ .../vs/code/electron-main/logUploader.i18n.json | 4 ++++ .../src/vs/code/electron-main/menus.i18n.json | 3 ++- .../src/vs/code/electron-main/window.i18n.json | 3 ++- .../node/extensionManagementService.i18n.json | 3 +++ .../mainThreadMessageService.i18n.json | 1 + .../mainThreadWebview.i18n.json | 3 ++- .../node/extHostExtensionActivator.i18n.json | 6 +++++- .../actions/toggleCenteredLayout.i18n.json | 1 + .../parts/editor/editor.contribution.i18n.json | 2 ++ .../notificationsActions.i18n.json | 7 ++++++- .../notifications/notificationsCenter.i18n.json | 2 ++ .../notifications/notificationsStatus.i18n.json | 4 +++- .../notifications/notificationsToasts.i18n.json | 3 ++- .../notifications/notificationsViewer.i18n.json | 1 + .../esn/src/vs/workbench/common/theme.i18n.json | 10 +++++++++- .../electron-browser/actions.i18n.json | 4 +++- .../debug/browser/breakpointsView.i18n.json | 5 ++++- .../parts/debug/browser/debugCommands.i18n.json | 1 + .../browser/debugContentProvider.i18n.json | 3 ++- .../debug.contribution.i18n.json | 2 +- .../electron-browser/debugService.i18n.json | 2 ++ .../electronDebugActions.i18n.json | 1 + .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 16 ++++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../extensionTipsService.i18n.json | 1 + .../extensionsViewlet.i18n.json | 1 + .../fileActions.contribution.i18n.json | 1 + .../electron-browser/fileActions.i18n.json | 2 ++ .../electron-browser/saveErrorHandler.i18n.json | 2 ++ .../views/explorerDecorationsProvider.i18n.json | 3 ++- .../views/explorerViewer.i18n.json | 1 + .../html/browser/webviewCommands.i18n.json | 4 +++- .../browser/keybindingsEditor.i18n.json | 1 + .../quickopen/browser/commandsHandler.i18n.json | 1 + .../electron-browser/scm.contribution.i18n.json | 3 ++- .../search.contribution.i18n.json | 3 ++- .../parts/tasks/common/problemMatcher.i18n.json | 4 ++++ .../task.contribution.i18n.json | 3 +++ .../terminal.contribution.i18n.json | 4 ++++ .../electron-browser/terminalActions.i18n.json | 10 ++++++++++ .../terminalColorRegistry.i18n.json | 1 + .../electron-browser/terminalInstance.i18n.json | 4 +++- ...rtedWorkspaceSettings.contribution.i18n.json | 3 ++- .../update/electron-browser/update.i18n.json | 4 ++++ .../menusExtensionPoint.i18n.json | 1 + .../node/configurationEditingService.i18n.json | 10 ++++++++++ .../common/extensionsRegistry.i18n.json | 1 + .../electron-browser/fileService.i18n.json | 2 ++ .../services/files/node/fileService.i18n.json | 1 + .../themes/common/colorThemeSchema.i18n.json | 1 + .../node/workspaceEditingService.i18n.json | 3 ++- i18n/fra/extensions/bat/package.i18n.json | 4 +++- i18n/fra/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 3 ++- .../configuration-editing/package.i18n.json | 2 +- i18n/fra/extensions/cpp/package.i18n.json | 4 +++- i18n/fra/extensions/csharp/package.i18n.json | 4 +++- i18n/fra/extensions/docker/package.i18n.json | 4 +++- i18n/fra/extensions/emmet/package.i18n.json | 1 + .../extension-editing/package.i18n.json | 2 +- i18n/fra/extensions/fsharp/package.i18n.json | 4 +++- i18n/fra/extensions/git/out/autofetch.i18n.json | 3 ++- i18n/fra/extensions/go/package.i18n.json | 4 +++- i18n/fra/extensions/groovy/package.i18n.json | 4 +++- .../fra/extensions/handlebars/package.i18n.json | 4 +++- i18n/fra/extensions/hlsl/package.i18n.json | 4 +++- i18n/fra/extensions/ini/package.i18n.json | 4 +++- i18n/fra/extensions/java/package.i18n.json | 4 +++- .../fra/extensions/javascript/package.i18n.json | 4 +++- i18n/fra/extensions/less/package.i18n.json | 4 +++- i18n/fra/extensions/log/package.i18n.json | 2 +- i18n/fra/extensions/lua/package.i18n.json | 4 +++- i18n/fra/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 3 +-- i18n/fra/extensions/markdown/package.i18n.json | 8 +++++++- .../extensions/merge-conflict/package.i18n.json | 2 +- i18n/fra/extensions/npm/package.i18n.json | 5 ++++- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/fra/extensions/perl/package.i18n.json | 4 +++- i18n/fra/extensions/php/package.i18n.json | 4 +++- .../fra/extensions/powershell/package.i18n.json | 4 +++- i18n/fra/extensions/pug/package.i18n.json | 4 +++- i18n/fra/extensions/python/package.i18n.json | 4 +++- i18n/fra/extensions/r/package.i18n.json | 4 +++- i18n/fra/extensions/razor/package.i18n.json | 4 +++- i18n/fra/extensions/ruby/package.i18n.json | 4 +++- i18n/fra/extensions/rust/package.i18n.json | 4 +++- i18n/fra/extensions/scss/package.i18n.json | 4 +++- i18n/fra/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/fra/extensions/sql/package.i18n.json | 4 +++- i18n/fra/extensions/swift/package.i18n.json | 4 +++- .../typescript-basics/package.i18n.json | 3 ++- .../fra/extensions/typescript/package.i18n.json | 3 ++- i18n/fra/extensions/vb/package.i18n.json | 4 +++- i18n/fra/extensions/xml/package.i18n.json | 4 +++- i18n/fra/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 2 +- .../issue/issueReporterPage.i18n.json | 4 ++++ .../node/extensionManagementService.i18n.json | 3 +++ .../mainThreadMessageService.i18n.json | 1 + .../notifications/notificationsStatus.i18n.json | 4 +++- .../fra/src/vs/workbench/common/theme.i18n.json | 7 ++++--- .../debug/browser/breakpointsView.i18n.json | 2 ++ .../debug.contribution.i18n.json | 2 +- .../electronDebugActions.i18n.json | 1 + .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 14 ++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../extensionsViewlet.i18n.json | 1 + .../fileActions.contribution.i18n.json | 1 + .../html/browser/webviewCommands.i18n.json | 2 +- .../search.contribution.i18n.json | 4 ++-- .../terminal.contribution.i18n.json | 1 + .../terminalColorRegistry.i18n.json | 2 +- .../update/electron-browser/update.i18n.json | 1 + .../common/extensionsRegistry.i18n.json | 1 + .../electron-browser/fileService.i18n.json | 1 + i18n/hun/extensions/bat/package.i18n.json | 3 ++- i18n/hun/extensions/clojure/package.i18n.json | 3 ++- .../extensions/coffeescript/package.i18n.json | 3 ++- i18n/hun/extensions/cpp/package.i18n.json | 3 ++- i18n/hun/extensions/csharp/package.i18n.json | 3 ++- i18n/hun/extensions/docker/package.i18n.json | 3 ++- i18n/hun/extensions/emmet/package.i18n.json | 1 + .../extension-editing/package.i18n.json | 2 +- i18n/hun/extensions/fsharp/package.i18n.json | 3 ++- i18n/hun/extensions/go/package.i18n.json | 4 +++- i18n/hun/extensions/groovy/package.i18n.json | 3 ++- .../hun/extensions/handlebars/package.i18n.json | 3 ++- i18n/hun/extensions/hlsl/package.i18n.json | 3 ++- i18n/hun/extensions/ini/package.i18n.json | 3 ++- i18n/hun/extensions/java/package.i18n.json | 3 ++- .../hun/extensions/javascript/package.i18n.json | 3 ++- i18n/hun/extensions/json/package.i18n.json | 1 + i18n/hun/extensions/less/package.i18n.json | 3 ++- i18n/hun/extensions/log/package.i18n.json | 2 +- i18n/hun/extensions/lua/package.i18n.json | 3 ++- i18n/hun/extensions/make/package.i18n.json | 3 ++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 4 +--- i18n/hun/extensions/markdown/package.i18n.json | 8 ++++++-- .../extensions/merge-conflict/package.i18n.json | 2 +- i18n/hun/extensions/npm/package.i18n.json | 5 ++++- .../extensions/objective-c/package.i18n.json | 3 ++- i18n/hun/extensions/perl/package.i18n.json | 3 ++- i18n/hun/extensions/php/package.i18n.json | 4 +++- .../hun/extensions/powershell/package.i18n.json | 3 ++- i18n/hun/extensions/pug/package.i18n.json | 3 ++- i18n/hun/extensions/python/package.i18n.json | 3 ++- i18n/hun/extensions/r/package.i18n.json | 3 ++- i18n/hun/extensions/razor/package.i18n.json | 3 ++- i18n/hun/extensions/ruby/package.i18n.json | 3 ++- i18n/hun/extensions/rust/package.i18n.json | 3 ++- i18n/hun/extensions/scss/package.i18n.json | 3 ++- i18n/hun/extensions/shaderlab/package.i18n.json | 3 ++- .../extensions/shellscript/package.i18n.json | 3 ++- i18n/hun/extensions/sql/package.i18n.json | 3 ++- i18n/hun/extensions/swift/package.i18n.json | 3 ++- .../typescript-basics/package.i18n.json | 3 ++- .../hun/extensions/typescript/package.i18n.json | 3 ++- i18n/hun/extensions/vb/package.i18n.json | 3 ++- i18n/hun/extensions/xml/package.i18n.json | 3 ++- i18n/hun/extensions/yaml/package.i18n.json | 3 ++- .../issue/issueReporterMain.i18n.json | 2 +- .../issue/issueReporterPage.i18n.json | 5 +++-- .../node/extensionManagementService.i18n.json | 3 +++ .../notifications/notificationsStatus.i18n.json | 4 +++- .../hun/src/vs/workbench/common/theme.i18n.json | 8 ++++---- .../debug.contribution.i18n.json | 2 +- .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 14 ++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../html/browser/webviewCommands.i18n.json | 2 +- .../search.contribution.i18n.json | 2 +- .../terminalColorRegistry.i18n.json | 2 +- .../update/electron-browser/update.i18n.json | 1 + .../common/extensionsRegistry.i18n.json | 2 +- i18n/ita/extensions/bat/package.i18n.json | 4 +++- i18n/ita/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 4 +++- .../configuration-editing/package.i18n.json | 3 ++- i18n/ita/extensions/cpp/package.i18n.json | 4 +++- i18n/ita/extensions/csharp/package.i18n.json | 4 +++- i18n/ita/extensions/css/package.i18n.json | 1 + i18n/ita/extensions/docker/package.i18n.json | 4 +++- i18n/ita/extensions/emmet/package.i18n.json | 7 ++++++- .../extension-editing/package.i18n.json | 2 +- i18n/ita/extensions/fsharp/package.i18n.json | 4 +++- i18n/ita/extensions/git/out/autofetch.i18n.json | 3 ++- i18n/ita/extensions/git/out/model.i18n.json | 1 + i18n/ita/extensions/git/package.i18n.json | 2 ++ i18n/ita/extensions/go/package.i18n.json | 4 +++- i18n/ita/extensions/groovy/package.i18n.json | 4 +++- i18n/ita/extensions/grunt/package.i18n.json | 6 +++++- i18n/ita/extensions/gulp/package.i18n.json | 6 +++++- .../ita/extensions/handlebars/package.i18n.json | 4 +++- i18n/ita/extensions/hlsl/package.i18n.json | 4 +++- i18n/ita/extensions/html/package.i18n.json | 3 +++ i18n/ita/extensions/ini/package.i18n.json | 4 +++- i18n/ita/extensions/jake/package.i18n.json | 4 ++++ i18n/ita/extensions/java/package.i18n.json | 4 +++- .../ita/extensions/javascript/package.i18n.json | 4 +++- i18n/ita/extensions/json/package.i18n.json | 5 ++++- i18n/ita/extensions/less/package.i18n.json | 4 +++- i18n/ita/extensions/log/package.i18n.json | 2 +- i18n/ita/extensions/lua/package.i18n.json | 4 +++- i18n/ita/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 3 +-- i18n/ita/extensions/markdown/package.i18n.json | 10 +++++++++- .../extensions/merge-conflict/package.i18n.json | 1 + i18n/ita/extensions/npm/package.i18n.json | 6 +++++- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/ita/extensions/perl/package.i18n.json | 4 +++- i18n/ita/extensions/php/package.i18n.json | 4 +++- .../ita/extensions/powershell/package.i18n.json | 4 +++- i18n/ita/extensions/pug/package.i18n.json | 4 +++- i18n/ita/extensions/python/package.i18n.json | 4 +++- i18n/ita/extensions/r/package.i18n.json | 4 +++- i18n/ita/extensions/razor/package.i18n.json | 4 +++- i18n/ita/extensions/ruby/package.i18n.json | 4 +++- i18n/ita/extensions/rust/package.i18n.json | 4 +++- i18n/ita/extensions/scss/package.i18n.json | 4 +++- i18n/ita/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/ita/extensions/sql/package.i18n.json | 4 +++- i18n/ita/extensions/swift/package.i18n.json | 4 +++- .../typescript-basics/package.i18n.json | 4 +++- .../ita/extensions/typescript/package.i18n.json | 4 +++- i18n/ita/extensions/vb/package.i18n.json | 4 +++- i18n/ita/extensions/xml/package.i18n.json | 4 +++- i18n/ita/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 10 ++++++++++ .../issue/issueReporterPage.i18n.json | 9 +++++++++ .../vs/code/electron-main/logUploader.i18n.json | 4 ++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../src/vs/code/electron-main/window.i18n.json | 3 ++- .../common/view/editorColorRegistry.i18n.json | 2 ++ .../contrib/format/formatActions.i18n.json | 1 + .../src/vs/editor/contrib/links/links.i18n.json | 2 ++ .../vs/editor/contrib/rename/rename.i18n.json | 1 + .../wordHighlighter/wordHighlighter.i18n.json | 2 ++ .../node/extensionManagementService.i18n.json | 3 +++ .../theme/common/colorRegistry.i18n.json | 7 +++++++ .../mainThreadMessageService.i18n.json | 1 + .../mainThreadWebview.i18n.json | 3 ++- .../node/extHostExtensionActivator.i18n.json | 6 +++++- .../actions/toggleCenteredLayout.i18n.json | 1 + .../parts/editor/editor.contribution.i18n.json | 2 ++ .../notificationsActions.i18n.json | 9 ++++++++- .../notifications/notificationsCenter.i18n.json | 5 ++++- .../notificationsCommands.i18n.json | 6 +++++- .../notifications/notificationsStatus.i18n.json | 7 ++++++- .../notifications/notificationsToasts.i18n.json | 3 ++- .../notifications/notificationsViewer.i18n.json | 4 +++- .../src/vs/workbench/browser/viewlet.i18n.json | 1 + .../ita/src/vs/workbench/common/theme.i18n.json | 10 +++++++++- .../ita/src/vs/workbench/common/views.i18n.json | 3 ++- .../electron-browser/actions.i18n.json | 4 +++- .../main.contribution.i18n.json | 2 ++ .../debug/browser/breakpointsView.i18n.json | 6 +++++- .../parts/debug/browser/debugCommands.i18n.json | 1 + .../browser/debugContentProvider.i18n.json | 3 ++- .../debug.contribution.i18n.json | 2 +- .../electron-browser/debugService.i18n.json | 2 ++ .../electronDebugActions.i18n.json | 1 + .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 17 +++++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../extensionTipsService.i18n.json | 2 ++ .../extensions.contribution.i18n.json | 3 ++- .../extensionsViewlet.i18n.json | 1 + .../node/extensionsWorkbenchService.i18n.json | 1 + .../fileActions.contribution.i18n.json | 1 + .../electron-browser/fileActions.i18n.json | 2 ++ .../electron-browser/saveErrorHandler.i18n.json | 2 ++ .../views/explorerDecorationsProvider.i18n.json | 3 ++- .../views/explorerViewer.i18n.json | 1 + .../html/browser/webviewCommands.i18n.json | 4 +++- .../localizations.contribution.i18n.json | 1 + .../logs/electron-browser/logsActions.i18n.json | 1 + .../browser/keybindingsEditor.i18n.json | 1 + .../quickopen/browser/commandsHandler.i18n.json | 1 + .../dirtydiffDecorator.i18n.json | 2 ++ .../electron-browser/scm.contribution.i18n.json | 3 ++- .../parts/search/browser/searchView.i18n.json | 1 + .../search.contribution.i18n.json | 3 ++- .../parts/tasks/common/problemMatcher.i18n.json | 4 ++++ .../task.contribution.i18n.json | 3 +++ .../terminal.contribution.i18n.json | 4 ++++ .../electron-browser/terminalActions.i18n.json | 10 ++++++++++ .../terminalColorRegistry.i18n.json | 1 + .../electron-browser/terminalInstance.i18n.json | 4 +++- .../electron-browser/terminalPanel.i18n.json | 3 ++- ...rtedWorkspaceSettings.contribution.i18n.json | 3 ++- .../update/electron-browser/update.i18n.json | 4 ++++ .../node/configurationEditingService.i18n.json | 10 ++++++++++ .../common/extensionsRegistry.i18n.json | 1 + .../electron-browser/fileService.i18n.json | 3 +++ .../services/files/node/fileService.i18n.json | 1 + .../common/keybindingEditing.i18n.json | 3 +++ .../themes/common/colorExtensionPoint.i18n.json | 2 ++ .../themes/common/colorThemeSchema.i18n.json | 3 +++ .../node/workspaceEditingService.i18n.json | 3 ++- i18n/jpn/extensions/bat/package.i18n.json | 4 +++- i18n/jpn/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 4 +++- .../configuration-editing/package.i18n.json | 2 +- i18n/jpn/extensions/cpp/package.i18n.json | 4 +++- i18n/jpn/extensions/csharp/package.i18n.json | 4 +++- i18n/jpn/extensions/docker/package.i18n.json | 4 +++- i18n/jpn/extensions/emmet/package.i18n.json | 1 + .../extension-editing/package.i18n.json | 2 +- i18n/jpn/extensions/fsharp/package.i18n.json | 4 +++- i18n/jpn/extensions/go/package.i18n.json | 3 ++- i18n/jpn/extensions/groovy/package.i18n.json | 4 +++- .../jpn/extensions/handlebars/package.i18n.json | 4 +++- i18n/jpn/extensions/hlsl/package.i18n.json | 4 +++- i18n/jpn/extensions/ini/package.i18n.json | 4 +++- i18n/jpn/extensions/java/package.i18n.json | 4 +++- .../jpn/extensions/javascript/package.i18n.json | 4 +++- i18n/jpn/extensions/less/package.i18n.json | 4 +++- i18n/jpn/extensions/log/package.i18n.json | 2 +- i18n/jpn/extensions/lua/package.i18n.json | 4 +++- i18n/jpn/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 3 +-- i18n/jpn/extensions/markdown/package.i18n.json | 8 +++++++- .../extensions/merge-conflict/package.i18n.json | 2 +- i18n/jpn/extensions/npm/package.i18n.json | 5 ++++- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/jpn/extensions/perl/package.i18n.json | 4 +++- i18n/jpn/extensions/php/package.i18n.json | 4 +++- .../jpn/extensions/powershell/package.i18n.json | 4 +++- i18n/jpn/extensions/pug/package.i18n.json | 4 +++- i18n/jpn/extensions/python/package.i18n.json | 4 +++- i18n/jpn/extensions/r/package.i18n.json | 4 +++- i18n/jpn/extensions/razor/package.i18n.json | 4 +++- i18n/jpn/extensions/ruby/package.i18n.json | 4 +++- i18n/jpn/extensions/rust/package.i18n.json | 4 +++- i18n/jpn/extensions/scss/package.i18n.json | 4 +++- i18n/jpn/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/jpn/extensions/sql/package.i18n.json | 4 +++- i18n/jpn/extensions/swift/package.i18n.json | 4 +++- .../typescript-basics/package.i18n.json | 3 ++- .../jpn/extensions/typescript/package.i18n.json | 3 ++- i18n/jpn/extensions/vb/package.i18n.json | 4 +++- i18n/jpn/extensions/xml/package.i18n.json | 4 +++- i18n/jpn/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 2 +- .../issue/issueReporterPage.i18n.json | 5 +++-- .../node/extensionManagementService.i18n.json | 3 +++ .../notifications/notificationsStatus.i18n.json | 4 +++- .../jpn/src/vs/workbench/common/theme.i18n.json | 8 ++++---- .../debug.contribution.i18n.json | 2 +- .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 14 ++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../html/browser/webviewCommands.i18n.json | 2 +- .../search.contribution.i18n.json | 4 ++-- .../terminalColorRegistry.i18n.json | 2 +- .../update/electron-browser/update.i18n.json | 1 + .../common/extensionsRegistry.i18n.json | 1 + i18n/kor/extensions/bat/package.i18n.json | 4 +++- i18n/kor/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 4 +++- .../configuration-editing/package.i18n.json | 4 +++- i18n/kor/extensions/cpp/package.i18n.json | 4 +++- i18n/kor/extensions/csharp/package.i18n.json | 4 +++- i18n/kor/extensions/css/package.i18n.json | 2 ++ i18n/kor/extensions/docker/package.i18n.json | 4 +++- i18n/kor/extensions/emmet/package.i18n.json | 7 ++++++- .../extension-editing/package.i18n.json | 4 +++- i18n/kor/extensions/fsharp/package.i18n.json | 4 +++- i18n/kor/extensions/git/out/autofetch.i18n.json | 3 ++- i18n/kor/extensions/git/out/model.i18n.json | 1 + i18n/kor/extensions/git/package.i18n.json | 2 ++ i18n/kor/extensions/go/package.i18n.json | 4 +++- i18n/kor/extensions/groovy/package.i18n.json | 4 +++- i18n/kor/extensions/grunt/package.i18n.json | 6 +++++- i18n/kor/extensions/gulp/package.i18n.json | 6 +++++- .../kor/extensions/handlebars/package.i18n.json | 4 +++- i18n/kor/extensions/hlsl/package.i18n.json | 4 +++- i18n/kor/extensions/html/package.i18n.json | 3 +++ i18n/kor/extensions/ini/package.i18n.json | 4 +++- i18n/kor/extensions/jake/package.i18n.json | 3 +++ i18n/kor/extensions/java/package.i18n.json | 4 +++- .../kor/extensions/javascript/package.i18n.json | 4 +++- i18n/kor/extensions/json/package.i18n.json | 5 ++++- i18n/kor/extensions/less/package.i18n.json | 4 +++- i18n/kor/extensions/log/package.i18n.json | 4 +++- i18n/kor/extensions/lua/package.i18n.json | 4 +++- i18n/kor/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ i18n/kor/extensions/markdown/package.i18n.json | 10 +++++++++- .../extensions/merge-conflict/package.i18n.json | 1 + i18n/kor/extensions/npm/package.i18n.json | 7 ++++++- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/kor/extensions/perl/package.i18n.json | 4 +++- i18n/kor/extensions/php/package.i18n.json | 4 +++- .../kor/extensions/powershell/package.i18n.json | 4 +++- i18n/kor/extensions/pug/package.i18n.json | 4 +++- i18n/kor/extensions/python/package.i18n.json | 4 +++- i18n/kor/extensions/r/package.i18n.json | 4 +++- i18n/kor/extensions/razor/package.i18n.json | 4 +++- i18n/kor/extensions/ruby/package.i18n.json | 4 +++- i18n/kor/extensions/rust/package.i18n.json | 4 +++- i18n/kor/extensions/scss/package.i18n.json | 4 +++- i18n/kor/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/kor/extensions/sql/package.i18n.json | 4 +++- i18n/kor/extensions/swift/package.i18n.json | 4 +++- .../extensions/theme-abyss/package.i18n.json | 4 +++- .../extensions/theme-defaults/package.i18n.json | 4 +++- .../theme-kimbie-dark/package.i18n.json | 4 +++- .../theme-monokai-dimmed/package.i18n.json | 4 +++- .../extensions/theme-monokai/package.i18n.json | 4 +++- .../theme-quietlight/package.i18n.json | 4 +++- i18n/kor/extensions/theme-red/package.i18n.json | 4 +++- .../kor/extensions/theme-seti/package.i18n.json | 4 +++- .../theme-solarized-dark/package.i18n.json | 4 +++- .../theme-solarized-light/package.i18n.json | 4 +++- .../theme-tomorrow-night-blue/package.i18n.json | 4 +++- .../typescript-basics/package.i18n.json | 4 +++- .../typescript/out/commands.i18n.json | 2 ++ .../out/utils/typingsStatus.i18n.json | 1 + .../kor/extensions/typescript/package.i18n.json | 6 +++++- i18n/kor/extensions/vb/package.i18n.json | 4 +++- i18n/kor/extensions/xml/package.i18n.json | 4 +++- i18n/kor/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 8 ++++++++ .../issue/issueReporterPage.i18n.json | 9 +++++++++ .../vs/code/electron-main/logUploader.i18n.json | 4 ++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../src/vs/code/electron-main/window.i18n.json | 3 ++- .../common/view/editorColorRegistry.i18n.json | 1 + .../node/extensionManagementService.i18n.json | 3 +++ .../theme/common/colorRegistry.i18n.json | 2 ++ .../mainThreadMessageService.i18n.json | 1 + .../mainThreadWebview.i18n.json | 3 ++- .../node/extHostExtensionActivator.i18n.json | 6 +++++- .../actions/toggleCenteredLayout.i18n.json | 1 + .../parts/editor/editor.contribution.i18n.json | 2 ++ .../notificationsActions.i18n.json | 9 ++++++++- .../notifications/notificationsCenter.i18n.json | 5 ++++- .../notificationsCommands.i18n.json | 6 +++++- .../notifications/notificationsStatus.i18n.json | 7 ++++++- .../notifications/notificationsToasts.i18n.json | 3 ++- .../notifications/notificationsViewer.i18n.json | 4 +++- .../kor/src/vs/workbench/common/theme.i18n.json | 10 +++++++++- .../kor/src/vs/workbench/common/views.i18n.json | 3 ++- .../electron-browser/actions.i18n.json | 4 +++- .../main.contribution.i18n.json | 2 ++ .../debug/browser/breakpointsView.i18n.json | 6 +++++- .../parts/debug/browser/debugCommands.i18n.json | 1 + .../browser/debugContentProvider.i18n.json | 3 ++- .../debug.contribution.i18n.json | 2 +- .../electron-browser/debugService.i18n.json | 2 ++ .../electronDebugActions.i18n.json | 1 + .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 17 +++++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../extensionTipsService.i18n.json | 2 ++ .../extensions.contribution.i18n.json | 3 ++- .../extensionsViewlet.i18n.json | 1 + .../node/extensionsWorkbenchService.i18n.json | 1 + .../fileActions.contribution.i18n.json | 1 + .../electron-browser/fileActions.i18n.json | 2 ++ .../electron-browser/saveErrorHandler.i18n.json | 2 ++ .../views/explorerDecorationsProvider.i18n.json | 3 ++- .../views/explorerViewer.i18n.json | 1 + .../html/browser/webviewCommands.i18n.json | 4 +++- .../logs/electron-browser/logsActions.i18n.json | 1 + .../browser/keybindingsEditor.i18n.json | 1 + .../quickopen/browser/commandsHandler.i18n.json | 1 + .../dirtydiffDecorator.i18n.json | 2 ++ .../electron-browser/scm.contribution.i18n.json | 3 ++- .../search.contribution.i18n.json | 3 ++- .../parts/tasks/common/problemMatcher.i18n.json | 3 +++ .../task.contribution.i18n.json | 2 ++ .../terminal.contribution.i18n.json | 4 ++++ .../electron-browser/terminalActions.i18n.json | 10 ++++++++++ .../terminalColorRegistry.i18n.json | 1 + .../electron-browser/terminalInstance.i18n.json | 4 +++- .../electron-browser/terminalPanel.i18n.json | 3 ++- ...rtedWorkspaceSettings.contribution.i18n.json | 3 ++- .../update/electron-browser/update.i18n.json | 4 ++++ .../menusExtensionPoint.i18n.json | 1 + .../node/configurationEditingService.i18n.json | 10 ++++++++++ .../common/extensionsRegistry.i18n.json | 1 + .../electron-browser/fileService.i18n.json | 3 +++ .../services/files/node/fileService.i18n.json | 1 + .../common/keybindingEditing.i18n.json | 3 +++ .../themes/common/colorThemeSchema.i18n.json | 3 +++ .../node/workspaceEditingService.i18n.json | 3 ++- i18n/ptb/extensions/bat/package.i18n.json | 4 +++- i18n/ptb/extensions/clojure/package.i18n.json | 3 ++- .../extensions/coffeescript/package.i18n.json | 3 ++- .../configuration-editing/package.i18n.json | 3 +-- i18n/ptb/extensions/cpp/package.i18n.json | 3 ++- i18n/ptb/extensions/csharp/package.i18n.json | 4 +++- i18n/ptb/extensions/docker/package.i18n.json | 4 +++- i18n/ptb/extensions/emmet/package.i18n.json | 1 + .../extension-editing/package.i18n.json | 3 +-- i18n/ptb/extensions/fsharp/package.i18n.json | 3 ++- i18n/ptb/extensions/go/package.i18n.json | 3 ++- i18n/ptb/extensions/groovy/package.i18n.json | 3 ++- .../ptb/extensions/handlebars/package.i18n.json | 3 ++- i18n/ptb/extensions/hlsl/package.i18n.json | 3 ++- i18n/ptb/extensions/ini/package.i18n.json | 3 ++- i18n/ptb/extensions/java/package.i18n.json | 3 ++- .../ptb/extensions/javascript/package.i18n.json | 3 ++- i18n/ptb/extensions/less/package.i18n.json | 3 ++- i18n/ptb/extensions/log/package.i18n.json | 3 +-- i18n/ptb/extensions/lua/package.i18n.json | 3 ++- i18n/ptb/extensions/make/package.i18n.json | 3 ++- .../markdown-basics/package.i18n.json | 9 +++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 3 +-- i18n/ptb/extensions/markdown/package.i18n.json | 5 +++-- .../extensions/merge-conflict/package.i18n.json | 1 - i18n/ptb/extensions/npm/package.i18n.json | 5 ++++- .../extensions/objective-c/package.i18n.json | 3 ++- i18n/ptb/extensions/perl/package.i18n.json | 3 ++- i18n/ptb/extensions/php/package.i18n.json | 3 ++- .../ptb/extensions/powershell/package.i18n.json | 3 ++- i18n/ptb/extensions/pug/package.i18n.json | 3 ++- i18n/ptb/extensions/python/package.i18n.json | 3 ++- i18n/ptb/extensions/r/package.i18n.json | 3 ++- i18n/ptb/extensions/razor/package.i18n.json | 3 ++- i18n/ptb/extensions/ruby/package.i18n.json | 3 ++- i18n/ptb/extensions/rust/package.i18n.json | 3 ++- i18n/ptb/extensions/scss/package.i18n.json | 3 ++- i18n/ptb/extensions/shaderlab/package.i18n.json | 3 ++- .../extensions/shellscript/package.i18n.json | 3 ++- i18n/ptb/extensions/sql/package.i18n.json | 3 ++- i18n/ptb/extensions/swift/package.i18n.json | 3 ++- .../ptb/extensions/typescript/package.i18n.json | 3 ++- i18n/ptb/extensions/vb/package.i18n.json | 3 ++- i18n/ptb/extensions/xml/package.i18n.json | 3 ++- i18n/ptb/extensions/yaml/package.i18n.json | 3 ++- .../issue/issueReporterMain.i18n.json | 2 +- .../issue/issueReporterPage.i18n.json | 1 + .../node/extensionManagementService.i18n.json | 3 +++ .../debug.contribution.i18n.json | 1 - .../browser/extensionsActions.i18n.json | 7 +++++++ .../html/browser/webviewCommands.i18n.json | 1 - .../search.contribution.i18n.json | 4 +--- .../terminalColorRegistry.i18n.json | 1 - .../update/electron-browser/update.i18n.json | 1 + i18n/rus/extensions/bat/package.i18n.json | 4 +++- i18n/rus/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 4 +++- .../configuration-editing/package.i18n.json | 4 +++- i18n/rus/extensions/cpp/package.i18n.json | 4 +++- i18n/rus/extensions/csharp/package.i18n.json | 4 +++- i18n/rus/extensions/css/package.i18n.json | 2 ++ i18n/rus/extensions/docker/package.i18n.json | 4 +++- i18n/rus/extensions/emmet/package.i18n.json | 7 ++++++- .../extension-editing/package.i18n.json | 4 +++- i18n/rus/extensions/fsharp/package.i18n.json | 4 +++- i18n/rus/extensions/git/out/autofetch.i18n.json | 3 ++- i18n/rus/extensions/git/out/model.i18n.json | 1 + i18n/rus/extensions/git/package.i18n.json | 2 ++ i18n/rus/extensions/go/package.i18n.json | 4 +++- i18n/rus/extensions/groovy/package.i18n.json | 4 +++- i18n/rus/extensions/grunt/package.i18n.json | 6 +++++- i18n/rus/extensions/gulp/package.i18n.json | 6 +++++- .../rus/extensions/handlebars/package.i18n.json | 4 +++- i18n/rus/extensions/hlsl/package.i18n.json | 4 +++- i18n/rus/extensions/html/package.i18n.json | 3 +++ i18n/rus/extensions/ini/package.i18n.json | 4 +++- i18n/rus/extensions/jake/package.i18n.json | 4 ++++ i18n/rus/extensions/java/package.i18n.json | 4 +++- .../rus/extensions/javascript/package.i18n.json | 4 +++- i18n/rus/extensions/json/package.i18n.json | 5 ++++- i18n/rus/extensions/less/package.i18n.json | 4 +++- i18n/rus/extensions/log/package.i18n.json | 3 ++- i18n/rus/extensions/lua/package.i18n.json | 4 +++- i18n/rus/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ i18n/rus/extensions/markdown/package.i18n.json | 10 +++++++++- .../extensions/merge-conflict/package.i18n.json | 1 + i18n/rus/extensions/npm/package.i18n.json | 7 ++++++- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/rus/extensions/perl/package.i18n.json | 4 +++- i18n/rus/extensions/php/package.i18n.json | 4 +++- .../rus/extensions/powershell/package.i18n.json | 4 +++- i18n/rus/extensions/pug/package.i18n.json | 4 +++- i18n/rus/extensions/python/package.i18n.json | 4 +++- i18n/rus/extensions/r/package.i18n.json | 4 +++- i18n/rus/extensions/razor/package.i18n.json | 4 +++- i18n/rus/extensions/ruby/package.i18n.json | 4 +++- i18n/rus/extensions/rust/package.i18n.json | 4 +++- i18n/rus/extensions/scss/package.i18n.json | 4 +++- i18n/rus/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/rus/extensions/sql/package.i18n.json | 4 +++- i18n/rus/extensions/swift/package.i18n.json | 4 +++- .../extensions/theme-abyss/package.i18n.json | 4 +++- .../extensions/theme-defaults/package.i18n.json | 4 +++- .../theme-kimbie-dark/package.i18n.json | 4 +++- .../theme-monokai-dimmed/package.i18n.json | 4 +++- .../extensions/theme-monokai/package.i18n.json | 4 +++- .../theme-quietlight/package.i18n.json | 4 +++- i18n/rus/extensions/theme-red/package.i18n.json | 4 +++- .../rus/extensions/theme-seti/package.i18n.json | 4 +++- .../theme-solarized-dark/package.i18n.json | 4 +++- .../theme-solarized-light/package.i18n.json | 4 +++- .../theme-tomorrow-night-blue/package.i18n.json | 4 +++- .../typescript-basics/package.i18n.json | 4 +++- .../typescript/out/commands.i18n.json | 2 ++ .../out/utils/typingsStatus.i18n.json | 1 + .../rus/extensions/typescript/package.i18n.json | 6 +++++- i18n/rus/extensions/vb/package.i18n.json | 4 +++- i18n/rus/extensions/xml/package.i18n.json | 4 +++- i18n/rus/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 12 ++++++++++++ .../issue/issueReporterPage.i18n.json | 9 +++++++++ .../vs/code/electron-main/logUploader.i18n.json | 4 ++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../src/vs/code/electron-main/window.i18n.json | 3 ++- .../common/view/editorColorRegistry.i18n.json | 1 + .../contrib/format/formatActions.i18n.json | 1 + .../src/vs/editor/contrib/links/links.i18n.json | 2 ++ .../vs/editor/contrib/rename/rename.i18n.json | 1 + .../wordHighlighter/wordHighlighter.i18n.json | 2 ++ .../vs/platform/environment/node/argv.i18n.json | 1 + .../node/extensionManagementService.i18n.json | 3 +++ .../theme/common/colorRegistry.i18n.json | 7 +++++++ .../mainThreadMessageService.i18n.json | 1 + .../mainThreadWebview.i18n.json | 3 ++- .../node/extHostExtensionActivator.i18n.json | 6 +++++- .../actions/toggleCenteredLayout.i18n.json | 1 + .../parts/editor/editor.contribution.i18n.json | 2 ++ .../notificationsActions.i18n.json | 9 ++++++++- .../notifications/notificationsCenter.i18n.json | 5 ++++- .../notificationsCommands.i18n.json | 6 +++++- .../notifications/notificationsStatus.i18n.json | 7 ++++++- .../notifications/notificationsToasts.i18n.json | 3 ++- .../notifications/notificationsViewer.i18n.json | 4 +++- .../rus/src/vs/workbench/common/theme.i18n.json | 10 +++++++++- .../rus/src/vs/workbench/common/views.i18n.json | 3 ++- .../electron-browser/actions.i18n.json | 4 +++- .../main.contribution.i18n.json | 2 ++ .../debug/browser/breakpointsView.i18n.json | 6 +++++- .../parts/debug/browser/debugCommands.i18n.json | 1 + .../browser/debugContentProvider.i18n.json | 3 ++- .../debug.contribution.i18n.json | 2 +- .../electron-browser/debugService.i18n.json | 2 ++ .../electronDebugActions.i18n.json | 1 + .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 17 +++++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../extensionTipsService.i18n.json | 2 ++ .../extensions.contribution.i18n.json | 3 ++- .../extensionsViewlet.i18n.json | 1 + .../node/extensionsWorkbenchService.i18n.json | 1 + .../fileActions.contribution.i18n.json | 1 + .../electron-browser/fileActions.i18n.json | 2 ++ .../electron-browser/saveErrorHandler.i18n.json | 2 ++ .../views/explorerDecorationsProvider.i18n.json | 3 ++- .../views/explorerViewer.i18n.json | 1 + .../html/browser/webviewCommands.i18n.json | 4 +++- .../localizations.contribution.i18n.json | 1 + .../logs/electron-browser/logsActions.i18n.json | 1 + .../browser/keybindingsEditor.i18n.json | 1 + .../quickopen/browser/commandsHandler.i18n.json | 1 + .../dirtydiffDecorator.i18n.json | 2 ++ .../electron-browser/scm.contribution.i18n.json | 3 ++- .../parts/search/browser/searchView.i18n.json | 1 + .../search.contribution.i18n.json | 3 ++- .../parts/tasks/common/problemMatcher.i18n.json | 4 ++++ .../task.contribution.i18n.json | 3 +++ .../terminal.contribution.i18n.json | 4 ++++ .../electron-browser/terminalActions.i18n.json | 10 ++++++++++ .../terminalColorRegistry.i18n.json | 1 + .../electron-browser/terminalInstance.i18n.json | 4 +++- .../electron-browser/terminalPanel.i18n.json | 3 ++- ...rtedWorkspaceSettings.contribution.i18n.json | 3 ++- .../update/electron-browser/update.i18n.json | 4 ++++ .../node/configurationEditingService.i18n.json | 10 ++++++++++ .../common/extensionsRegistry.i18n.json | 1 + .../electron-browser/fileService.i18n.json | 3 +++ .../services/files/node/fileService.i18n.json | 1 + .../common/keybindingEditing.i18n.json | 3 +++ .../themes/common/colorThemeSchema.i18n.json | 3 +++ .../node/workspaceEditingService.i18n.json | 3 ++- i18n/trk/extensions/bat/package.i18n.json | 4 +++- i18n/trk/extensions/clojure/package.i18n.json | 4 +++- .../extensions/coffeescript/package.i18n.json | 4 +++- .../configuration-editing/package.i18n.json | 2 +- i18n/trk/extensions/cpp/package.i18n.json | 4 +++- i18n/trk/extensions/csharp/package.i18n.json | 4 +++- i18n/trk/extensions/css/package.i18n.json | 1 + i18n/trk/extensions/docker/package.i18n.json | 4 +++- i18n/trk/extensions/emmet/package.i18n.json | 1 + .../extension-editing/package.i18n.json | 3 ++- i18n/trk/extensions/fsharp/package.i18n.json | 4 +++- i18n/trk/extensions/go/package.i18n.json | 4 +++- i18n/trk/extensions/groovy/package.i18n.json | 4 +++- .../trk/extensions/handlebars/package.i18n.json | 4 +++- i18n/trk/extensions/hlsl/package.i18n.json | 4 +++- i18n/trk/extensions/html/package.i18n.json | 1 + i18n/trk/extensions/ini/package.i18n.json | 4 +++- i18n/trk/extensions/java/package.i18n.json | 4 +++- .../trk/extensions/javascript/package.i18n.json | 4 +++- i18n/trk/extensions/less/package.i18n.json | 4 +++- i18n/trk/extensions/log/package.i18n.json | 2 +- i18n/trk/extensions/lua/package.i18n.json | 4 +++- i18n/trk/extensions/make/package.i18n.json | 4 +++- .../markdown-basics/package.i18n.json | 11 +++++++++++ .../markdown/out/features/preview.i18n.json | 11 +++++++++++ .../features/previewContentProvider.i18n.json | 4 +--- i18n/trk/extensions/markdown/package.i18n.json | 7 ++++++- .../extensions/merge-conflict/package.i18n.json | 1 + i18n/trk/extensions/npm/package.i18n.json | 6 +++++- .../extensions/objective-c/package.i18n.json | 4 +++- i18n/trk/extensions/perl/package.i18n.json | 4 +++- i18n/trk/extensions/php/package.i18n.json | 4 +++- .../trk/extensions/powershell/package.i18n.json | 4 +++- i18n/trk/extensions/pug/package.i18n.json | 4 +++- i18n/trk/extensions/python/package.i18n.json | 4 +++- i18n/trk/extensions/r/package.i18n.json | 4 +++- i18n/trk/extensions/razor/package.i18n.json | 4 +++- i18n/trk/extensions/ruby/package.i18n.json | 4 +++- i18n/trk/extensions/rust/package.i18n.json | 4 +++- i18n/trk/extensions/scss/package.i18n.json | 4 +++- i18n/trk/extensions/shaderlab/package.i18n.json | 4 +++- .../extensions/shellscript/package.i18n.json | 4 +++- i18n/trk/extensions/sql/package.i18n.json | 4 +++- i18n/trk/extensions/swift/package.i18n.json | 4 +++- .../extensions/theme-abyss/package.i18n.json | 3 ++- .../extensions/theme-defaults/package.i18n.json | 3 ++- .../theme-kimbie-dark/package.i18n.json | 3 ++- .../extensions/theme-monokai/package.i18n.json | 3 ++- .../theme-quietlight/package.i18n.json | 3 ++- i18n/trk/extensions/theme-red/package.i18n.json | 4 +++- .../trk/extensions/theme-seti/package.i18n.json | 3 ++- .../theme-solarized-dark/package.i18n.json | 3 ++- .../theme-solarized-light/package.i18n.json | 3 ++- .../theme-tomorrow-night-blue/package.i18n.json | 3 ++- .../typescript-basics/package.i18n.json | 3 ++- .../trk/extensions/typescript/package.i18n.json | 3 ++- i18n/trk/extensions/vb/package.i18n.json | 4 +++- i18n/trk/extensions/xml/package.i18n.json | 4 +++- i18n/trk/extensions/yaml/package.i18n.json | 4 +++- .../issue/issueReporterMain.i18n.json | 9 +++++++++ .../issue/issueReporterPage.i18n.json | 8 ++++++++ .../vs/code/electron-main/logUploader.i18n.json | 4 ++++ .../src/vs/code/electron-main/menus.i18n.json | 1 + .../src/vs/code/electron-main/window.i18n.json | 3 ++- .../node/extensionManagementService.i18n.json | 3 +++ .../theme/common/colorRegistry.i18n.json | 2 ++ .../mainThreadMessageService.i18n.json | 1 + .../mainThreadWebview.i18n.json | 3 ++- .../node/extHostExtensionActivator.i18n.json | 6 +++++- .../actions/toggleCenteredLayout.i18n.json | 1 + .../parts/editor/editor.contribution.i18n.json | 2 ++ .../notificationsActions.i18n.json | 9 ++++++++- .../notifications/notificationsCenter.i18n.json | 5 ++++- .../notificationsCommands.i18n.json | 6 +++++- .../notifications/notificationsStatus.i18n.json | 7 ++++++- .../notifications/notificationsToasts.i18n.json | 3 ++- .../notifications/notificationsViewer.i18n.json | 4 +++- .../trk/src/vs/workbench/common/theme.i18n.json | 10 +++++++++- .../trk/src/vs/workbench/common/views.i18n.json | 3 ++- .../electron-browser/actions.i18n.json | 4 +++- .../main.contribution.i18n.json | 2 ++ .../debug/browser/breakpointsView.i18n.json | 6 +++++- .../parts/debug/browser/debugCommands.i18n.json | 1 + .../browser/debugContentProvider.i18n.json | 3 ++- .../debug.contribution.i18n.json | 2 +- .../electron-browser/debugService.i18n.json | 2 ++ .../electronDebugActions.i18n.json | 1 + .../browser/extensionEditor.i18n.json | 2 ++ .../browser/extensionsActions.i18n.json | 17 +++++++++++++++++ .../extensionProfileService.i18n.json | 2 ++ .../extensionTipsService.i18n.json | 2 ++ .../extensions.contribution.i18n.json | 3 ++- .../extensionsViewlet.i18n.json | 1 + .../node/extensionsWorkbenchService.i18n.json | 1 + .../fileActions.contribution.i18n.json | 1 + .../electron-browser/fileActions.i18n.json | 2 ++ .../electron-browser/saveErrorHandler.i18n.json | 2 ++ .../views/explorerDecorationsProvider.i18n.json | 3 ++- .../views/explorerViewer.i18n.json | 1 + .../html/browser/webviewCommands.i18n.json | 4 +++- .../logs/electron-browser/logsActions.i18n.json | 1 + .../browser/keybindingsEditor.i18n.json | 1 + .../quickopen/browser/commandsHandler.i18n.json | 1 + .../dirtydiffDecorator.i18n.json | 2 ++ .../electron-browser/scm.contribution.i18n.json | 3 ++- .../parts/search/browser/searchView.i18n.json | 1 + .../search.contribution.i18n.json | 3 ++- .../task.contribution.i18n.json | 3 +++ .../terminal.contribution.i18n.json | 4 ++++ .../electron-browser/terminalActions.i18n.json | 10 ++++++++++ .../terminalColorRegistry.i18n.json | 1 + .../electron-browser/terminalInstance.i18n.json | 4 +++- .../electron-browser/terminalPanel.i18n.json | 3 ++- ...rtedWorkspaceSettings.contribution.i18n.json | 3 ++- .../update/electron-browser/update.i18n.json | 4 ++++ .../node/configurationEditingService.i18n.json | 10 ++++++++++ .../common/extensionsRegistry.i18n.json | 1 + .../electron-browser/fileService.i18n.json | 3 +++ .../services/files/node/fileService.i18n.json | 1 + .../common/keybindingEditing.i18n.json | 3 +++ .../themes/common/colorExtensionPoint.i18n.json | 1 + .../themes/common/colorThemeSchema.i18n.json | 3 +++ .../node/workspaceEditingService.i18n.json | 3 ++- 1174 files changed, 3554 insertions(+), 829 deletions(-) create mode 100644 i18n/chs/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/chs/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/cht/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/cht/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/deu/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/deu/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/esn/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/esn/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/fra/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/fra/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/hun/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/hun/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/ita/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/ita/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/jpn/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/jpn/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/kor/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/kor/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/ptb/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/ptb/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/rus/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/rus/extensions/markdown/out/features/preview.i18n.json create mode 100644 i18n/trk/extensions/markdown-basics/package.i18n.json create mode 100644 i18n/trk/extensions/markdown/out/features/preview.i18n.json diff --git a/i18n/chs/extensions/bat/package.i18n.json b/i18n/chs/extensions/bat/package.i18n.json index 35229bd6699..7d2ac2761f0 100644 --- a/i18n/chs/extensions/bat/package.i18n.json +++ b/i18n/chs/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Windows 批处理语言基础功能", + "description": "在 Windows 批处理文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/clojure/package.i18n.json b/i18n/chs/extensions/clojure/package.i18n.json index 35229bd6699..4c635c6ce36 100644 --- a/i18n/chs/extensions/clojure/package.i18n.json +++ b/i18n/chs/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Clojure 语言基础功能", + "description": "在 Clojure 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/coffeescript/package.i18n.json b/i18n/chs/extensions/coffeescript/package.i18n.json index 35229bd6699..dfe05d58b4a 100644 --- a/i18n/chs/extensions/coffeescript/package.i18n.json +++ b/i18n/chs/extensions/coffeescript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "CoffeeScript 语言基础功能", + "description": "在 CoffeeScript 文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/cpp/package.i18n.json b/i18n/chs/extensions/cpp/package.i18n.json index 35229bd6699..13d16dde7c6 100644 --- a/i18n/chs/extensions/cpp/package.i18n.json +++ b/i18n/chs/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C/C++ 语言基础功能", + "description": "在 C/C++ 文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/csharp/package.i18n.json b/i18n/chs/extensions/csharp/package.i18n.json index 35229bd6699..b7994211965 100644 --- a/i18n/chs/extensions/csharp/package.i18n.json +++ b/i18n/chs/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C# 语言基础功能", + "description": "在 C# 文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/docker/package.i18n.json b/i18n/chs/extensions/docker/package.i18n.json index 35229bd6699..b4225f7d675 100644 --- a/i18n/chs/extensions/docker/package.i18n.json +++ b/i18n/chs/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Docker 语言基础功能", + "description": "在 Docker 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/emmet/package.i18n.json b/i18n/chs/extensions/emmet/package.i18n.json index 2cb3eef99e7..091b728c40a 100644 --- a/i18n/chs/extensions/emmet/package.i18n.json +++ b/i18n/chs/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "适用于 VS Code 的 Emmet 支持", "command.wrapWithAbbreviation": "使用缩写包围", "command.wrapIndividualLinesWithAbbreviation": "输入缩写包围个别行", "command.removeTag": "移除标签", diff --git a/i18n/chs/extensions/extension-editing/package.i18n.json b/i18n/chs/extensions/extension-editing/package.i18n.json index d50a888f5a4..52ba58a30d8 100644 --- a/i18n/chs/extensions/extension-editing/package.i18n.json +++ b/i18n/chs/extensions/extension-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Package 文件编辑", - "description": "为 VS Code 扩展点提供 IntelliSense,并为 Package json 文件提供 linting 功能" + "description": "为 VS Code 扩展点提供 IntelliSense,并为 package.json 文件提供 linting 功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/fsharp/package.i18n.json b/i18n/chs/extensions/fsharp/package.i18n.json index 35229bd6699..c0ed9b41f3f 100644 --- a/i18n/chs/extensions/fsharp/package.i18n.json +++ b/i18n/chs/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "F# 语言基础功能", + "description": "在 F# 文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/git/out/commands.i18n.json b/i18n/chs/extensions/git/out/commands.i18n.json index 15aa9f39edd..6276a473d55 100644 --- a/i18n/chs/extensions/git/out/commands.i18n.json +++ b/i18n/chs/extensions/git/out/commands.i18n.json @@ -67,7 +67,7 @@ "tag message": "消息", "provide tag message": "请提供消息以对标签进行注释", "no remotes to fetch": "此存储库未配置可以从中抓取的远程存储库。", - "no remotes to pull": "存储库未配置任何从其中进行拉取的远程存储库。", + "no remotes to pull": "存储库未配置任何可进行拉取的远程存储库。", "pick remote pull repo": "选择要从其拉取分支的远程位置", "no remotes to push": "存储库未配置任何要推送到的远程存储库。", "nobranch": "请签出一个分支以推送到远程。", diff --git a/i18n/chs/extensions/go/package.i18n.json b/i18n/chs/extensions/go/package.i18n.json index 35229bd6699..b0a267de736 100644 --- a/i18n/chs/extensions/go/package.i18n.json +++ b/i18n/chs/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Go 语言基础功能", + "description": "在 Go 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/groovy/package.i18n.json b/i18n/chs/extensions/groovy/package.i18n.json index 35229bd6699..a4158aaa1e4 100644 --- a/i18n/chs/extensions/groovy/package.i18n.json +++ b/i18n/chs/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Groovy 语言基础功能", + "description": "在 Groovy 文件中提供代码片段、语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/grunt/package.i18n.json b/i18n/chs/extensions/grunt/package.i18n.json index 627e0a20607..79d0cc7c97a 100644 --- a/i18n/chs/extensions/grunt/package.i18n.json +++ b/i18n/chs/extensions/grunt/package.i18n.json @@ -8,7 +8,7 @@ ], "description": "向 VSCode 提供 Grunt 功能的扩展。", "displayName": "适用于 VSCode 的 Grunt 支持", - "config.grunt.autoDetect": "控制自动检测 Grunt 任务是否打开。默认开启。", + "config.grunt.autoDetect": "控制是否自动检测 Grunt 任务。默认开启。", "grunt.taskDefinition.type.description": "要自定义的 Grunt 任务。", "grunt.taskDefinition.file.description": "提供任务的 Grunt 文件。可以省略。" } \ No newline at end of file diff --git a/i18n/chs/extensions/gulp/package.i18n.json b/i18n/chs/extensions/gulp/package.i18n.json index f3cac5916ab..982e7640b35 100644 --- a/i18n/chs/extensions/gulp/package.i18n.json +++ b/i18n/chs/extensions/gulp/package.i18n.json @@ -8,7 +8,7 @@ ], "description": "向 VSCode 提供 Gulp 功能的扩展。", "displayName": "适用于 VSCode 的 Gulp 支持", - "config.gulp.autoDetect": "控制自动检测 Gulp 任务是否打开。默认开启。", + "config.gulp.autoDetect": "控制是否自动检测 Gulp 任务。默认开启。", "gulp.taskDefinition.type.description": "要自定义的 Gulp 任务。", "gulp.taskDefinition.file.description": "提供任务的 Gulp 文件。可以省略。" } \ No newline at end of file diff --git a/i18n/chs/extensions/handlebars/package.i18n.json b/i18n/chs/extensions/handlebars/package.i18n.json index 35229bd6699..c6c0c6eca85 100644 --- a/i18n/chs/extensions/handlebars/package.i18n.json +++ b/i18n/chs/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Handlebars 语言基础功能", + "description": "在 Handlebars 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/hlsl/package.i18n.json b/i18n/chs/extensions/hlsl/package.i18n.json index 35229bd6699..2ee5d27be78 100644 --- a/i18n/chs/extensions/hlsl/package.i18n.json +++ b/i18n/chs/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "HLSL 语言基础功能", + "description": "在 HLSL 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/ini/package.i18n.json b/i18n/chs/extensions/ini/package.i18n.json index 35229bd6699..5d48fc51f2a 100644 --- a/i18n/chs/extensions/ini/package.i18n.json +++ b/i18n/chs/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ini 语言基础功能", + "description": "在 Ini 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/jake/package.i18n.json b/i18n/chs/extensions/jake/package.i18n.json index b86ec3b0c1d..9d5c24a7211 100644 --- a/i18n/chs/extensions/jake/package.i18n.json +++ b/i18n/chs/extensions/jake/package.i18n.json @@ -10,5 +10,5 @@ "displayName": "适用于 VSCode 的 Jake 支持", "jake.taskDefinition.type.description": "要自定义的 Jake 任务。", "jake.taskDefinition.file.description": "提供任务的 Jake 文件。可以省略。", - "config.jake.autoDetect": "控制自动检测 Jake 任务是否打开。默认开启。" + "config.jake.autoDetect": "控制是否自动检测 Jake 任务。默认开启。" } \ No newline at end of file diff --git a/i18n/chs/extensions/java/package.i18n.json b/i18n/chs/extensions/java/package.i18n.json index 35229bd6699..b92604f1ca0 100644 --- a/i18n/chs/extensions/java/package.i18n.json +++ b/i18n/chs/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Java 语言基础功能", + "description": "在 Java 文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/javascript/package.i18n.json b/i18n/chs/extensions/javascript/package.i18n.json index 35229bd6699..1f13d6c8a35 100644 --- a/i18n/chs/extensions/javascript/package.i18n.json +++ b/i18n/chs/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JavaScript 语言基础功能", + "description": "在 JavaScript 文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/less/package.i18n.json b/i18n/chs/extensions/less/package.i18n.json index 35229bd6699..8b407681c83 100644 --- a/i18n/chs/extensions/less/package.i18n.json +++ b/i18n/chs/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Less 语言基础功能", + "description": "在 Less 文件中提供语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/log/package.i18n.json b/i18n/chs/extensions/log/package.i18n.json index c515edfeebb..1bd1e8654c6 100644 --- a/i18n/chs/extensions/log/package.i18n.json +++ b/i18n/chs/extensions/log/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "日志", - "description": "为扩展名为 .log 的文件提供语法高亮" + "description": "为扩展名为 .log 的文件提供语法高亮功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/lua/package.i18n.json b/i18n/chs/extensions/lua/package.i18n.json index 35229bd6699..ccf6c8a29e4 100644 --- a/i18n/chs/extensions/lua/package.i18n.json +++ b/i18n/chs/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Lua 语言基础功能", + "description": "在 Lua 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/make/package.i18n.json b/i18n/chs/extensions/make/package.i18n.json index 35229bd6699..721c76f04f8 100644 --- a/i18n/chs/extensions/make/package.i18n.json +++ b/i18n/chs/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Make 语言基础功能", + "description": "在 Make 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/markdown-basics/package.i18n.json b/i18n/chs/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..e0c1be03cc8 --- /dev/null +++ b/i18n/chs/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown 语言基础功能", + "description": "在 Markdown 文件中提供代码片段和语法高亮功能。" +} \ No newline at end of file diff --git a/i18n/chs/extensions/markdown/out/features/preview.i18n.json b/i18n/chs/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..479e1e30f0b --- /dev/null +++ b/i18n/chs/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[预览] {0}", + "previewTitle": "预览 {0}" +} \ No newline at end of file diff --git a/i18n/chs/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/chs/extensions/markdown/out/features/previewContentProvider.i18n.json index 94a3160f507..6a53189d1b3 100644 --- a/i18n/chs/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/chs/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,7 +8,5 @@ ], "preview.securityMessage.text": "已禁用此文档中的部分内容", "preview.securityMessage.title": "已禁用此 Markdown 预览中的可能不安全的内容。更改 Markdown 预览安全设置以允许不安全内容或启用脚本。", - "preview.securityMessage.label": "已禁用内容安全警告", - "pinnedPreviewTitle": "[预览] {0}", - "previewTitle": "预览 {0}" + "preview.securityMessage.label": "已禁用内容安全警告" } \ No newline at end of file diff --git a/i18n/chs/extensions/markdown/package.i18n.json b/i18n/chs/extensions/markdown/package.i18n.json index 8f1e848d0e2..11595bfc615 100644 --- a/i18n/chs/extensions/markdown/package.i18n.json +++ b/i18n/chs/extensions/markdown/package.i18n.json @@ -15,14 +15,18 @@ "markdown.preview.fontSize.desc": "控制 Markdown 预览中使用的字号(以像素为单位)。", "markdown.preview.lineHeight.desc": "控制 Markdown 预览中使用的行高。此数值与字号相关。", "markdown.preview.markEditorSelection.desc": "在 Markdown 预览中标记当前的编辑器选定内容。", - "markdown.preview.scrollEditorWithPreview.desc": "当滚动 Markdown 预览时,更新其编辑器视图。", + "markdown.preview.scrollEditorWithPreview.desc": "滚动 Markdown 预览时,更新其编辑器视图。", + "markdown.preview.scrollPreviewWithEditor.desc": "滚动 Markdown 编辑器时,更新其预览视图。", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[弃用] 滚动 Markdown 预览以显示编辑器当前所选行。", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "此设置已被 \"markdown.preview.scrollPreviewWithEditor\" 替换且不再有任何效果。", "markdown.preview.title": "打开预览", "markdown.previewFrontMatter.dec": "设置如何在 Markdown 预览中呈现 YAML 扉页。“隐藏”会删除扉页。否则,扉页则被视为 Markdown 内容。", "markdown.previewSide.title": "打开侧边预览", - "markdown.showPinnedPreviewToSide.title": "在侧边打开固定的预览", + "markdown.showLockedPreviewToSide.title": "在侧边打开锁定的预览", "markdown.showSource.title": "显示源", "markdown.styles.dec": "要在 Markdown 预览中使用的 CSS 样式表的 URL 或本地路径列表。相对路径被解释为相对于资源管理器中打开的文件夹。如果没有任何打开的文件夹,则会被解释为相对于 Markdown 文件的位置。所有的 \"\\\" 需写为 \"\\\\\"。", "markdown.showPreviewSecuritySelector.title": "更改预览安全设置", "markdown.trace.desc": "对 Markdown 扩展启用调试日志记录。", - "markdown.refreshPreview.title": "刷新预览" + "markdown.preview.refresh.title": "刷新预览", + "markdown.preview.toggleLock.title": "切换预览锁定" } \ No newline at end of file diff --git a/i18n/chs/extensions/merge-conflict/package.i18n.json b/i18n/chs/extensions/merge-conflict/package.i18n.json index 27c21452e0a..4a3b57f3568 100644 --- a/i18n/chs/extensions/merge-conflict/package.i18n.json +++ b/i18n/chs/extensions/merge-conflict/package.i18n.json @@ -7,7 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "合并冲突", - "description": "内联合并冲突的配色与命令。", + "description": "为内联合并冲突提供高亮和命令。", "command.category": "合并冲突", "command.accept.all-current": "全部采用当前内容", "command.accept.all-incoming": "全部采用传入版本", diff --git a/i18n/chs/extensions/npm/package.i18n.json b/i18n/chs/extensions/npm/package.i18n.json index fb34b501a91..452c6ca9d2f 100644 --- a/i18n/chs/extensions/npm/package.i18n.json +++ b/i18n/chs/extensions/npm/package.i18n.json @@ -8,8 +8,11 @@ ], "description": "为 npm 脚本提供任务支持的扩展。", "displayName": "适用于 VSCode 的 npm 支持", - "config.npm.autoDetect": "控制自动检测 npm 脚本是否打开。默认开启。", + "config.npm.autoDetect": "控制是否自动检测 npm 脚本。默认开启", "config.npm.runSilent": "使用 \"--silent\" 选项运行 npm 命令。", "config.npm.packageManager": "用于运行脚本的程序包管理器。", - "npm.parseError": "Npm 任务检测: 无法分析文件 {0}" + "config.npm.exclude": "配置应从自动脚本检测中排除的文件夹的 glob 模式。", + "npm.parseError": "Npm 任务检测: 无法分析文件 {0}", + "taskdef.script": "要自定义的 npm 脚本。", + "taskdef.path": "包含 package.json 文件的文件夹路径,其中 package.json 文件提供脚本。可以省略。" } \ No newline at end of file diff --git a/i18n/chs/extensions/objective-c/package.i18n.json b/i18n/chs/extensions/objective-c/package.i18n.json index 35229bd6699..1bc94f77c5d 100644 --- a/i18n/chs/extensions/objective-c/package.i18n.json +++ b/i18n/chs/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Objective-C 语言基础功能", + "description": "在 Objective-C 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/perl/package.i18n.json b/i18n/chs/extensions/perl/package.i18n.json index 35229bd6699..4696cbf1259 100644 --- a/i18n/chs/extensions/perl/package.i18n.json +++ b/i18n/chs/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Perl 语言基础功能", + "description": "在 Perl 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/php/package.i18n.json b/i18n/chs/extensions/php/package.i18n.json index b4f8c6ebb45..8385016844b 100644 --- a/i18n/chs/extensions/php/package.i18n.json +++ b/i18n/chs/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "决定 linter 是在保存时还是输入时运行。", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "禁止 PHP 验证程序(定义为工作区设置)" + "command.untrustValidationExecutable": "禁止 PHP 验证程序(定义为工作区设置)", + "displayName": "PHP 语言功能", + "description": "为 PHP 文件提供 IntelliSense、lint 和语言基础功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/powershell/package.i18n.json b/i18n/chs/extensions/powershell/package.i18n.json index 35229bd6699..14622550d48 100644 --- a/i18n/chs/extensions/powershell/package.i18n.json +++ b/i18n/chs/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Powershell 语言基础功能", + "description": "在 Powershell 文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/pug/package.i18n.json b/i18n/chs/extensions/pug/package.i18n.json index 35229bd6699..24c920d25f7 100644 --- a/i18n/chs/extensions/pug/package.i18n.json +++ b/i18n/chs/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Pug 语言基础功能", + "description": "在 Pug 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/python/package.i18n.json b/i18n/chs/extensions/python/package.i18n.json index 35229bd6699..62196639cdc 100644 --- a/i18n/chs/extensions/python/package.i18n.json +++ b/i18n/chs/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Python 语言基础功能", + "description": "在 Python 文件中提供语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/r/package.i18n.json b/i18n/chs/extensions/r/package.i18n.json index 35229bd6699..d581dc6aaa7 100644 --- a/i18n/chs/extensions/r/package.i18n.json +++ b/i18n/chs/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "R 语言基础功能", + "description": "在 R 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/razor/package.i18n.json b/i18n/chs/extensions/razor/package.i18n.json index 35229bd6699..0c86bd13f22 100644 --- a/i18n/chs/extensions/razor/package.i18n.json +++ b/i18n/chs/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Razor 语言基础功能", + "description": "在 Razor 文件中提供语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/ruby/package.i18n.json b/i18n/chs/extensions/ruby/package.i18n.json index 35229bd6699..6ea13c8993b 100644 --- a/i18n/chs/extensions/ruby/package.i18n.json +++ b/i18n/chs/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ruby 语言基础功能", + "description": "在 Ruby 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/rust/package.i18n.json b/i18n/chs/extensions/rust/package.i18n.json index 35229bd6699..c5699e00c0f 100644 --- a/i18n/chs/extensions/rust/package.i18n.json +++ b/i18n/chs/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Rust 语言基础功能", + "description": "在 Rust 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/scss/package.i18n.json b/i18n/chs/extensions/scss/package.i18n.json index 35229bd6699..5911a71e885 100644 --- a/i18n/chs/extensions/scss/package.i18n.json +++ b/i18n/chs/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SCSS 语言基础功能", + "description": "在 SCSS 文件中提供语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/shaderlab/package.i18n.json b/i18n/chs/extensions/shaderlab/package.i18n.json index 35229bd6699..ed41d7478e7 100644 --- a/i18n/chs/extensions/shaderlab/package.i18n.json +++ b/i18n/chs/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shaderlab 语言基础功能", + "description": "在 Shaderlab 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/shellscript/package.i18n.json b/i18n/chs/extensions/shellscript/package.i18n.json index 35229bd6699..6f1ff987bec 100644 --- a/i18n/chs/extensions/shellscript/package.i18n.json +++ b/i18n/chs/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shell 脚本语言基础功能", + "description": "在 Shell 脚本文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/sql/package.i18n.json b/i18n/chs/extensions/sql/package.i18n.json index 35229bd6699..2381cf5ce83 100644 --- a/i18n/chs/extensions/sql/package.i18n.json +++ b/i18n/chs/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SQL 语言基础功能", + "description": "在 SQL 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/swift/package.i18n.json b/i18n/chs/extensions/swift/package.i18n.json index 35229bd6699..3b7c7f35b5f 100644 --- a/i18n/chs/extensions/swift/package.i18n.json +++ b/i18n/chs/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Swift 语言基础功能", + "description": "在 Swift 文件中提供代码片段、语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/typescript-basics/package.i18n.json b/i18n/chs/extensions/typescript-basics/package.i18n.json index 35229bd6699..4ee301eeb44 100644 --- a/i18n/chs/extensions/typescript-basics/package.i18n.json +++ b/i18n/chs/extensions/typescript-basics/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "TypeScript 语言基础功能", + "description": "在 TypeScript 文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/typescript/package.i18n.json b/i18n/chs/extensions/typescript/package.i18n.json index 230d58ef2c4..bfdc4b0322d 100644 --- a/i18n/chs/extensions/typescript/package.i18n.json +++ b/i18n/chs/extensions/typescript/package.i18n.json @@ -56,5 +56,6 @@ "typescript.locale": "设置报告 TypeScript 错误时使用的区域设置。要求 TypeScript >= 2.6.0。默认 (\"null\") 将使用 VS Code 的区域设置。", "javascript.implicitProjectConfig.experimentalDecorators": "对不属于任何工程的 JavaScript 文件启用或禁用 \"experimentalDecorators\" 设置。现有的 jsconfig.json 或\n tsconfig.json 文件会覆盖此设置。要求 TypeScript >=2.3.1。", "typescript.autoImportSuggestions.enabled": "启用或禁用自动导入建议。要求 TypeScript >= 2.6.1", - "typescript.experimental.syntaxFolding": "启用或禁用语法折叠标记。" + "typescript.experimental.syntaxFolding": "启用或禁用语法折叠标记。", + "taskDefinition.tsconfig.description": "定义 TS 生成的 tsconfig 文件。" } \ No newline at end of file diff --git a/i18n/chs/extensions/vb/package.i18n.json b/i18n/chs/extensions/vb/package.i18n.json index 35229bd6699..e69d4d60383 100644 --- a/i18n/chs/extensions/vb/package.i18n.json +++ b/i18n/chs/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Visual Basic 语言基础功能", + "description": "在 Visual Basic 文件中提供代码片段、语法高亮、括号匹配和折叠功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/xml/package.i18n.json b/i18n/chs/extensions/xml/package.i18n.json index 35229bd6699..3cea21c3bae 100644 --- a/i18n/chs/extensions/xml/package.i18n.json +++ b/i18n/chs/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "XML 语言基础功能", + "description": "在 XML 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/extensions/yaml/package.i18n.json b/i18n/chs/extensions/yaml/package.i18n.json index 35229bd6699..13b5559d23b 100644 --- a/i18n/chs/extensions/yaml/package.i18n.json +++ b/i18n/chs/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "YAML 语言基础功能", + "description": "在 YAML 文件中提供语法高亮和括号匹配功能。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 93694a4df40..7980ba2eb43 100644 --- a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -23,6 +23,6 @@ "featureRequestDescription": "请描述您希望能够使用的功能。我们支持 GitHub 版的 Markdown。您将能在 GitHub 上预览时编辑问题并添加截图。", "expectedResults": "预期结果", "settingsSearchResultsDescription": "请列出您在搜索此项时希望看到的结果。我们支持 GitHub 版的 Markdown。您将能在 GitHub 上预览时编辑问题并添加截图。", - "urlLengthError": "数据超过了 {0} 个字符的长度限制。当前数据长度为 {1}。", + "pasteData": "所需的数据太大,无法直接发送。我们已经将其写入剪贴板,请粘贴。", "disabledExtensions": "扩展已禁用" } \ No newline at end of file diff --git a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 2cbe5a6b294..e66e99336b1 100644 --- a/i18n/chs/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/chs/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -10,6 +10,7 @@ "issueTypeLabel": "这是一个", "issueTitleLabel": "标题", "issueTitleRequired": "请输入标题。", + "titleLengthValidation": "标题太长。", "systemInfo": "我的系统信息", "sendData": "发送我的数据", "processes": "当前运行的进程", @@ -20,9 +21,9 @@ "tryDisablingExtensions": "能否在禁用扩展后重现此问题?", "yes": "是", "no": "否", - "disableExtensionsLabel": "尝试在{0}之后重现问题。", + "disableExtensionsLabelText": "尝试在{0}之后重现问题。", "disableExtensions": "禁用所有扩展并重新加载窗口", - "showRunningExtensionsLabel": "如果您怀疑这是扩展的问题,请{0}并进行报告。", + "showRunningExtensionsLabelText": "如果您怀疑这是扩展的问题,请{0}并进行报告。", "showRunningExtensions": "查看所有运行中的扩展", "details": "请输入详细信息。", "loadingData": "正在加载数据..." diff --git a/i18n/chs/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/chs/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 5584072ab37..f27f13cb3e4 100644 --- a/i18n/chs/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/chs/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "覆盖", "cancel": "取消", "errorInstallingDependencies": "安装依赖项时出错。{0}", + "MarketPlaceDisabled": "商店未启用", + "removeError": "删除扩展时出错: {0}。请重启 VS Code,然后重试。", + "Not Market place extension": "只能重新安装商店中的扩展", "notFoundCompatible": "无法安装“{0}”;没有可用的版本与 VS Code “{1}”兼容。", "malicious extension": "无法安装此扩展,它被报告存在问题。", "notFoundCompatibleDependency": "无法安装。找不到与 VS Code 当前版本 ({1}) 兼容的依赖扩展“{0}”。", diff --git a/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index 0a7aac584eb..9914529823e 100644 --- a/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/chs/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (扩展)", "defaultSource": "扩展", "manageExtension": "管理扩展", "cancel": "取消", diff --git a/i18n/chs/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/chs/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 606adcbf5c7..b4d73509bc1 100644 --- a/i18n/chs/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/chs/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -8,5 +8,7 @@ ], "hideNotifications": "隐藏通知", "zeroNotifications": "没有通知", - "noNotifications": "没有新通知" + "noNotifications": "没有新通知", + "oneNotification": "1 条新通知", + "notifications": "{0} 条新通知" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/common/theme.i18n.json b/i18n/chs/src/vs/workbench/common/theme.i18n.json index 0da3b52855d..11d275a1ff8 100644 --- a/i18n/chs/src/vs/workbench/common/theme.i18n.json +++ b/i18n/chs/src/vs/workbench/common/theme.i18n.json @@ -59,12 +59,12 @@ "titleBarActiveBackground": "窗口处于活动状态时的标题栏背景色。请注意,该颜色当前仅在 macOS 上受支持。", "titleBarInactiveBackground": "窗口处于非活动状态时的标题栏背景色。请注意,该颜色当前仅在 macOS 上受支持。", "titleBarBorder": "标题栏边框颜色。请注意,该颜色当前仅在 macOS 上受支持。", - "notificationsCenterBorder": "通知中心的边框颜色。通知从窗口右下角滑入。", - "notificationsToastBorder": "通知横幅的边框颜色。通知从窗口右下角滑入。", + "notificationCenterBorder": "通知中心的边框颜色。通知从窗口右下角滑入。", + "notificationToastBorder": "通知横幅的边框颜色。通知从窗口右下角滑入。", "notificationsForeground": "通知的前景色。通知从窗口右下角滑入。", "notificationsBackground": "通知的背景色。通知从窗口右下角滑入。", "notificationsLink": "通知链接的前景色。通知从窗口右下角滑入。", - "notificationsCenterHeaderForeground": "通知中心头部的前景色。通知从窗口右下角滑入。", - "notificationsCenterHeaderBackground": "通知中心头部的背景色。通知从窗口右下角滑入。", + "notificationCenterHeaderForeground": "通知中心头部的前景色。通知从窗口右下角滑入。", + "notificationCenterHeaderBackground": "通知中心头部的背景色。通知从窗口右下角滑入。", "notificationsBorder": "通知中心中分隔通知的边框的颜色。通知从窗口右下角滑入。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index c45229362fb..f853c73cc83 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "始终在状态栏中显示调试", "onFirstSessionStart": "仅于第一次启动调试后在状态栏中显示调试", "showInStatusBar": "控制何时显示调试状态栏", - "openDebug": "控制是否在调试会话开始时打开调试侧边栏面板。", + "openDebug": "控制是否在调试会话开始时打开调试视图。", "launch": "全局的调试启动配置。应用作跨工作区共享的 \"launch.json\" 的替代。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index 75f0dadaa64..8c7037df74f 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "浅色默认", "defaultHC": "高对比度默认", "JSON Validation": "JSON 验证({0})", + "fileMatch": "匹配文件", + "schema": "结构", "commands": "命令({0})", "command name": "名称", "keyboard shortcuts": "键盘快捷方式", diff --git a/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 954d0a3cdb2..383bbbf1ba0 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "手动下载", + "install vsix": "下载后,请手动安装“{0}”的 VSIX。", "installAction": "安装", "installing": "正在安装", + "failedToInstall": "未能安装“{0}”。", "uninstallAction": "卸载", "Uninstalling": "正在卸载", "updateAction": "更新", "updateTo": "更新到 {0}", + "failedToUpdate": "未能升级“{0}”。", "ManageExtensionAction.uninstallingTooltip": "正在卸载", "enableForWorkspaceAction": "启用(工作区)", "enableGloballyAction": "启用", @@ -58,6 +62,16 @@ "disableAllWorkspace": "禁用此工作区的所有已安装的扩展", "enableAll": "启用所有扩展", "enableAllWorkspace": "启用这个工作区的所有扩展", + "openExtensionsFolder": "打开扩展文件夹", + "installVSIX": "从 VSIX 安装...", + "installFromVSIX": "从 VSIX 文件安装", + "installButton": "安装(&&I)", + "InstallVSIXAction.success": "已成功安装扩展。重载即可启用。", + "InstallVSIXAction.reloadNow": "立即重新加载", + "reinstall": "重新安装扩展...", + "selectExtension": "选择要重新安装的扩展", + "ReinstallAction.success": "已成功重新安装扩展。", + "ReinstallAction.reloadNow": "立即重新加载", "extensionButtonProminentBackground": "扩展中突出操作的按钮背景色(比如 安装按钮)。", "extensionButtonProminentForeground": "扩展中突出操作的按钮前景色(比如 安装按钮)。", "extensionButtonProminentHoverBackground": "扩展中突出操作的按钮被悬停时的颜色(比如 安装按钮)。" diff --git a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 6d1ff317556..783d077bdc2 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "分析扩展", + "restart2": "必须重新启动才能分析扩展。是否现在就重启“{0}”?", "restart3": "重启", "cancel": "取消", "selectAndStartDebug": "单击停止分析。" diff --git a/i18n/chs/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/chs/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index 1e04e444af6..9a9e19c86ab 100644 --- a/i18n/chs/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -7,6 +7,6 @@ "Do not edit this file. It is machine generated." ], "editor.action.webvieweditor.showFind": "聚焦于查找小组件", - "openToolsLabel": "Webview 工具", + "openToolsLabel": "打开 Webview 开发工具", "refreshWebviewLabel": "重新加载 Webview" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index e56b967823c..b45279594d3 100644 --- a/i18n/chs/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,6 +25,6 @@ "search.quickOpen.includeSymbols": "配置为在 Quick Open 文件结果中包括全局符号搜索的结果。", "search.followSymlinks": "控制是否在搜索中跟踪符号链接。", "search.smartCase": "若搜索词全为小写,则不区分大小写进行搜索,否则区分大小写进行搜索", - "search.globalFindClipboard": "控制“搜索”侧边栏面板是否读取或修改 macOS 的共享查找剪贴板", - "search.location": "控制搜索功能显示在侧边栏还是水平空间更大的面板区域" + "search.globalFindClipboard": "控制“搜索”视图是否读取或修改 macOS 的共享查找剪贴板", + "search.location": "预览: 控制搜索功能显示在侧边栏还是水平空间更大的面板区域。我们将在下个版本优化面板中搜索的水平布局,之后这将不再是一个预览功能。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index 67e0aff3b7b..1c55c29463d 100644 --- a/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,6 +11,6 @@ "terminalCursor.foreground": "终端光标的前景色。", "terminalCursor.background": "终端光标的背景色。允许自定义被 block 光标遮住的字符的颜色。", "terminal.selectionBackground": "终端选中内容的背景颜色。", - "terminal.border": "分隔多个终端的边框的颜色。默认值为 panel.border 的颜色", + "terminal.border": "分隔终端中拆分窗格的边框的颜色。默认值为 panel.border 的颜色", "terminal.ansiColor": "终端中的 ANSI 颜色“{0}”。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json index db84745c7ca..9dda0b0a236 100644 --- a/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -16,6 +16,7 @@ "64bitisavailable": "Windows 64 位版的 {0} 已经发布! 单击[这里]({1})了解更多信息。", "updateIsReady": "有新的 {0} 的更新可用。", "noUpdatesAvailable": "当前没有可用的更新。", + "ok": "确定", "download now": "立即下载", "thereIsUpdateAvailable": "存在可用更新。", "installUpdate": "安装更新", diff --git a/i18n/chs/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/chs/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index 94cd71a5f33..57b5dd7d36a 100644 --- a/i18n/chs/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/chs/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "徽章说明。", "vscode.extension.extensionDependencies": "其他扩展的依赖关系。扩展的标识符始终是 ${publisher}.${name}。例如: vscode.csharp。", "vscode.extension.scripts.prepublish": "包作为 VS Code 扩展发布前执行的脚本。", + "vscode.extension.scripts.uninstall": "VS Code 扩展的卸载钩子。在扩展从 VS Code 卸载且 VS Code 重启 (关闭后开启) 后执行的脚本。仅支持 Node 脚本。", "vscode.extension.icon": "128 x 128 像素图标的路径。" } \ No newline at end of file diff --git a/i18n/cht/extensions/bat/package.i18n.json b/i18n/cht/extensions/bat/package.i18n.json index 35229bd6699..79280ede148 100644 --- a/i18n/cht/extensions/bat/package.i18n.json +++ b/i18n/cht/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Windows Bat 語言基礎知識", + "description": "為 Windows 批次檔案提供程式碼片段、語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/clojure/package.i18n.json b/i18n/cht/extensions/clojure/package.i18n.json index 35229bd6699..9991d30d934 100644 --- a/i18n/cht/extensions/clojure/package.i18n.json +++ b/i18n/cht/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Clojure 語言基礎知識", + "description": "Clojure 檔案中提供語法醒目提示與括號對稱功能" } \ No newline at end of file diff --git a/i18n/cht/extensions/coffeescript/package.i18n.json b/i18n/cht/extensions/coffeescript/package.i18n.json index 35229bd6699..1b93a7c7f85 100644 --- a/i18n/cht/extensions/coffeescript/package.i18n.json +++ b/i18n/cht/extensions/coffeescript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "CoffeeScript 語言基礎知識", + "description": "CoffeeScript 檔案中提供程式碼片段, 語法醒目提示, 括號對稱與可折疊區域功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/configuration-editing/package.i18n.json b/i18n/cht/extensions/configuration-editing/package.i18n.json index a43a0e21835..51eef8b7349 100644 --- a/i18n/cht/extensions/configuration-editing/package.i18n.json +++ b/i18n/cht/extensions/configuration-editing/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "編輯設定值" + "displayName": "編輯設定值", + "description": "在設定、啟動及延伸模組建議檔案等組態檔中,提供進階 IntelliSense 及自動修正等功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/cpp/package.i18n.json b/i18n/cht/extensions/cpp/package.i18n.json index 35229bd6699..dc69428b234 100644 --- a/i18n/cht/extensions/cpp/package.i18n.json +++ b/i18n/cht/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C/C++ 語言基礎知識", + "description": "為 C/C++ 檔案提供程式碼片段、語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/csharp/package.i18n.json b/i18n/cht/extensions/csharp/package.i18n.json index 35229bd6699..07da1d6a537 100644 --- a/i18n/cht/extensions/csharp/package.i18n.json +++ b/i18n/cht/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C# 語言基礎知識", + "description": "為 C# 檔案提供程式碼片段、語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/docker/package.i18n.json b/i18n/cht/extensions/docker/package.i18n.json index 35229bd6699..fe17e5f0a6d 100644 --- a/i18n/cht/extensions/docker/package.i18n.json +++ b/i18n/cht/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Docker 語言基礎知識", + "description": "為 Docker 檔案提供語法醒目提示及括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/emmet/package.i18n.json b/i18n/cht/extensions/emmet/package.i18n.json index 3dcded8945e..660a269c068 100644 --- a/i18n/cht/extensions/emmet/package.i18n.json +++ b/i18n/cht/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "VS Code 的 Emnet 支援", "command.wrapWithAbbreviation": "使用縮寫換行", "command.wrapIndividualLinesWithAbbreviation": "使用縮寫換每一行", "command.removeTag": "移除標籤", diff --git a/i18n/cht/extensions/extension-editing/package.i18n.json b/i18n/cht/extensions/extension-editing/package.i18n.json index 35229bd6699..5e12b75c197 100644 --- a/i18n/cht/extensions/extension-editing/package.i18n.json +++ b/i18n/cht/extensions/extension-editing/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "套件檔案編輯", + "description": "為 package.json 檔案提供 VS Code 的 IntelliSense 擴充點與 lint 功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/fsharp/package.i18n.json b/i18n/cht/extensions/fsharp/package.i18n.json index 35229bd6699..a9f68dc906b 100644 --- a/i18n/cht/extensions/fsharp/package.i18n.json +++ b/i18n/cht/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "F# 語言基礎知識", + "description": "為 F# 檔案提供程式碼片段、語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/git/out/autofetch.i18n.json b/i18n/cht/extensions/git/out/autofetch.i18n.json index 895238d514c..15e10683f31 100644 --- a/i18n/cht/extensions/git/out/autofetch.i18n.json +++ b/i18n/cht/extensions/git/out/autofetch.i18n.json @@ -8,5 +8,6 @@ ], "yes": "是", "no": "否", - "not now": "稍後詢問我" + "not now": "稍後詢問我", + "suggest auto fetch": "您希望 Code [定期執行 'git fetch']({0}) 嗎?" } \ No newline at end of file diff --git a/i18n/cht/extensions/git/out/model.i18n.json b/i18n/cht/extensions/git/out/model.i18n.json index 8833aef5c0e..9d0c6873465 100644 --- a/i18n/cht/extensions/git/out/model.i18n.json +++ b/i18n/cht/extensions/git/out/model.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "too many submodules": "'{0}' 存放庫有 {1} 個無法自動開啟的子模組。您仍可在其中開啟檔案來個別開啟子模組。", "no repositories": "沒有存放庫可供使用", "pick repo": "請選擇存放庫" } \ No newline at end of file diff --git a/i18n/cht/extensions/go/package.i18n.json b/i18n/cht/extensions/go/package.i18n.json index 35229bd6699..73a4b98fcd8 100644 --- a/i18n/cht/extensions/go/package.i18n.json +++ b/i18n/cht/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Go 語言基礎知識", + "description": "為 Go 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/groovy/package.i18n.json b/i18n/cht/extensions/groovy/package.i18n.json index 35229bd6699..fd6857a06bb 100644 --- a/i18n/cht/extensions/groovy/package.i18n.json +++ b/i18n/cht/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Grovy 語言基礎知識", + "description": "為 Groovy 檔案提供程式碼片段、語法醒目提示及括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/grunt/package.i18n.json b/i18n/cht/extensions/grunt/package.i18n.json index 3309472ac9c..fd12a801508 100644 --- a/i18n/cht/extensions/grunt/package.i18n.json +++ b/i18n/cht/extensions/grunt/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.grunt.autoDetect": "控制 Grunt 工作的自動偵測為開啟或關閉。預設為開。" + "description": "將 Grunt 功能新增至 VSCode 的延伸模組。", + "displayName": "VSCode 的 Grunt 支援", + "config.grunt.autoDetect": "控制 Grunt 工作的自動偵測為開啟或關閉。預設為開。", + "grunt.taskDefinition.type.description": "要自訂的 Grunt 支援。", + "grunt.taskDefinition.file.description": "提供工作的 Grunt 檔案。可以省略。" } \ No newline at end of file diff --git a/i18n/cht/extensions/gulp/package.i18n.json b/i18n/cht/extensions/gulp/package.i18n.json index e9fc2c236e5..e3349fbbfdd 100644 --- a/i18n/cht/extensions/gulp/package.i18n.json +++ b/i18n/cht/extensions/gulp/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.gulp.autoDetect": "控制 Gulp 工作的自動偵測為開啟或關閉。預設為開。" + "description": "將 Gulp 功能新增至 VSCode 的延伸模組。", + "displayName": "VSCode 的 Gulp 支援。", + "config.gulp.autoDetect": "控制 Gulp 工作的自動偵測為開啟或關閉。預設為開。", + "gulp.taskDefinition.type.description": "要自訂的 Gulp 工作。", + "gulp.taskDefinition.file.description": "提供工作的 Gulp 檔案。可以省略。" } \ No newline at end of file diff --git a/i18n/cht/extensions/handlebars/package.i18n.json b/i18n/cht/extensions/handlebars/package.i18n.json index 35229bd6699..6e3e815769a 100644 --- a/i18n/cht/extensions/handlebars/package.i18n.json +++ b/i18n/cht/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Handlebars 語言基礎知識", + "description": "為 Handlebars 檔案提供語法醒目提示及括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/hlsl/package.i18n.json b/i18n/cht/extensions/hlsl/package.i18n.json index 35229bd6699..f89b570c901 100644 --- a/i18n/cht/extensions/hlsl/package.i18n.json +++ b/i18n/cht/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "HLSL 語言基礎知識", + "description": "為 HLSL 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/html/package.i18n.json b/i18n/cht/extensions/html/package.i18n.json index 9c9c23c6083..d120f92d827 100644 --- a/i18n/cht/extensions/html/package.i18n.json +++ b/i18n/cht/extensions/html/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "HTML 語言功能", + "description": "為 HTML、Razor 及 Handlebars 檔案提供豐富的語言支援。", "html.format.enable.desc": "啟用/停用預設 HTML 格式器", "html.format.wrapLineLength.desc": "每行的字元數上限 (0 = 停用)。", "html.format.unformatted.desc": "不應重新格式化的逗號分隔標記清單。'null' 預設為 https://www.w3.org/TR/html5/dom.html#phrasing-content 中列出的所有標記。", @@ -28,5 +29,6 @@ "html.trace.server.desc": "追蹤 VS Code 與 HTML 語言伺服器之間的通訊。", "html.validate.scripts": "設定內建 HTML 語言支援是否會驗證內嵌指定碼。", "html.validate.styles": "設定內建 HTML 語言支援是否會驗證內嵌樣式。", + "html.experimental.syntaxFolding": "啟用/停用語法感知摺疊標記。", "html.autoClosingTags": "啟用/停用 HTML 標籤的自動關閉功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/ini/package.i18n.json b/i18n/cht/extensions/ini/package.i18n.json index 35229bd6699..894b815508f 100644 --- a/i18n/cht/extensions/ini/package.i18n.json +++ b/i18n/cht/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ini 語言基礎知識", + "description": "為 Ini 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/jake/package.i18n.json b/i18n/cht/extensions/jake/package.i18n.json index e50f8d68120..e83e9579b86 100644 --- a/i18n/cht/extensions/jake/package.i18n.json +++ b/i18n/cht/extensions/jake/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "將 Jake 功能新增至 VSCode 的延伸模組。", + "displayName": "VSCode 的 Jake 支援", + "jake.taskDefinition.type.description": "要自訂的 Jake 工作。", + "jake.taskDefinition.file.description": "提供工作的 Jack 檔案。可以省略。", "config.jake.autoDetect": "控制 Jake 工作的自動偵測為開啟或關閉。預設為開。" } \ No newline at end of file diff --git a/i18n/cht/extensions/java/package.i18n.json b/i18n/cht/extensions/java/package.i18n.json index 35229bd6699..61ab0c09dff 100644 --- a/i18n/cht/extensions/java/package.i18n.json +++ b/i18n/cht/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JAVA 語言基礎知識", + "description": "為 Java 檔案提供程式碼片段、語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/javascript/package.i18n.json b/i18n/cht/extensions/javascript/package.i18n.json index 35229bd6699..7b4fe9dc2a3 100644 --- a/i18n/cht/extensions/javascript/package.i18n.json +++ b/i18n/cht/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JavaScript 語言基礎知識", + "description": "為 JavaScript 檔案提供程式碼片段、語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/json/package.i18n.json b/i18n/cht/extensions/json/package.i18n.json index 15eaaf64aef..b0012a5af6c 100644 --- a/i18n/cht/extensions/json/package.i18n.json +++ b/i18n/cht/extensions/json/package.i18n.json @@ -16,5 +16,6 @@ "json.format.enable.desc": "啟用/停用預設 JSON 格式器 (需要重新啟動)", "json.tracing.desc": "追蹤 VS Code 與 JSON 語言伺服器之間的通訊。", "json.colorDecorators.enable.desc": "啟用或停用彩色裝飾項目", - "json.colorDecorators.enable.deprecationMessage": "設定 `json.colorDecorators.enable` 已淘汰,將改為 `editor.colorDecorators`。" + "json.colorDecorators.enable.deprecationMessage": "設定 `json.colorDecorators.enable` 已淘汰,將改為 `editor.colorDecorators`。", + "json.experimental.syntaxFolding": "啟用/停用語法感知折疊標記。" } \ No newline at end of file diff --git a/i18n/cht/extensions/less/package.i18n.json b/i18n/cht/extensions/less/package.i18n.json index 35229bd6699..a2a32f06c6a 100644 --- a/i18n/cht/extensions/less/package.i18n.json +++ b/i18n/cht/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Less 語言基礎知識", + "description": "為 Less 檔案提供語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/log/package.i18n.json b/i18n/cht/extensions/log/package.i18n.json index d53f2dd606e..9a43b2c80de 100644 --- a/i18n/cht/extensions/log/package.i18n.json +++ b/i18n/cht/extensions/log/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "日誌", - "description": "提供副檔名為 .log 檔案語法醒目提示" + "description": "為具有 .log 副檔名的檔案提供語法醒目提示功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/lua/package.i18n.json b/i18n/cht/extensions/lua/package.i18n.json index 35229bd6699..aa69805cc84 100644 --- a/i18n/cht/extensions/lua/package.i18n.json +++ b/i18n/cht/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Lua 語言基礎知識", + "description": "為 Lua 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/make/package.i18n.json b/i18n/cht/extensions/make/package.i18n.json index 35229bd6699..43f7897aa31 100644 --- a/i18n/cht/extensions/make/package.i18n.json +++ b/i18n/cht/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Make 語言基礎知識", + "description": "為 Make 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/markdown-basics/package.i18n.json b/i18n/cht/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..c1f9350d041 --- /dev/null +++ b/i18n/cht/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown 語言基礎知識", + "description": "為 Markdown 提供程式碼片段和語法醒目提示。" +} \ No newline at end of file diff --git a/i18n/cht/extensions/markdown/out/features/preview.i18n.json b/i18n/cht/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..74c6cf18168 --- /dev/null +++ b/i18n/cht/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[預覽] {0}", + "previewTitle": "預覽 [0]" +} \ No newline at end of file diff --git a/i18n/cht/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/cht/extensions/markdown/out/features/previewContentProvider.i18n.json index b5730119088..fe1f5c5a4e5 100644 --- a/i18n/cht/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/cht/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,6 +8,5 @@ ], "preview.securityMessage.text": "此文件中的部分內容已停用", "preview.securityMessage.title": "Markdown 預覽中已停用可能不安全或不安全的內容。請將 Markdown 預覽的安全性設定變更為允許不安全內容,或啟用指令碼", - "preview.securityMessage.label": "內容已停用安全性警告", - "previewTitle": "預覽 [0]" + "preview.securityMessage.label": "內容已停用安全性警告" } \ No newline at end of file diff --git a/i18n/cht/extensions/markdown/package.i18n.json b/i18n/cht/extensions/markdown/package.i18n.json index f50c8b02797..d27fa896c2a 100644 --- a/i18n/cht/extensions/markdown/package.i18n.json +++ b/i18n/cht/extensions/markdown/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Markdown 語言功能", + "description": "為 Markdown 提供豐富的語言支援。", "markdown.preview.breaks.desc": "設定在 Markdown 預覽中如何顯示分行符號。設為 'trure' 為每個新行建立
", "markdown.preview.linkify": "啟用或停用在 Markdown 預覽中將類似 URL 的文字轉換為連結。", "markdown.preview.doubleClickToSwitchToEditor.desc": "在 Markdown 預覽中按兩下會切換到編輯器。", @@ -13,12 +15,18 @@ "markdown.preview.fontSize.desc": "控制 Markdown 預覽中使用的字型大小 (以像素為單位)。", "markdown.preview.lineHeight.desc": "控制 Markdown 預覽中使用的行高。此數字相對於字型大小。", "markdown.preview.markEditorSelection.desc": "在 Markdown 預覽中標記目前的編輯器選取範圍。", + "markdown.preview.scrollEditorWithPreview.desc": "在捲動 Markdown 預覽時更新編輯器的檢視。", + "markdown.preview.scrollPreviewWithEditor.desc": "在捲動 Markdown 編輯器時更新預覽的檢視。", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[已淘汰] 捲動 Markdown 預覽,以從編輯器顯示目前選取的程式行。", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "此設定已由 'markdown.preview.scrollPreviewWithEditor' 取代,不再具有任何效果。", "markdown.preview.title": "開啟預覽", "markdown.previewFrontMatter.dec": "設定 YAML 前端在 Markdown 預覽中呈現的方式。[隱藏] 會移除前端。否則,前端會視為 Markdown 內容。", "markdown.previewSide.title": "在一側開啟預覽", + "markdown.showLockedPreviewToSide.title": "在側面開啟鎖定的預覽", "markdown.showSource.title": "顯示來源", "markdown.styles.dec": "可從 Markdown 預覽使用之 CSS 樣式表的 URL 或本機路徑清單。相對路徑是相對於在總管中開啟的資料夾來進行解釋。若沒有開啟資料夾,路徑則是相對於 Markdown 檔案的位置來進行解釋。所有 '\\' 都必須寫成 '\\\\'。", "markdown.showPreviewSecuritySelector.title": "變更預覽的安全性設定", "markdown.trace.desc": "允許 Markdown 延伸模組進行偵錯記錄。", - "markdown.refreshPreview.title": "重新整理預覽" + "markdown.preview.refresh.title": "重新整理預覽", + "markdown.preview.toggleLock.title": "切換預覽鎖定" } \ No newline at end of file diff --git a/i18n/cht/extensions/merge-conflict/package.i18n.json b/i18n/cht/extensions/merge-conflict/package.i18n.json index 4a696ce0f62..c12550f5f7a 100644 --- a/i18n/cht/extensions/merge-conflict/package.i18n.json +++ b/i18n/cht/extensions/merge-conflict/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "合併衝突", + "description": "內嵌合併衝突的醒目提式與命令。", "command.category": "合併衝突", "command.accept.all-current": "接受所有當前項目", "command.accept.all-incoming": "接受所有來源", diff --git a/i18n/cht/extensions/npm/package.i18n.json b/i18n/cht/extensions/npm/package.i18n.json index ce79ea852ec..0f02eca2d43 100644 --- a/i18n/cht/extensions/npm/package.i18n.json +++ b/i18n/cht/extensions/npm/package.i18n.json @@ -6,8 +6,13 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "為 npm 指令碼新增工作支援的延伸模組。", + "displayName": "VSCode 的 Npm 支援", "config.npm.autoDetect": "控制是否自動檢測npm腳本.預設為開啟.", "config.npm.runSilent": "以 `--silent` 選項執行 npm 命令。 ", "config.npm.packageManager": "用來執行指令碼的套件管理員。", - "npm.parseError": "Npm 工作刪除: 解析檔案 {0} 失敗" + "config.npm.exclude": "為應從自動指令碼偵測排除的資料夾設定 Glob 模式。", + "npm.parseError": "Npm 工作刪除: 解析檔案 {0} 失敗", + "taskdef.script": "要自訂的 npm 指令碼。", + "taskdef.path": "提供指令碼之 package.json 檔案的資料夾路徑。可以省略。" } \ No newline at end of file diff --git a/i18n/cht/extensions/objective-c/package.i18n.json b/i18n/cht/extensions/objective-c/package.i18n.json index 35229bd6699..62647ae8f6b 100644 --- a/i18n/cht/extensions/objective-c/package.i18n.json +++ b/i18n/cht/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Objective-C 語言基礎知識", + "description": " Objective-C 檔案中的語法醒目提示和括號對稱功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/perl/package.i18n.json b/i18n/cht/extensions/perl/package.i18n.json index 35229bd6699..dd60e768ef9 100644 --- a/i18n/cht/extensions/perl/package.i18n.json +++ b/i18n/cht/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Perl 語言基礎知識", + "description": "為 Perl 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/php/package.i18n.json b/i18n/cht/extensions/php/package.i18n.json index 133063880cd..397c38b737e 100644 --- a/i18n/cht/extensions/php/package.i18n.json +++ b/i18n/cht/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "是否在儲存或輸入時執行 linter。", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "禁止 PHP 驗證可執行檔 (定義為工作區設定)" + "command.untrustValidationExecutable": "禁止 PHP 驗證可執行檔 (定義為工作區設定)", + "displayName": "PHP 語言功能", + "description": "為 PHP 檔案提供 IntelliSense、Lint 支援及語言基礎知識。" } \ No newline at end of file diff --git a/i18n/cht/extensions/powershell/package.i18n.json b/i18n/cht/extensions/powershell/package.i18n.json index 35229bd6699..66b700e09a4 100644 --- a/i18n/cht/extensions/powershell/package.i18n.json +++ b/i18n/cht/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Powershell 語言基礎知識", + "description": "為 PowerShell 檔案提供程式碼片段、語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/pug/package.i18n.json b/i18n/cht/extensions/pug/package.i18n.json index 35229bd6699..c23951889ca 100644 --- a/i18n/cht/extensions/pug/package.i18n.json +++ b/i18n/cht/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Pug 語言基礎知識", + "description": "為 Pug 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/python/package.i18n.json b/i18n/cht/extensions/python/package.i18n.json index 35229bd6699..61843b3659c 100644 --- a/i18n/cht/extensions/python/package.i18n.json +++ b/i18n/cht/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Python 語言基礎知識", + "description": "為 Python 檔案提供語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/r/package.i18n.json b/i18n/cht/extensions/r/package.i18n.json index 35229bd6699..44ea2361268 100644 --- a/i18n/cht/extensions/r/package.i18n.json +++ b/i18n/cht/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "R 語言基礎知識", + "description": "為 R 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/razor/package.i18n.json b/i18n/cht/extensions/razor/package.i18n.json index 35229bd6699..fd380c8eb0b 100644 --- a/i18n/cht/extensions/razor/package.i18n.json +++ b/i18n/cht/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Razor 語言基礎知識", + "description": "為 Razor 檔案提供語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/ruby/package.i18n.json b/i18n/cht/extensions/ruby/package.i18n.json index 35229bd6699..98bb2fa6ae5 100644 --- a/i18n/cht/extensions/ruby/package.i18n.json +++ b/i18n/cht/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ruby 語言基礎知識", + "description": "為 Ruby 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/rust/package.i18n.json b/i18n/cht/extensions/rust/package.i18n.json index 35229bd6699..5a0272a8e28 100644 --- a/i18n/cht/extensions/rust/package.i18n.json +++ b/i18n/cht/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Rust 語言基礎知識", + "description": "為 Rust 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/scss/package.i18n.json b/i18n/cht/extensions/scss/package.i18n.json index 35229bd6699..433ce03d1b5 100644 --- a/i18n/cht/extensions/scss/package.i18n.json +++ b/i18n/cht/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SCSS 語言基礎知識", + "description": "為 SCSS 檔案提供語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/shaderlab/package.i18n.json b/i18n/cht/extensions/shaderlab/package.i18n.json index 35229bd6699..64249778d22 100644 --- a/i18n/cht/extensions/shaderlab/package.i18n.json +++ b/i18n/cht/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shaderlab 語言基礎知識", + "description": "為 Shaderlab 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/shellscript/package.i18n.json b/i18n/cht/extensions/shellscript/package.i18n.json index 35229bd6699..e29ba9378a4 100644 --- a/i18n/cht/extensions/shellscript/package.i18n.json +++ b/i18n/cht/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shell Script 語言基礎知識", + "description": "為 Shell Script 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/sql/package.i18n.json b/i18n/cht/extensions/sql/package.i18n.json index 35229bd6699..43aea024d36 100644 --- a/i18n/cht/extensions/sql/package.i18n.json +++ b/i18n/cht/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SQL 語言基礎知識", + "description": "為 SQL 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/swift/package.i18n.json b/i18n/cht/extensions/swift/package.i18n.json index 35229bd6699..b98cfd74827 100644 --- a/i18n/cht/extensions/swift/package.i18n.json +++ b/i18n/cht/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Swift 語言基礎知識", + "description": "為 Swift 檔案提供程式碼片段、語法醒目提示及括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-defaults/package.i18n.json b/i18n/cht/extensions/theme-defaults/package.i18n.json index 11964b86726..77940cf9c6a 100644 --- a/i18n/cht/extensions/theme-defaults/package.i18n.json +++ b/i18n/cht/extensions/theme-defaults/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "預設佈景主題" + "displayName": "預設佈景主題", + "description": "預設淺色與深色佈景主題 (Plus 與 Visual Studio)" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-kimbie-dark/package.i18n.json b/i18n/cht/extensions/theme-kimbie-dark/package.i18n.json index 35229bd6699..3b425fc8eb2 100644 --- a/i18n/cht/extensions/theme-kimbie-dark/package.i18n.json +++ b/i18n/cht/extensions/theme-kimbie-dark/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Kimbie 深色佈景主題", + "description": "Visual Studio Code 的 Kimbie 深色佈景主題" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-monokai-dimmed/package.i18n.json b/i18n/cht/extensions/theme-monokai-dimmed/package.i18n.json index 35229bd6699..35a5fd5d8b1 100644 --- a/i18n/cht/extensions/theme-monokai-dimmed/package.i18n.json +++ b/i18n/cht/extensions/theme-monokai-dimmed/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Monokai 暗灰色佈景主題", + "description": "Visual Studio Code 的 Monokai 暗灰色佈景主題" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-monokai/package.i18n.json b/i18n/cht/extensions/theme-monokai/package.i18n.json index 35229bd6699..a9a54dfb52b 100644 --- a/i18n/cht/extensions/theme-monokai/package.i18n.json +++ b/i18n/cht/extensions/theme-monokai/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Monokai 佈景主題", + "description": "Visual Studio Code 的 Monokai 佈景主題" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-quietlight/package.i18n.json b/i18n/cht/extensions/theme-quietlight/package.i18n.json index 35229bd6699..4b7c2ec24d2 100644 --- a/i18n/cht/extensions/theme-quietlight/package.i18n.json +++ b/i18n/cht/extensions/theme-quietlight/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Quiet 淺色佈景主題", + "description": "Visual Studio Code 的 Quiet 淺色佈景主題" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-red/package.i18n.json b/i18n/cht/extensions/theme-red/package.i18n.json index 35229bd6699..085f41903e0 100644 --- a/i18n/cht/extensions/theme-red/package.i18n.json +++ b/i18n/cht/extensions/theme-red/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "紅色佈景主題", + "description": "Visual Studio Code 的紅色佈景主題" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-seti/package.i18n.json b/i18n/cht/extensions/theme-seti/package.i18n.json index 35229bd6699..514ed6d52d7 100644 --- a/i18n/cht/extensions/theme-seti/package.i18n.json +++ b/i18n/cht/extensions/theme-seti/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Seti 檔案圖式佈景主題", + "description": "以 Seti UI 檔案圖示為範本製作的檔案圖示佈景主題" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-solarized-dark/package.i18n.json b/i18n/cht/extensions/theme-solarized-dark/package.i18n.json index 35229bd6699..2ff9e6422f9 100644 --- a/i18n/cht/extensions/theme-solarized-dark/package.i18n.json +++ b/i18n/cht/extensions/theme-solarized-dark/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Solarized 深色佈景主題", + "description": "Visual Studio Code 的 Solarized 深色佈景主題" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-solarized-light/package.i18n.json b/i18n/cht/extensions/theme-solarized-light/package.i18n.json index 35229bd6699..9b00620cec2 100644 --- a/i18n/cht/extensions/theme-solarized-light/package.i18n.json +++ b/i18n/cht/extensions/theme-solarized-light/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Solarized 淺色佈景主題", + "description": "Visual Studio Code 的 Solarized 淺色佈景主題" } \ No newline at end of file diff --git a/i18n/cht/extensions/theme-tomorrow-night-blue/package.i18n.json b/i18n/cht/extensions/theme-tomorrow-night-blue/package.i18n.json index 35229bd6699..c56ef374186 100644 --- a/i18n/cht/extensions/theme-tomorrow-night-blue/package.i18n.json +++ b/i18n/cht/extensions/theme-tomorrow-night-blue/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "明夜憂藍佈景主題", + "description": "Visual Studio Code 的明夜憂藍佈景主題" } \ No newline at end of file diff --git a/i18n/cht/extensions/typescript-basics/package.i18n.json b/i18n/cht/extensions/typescript-basics/package.i18n.json index 35229bd6699..0d9de7e7b4d 100644 --- a/i18n/cht/extensions/typescript-basics/package.i18n.json +++ b/i18n/cht/extensions/typescript-basics/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "TypeScript 語言基礎知識", + "description": "為 TypeScript 檔案提供程式碼片段、語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/typescript/out/commands.i18n.json b/i18n/cht/extensions/typescript/out/commands.i18n.json index 424cb940903..90f4f953b40 100644 --- a/i18n/cht/extensions/typescript/out/commands.i18n.json +++ b/i18n/cht/extensions/typescript/out/commands.i18n.json @@ -9,6 +9,8 @@ "typescript.projectConfigNoWorkspace": "請在 VS Code 中開啟資料夾,以使用 TypeScript 或 JavaScript 專案", "typescript.projectConfigUnsupportedFile": "無法判斷 TypeScript 或 JavaScript 專案。不支援的檔案類型", "typescript.projectConfigCouldNotGetInfo": "無法判斷 TypeScript 或 JavaScript 專案", + "typescript.noTypeScriptProjectConfig": "檔案不屬於 TypeScript 專案。若要深入了解,請按一下[這裡]({0})。", + "typescript.noJavaScriptProjectConfig": "檔案不屬於 JavaScript 專案。若要深入了解,請按一下[這裡]({0})。", "typescript.configureTsconfigQuickPick": "設定 tsconfig.json", "typescript.configureJsconfigQuickPick": "設定 jsconfig.json" } \ No newline at end of file diff --git a/i18n/cht/extensions/typescript/out/utils/typingsStatus.i18n.json b/i18n/cht/extensions/typescript/out/utils/typingsStatus.i18n.json index e7503a069d0..e80262263f7 100644 --- a/i18n/cht/extensions/typescript/out/utils/typingsStatus.i18n.json +++ b/i18n/cht/extensions/typescript/out/utils/typingsStatus.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "installingPackages": "正在擷取資料以改善 TypeScript IntelliSense", + "typesInstallerInitializationFailed.title": "無法為 JavaScript 語言功能安裝 typings 檔案。請確認已安裝 NPM,或在使用者設定中設定 'typescript.npm'。若要深入了解,請按一下[這裡]({0})。", "typesInstallerInitializationFailed.doNotCheckAgain": "不要再顯示" } \ No newline at end of file diff --git a/i18n/cht/extensions/typescript/package.i18n.json b/i18n/cht/extensions/typescript/package.i18n.json index 4325ca541fc..003b932658c 100644 --- a/i18n/cht/extensions/typescript/package.i18n.json +++ b/i18n/cht/extensions/typescript/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "TypeScript 和 JavaScript 語言功能", + "description": "為 JavaScript 和 TypeScript 提供豐富的語言支援。", "typescript.reloadProjects.title": "重新載入專案", "javascript.reloadProjects.title": "重新載入專案", "configuration.typescript": "TypeScript", @@ -53,5 +55,7 @@ "typescript.quickSuggestionsForPaths": "啟用/停用在輸入匯入路徑顯示即時建議。", "typescript.locale": "設定報告 TypeScript 錯誤的語系。需要 TypeScript >= 2.6.0。預設值 'null' 則使用 VS Code 的語系來顯示 TypeScript 錯誤。", "javascript.implicitProjectConfig.experimentalDecorators": "啟用/停用 JavaScript 檔案中非專案部分的 'experimentalDecorators'。現有的 jsconfig.json 或 tsconfig.json 檔案會覆寫此設定。需要 TypeScript >=2.3.1。", - "typescript.autoImportSuggestions.enabled": "啟用/停用 自動匯入建議。需要 TypeScript >=2.6.1" + "typescript.autoImportSuggestions.enabled": "啟用/停用 自動匯入建議。需要 TypeScript >=2.6.1", + "typescript.experimental.syntaxFolding": "啟用/停用語法感知摺疊標記。", + "taskDefinition.tsconfig.description": "定義 TS 組建的 tsconfig 檔案。" } \ No newline at end of file diff --git a/i18n/cht/extensions/vb/package.i18n.json b/i18n/cht/extensions/vb/package.i18n.json index 35229bd6699..46f6a61fdc5 100644 --- a/i18n/cht/extensions/vb/package.i18n.json +++ b/i18n/cht/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Visual Basic 語言基礎知識", + "description": "為 Visual Basic 檔案提供程式碼片段、語法醒目提示、括弧對應與摺疊功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/xml/package.i18n.json b/i18n/cht/extensions/xml/package.i18n.json index 35229bd6699..d9556638839 100644 --- a/i18n/cht/extensions/xml/package.i18n.json +++ b/i18n/cht/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "XML 語言基礎知識", + "description": "為 XML 檔案提供語法醒目提式與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/extensions/yaml/package.i18n.json b/i18n/cht/extensions/yaml/package.i18n.json index 35229bd6699..759c416a806 100644 --- a/i18n/cht/extensions/yaml/package.i18n.json +++ b/i18n/cht/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "YAML 語言基礎知識", + "description": "為 YAML 檔案提供語法醒目提示與括弧對應功能。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 52a50a30437..04261af3234 100644 --- a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -17,8 +17,12 @@ "performanceIssue": "效能問題", "featureRequest": "功能要求", "stepsToReproduce": "重現的步驟", + "bugDescription": "請共用必要步驟以確實複製問題。請包含實際與預期的結果。我們支援 GitHub 慣用的 Markdown 語言。當我們在 GitHub 進行預覽時,您仍可編輯問題和新增螢幕擷取畫面。", + "performanceIssueDesciption": "效能問題的發生時間點為何? 問題是在啟動或經過一組特定動作後發生的? 我們支援 GitHub 慣用的 Markdown 語言。當我們在 GitHub 上進行預覽時,您仍可編輯問題和新增螢幕擷取畫面。", "description": "描述", + "featureRequestDescription": "請描述您希望新增的功能。我們支援 GitHub 慣用的 Markdown 語言。當我們在 GitHub 上進行預覽時,您仍可編輯問題和新增螢幕擷取畫面。", "expectedResults": "預期的結果", - "urlLengthError": "資料超過 {0} 字元的長度限制。資料長度為 {1}。", + "settingsSearchResultsDescription": "請列出您以此查詢進行搜尋時,預期看到的結果。我們支援 GitHub 慣用的 Markdown 語言。當我們在 GitHub 上進行預覽時,您仍可編輯問題和新增螢幕擷取畫面。", + "pasteData": "因為必要資料太大,我們已為您將其寫入您的剪貼簿。請貼上。", "disabledExtensions": "延伸模組已停用" } \ No newline at end of file diff --git a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 6af2e63d1f1..4d744adee44 100644 --- a/i18n/cht/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/cht/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -10,6 +10,7 @@ "issueTypeLabel": "這是一個", "issueTitleLabel": "標題", "issueTitleRequired": "請輸入標題。", + "titleLengthValidation": "標題太長。", "systemInfo": "我的系統資訊", "sendData": "傳送我的資料", "processes": "目前執行的程序", @@ -20,7 +21,10 @@ "tryDisablingExtensions": "是否在停用擴充功能後問題仍會發生?", "yes": "是", "no": "否", + "disableExtensionsLabelText": "請在 {0} 之後嘗試複製問題。", "disableExtensions": "停用所有延伸模組並重新載入視窗", + "showRunningExtensionsLabelText": "如果您認為這是延伸模組問題,請 {0} 以回報延伸模組問題。", + "showRunningExtensions": "檢視所有執行中的延伸模組", "details": "請輸入詳細資料。", "loadingData": "正在載入資料..." } \ No newline at end of file diff --git a/i18n/cht/src/vs/code/electron-main/logUploader.i18n.json b/i18n/cht/src/vs/code/electron-main/logUploader.i18n.json index 85bfec59b96..353e452eb1a 100644 --- a/i18n/cht/src/vs/code/electron-main/logUploader.i18n.json +++ b/i18n/cht/src/vs/code/electron-main/logUploader.i18n.json @@ -9,6 +9,10 @@ "invalidEndpoint": "記錄檔上傳者端點無效", "beginUploading": "上傳中...", "didUploadLogs": "上傳成功! 記錄檔識別碼: {0}", + "logUploadPromptHeader": "您即將將工作階段記錄上傳到安全的 Microsoft 端點,只有 VS Code 小組的 Microsoft 成員能夠存取。", + "logUploadPromptBody": "工作階段記錄可能包含完整路徑或檔案內容等個人資訊。請從此處檢閱並編輯您的工作階段記錄檔: '{0}'", + "logUploadPromptBodyDetails": "繼續進行即表示您確認已對工作階段記錄檔進行檢閱與編輯,並接受 Microsoft 將其用於偵錯 VS Code。", + "logUploadPromptAcceptInstructions": "請執行程式碼 '--upload-logs={0}' 以繼續上傳", "postError": "張貼記錄時發生錯誤: {0}", "responseError": "張貼記錄時發生錯誤。得到 {0} - {1}", "parseError": "剖析回應時發生錯誤", diff --git a/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json index e00f4099a5c..67c4e506a0f 100644 --- a/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/cht/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -15,6 +15,7 @@ "editorWhitespaces": "編輯器中空白字元的色彩。", "editorIndentGuides": "編輯器縮排輔助線的色彩。", "editorLineNumbers": "編輯器行號的色彩。", + "editorActiveLineNumber": "編輯器使用中行號的色彩 ", "editorRuler": "編輯器尺規的色彩", "editorCodeLensForeground": "編輯器程式碼濾鏡的前景色彩", "editorBracketMatchBackground": "成對括號背景色彩", diff --git a/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 0013de0e6a7..01f556d1f68 100644 --- a/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/cht/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "覆寫", "cancel": "取消", "errorInstallingDependencies": "安裝相依套件時發生錯誤。{0}", + "MarketPlaceDisabled": "未啟用市集", + "removeError": "移除擴充功能: {0} 時發生錯誤。重新嘗試前請離開並再次啟動 VS Code。", + "Not Market place extension": "只有市集擴充功能可以重新安裝", "notFoundCompatible": "無法安裝 '{0}';沒有任何與 VS Code 相容的可用版本 '{1}'。", "malicious extension": "因為有使用者回報該延伸模組有問題,所以無法安裝延伸模組。", "notFoundCompatibleDependency": "無法安裝,因為找不到相容於 VS Code 目前版本 '{1}' 的相依擴充功能 '{0}'。", diff --git a/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index 226e372f592..37f45309144 100644 --- a/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/cht/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (延伸模組)", "defaultSource": "擴充功能", "manageExtension": "管理延伸模組", "cancel": "取消", diff --git a/i18n/cht/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json index d8b92f6194b..57210caa274 100644 --- a/i18n/cht/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json @@ -19,12 +19,14 @@ "close": "關閉", "closeOthers": "關閉其他", "closeRight": "關到右側", + "closeAllSaved": "關閉已儲存項目", "closeAll": "全部關閉", "keepOpen": "保持開啟", "toggleInlineView": "切換至內嵌檢視", "showOpenedEditors": "顯示開啟的編輯器", "keepEditor": "保留編輯器", "closeEditorsInGroup": "關閉群組中的所有編輯器", + "closeSavedEditors": "關閉群組中的已儲存編輯器", "closeOtherEditors": "關閉其他編輯器", "closeRightEditors": "將編輯器關到右側" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json index 2a14b85e9f7..c7bb64eaec1 100644 --- a/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json +++ b/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json @@ -6,9 +6,11 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "clearNotification": "清除通知", "clearNotifications": "清除所有通知", "hideNotificationsCenter": "隱藏通知", "expandNotification": "展開通知", "collapseNotification": "摺疊通知", - "configureNotification": "設定通知" + "configureNotification": "設定通知", + "copyNotification": "複製文字" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index d3952c67594..87b4e30eb9d 100644 --- a/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "notifications": "通知", + "notificationsToolbar": "通知中心動作", "notificationsList": "通知列表" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index a0e94f1a6cb..822dc55b542 100644 --- a/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/cht/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -8,5 +8,7 @@ ], "hideNotifications": "隱藏通知", "zeroNotifications": "無通知", - "noNotifications": "無新通知" + "noNotifications": "無新通知", + "oneNotification": "1 則新通知", + "notifications": "{0} 則新通知" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/common/theme.i18n.json b/i18n/cht/src/vs/workbench/common/theme.i18n.json index c2ce787dd2d..be8fa25b644 100644 --- a/i18n/cht/src/vs/workbench/common/theme.i18n.json +++ b/i18n/cht/src/vs/workbench/common/theme.i18n.json @@ -59,7 +59,12 @@ "titleBarActiveBackground": "作用中視窗之標題列的背景。請注意,目前只有 macOS 支援此色彩。", "titleBarInactiveBackground": "非作用中視窗之標題列的背景。請注意,目前只有 macOS 支援此色彩。", "titleBarBorder": "標題列框線色彩。請注意,目前只有 macOS 支援此色彩。", + "notificationCenterBorder": "通知中央邊框色彩。通知會從視窗右下角滑入。", + "notificationToastBorder": "通知快顯通知邊框色彩。通知會從視窗右下角滑入。", "notificationsForeground": "通知的前景顏色。通知從視窗的右下方滑入。", "notificationsBackground": "通知的背景顏色。通知從視窗的右下方滑入。", - "notificationsLink": "通知的連結前景顏色。通知從視窗的右下方滑入。" + "notificationsLink": "通知的連結前景顏色。通知從視窗的右下方滑入。", + "notificationCenterHeaderForeground": "通知中心標題前景色彩。通知會從視窗右下角滑入。", + "notificationCenterHeaderBackground": "通知中心標題背景色彩。通知會從視窗右下角滑入。", + "notificationsBorder": "通知中心中,與其他通知分開的通知邊框色彩。通知會從視窗右下角滑入。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/cht/src/vs/workbench/electron-browser/actions.i18n.json index 7b5e1ff7f95..f55037e4c3b 100644 --- a/i18n/cht/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/cht/src/vs/workbench/electron-browser/actions.i18n.json @@ -18,6 +18,7 @@ "zoomReset": "重設縮放", "appPerf": "啟動效能", "reloadWindow": "重新載入視窗", + "reloadWindowWithExntesionsDisabled": "停用延伸模組並重新載入視窗", "switchWindowPlaceHolder": "選取要切換的視窗", "current": "目前視窗", "close": "關閉視窗", diff --git a/i18n/cht/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index c9aa5d596d9..219551b11e8 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -10,6 +10,8 @@ "functionBreakpointsNotSupported": "此偵錯類型不支援函式中斷點", "functionBreakpointPlaceholder": "要中斷的函式", "functionBreakPointInputAriaLabel": "輸入函式中斷點", + "breakpointDisabledHover": "停用的中斷點", + "breakpointUnverifieddHover": "未驗證的中斷點", "functionBreakpointUnsupported": "此偵錯類型不支援函式中斷點", "breakpointDirtydHover": "未驗證的中斷點。檔案已修改,請重新啟動偵錯工作階段。", "conditionalBreakpointUnsupported": "此偵錯類型不支援的條件式中斷點", diff --git a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index 6274babdab1..d9d627e8b23 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "遠用在狀態列中顯示偵錯", "onFirstSessionStart": "只有第一次啟動偵錯後才在狀態列中顯示偵錯", "showInStatusBar": "控制何時應該顯示偵錯狀態列", - "openDebug": "控制偵錯 viewlet 是否在 debugging session 啟動時開啟。", + "openDebug": "控制是否應於偵錯工作階段開始時開啟偵錯檢視。", "launch": "全域偵錯啟動組態。應當做在工作區之間共用的 'launch.json' 替代方案使用" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json index c9d364d178e..159a3adffec 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "copyValue": "複製值", + "copyAsExpression": "複製為運算式", "copy": "複製", "copyAll": "全部複製", "copyStackTrace": "複製呼叫堆疊" diff --git a/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index 777bc285596..0f0a8bc1904 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "預設淺色", "defaultHC": "預設高對比", "JSON Validation": "JSON 驗證 ({0})", + "fileMatch": "檔案相符", + "schema": "結構描述", "commands": "命令 ({0})", "command name": "名稱", "keyboard shortcuts": "鍵盤快速鍵(&&K)", diff --git a/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 93653e56482..f678d3e4041 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "手動下載", + "install vsix": "下載完成後,請手動安裝下載之 '{0}' 的 VSIX。", "installAction": "安裝", "installing": "安裝中", + "failedToInstall": "無法安裝 '{0}'。", "uninstallAction": "解除安裝", "Uninstalling": "正在解除安裝", "updateAction": "更新", "updateTo": "更新至 {0}", + "failedToUpdate": "無法更新 '{0}'。", "ManageExtensionAction.uninstallingTooltip": "正在解除安裝", "enableForWorkspaceAction": "啟用 (工作區)", "enableGloballyAction": "啟用", @@ -58,6 +62,16 @@ "disableAllWorkspace": "停用此工作區的所有已安裝延伸模組", "enableAll": "啟用所有擴充功能", "enableAllWorkspace": "啟用此工作區的所有擴充功能", + "openExtensionsFolder": "開啟延伸模組資料夾", + "installVSIX": "從 VSIX 安裝...", + "installFromVSIX": "從 VSIX 安裝", + "installButton": "安裝(&&I)", + "InstallVSIXAction.success": "已成功安裝擴充功能。請重新載入以啟用。", + "InstallVSIXAction.reloadNow": "立即重新載入", + "reinstall": "重新安裝延伸模組...", + "selectExtension": "選取要重新安裝的延伸模組", + "ReinstallAction.success": "已成功重新安裝延伸模組。", + "ReinstallAction.reloadNow": "立即重新載入", "extensionButtonProminentBackground": "突出的動作延伸模組按鈕背景色彩 (例如,[安裝] 按鈕)。", "extensionButtonProminentForeground": "突出的動作延伸模組按鈕前景色彩 (例如,[安裝] 按鈕)。", "extensionButtonProminentHoverBackground": "突出的動作延伸模組按鈕背景暫留色彩 (例如,[安裝] 按鈕)。" diff --git a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 6ee7dad42ce..428850cc74c 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "記錄延伸模組", + "restart2": "若要記錄延伸模組,則必須重新啟動。您要立即重新啟動 '{0}' 嗎?", "restart3": "重新啟動", "cancel": "取消", "selectAndStartDebug": "按一下以停止性能分析。" diff --git a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index d24095f1535..a6842652e2e 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -8,6 +8,7 @@ ], "neverShowAgain": "不要再顯示", "searchMarketplace": "搜尋市集", + "showLanguagePackExtensions": "Marketplace 的延伸模組能夠協助將 VS Code 當地語系化為 '{0}' 地區設定", "dynamicWorkspaceRecommendation": "此擴充功能可能會讓您感興趣,因為它在 {0} 儲存庫的使用者中很熱門。", "exeBasedRecommendation": "因為您已安裝 {0},所以建議您使用此延伸模組。", "fileBasedRecommendation": "根據您最近開啟的檔案,建議您使用此延伸模組。", diff --git a/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json index 445b3cf5c97..7db983f67d1 100644 --- a/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json @@ -29,6 +29,7 @@ "compareSelected": "比較已選取", "close": "關閉", "closeOthers": "關閉其他", + "closeSaved": "關閉已儲存項目", "closeAll": "全部關閉", "deleteFile": "永久刪除" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/cht/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index 90e473eb479..5efe5cd3261 100644 --- a/i18n/cht/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editor.action.webvieweditor.showFind": "焦點尋找小工具" + "editor.action.webvieweditor.showFind": "焦點尋找小工具", + "openToolsLabel": "開啟 Webview Developer 工具", + "refreshWebviewLabel": "重新載入 Webviews" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index fb76c662147..39cad4cb3d4 100644 --- a/i18n/cht/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,5 +25,6 @@ "search.quickOpen.includeSymbols": "設定以將全域符號搜尋的結果納入 Quick Open 的檔案結果中。", "search.followSymlinks": "控制是否要在搜尋時遵循 symlink。", "search.smartCase": "如果搜尋式為全部小寫,則用不分大小寫的搜尋,否則用分大小寫的搜尋", - "search.globalFindClipboard": "控制 Search Viewlet 是否應讀取或修改 macOS 上的共用尋找剪貼簿" + "search.globalFindClipboard": "控制搜尋檢視是否應讀取或修改 macOS 上的共用尋找剪貼簿 (shared find clipboard)", + "search.location": "預覽: 控制搜尋會在資訊看板顯示為檢視,或在面板區域顯示為面板以取得更多水平空間。下個版本的面板搜尋將具有改善的水平版面配置,而此項目將不再處於預覽階段。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index a9e211625b5..f498908a44c 100644 --- a/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -28,6 +28,8 @@ "selectProblemMatcher": "選取錯誤和警告的種類以掃描工作輸出", "customizeParseErrors": "當前的工作組態存在錯誤.請更正錯誤再執行工作.", "moreThanOneBuildTask": "定義了很多建置工作於tasks.json.執行第一個.", + "TaskSystem.activeSame.background": "工作 '{0}' 已在使用中並處於背景模式。若要予以終止,請使用 [Tasks] \\(工作\\) 功能表的 [Terminate Task...] \\(終止工作...\\)。", + "TaskSystem.activeSame.noBackground": "工作 '{0}' 已在使用中。若要予以終止,請使用 [Tasks] \\(工作\\) 功能表的 [Terminate Task...] \\(終止工作...\\)。", "TaskSystem.active": "已有工作在執行。請先終止該工作,然後再執行其他工作。", "TaskSystem.restartFailed": "無法終止再重新啟動工作 {0}", "TaskService.noConfiguration": "錯誤: {0} 工作偵測未替下列組態提供工作:\n{1}\n將會忽略該工作。\n", @@ -44,6 +46,7 @@ "recentlyUsed": "最近使用的工作", "configured": "設定的工作", "detected": "偵測到的工作", + "TaskService.ignoredFolder": "因為下列工作區資料夾使用工作版本 0.1.0,所以已略過: {0}", "TaskService.notAgain": "不要再顯示", "TaskService.pickRunTask": "請選取要執行的工作", "TaslService.noEntryToRun": "找不到任何要執行的工作。請設定工作...", diff --git a/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json index 4afb2ed7123..4c9806f2e53 100644 --- a/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json @@ -35,6 +35,7 @@ "terminal.integrated.env.linux": "Linux 上的終端機要使用之具有將新增至 VS Code 流程之環境變數的物件", "terminal.integrated.env.windows": "Windows 上的終端機要使用之具有將新增至 VS Code 流程之環境變數的物件", "terminal.integrated.showExitAlert": "當結束代碼非 0,顯示警告訊息 '終端處理序已終止並回傳結束代碼'", + "terminal.integrated.experimentalRestore": "啟動 VS Code 是否會自動還原工作區的終端機工作階段。此設定處於實驗階段,可能會出現 Bug 或在之後有所變更。", "terminalCategory": "終端機", "viewCategory": "檢視" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index 4397e7ab991..2657899133e 100644 --- a/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,6 +11,6 @@ "terminalCursor.foreground": "終端機游標的前景色彩。", "terminalCursor.background": "終端機游標的背景色彩。允許區塊游標重疊於自訂字元色彩。", "terminal.selectionBackground": "終端機的選取項目背景色彩。", - "terminal.border": "分隔多個終端的邊界顏色。預設值為 panel.border", + "terminal.border": "在終端機內將窗格分割之邊界的色彩。預設為 panel.border。", "terminal.ansiColor": "終端機中的 '{0}' ANSI 色彩。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 1f295095ccc..cda5b7948e8 100644 --- a/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -11,8 +11,12 @@ "releaseNotes": "版本資訊", "showReleaseNotes": "顯示版本資訊", "read the release notes": "歡迎使用 {0} v{1}! 您要閱讀版本資訊嗎?", + "licenseChanged": "我們的授權條款已變更,請按一下[這裡]({0})查看變更項目。", "neveragain": "不要再顯示", + "64bitisavailable": "適用於 64 位元 Windows 的 {0} 已正式推出! 若要深入了解,請按一下[這裡]({1})。", "updateIsReady": "新的 {0} 更新已可用。", + "noUpdatesAvailable": "目前沒有任何可用的更新。", + "ok": "確定", "download now": "立即下載", "thereIsUpdateAvailable": "已有更新可用。", "installUpdate": "安裝更新", diff --git a/i18n/cht/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/cht/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index 66c72f5e62f..b25bfc89872 100644 --- a/i18n/cht/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/cht/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "徽章描述。", "vscode.extension.extensionDependencies": "其它擴充功能的相依性。擴充功能的識別碼一律為 ${publisher}.${name}。例如: vscode.csharp。", "vscode.extension.scripts.prepublish": "在封裝作為 VS Code 擴充功能發行前所執行的指令碼。", + "vscode.extension.scripts.uninstall": "VS Code 延伸模組的解除安裝勾點。當延伸模組完全從 VS Code 解除安裝時,會在延伸模組解除安裝並重新啟動 (關機並啟動) 時執行的程式碼。僅支援 Node 指令碼。", "vscode.extension.icon": "128 x 128 像素圖示的路徑。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 9b8e2535d10..822c6c89950 100644 --- a/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/cht/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -11,5 +11,6 @@ "netVersionError": "需要 Microsoft .NET Framework 4.5。請連入此連結進行安裝。", "learnMore": "說明", "enospcError": "{0} 已超出檔案處理。請按照說明連結解決此問題。", + "binFailed": "無法將 '{0}' 移至資源回收筒", "trashFailed": "無法將 '{0}' 移動至垃圾" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json b/i18n/cht/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json index 744b9cc606c..d8f03c8e08c 100644 --- a/i18n/cht/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json +++ b/i18n/cht/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json @@ -7,5 +7,7 @@ "Do not edit this file. It is machine generated." ], "errorKeybindingsFileDirty": "因為按鍵繫結關係組態檔已變更,所以無法寫入。請先儲存,然後再試一次。", + "parseErrors": "無法寫入按鍵繫結關係組態檔。請開啟檔案修正錯誤/警示並再試一次。", + "errorInvalidConfiguration": "無法寫入按鍵繫結關係組態檔。其具有類型非 Array 的物件。請開啟檔案予以清除並再試一次。", "emptyKeybindingsHeader": "將您的按鍵組合放入此檔案中以覆寫預設值" } \ No newline at end of file diff --git a/i18n/deu/extensions/bat/package.i18n.json b/i18n/deu/extensions/bat/package.i18n.json index 35229bd6699..ac462418b13 100644 --- a/i18n/deu/extensions/bat/package.i18n.json +++ b/i18n/deu/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Windows-Bat-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in Windows-Batch-Dateien. " } \ No newline at end of file diff --git a/i18n/deu/extensions/clojure/package.i18n.json b/i18n/deu/extensions/clojure/package.i18n.json index 35229bd6699..af73ae50c29 100644 --- a/i18n/deu/extensions/clojure/package.i18n.json +++ b/i18n/deu/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Clojure-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Clojure-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/coffeescript/package.i18n.json b/i18n/deu/extensions/coffeescript/package.i18n.json index 35229bd6699..03ef115d9f6 100644 --- a/i18n/deu/extensions/coffeescript/package.i18n.json +++ b/i18n/deu/extensions/coffeescript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "CoffeeScript-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in CoffeeScript-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/configuration-editing/package.i18n.json b/i18n/deu/extensions/configuration-editing/package.i18n.json index 39934740e00..6c6bea97941 100644 --- a/i18n/deu/extensions/configuration-editing/package.i18n.json +++ b/i18n/deu/extensions/configuration-editing/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Konfigurationsänderung" + "displayName": "Konfigurationsänderung", + "description": "Bietet Funktionen (erweitertes IntelliSense, automatische Korrektur) in Konfigurationsdateien wie Einstellungen, Startdateien und Erweiterungsmpfehlungen." } \ No newline at end of file diff --git a/i18n/deu/extensions/cpp/package.i18n.json b/i18n/deu/extensions/cpp/package.i18n.json index 35229bd6699..273b9c01841 100644 --- a/i18n/deu/extensions/cpp/package.i18n.json +++ b/i18n/deu/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C/C++-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in C/C++-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/csharp/package.i18n.json b/i18n/deu/extensions/csharp/package.i18n.json index 35229bd6699..c36fa80a0fa 100644 --- a/i18n/deu/extensions/csharp/package.i18n.json +++ b/i18n/deu/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C# Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in C#-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/css/package.i18n.json b/i18n/deu/extensions/css/package.i18n.json index 188ffb115ce..6c525265ecf 100644 --- a/i18n/deu/extensions/css/package.i18n.json +++ b/i18n/deu/extensions/css/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "CSS Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für CSS-, LESS- und SCSS-Dateien.", "css.title": "CSS", "css.lint.argumentsInColorFunction.desc": "Ungültige Parameteranzahl.", "css.lint.boxModel.desc": "Verwenden Sie width oder height nicht beim Festlegen von padding oder border", diff --git a/i18n/deu/extensions/docker/package.i18n.json b/i18n/deu/extensions/docker/package.i18n.json index 35229bd6699..39876eea478 100644 --- a/i18n/deu/extensions/docker/package.i18n.json +++ b/i18n/deu/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Docker-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Docker-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/emmet/package.i18n.json b/i18n/deu/extensions/emmet/package.i18n.json index c138007e365..0dac2469d98 100644 --- a/i18n/deu/extensions/emmet/package.i18n.json +++ b/i18n/deu/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Emmet-Unterstützung für VS Code", "command.wrapWithAbbreviation": "Mit Abkürzung umschließen", "command.wrapIndividualLinesWithAbbreviation": "Einzelne Zeilen mit Abkürzung umschließen", "command.removeTag": "Tag entfernen", @@ -54,5 +55,9 @@ "emmetPreferencesFilterCommentTrigger": "Eine durch Trennzeichen getrennte Liste von Attributnamen, die in abgekürzter Form vorliegen müssen, damit der Kommentarfilter angewendet werden kann", "emmetPreferencesFormatNoIndentTags": "Ein Array von Tagnamen, die keinen inneren Einzug erhalten", "emmetPreferencesFormatForceIndentTags": "Ein Array von Tagnamen, die immer einen inneren Einzug erhalten", - "emmetPreferencesAllowCompactBoolean": "Bei TRUE wird eine kompakte Notation boolescher Attribute erzeugt" + "emmetPreferencesAllowCompactBoolean": "Bei TRUE wird eine kompakte Notation boolescher Attribute erzeugt", + "emmetPreferencesCssWebkitProperties": "Durch Trennzeichen getrennte CSS-Eigenschaften, die das \"webkit\"-Herstellerpräfix erhalten, wenn sie in einer Emmet-Abkürzung verwendet werden, die mit \"-\" beginnt. Legen Sie eine leere Zeichenfolge fest, um das \"webkit\"-Präfix immer zu vermeiden.", + "emmetPreferencesCssMozProperties": "Durch Trennzeichen getrennte CSS-Eigenschaften, die das \"moz\"-Herstellerpräfix erhalten, wenn sie in einer Emmet-Abkürzung verwendet werden, die mit \"-\" beginnt. Legen Sie eine leere Zeichenfolge fest, um das \"moz\"-Präfix immer zu vermeiden.", + "emmetPreferencesCssOProperties": "Durch Trennzeichen getrennte CSS-Eigenschaften, die das \"o\"-Herstellerpräfix erhalten, wenn sie in einer Emmet-Abkürzung verwendet werden, die mit \"-\" beginnt. Legen Sie eine leere Zeichenfolge fest, um das \"o\"-Präfix immer zu vermeiden.", + "emmetPreferencesCssMsProperties": "Durch Trennzeichen getrennte CSS-Eigenschaften, die das \"ms\"-Herstellerpräfix erhalten, wenn sie in einer Emmet-Abkürzung verwendet werden, die mit \"-\" beginnt. Legen Sie eine leere Zeichenfolge fest, um das \"ms\"-Präfix immer zu vermeiden." } \ No newline at end of file diff --git a/i18n/deu/extensions/extension-editing/package.i18n.json b/i18n/deu/extensions/extension-editing/package.i18n.json index 35229bd6699..ee917a1444c 100644 --- a/i18n/deu/extensions/extension-editing/package.i18n.json +++ b/i18n/deu/extensions/extension-editing/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Paketbearbeitung", + "description": "Bietet Intellisense für VS Code-Erweiterungspunkte und Bereinigungsfunktionen in Dateien vom Typ \"package.json\"." } \ No newline at end of file diff --git a/i18n/deu/extensions/fsharp/package.i18n.json b/i18n/deu/extensions/fsharp/package.i18n.json index 35229bd6699..bd6db3cff25 100644 --- a/i18n/deu/extensions/fsharp/package.i18n.json +++ b/i18n/deu/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "F#-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in F#-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/git/out/autofetch.i18n.json b/i18n/deu/extensions/git/out/autofetch.i18n.json index fb289bdf8fe..57d1be570fc 100644 --- a/i18n/deu/extensions/git/out/autofetch.i18n.json +++ b/i18n/deu/extensions/git/out/autofetch.i18n.json @@ -8,5 +8,6 @@ ], "yes": "Ja", "no": "Nein", - "not now": "Erneut nachfragen" + "not now": "Erneut nachfragen", + "suggest auto fetch": "Möchten Sie Code [regelmäßig \"git fetch\" ausführen lassen] ({0})?" } \ No newline at end of file diff --git a/i18n/deu/extensions/git/out/commands.i18n.json b/i18n/deu/extensions/git/out/commands.i18n.json index 11a98b9d1ae..390ed62228d 100644 --- a/i18n/deu/extensions/git/out/commands.i18n.json +++ b/i18n/deu/extensions/git/out/commands.i18n.json @@ -51,7 +51,7 @@ "always": "Immer", "no changes": "Keine Änderungen zum Speichern vorhanden.", "commit message": "Commit-Nachricht", - "provide commit message": "Geben Sie eine Commit-Nachrichte ein.", + "provide commit message": "Geben Sie eine Commit-Nachricht ein.", "select a ref to checkout": "Referenz zum Auschecken auswählen", "branch name": "Branchname", "provide branch name": "Geben Sie einen Branchnamen an.", diff --git a/i18n/deu/extensions/git/out/model.i18n.json b/i18n/deu/extensions/git/out/model.i18n.json index ed79b8d272d..9a6612eb540 100644 --- a/i18n/deu/extensions/git/out/model.i18n.json +++ b/i18n/deu/extensions/git/out/model.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "too many submodules": "Das Repository \"{0}\" enthält {1} Submodule, die nicht automatisch geöffnet werden. Sie könne Sie einzeln öffnen, indem Sie darin erhaltene Datei öffnen.", "no repositories": "Es sind keine verfügbaren Repositorys vorhanden.", "pick repo": "Repository auswählen" } \ No newline at end of file diff --git a/i18n/deu/extensions/git/package.i18n.json b/i18n/deu/extensions/git/package.i18n.json index e774d08cd53..4c745be0f35 100644 --- a/i18n/deu/extensions/git/package.i18n.json +++ b/i18n/deu/extensions/git/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Git", + "description": "Git SCM-Integration", "command.clone": "Klonen", "command.init": "Repository initialisieren", "command.close": "Repository schließen", @@ -74,6 +75,7 @@ "config.decorations.enabled": "Steuert, ob Git Farben und Badges für die Explorer-Ansicht und die Ansicht \"Geöffnete Editoren\" beiträgt.", "config.promptToSaveFilesBeforeCommit": "Legt fest, ob Git vor dem einchecken nach nicht gespeicherten Dateien suchen soll.", "config.showInlineOpenFileAction": "Steuert, ob eine Inlineaktion zum Öffnen der Datei in der Ansicht \"Git-Änderungen\" angezeigt wird.", + "config.inputValidation": "Steuert, wann die Commit-Meldung der Eingabevalidierung angezeigt wird.", "config.detectSubmodules": "Steuert, ob Git-Submodule automatisch erkannt werden.", "colors.modified": "Farbe für geänderte Ressourcen.", "colors.deleted": "Farbe für gelöschten Ressourcen.", diff --git a/i18n/deu/extensions/go/package.i18n.json b/i18n/deu/extensions/go/package.i18n.json index 35229bd6699..0c7545c4f9e 100644 --- a/i18n/deu/extensions/go/package.i18n.json +++ b/i18n/deu/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Go-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Go-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/groovy/package.i18n.json b/i18n/deu/extensions/groovy/package.i18n.json index 35229bd6699..0098e67a8e7 100644 --- a/i18n/deu/extensions/groovy/package.i18n.json +++ b/i18n/deu/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Groovy-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung und Klammernpaare in Groovy-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/grunt/package.i18n.json b/i18n/deu/extensions/grunt/package.i18n.json index ab1602bc684..5b9f39ef76d 100644 --- a/i18n/deu/extensions/grunt/package.i18n.json +++ b/i18n/deu/extensions/grunt/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.grunt.autoDetect": "Steuert, ob die automatische Erkennung von Grunt-Tasks aktiviert oder deaktiviert ist. Standardmäßig ist die Funktion aktiviert." + "description": "Erweiterung zum Hinzufügen von Grunt-Funktionen in VSCode.", + "displayName": "Grunt-Unterstützung für VSCode", + "config.grunt.autoDetect": "Steuert, ob die automatische Erkennung von Grunt-Tasks aktiviert oder deaktiviert ist. Standardmäßig ist die Funktion aktiviert.", + "grunt.taskDefinition.type.description": "Die anzupassende Grunt-Aufgabe.", + "grunt.taskDefinition.file.description": "Die Grunt-Datei zum Bereitstellen der Aufgabe. Kann ausgelassen werden." } \ No newline at end of file diff --git a/i18n/deu/extensions/gulp/package.i18n.json b/i18n/deu/extensions/gulp/package.i18n.json index 67a571264df..1aafc3b92eb 100644 --- a/i18n/deu/extensions/gulp/package.i18n.json +++ b/i18n/deu/extensions/gulp/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.gulp.autoDetect": "Steuert, ob die automatische Erkennung von Gulp-Tasks aktiviert oder deaktiviert ist. Standardmäßig ist die Funktion aktiviert." + "description": "Erweiterung zum Hinzufügen von Gulp-Funktionen in VSCode.", + "displayName": "Gulp-Unterstützung für VSCode", + "config.gulp.autoDetect": "Steuert, ob die automatische Erkennung von Gulp-Tasks aktiviert oder deaktiviert ist. Standardmäßig ist die Funktion aktiviert.", + "gulp.taskDefinition.type.description": "Die anzupassende Gulp-Aufgabe.", + "gulp.taskDefinition.file.description": "Die Gulp-Datei zum Bereitstellen der Aufgabe. Kann ausgelassen werden." } \ No newline at end of file diff --git a/i18n/deu/extensions/handlebars/package.i18n.json b/i18n/deu/extensions/handlebars/package.i18n.json index 35229bd6699..15975d75178 100644 --- a/i18n/deu/extensions/handlebars/package.i18n.json +++ b/i18n/deu/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Handlebars-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Handlebars-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/hlsl/package.i18n.json b/i18n/deu/extensions/hlsl/package.i18n.json index 35229bd6699..c7195a8a24c 100644 --- a/i18n/deu/extensions/hlsl/package.i18n.json +++ b/i18n/deu/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "HLSL-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in HLSL-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/html/package.i18n.json b/i18n/deu/extensions/html/package.i18n.json index 51cd079a7f8..a85a95e5d5d 100644 --- a/i18n/deu/extensions/html/package.i18n.json +++ b/i18n/deu/extensions/html/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "HTML-Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für HTML-, Razor- und Handlebar-Dateien.", "html.format.enable.desc": "Standard-HTML-Formatierer aktivieren/deaktivieren", "html.format.wrapLineLength.desc": "Die maximale Anzahl von Zeichen pro Zeile (0 = deaktiviert).", "html.format.unformatted.desc": "Die Liste der Tags (durch Kommas getrennt), die nicht erneut formatiert werden sollen. \"null\" bezieht sich standardmäßig auf alle Tags, die unter https://www.w3.org/TR/html5/dom.html#phrasing-content aufgeführt werden.", @@ -27,5 +29,6 @@ "html.trace.server.desc": "Verfolgt die Kommunikation zwischen VS Code und dem HTML-Sprachserver.", "html.validate.scripts": "Konfiguriert, ob die integrierte HTML-Sprachunterstützung eingebettete Skripts unterstützt.", "html.validate.styles": "Konfiguriert, ob die integrierte HTML-Sprachunterstützung eingebettete Skripts validiert.", + "html.experimental.syntaxFolding": "Aktiviert bzw. deaktiviert syntaxabhängige Faltungsmarkierungen.", "html.autoClosingTags": "Automatisches Schließen von HTML-Tags aktivieren/deaktivieren." } \ No newline at end of file diff --git a/i18n/deu/extensions/ini/package.i18n.json b/i18n/deu/extensions/ini/package.i18n.json index 35229bd6699..7034b514623 100644 --- a/i18n/deu/extensions/ini/package.i18n.json +++ b/i18n/deu/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ini-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Ini-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/jake/package.i18n.json b/i18n/deu/extensions/jake/package.i18n.json index 47fc947e407..a00dbd961ab 100644 --- a/i18n/deu/extensions/jake/package.i18n.json +++ b/i18n/deu/extensions/jake/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Erweiterung zum Hinzufügen von Jake-Funktionen in VSCode.", + "displayName": "Jake-Unterstützung für VSCode", + "jake.taskDefinition.type.description": "Die anzupassende Jake-Aufgabe.", + "jake.taskDefinition.file.description": "Die Jake-Datei zum Bereitstellen der Aufgabe. Kann ausgelassen werden.", "config.jake.autoDetect": "Steuert, ob die automatische Erkennung von Jake-Tasks aktiviert oder deaktiviert ist. Standardmäßig ist die Funktion aktiviert." } \ No newline at end of file diff --git a/i18n/deu/extensions/java/package.i18n.json b/i18n/deu/extensions/java/package.i18n.json index 35229bd6699..b2577147cc1 100644 --- a/i18n/deu/extensions/java/package.i18n.json +++ b/i18n/deu/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Java-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in Java-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/javascript/package.i18n.json b/i18n/deu/extensions/javascript/package.i18n.json index 35229bd6699..34d40c989a0 100644 --- a/i18n/deu/extensions/javascript/package.i18n.json +++ b/i18n/deu/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JavaScript-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in JavaScript-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/json/package.i18n.json b/i18n/deu/extensions/json/package.i18n.json index 2471bee85e6..1ee4f4553c8 100644 --- a/i18n/deu/extensions/json/package.i18n.json +++ b/i18n/deu/extensions/json/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "JSON-Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für JSON-Dateien.", "json.schemas.desc": "Schemas zu JSON-Dateien im aktuellen Projekt zuordnen", "json.schemas.url.desc": "Eine URL zu einem Schema oder ein relativer Pfad zu einem Schema im aktuellen Verzeichnis", "json.schemas.fileMatch.desc": "Ein Array von Dateimustern, mit dem beim Auflösen von JSON-Dateien zu Schemas ein Abgleich erfolgt.", @@ -14,5 +16,6 @@ "json.format.enable.desc": "Standard-JSON-Formatierer aktivieren/deaktivieren (Neustart erforderlich)", "json.tracing.desc": "Verfolgt die Kommunikation zwischen VS Code und JSON-Sprachserver nach.", "json.colorDecorators.enable.desc": "Aktiviert oder deaktiviert Farb-Decorators", - "json.colorDecorators.enable.deprecationMessage": "Die Einstellung \"json.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt." + "json.colorDecorators.enable.deprecationMessage": "Die Einstellung \"json.colorDecorators.enable\" ist veraltet und wurde durch \"editor.colorDecorators\" ersetzt.", + "json.experimental.syntaxFolding": "Aktiviert bzw. deaktiviert die syntaxabhängigen Faltungsmarkierungen." } \ No newline at end of file diff --git a/i18n/deu/extensions/less/package.i18n.json b/i18n/deu/extensions/less/package.i18n.json index 35229bd6699..1a90a02d386 100644 --- a/i18n/deu/extensions/less/package.i18n.json +++ b/i18n/deu/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Less-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung, Klammernpaare und Falten in Less-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/log/package.i18n.json b/i18n/deu/extensions/log/package.i18n.json index 35229bd6699..8fa2c2ecd4a 100644 --- a/i18n/deu/extensions/log/package.i18n.json +++ b/i18n/deu/extensions/log/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Protokoll", + "description": "Bietet Syntaxhervorhebung für Dateien mit .log-Erweiterung." } \ No newline at end of file diff --git a/i18n/deu/extensions/lua/package.i18n.json b/i18n/deu/extensions/lua/package.i18n.json index 35229bd6699..45169b35b23 100644 --- a/i18n/deu/extensions/lua/package.i18n.json +++ b/i18n/deu/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Lua-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Lua-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/make/package.i18n.json b/i18n/deu/extensions/make/package.i18n.json index 35229bd6699..a4d0d8075d1 100644 --- a/i18n/deu/extensions/make/package.i18n.json +++ b/i18n/deu/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Make-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Make-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/markdown-basics/package.i18n.json b/i18n/deu/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..2cf88a1e68c --- /dev/null +++ b/i18n/deu/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown-Sprachgrundlagen", + "description": "Bietet Ausschnitte und Syntaxhervorhebung für Markdown." +} \ No newline at end of file diff --git a/i18n/deu/extensions/markdown/out/features/preview.i18n.json b/i18n/deu/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..145213b7b2e --- /dev/null +++ b/i18n/deu/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Vorschau] {0}", + "previewTitle": "Vorschau von {0}" +} \ No newline at end of file diff --git a/i18n/deu/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/deu/extensions/markdown/out/features/previewContentProvider.i18n.json index fc19d7aad95..1793456fe9d 100644 --- a/i18n/deu/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/deu/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,6 +8,5 @@ ], "preview.securityMessage.text": "In diesem Dokument wurden einige Inhalte deaktiviert.", "preview.securityMessage.title": "Potenziell unsichere Inhalte wurden in der Markdown-Vorschau deaktiviert. Ändern Sie die Sicherheitseinstellung der Markdown-Vorschau, um unsichere Inhalte zuzulassen oder Skripts zu aktivieren.", - "preview.securityMessage.label": "Sicherheitswarnung – Inhalt deaktiviert", - "previewTitle": "Vorschau von {0}" + "preview.securityMessage.label": "Sicherheitswarnung – Inhalt deaktiviert" } \ No newline at end of file diff --git a/i18n/deu/extensions/markdown/package.i18n.json b/i18n/deu/extensions/markdown/package.i18n.json index a054a068a1e..b88fe3c002a 100644 --- a/i18n/deu/extensions/markdown/package.i18n.json +++ b/i18n/deu/extensions/markdown/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Markdown-Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für Markdown.", "markdown.preview.breaks.desc": "Legt fest, wie Zeilenumbrüche in der Markdown-Vorschau gerendert werden. Die Einstellung 'true' erzeugt ein
für jede neue Zeile.", "markdown.preview.linkify": "Aktiviert oder deaktiviert die Konvertierung von URL-ähnlichem Text in Links in der Markdown-Vorschau.", "markdown.preview.doubleClickToSwitchToEditor.desc": "Doppelklicken Sie in die Markdown-Vorschau, um zum Editor zu wechseln.", @@ -13,12 +15,18 @@ "markdown.preview.fontSize.desc": "Steuert den Schriftgrad in Pixeln, der in der Markdownvorschau verwendet wird.", "markdown.preview.lineHeight.desc": "Steuert die Zeilenhöhe, die in der Markdownvorschau verwendet wird. Diese Zahl ist relativ zum Schriftgrad.", "markdown.preview.markEditorSelection.desc": "Markieren Sie die aktuelle Editor-Auswahl in der Markdown-Vorschau.", + "markdown.preview.scrollEditorWithPreview.desc": "Wenn eine Markdown-Vorschau gescrollt wird, aktualisieren Sie die Ansicht des Editors.", + "markdown.preview.scrollPreviewWithEditor.desc": "Wenn für die Markdown-Vorschau ein Bildlauf durchgeführt wird, aktualisieren Sie die Ansicht der Vorschau.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Veraltet] Führt einen Bildlauf für die Markdown-Vorschau durch, um die aktuell ausgewählte Zeile im Editor anzuzeigen.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Diese Einstellung wurde durch \"markdown.preview.scrollPreviewWithEditor\" ersetzt und ist nicht mehr wirksam.", "markdown.preview.title": "Vorschau öffnen", "markdown.previewFrontMatter.dec": "Legt fest, wie die YAML-Titelei in der Markdownvorschau gerendert werden soll. Durch \"hide\" wird die Titelei entfernt. Andernfalls wird die Titelei wie Markdowninhalt verarbeitet.", "markdown.previewSide.title": "Vorschau an der Seite öffnen", + "markdown.showLockedPreviewToSide.title": "Gesperrte Vorschau an der Seite öffnen", "markdown.showSource.title": "Quelle anzeigen", "markdown.styles.dec": "Eine Liste von URLs oder lokalen Pfaden zu CSS-Stylesheets aus der Markdownvorschau, die verwendet werden sollen. Relative Pfade werden relativ zu dem Ordner interpretiert, der im Explorer geöffnet ist. Wenn kein Ordner geöffnet ist, werden sie relativ zum Speicherort der Markdowndatei interpretiert. Alle '\\' müssen als '\\\\' geschrieben werden.", "markdown.showPreviewSecuritySelector.title": "Sicherheitseinstellungen für Vorschau ändern", "markdown.trace.desc": "Aktiviert die Debugprotokollierung für die Markdown-Erweiterung.", - "markdown.refreshPreview.title": "Vorschau aktualisieren" + "markdown.preview.refresh.title": "Vorschau aktualisieren", + "markdown.preview.toggleLock.title": "Vorschausperre umschalten" } \ No newline at end of file diff --git a/i18n/deu/extensions/merge-conflict/package.i18n.json b/i18n/deu/extensions/merge-conflict/package.i18n.json index 0fb810c3288..fd5e8e62af9 100644 --- a/i18n/deu/extensions/merge-conflict/package.i18n.json +++ b/i18n/deu/extensions/merge-conflict/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Merge-Konflikt", + "description": "Hervorhebung und Befehle für Inline-Mergingkonflikte.", "command.category": "Merge-Konflikt", "command.accept.all-current": "Alle aktuellen akzeptieren", "command.accept.all-incoming": "Alle eingehenden akzeptieren", diff --git a/i18n/deu/extensions/npm/package.i18n.json b/i18n/deu/extensions/npm/package.i18n.json index 4a666a0a468..76fc1f862d4 100644 --- a/i18n/deu/extensions/npm/package.i18n.json +++ b/i18n/deu/extensions/npm/package.i18n.json @@ -6,8 +6,13 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Erweiterung zum Hinzufügen von Aufgabenunterstützung für NPM-Skripts.", + "displayName": "NPM-Unterstützung für VSCode", "config.npm.autoDetect": "Steuert, ob die automatische Erkennung von NPM-Skripts aktiviert oder deaktiviert ist. Standardmäßig ist die Funktion aktiviert.", "config.npm.runSilent": "npm-Befehle mit der Option \"--silent\" ausführen.", "config.npm.packageManager": "Der zu verwendende Paket-Manager, um Skripte auszuführen.", - "npm.parseError": "NPM-Aufgabenerkennung: Fehler beim Analysieren der Datei {0}" + "config.npm.exclude": "Konfigurieren Sie Globmuster für Ordner, die von der automatischen Skripterkennung ausgeschlossen werden sollen.", + "npm.parseError": "NPM-Aufgabenerkennung: Fehler beim Analysieren der Datei {0}", + "taskdef.script": "Das anzupassende NPM-Skript.", + "taskdef.path": "Der Pfad zu dem Ordner der Datei vom Typ \"package.json\", die das Skript bereitstellt. Kann ausgelassen werden." } \ No newline at end of file diff --git a/i18n/deu/extensions/objective-c/package.i18n.json b/i18n/deu/extensions/objective-c/package.i18n.json index 35229bd6699..803c6626fcb 100644 --- a/i18n/deu/extensions/objective-c/package.i18n.json +++ b/i18n/deu/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Objective-C-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Objective-C-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/perl/package.i18n.json b/i18n/deu/extensions/perl/package.i18n.json index 35229bd6699..92e43d3d5c0 100644 --- a/i18n/deu/extensions/perl/package.i18n.json +++ b/i18n/deu/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Perl-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare und Falten in Perl-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/php/package.i18n.json b/i18n/deu/extensions/php/package.i18n.json index 87a83d20ab8..b969aa85c93 100644 --- a/i18n/deu/extensions/php/package.i18n.json +++ b/i18n/deu/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Gibt an, ob der Linter beim Speichern oder bei der Eingabe ausgeführt wird.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Ausführbare Datei für PHP-Überprüfung nicht zulassen (als Arbeitsbereicheinstellung definiert)" + "command.untrustValidationExecutable": "Ausführbare Datei für PHP-Überprüfung nicht zulassen (als Arbeitsbereicheinstellung definiert)", + "displayName": "PHP-Sprachfeatures", + "description": "Bietet IntelliSense, Bereinigen und Sprachgrundlagen für PHP-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/powershell/package.i18n.json b/i18n/deu/extensions/powershell/package.i18n.json index 35229bd6699..102e43ed1ec 100644 --- a/i18n/deu/extensions/powershell/package.i18n.json +++ b/i18n/deu/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Powershell-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in Powershell-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/pug/package.i18n.json b/i18n/deu/extensions/pug/package.i18n.json index 35229bd6699..019fd771baa 100644 --- a/i18n/deu/extensions/pug/package.i18n.json +++ b/i18n/deu/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Pung-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Pug-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/python/package.i18n.json b/i18n/deu/extensions/python/package.i18n.json index 35229bd6699..3324ec85b7a 100644 --- a/i18n/deu/extensions/python/package.i18n.json +++ b/i18n/deu/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Python-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung, Klammernpaare und Falten in Python-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/r/package.i18n.json b/i18n/deu/extensions/r/package.i18n.json index 35229bd6699..5240a6ae7b3 100644 --- a/i18n/deu/extensions/r/package.i18n.json +++ b/i18n/deu/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "R-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in R-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/razor/package.i18n.json b/i18n/deu/extensions/razor/package.i18n.json index 35229bd6699..8773e3367da 100644 --- a/i18n/deu/extensions/razor/package.i18n.json +++ b/i18n/deu/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Razor-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung, Klammernpaare und Falten in Razor-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/ruby/package.i18n.json b/i18n/deu/extensions/ruby/package.i18n.json index 35229bd6699..1380b382534 100644 --- a/i18n/deu/extensions/ruby/package.i18n.json +++ b/i18n/deu/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ruby-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Ruby-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/rust/package.i18n.json b/i18n/deu/extensions/rust/package.i18n.json index 35229bd6699..1a4145efcf9 100644 --- a/i18n/deu/extensions/rust/package.i18n.json +++ b/i18n/deu/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Rust-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Rust-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/scss/package.i18n.json b/i18n/deu/extensions/scss/package.i18n.json index 35229bd6699..a7ce627586e 100644 --- a/i18n/deu/extensions/scss/package.i18n.json +++ b/i18n/deu/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SCSS-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung, Klammernpaare und Falten in SCSS-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/shaderlab/package.i18n.json b/i18n/deu/extensions/shaderlab/package.i18n.json index 35229bd6699..c1b584b95bc 100644 --- a/i18n/deu/extensions/shaderlab/package.i18n.json +++ b/i18n/deu/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shaderlab-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Shaderlab-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/shellscript/package.i18n.json b/i18n/deu/extensions/shellscript/package.i18n.json index 35229bd6699..76735ed2d29 100644 --- a/i18n/deu/extensions/shellscript/package.i18n.json +++ b/i18n/deu/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shell-Skript-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in Shell Script-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/sql/package.i18n.json b/i18n/deu/extensions/sql/package.i18n.json index 35229bd6699..33ae383c0ab 100644 --- a/i18n/deu/extensions/sql/package.i18n.json +++ b/i18n/deu/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SQL-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in SQL-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/swift/package.i18n.json b/i18n/deu/extensions/swift/package.i18n.json index 35229bd6699..700d9e648e8 100644 --- a/i18n/deu/extensions/swift/package.i18n.json +++ b/i18n/deu/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Swift-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung und Klammernpaare in Swift-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-abyss/package.i18n.json b/i18n/deu/extensions/theme-abyss/package.i18n.json index 35229bd6699..9101331a949 100644 --- a/i18n/deu/extensions/theme-abyss/package.i18n.json +++ b/i18n/deu/extensions/theme-abyss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Abyss-Design", + "description": "Abyss-Design für Visual Studio Code" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-defaults/package.i18n.json b/i18n/deu/extensions/theme-defaults/package.i18n.json index 35229bd6699..f4cb4297839 100644 --- a/i18n/deu/extensions/theme-defaults/package.i18n.json +++ b/i18n/deu/extensions/theme-defaults/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Standarddesigns", + "description": "Die hellen und dunklen Standarddesigns (Plus und Visual Studio)" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-kimbie-dark/package.i18n.json b/i18n/deu/extensions/theme-kimbie-dark/package.i18n.json index 35229bd6699..2430e8b2e4f 100644 --- a/i18n/deu/extensions/theme-kimbie-dark/package.i18n.json +++ b/i18n/deu/extensions/theme-kimbie-dark/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Dunkles Kimbie-Design", + "description": "Dunkles Kimbie-Design für Visual Studio Code" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-monokai-dimmed/package.i18n.json b/i18n/deu/extensions/theme-monokai-dimmed/package.i18n.json index 35229bd6699..56b1421d70d 100644 --- a/i18n/deu/extensions/theme-monokai-dimmed/package.i18n.json +++ b/i18n/deu/extensions/theme-monokai-dimmed/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Abgedunkeltes Monokai-Design", + "description": "Abgedunkeltes Monokai-Design für Visual Studio Code" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-monokai/package.i18n.json b/i18n/deu/extensions/theme-monokai/package.i18n.json index 35229bd6699..5b32cfd54d8 100644 --- a/i18n/deu/extensions/theme-monokai/package.i18n.json +++ b/i18n/deu/extensions/theme-monokai/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Monokai-Design", + "description": "Monokai-Design für Visual Studio Code" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-quietlight/package.i18n.json b/i18n/deu/extensions/theme-quietlight/package.i18n.json index 35229bd6699..54eac86273b 100644 --- a/i18n/deu/extensions/theme-quietlight/package.i18n.json +++ b/i18n/deu/extensions/theme-quietlight/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Stilles, helles Design", + "description": "Stilles helles Design für Visual Studio Code" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-red/package.i18n.json b/i18n/deu/extensions/theme-red/package.i18n.json index 35229bd6699..c016130c04d 100644 --- a/i18n/deu/extensions/theme-red/package.i18n.json +++ b/i18n/deu/extensions/theme-red/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Rotes Design", + "description": "Rotes Design für Visual Studio Code" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-seti/package.i18n.json b/i18n/deu/extensions/theme-seti/package.i18n.json index 35229bd6699..79e4c3c6366 100644 --- a/i18n/deu/extensions/theme-seti/package.i18n.json +++ b/i18n/deu/extensions/theme-seti/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Seti-Dateisymboldesign", + "description": "Ein Dateisymboldesign aus den Dateisymbolen der Seti-Benutzeroberfläche" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-solarized-dark/package.i18n.json b/i18n/deu/extensions/theme-solarized-dark/package.i18n.json index 35229bd6699..137df859db2 100644 --- a/i18n/deu/extensions/theme-solarized-dark/package.i18n.json +++ b/i18n/deu/extensions/theme-solarized-dark/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Dunkles Solarisationsdesign", + "description": "Dunkles Solarisationsdesign für Visual Studio Code" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-solarized-light/package.i18n.json b/i18n/deu/extensions/theme-solarized-light/package.i18n.json index 35229bd6699..c5b02c9b40e 100644 --- a/i18n/deu/extensions/theme-solarized-light/package.i18n.json +++ b/i18n/deu/extensions/theme-solarized-light/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Helles Solarisationsdesign", + "description": "Helles Solarisationsdesign für Visual Studio Code" } \ No newline at end of file diff --git a/i18n/deu/extensions/theme-tomorrow-night-blue/package.i18n.json b/i18n/deu/extensions/theme-tomorrow-night-blue/package.i18n.json index 35229bd6699..f2489b2b99e 100644 --- a/i18n/deu/extensions/theme-tomorrow-night-blue/package.i18n.json +++ b/i18n/deu/extensions/theme-tomorrow-night-blue/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nachtblaues Tomorrow-Design", + "description": "Nachtblaues Tomorrow-Design für Visual Studio Code" } \ No newline at end of file diff --git a/i18n/deu/extensions/typescript-basics/package.i18n.json b/i18n/deu/extensions/typescript-basics/package.i18n.json index 35229bd6699..d0f65a96aec 100644 --- a/i18n/deu/extensions/typescript-basics/package.i18n.json +++ b/i18n/deu/extensions/typescript-basics/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JavaScript-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in TypeScript-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/typescript/out/commands.i18n.json b/i18n/deu/extensions/typescript/out/commands.i18n.json index 73604b6e948..cdebacc88db 100644 --- a/i18n/deu/extensions/typescript/out/commands.i18n.json +++ b/i18n/deu/extensions/typescript/out/commands.i18n.json @@ -9,6 +9,8 @@ "typescript.projectConfigNoWorkspace": "Öffnen Sie einen Ordner in VS Code, um ein TypeScript- oder JavaScript-Projekt zu verwenden.", "typescript.projectConfigUnsupportedFile": "TypeScript- oder JavaScript-Projekt konnte nicht ermittelt werden. Nicht unterstützter Dateityp.", "typescript.projectConfigCouldNotGetInfo": "TypeScript- oder JavaScript-Projekt konnte nicht ermittelt werden.", + "typescript.noTypeScriptProjectConfig": "Datei ist nicht Teil eines TypeScript-Projekt. Klicken Sie [hier]({0}), um mehr zu erfahren.", + "typescript.noJavaScriptProjectConfig": "Datei ist nicht Teil eines JavaScript-Projekt. Klicken Sie [hier]({0}), um mehr zu erfahren.", "typescript.configureTsconfigQuickPick": "tsconfig.json konfigurieren", "typescript.configureJsconfigQuickPick": "jsconfig.json konfigurieren" } \ No newline at end of file diff --git a/i18n/deu/extensions/typescript/out/utils/typingsStatus.i18n.json b/i18n/deu/extensions/typescript/out/utils/typingsStatus.i18n.json index 94e84e717ae..797c586cb35 100644 --- a/i18n/deu/extensions/typescript/out/utils/typingsStatus.i18n.json +++ b/i18n/deu/extensions/typescript/out/utils/typingsStatus.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "installingPackages": "Daten werden zum Optimieren von TypeScript IntelliSense abgerufen", + "typesInstallerInitializationFailed.title": "Typisierungsdateien für JavaScript-Sprachfunktionen konnten nicht installiert werden. Stellen Sie sicher, das NPM installiert ist, oder konfigurieren Sie \"typescript.npm\" in Ihren Benutzereinstellungen. Klicken Sie [hier]({0}), um mehr zu erfahren.", "typesInstallerInitializationFailed.doNotCheckAgain": "Nicht mehr anzeigen" } \ No newline at end of file diff --git a/i18n/deu/extensions/typescript/package.i18n.json b/i18n/deu/extensions/typescript/package.i18n.json index 8dc559dea19..6f8bb4fea94 100644 --- a/i18n/deu/extensions/typescript/package.i18n.json +++ b/i18n/deu/extensions/typescript/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "TypeScript- und JavaScript-Sprachfeatures", + "description": "Bietet umfangreiche Sprachunterstützung für JavaScript und TypeScript.", "typescript.reloadProjects.title": "Projekt erneut laden", "javascript.reloadProjects.title": "Projekt erneut laden", "configuration.typescript": "TypeScript", @@ -53,5 +55,7 @@ "typescript.quickSuggestionsForPaths": "Aktiviert oder deaktiviert Schnellvorschläge, wenn Sie einen Importpfad ausschreiben.", "typescript.locale": "Legt das zum Melden von TypeScript-Fehlern verwendete Gebietsschema fest. Erfordert TypeScript 2.6.0 oder höher. Der Standardwert \"null\" verwendet für TypeScript-Fehler das Gebietsschema von VS Code.", "javascript.implicitProjectConfig.experimentalDecorators": "Aktiviert oder deaktiviert \"experimentalDecorators\" für JavaScript-Dateien, die nicht Teil eines Projekts sind. Vorhandene jsconfig.json- oder tsconfig.json-Dateien setzen diese Einstellung außer Kraft. Erfordert TypeScript 2.3.1 oder höher.", - "typescript.autoImportSuggestions.enabled": "Aktiviert oder deaktiviert Vorschläge für den automatischen Import. Erfordert TypeScript 2.6.1 oder höher." + "typescript.autoImportSuggestions.enabled": "Aktiviert oder deaktiviert Vorschläge für den automatischen Import. Erfordert TypeScript 2.6.1 oder höher.", + "typescript.experimental.syntaxFolding": "Aktiviert bzw. deaktiviert die syntaxabhängigen Faltungsmarkierungen.", + "taskDefinition.tsconfig.description": "Die \"tsconfig\"-Datei, die den TS-Build definiert." } \ No newline at end of file diff --git a/i18n/deu/extensions/vb/package.i18n.json b/i18n/deu/extensions/vb/package.i18n.json index 35229bd6699..2ec82806e37 100644 --- a/i18n/deu/extensions/vb/package.i18n.json +++ b/i18n/deu/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Visual Basic-Sprachgrundlagen", + "description": "Bietet Ausschnitte, Syntaxhervorhebung, Klammernpaare und Falten in Visual Basic-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/xml/package.i18n.json b/i18n/deu/extensions/xml/package.i18n.json index 35229bd6699..d776e7125b8 100644 --- a/i18n/deu/extensions/xml/package.i18n.json +++ b/i18n/deu/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "XML-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in XML-Dateien." } \ No newline at end of file diff --git a/i18n/deu/extensions/yaml/package.i18n.json b/i18n/deu/extensions/yaml/package.i18n.json index 35229bd6699..ffee0240330 100644 --- a/i18n/deu/extensions/yaml/package.i18n.json +++ b/i18n/deu/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "YAML-Sprachgrundlagen", + "description": "Bietet Syntaxhervorhebung und Klammernpaare in YAML-Dateien." } \ No newline at end of file diff --git a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 7c77a0595ce..631d23eff3f 100644 --- a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -10,11 +10,19 @@ "loadingData": "Daten werden geladen …", "similarIssues": "Ähnliche Probleme", "open": "Öffnen", + "closed": "Geschlossen", "noResults": "Es wurden keine Ergebnisse gefunden.", + "settingsSearchIssue": "Fehler in Einstellungssuche ", "bugReporter": "Fehlerbericht", "performanceIssue": "Leistungsproblem", "featureRequest": "Featureanforderung", "stepsToReproduce": "Zu reproduzierende Schritte", + "bugDescription": "Geben Sie an, welche Schritte ausgeführt werden müssen, um das Problem zuverlässig zu reproduzieren. Was sollte geschehen, und was ist stattdessen geschehen? Wir unterstützen GitHub Flavored Markdown. Sie können während der Vorschau in GitHub Ihr Problem bearbeiten und Screenshots hinzufügen.", + "performanceIssueDesciption": "Wann ist dieses Leistungsproblem aufgetreten? Tritt es beispielsweise beim Start oder nach einer bestimmten Reihe von Aktionen auf? Wir unterstützen GitHub Flavored Markdown. Sie können während der Vorschau in GitHub Ihr Problem bearbeiten und Screenshots hinzufügen.", "description": "Beschreibung", + "featureRequestDescription": "Bitte beschreiben Sie die Funktion, die Sie sehen möchten. Wir unterstützen GitHub-Markdown. Sie können in der GitHub-Preview ihr Problem bearbeiten und Screenshots hinzufügen.", + "expectedResults": "Erwartete Ergebnisse", + "settingsSearchResultsDescription": "Bitte führen Sie die Ergebnisse auf, die Sie bei der Suche mit dieser Abfrage erwartet haben. Wir unterstützen GitHub-Markdown. Sie können in der GitHub-Preview ihr Problem bearbeiten und Screenshots hinzufügen.", + "pasteData": "Wir haben die erforderlichen Daten in die Zwischenablage geschrieben, da sie zu groß zum Senden waren. Bitte fügen Sie sie ein.", "disabledExtensions": "Erweiterungen sind deaktiviert" } \ No newline at end of file diff --git a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 6aed1b5b23d..f74316af1b5 100644 --- a/i18n/deu/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/deu/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -7,15 +7,24 @@ "Do not edit this file. It is machine generated." ], "completeInEnglish": "Füllen Sie das Formular auf Englisch aus.", + "issueTypeLabel": "Dies ist", "issueTitleLabel": "Titel", "issueTitleRequired": "Geben Sie einen Titel ein.", + "titleLengthValidation": "Der Titel ist zu lang.", "systemInfo": "Eigene Systeminformationen", "sendData": "Eigene Daten senden", "processes": "Derzeit ausgeführte Prozesse", "workspaceStats": "Eigene Arbeitsbereichsstatistiken", "extensions": "Eigene Erweiterungen", + "searchedExtensions": "Gesuchte Erweiterungen", + "settingsSearchDetails": "Details der Einstellungssuche", + "tryDisablingExtensions": "Kann das Problem reproduziert werden, wenn Erweiterungen deaktiviert sind?", "yes": "Ja", "no": "Nein", + "disableExtensionsLabelText": "Versuchen Sie, das Problem nach {0} zu reproduzieren.", "disableExtensions": "Alle Erweiterungen werden deaktiviert, und das Fenster wird neu geladen", + "showRunningExtensionsLabelText": "Wenn Sie ein Erweiterungsproblem vermuten, melden Sie dieses Problem durch {0}.", + "showRunningExtensions": "Alle ausgeführten Erweiterungen anzeigen", + "details": "Geben Sie Details ein.", "loadingData": "Daten werden geladen …" } \ No newline at end of file diff --git a/i18n/deu/src/vs/code/electron-main/logUploader.i18n.json b/i18n/deu/src/vs/code/electron-main/logUploader.i18n.json index 66ce12ddc13..7a0072f18e2 100644 --- a/i18n/deu/src/vs/code/electron-main/logUploader.i18n.json +++ b/i18n/deu/src/vs/code/electron-main/logUploader.i18n.json @@ -9,6 +9,10 @@ "invalidEndpoint": "Ungültiger Protokolluploader-Endpunkt", "beginUploading": "Wird hochgeladen …", "didUploadLogs": "Upload erfolgreich! Protokolldatei-ID: {0}", + "logUploadPromptHeader": "Sie sind im Begriff, Ihre Sitzungsprotokolle auf einen sicheren Microsoft-Endpunkt hochzuladen, auf den nur Mitglieder des Microsoft VS Code-Teams zugreifen können.", + "logUploadPromptBody": "Sitzungsprotokolle können persönliche Informationen wie vollständige Pfade oder Inhalt der Datei enthalten. Bitte lesen und schwärzen Sie Ihre Sitzungsprotokolle hier: \"{0}\"", + "logUploadPromptBodyDetails": "Indem Sie fortfahren, bestätigen Sie, dass Sie Ihre Sitzungsprotokolle gelesen und geschwärzt haben und dass Microsoft diese benutzen kann, um VS Code zu debuggen.", + "logUploadPromptAcceptInstructions": "Führen Sie Code mit \"--upload-logs={0}\" aus, um den Upload fortzusetzen.", "postError": "Fehler beim Veröffentlichen von Protokollen: {0}", "responseError": "Fehler beim Veröffentlichen von Protokollen. Abgerufen: {0} – {1}", "parseError": "Fehler beim Analysieren der Antwort", diff --git a/i18n/deu/src/vs/code/electron-main/menus.i18n.json b/i18n/deu/src/vs/code/electron-main/menus.i18n.json index b4786b83249..cc2c26f1108 100644 --- a/i18n/deu/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/deu/src/vs/code/electron-main/menus.i18n.json @@ -93,6 +93,7 @@ "miOpenView": "&&Ansicht öffnen …", "miToggleFullScreen": "&&Vollbild umschalten", "miToggleZenMode": "Zen-Modus umschalten", + "miToggleCenteredLayout": "Zentriertes Layout umschalten", "miToggleMenuBar": "Men&&üleiste umschalten", "miSplitEditor": "&&Editor teilen", "miToggleEditorLayout": "&&Layout für Editor-Gruppe umschalten", diff --git a/i18n/deu/src/vs/code/electron-main/window.i18n.json b/i18n/deu/src/vs/code/electron-main/window.i18n.json index 35229bd6699..f0b7a08f1f3 100644 --- a/i18n/deu/src/vs/code/electron-main/window.i18n.json +++ b/i18n/deu/src/vs/code/electron-main/window.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hiddenMenuBar": "Sie können über die Alt-Taste weiterhin auf die Menüleiste zugreifen." } \ No newline at end of file diff --git a/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index aaf357438c6..786adadf99d 100644 --- a/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/deu/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "Überschreiben", "cancel": "Abbrechen", "errorInstallingDependencies": "Fehler während Installation der Abhängigkeiten. {0}", + "MarketPlaceDisabled": "Marketplace ist nicht aktiviert.", + "removeError": "Fehler beim Entfernen der Erweiterung: {0}. Bitte beenden Sie und starten Sie VS Code neu bevor Sie erneut versuchen die Erweiterung zu installieren.", + "Not Market place extension": "Nur Marktplatz-Erweiterungen können neu installiert werden", "notFoundCompatible": "'{0}' kann nicht installiert werden: Es gibt keine mit VS Code '{1}' kompatible Version.", "malicious extension": "Die Erweiterung kann nicht installiert werden, da sie als problematisch gemeldet wurde.", "notFoundCompatibleDependency": "Kann nicht installiert werden, da die abhängige Erweiterung '{0}', die mit der aktuellen VS Code Version '{1}' kompatibel ist, nicht gefunden werden kann. ", diff --git a/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index ddc65e85a54..31d5f89b909 100644 --- a/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (Erweiterung)", "defaultSource": "Erweiterung", "manageExtension": "Erweiterung verwalten", "cancel": "Abbrechen", diff --git a/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 35229bd6699..0a2dcb8a2c9 100644 --- a/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/deu/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "webview.editor.label": "Webview-Editor" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json b/i18n/deu/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json index 35229bd6699..409eb14cc60 100644 --- a/i18n/deu/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json +++ b/i18n/deu/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "unknownDep": "Fehler beim Aktivieren der Erweiterung \"{1}\". Ursache: unbekannte Abhängigkeit \"{0}\".", + "failedDep1": "Fehler beim Aktivieren der Erweiterung \"{1}\". Ursache: Fehler beim Aktivieren der Erweiterung \"{0}\".", + "failedDep2": "Fehler beim Aktivieren der Erweiterung \"{0}\". Ursache: mehr als 10 Ebenen von Abhängigkeiten (wahrscheinlich eine Abhängigkeitsschleife).", + "activationError": "Fehler beim Aktivieren der Erweiterung \"{0}\": {1}." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json b/i18n/deu/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json index f729837e222..dcbbc2577af 100644 --- a/i18n/deu/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "toggleCenteredLayout": "Zentriertes Layout umschalten", "view": "Anzeigen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json index 44f4d4066d9..12e4c96abba 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json @@ -19,12 +19,14 @@ "close": "Schließen", "closeOthers": "Andere schließen", "closeRight": "Rechts schließen", + "closeAllSaved": "Gespeicherte schließen", "closeAll": "Alle schließen", "keepOpen": "Geöffnet lassen", "toggleInlineView": "Inlineansicht umschalten", "showOpenedEditors": "Geöffnete Editoren anzeigen", "keepEditor": "Editor beibehalten", "closeEditorsInGroup": "Alle Editoren in der Gruppe schließen", + "closeSavedEditors": "Gespeicherte Editoren in Gruppe schließen", "closeOtherEditors": "Andere Editoren schließen", "closeRightEditors": "Editoren rechts schließen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json index 35229bd6699..8433b81b641 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json @@ -5,5 +5,12 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "clearNotification": "Benachrichtigung löschen", + "clearNotifications": "Alle Benachrichtigungen löschen", + "hideNotificationsCenter": "Benachrichtigungen verbergen", + "expandNotification": "Benachrichtigung erweitern", + "collapseNotification": "Benachrichtigung schließen", + "configureNotification": "Benachrichtigung konfigurieren", + "copyNotification": "Text kopieren" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 35229bd6699..cabab414f2d 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -5,5 +5,8 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "Benachrichtigungen", + "notificationsToolbar": "Aktionen der Benachrichtigungszentrale", + "notificationsList": "Benachrichtigungsliste" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json index 35229bd6699..b0f0419d3bf 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "Benachrichtigungen", + "showNotifications": "Benachrichtigungen anzeigen", + "hideNotifications": "Benachrichtigungen verbergen", + "clearAllNotifications": "Alle Benachrichtigungen löschen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 35229bd6699..296ad5cd3fc 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -5,5 +5,10 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hideNotifications": "Benachrichtigungen ausblenden", + "zeroNotifications": "Keine Benachrichtigungen", + "noNotifications": "Keine neuen Benachrichtigungen", + "oneNotification": "1 neue Benachrichtigung", + "notifications": "{0} neue Benachrichtigungen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json index 35229bd6699..d9a2e8723ad 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationsToast": "Popupbenachrichtigung" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json index 35229bd6699..bbd61d63a4e 100644 --- a/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json +++ b/i18n/deu/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationActions": "Benachrichtigungsaktionen", + "notificationSource": "Quelle: {0}" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/common/theme.i18n.json b/i18n/deu/src/vs/workbench/common/theme.i18n.json index e26b4a8c282..f43e9eec891 100644 --- a/i18n/deu/src/vs/workbench/common/theme.i18n.json +++ b/i18n/deu/src/vs/workbench/common/theme.i18n.json @@ -58,5 +58,13 @@ "titleBarInactiveForeground": "Vordergrund der Titelleiste, wenn das Fenster inaktiv ist. Diese Farbe wird derzeit nur von MacOS unterstützt.", "titleBarActiveBackground": "Hintergrund der Titelleiste, wenn das Fenster aktiv ist. Diese Farbe wird derzeit nur von MacOS unterstützt.", "titleBarInactiveBackground": "Hintergrund der Titelleiste, wenn das Fenster inaktiv ist. Diese Farbe wird derzeit nur von MacOS unterstützt.", - "titleBarBorder": "Rahmenfarbe der Titelleiste. Diese Farbe wird derzeit nur unter MacOS unterstützt." + "titleBarBorder": "Rahmenfarbe der Titelleiste. Diese Farbe wird derzeit nur unter MacOS unterstützt.", + "notificationCenterBorder": "Rahmenfarbe der Benachrichtigungszentrale. Benachrichtigungen werden unten rechts eingeblendet.", + "notificationToastBorder": "Rahmenfarbe der Popupbenachrichtigung. Benachrichtigungen werden unten rechts eingeblendet.", + "notificationsForeground": "Vordergrundfarbe für Benachrichtigungen. Benachrichtigungen werden unten rechts eingeblendet.", + "notificationsBackground": "Hintergrundfarbe für Benachrichtigungen. Benachrichtigungen werden unten rechts eingeblendet.", + "notificationsLink": "Vordergrundfarbe für Benachrichtigungslinks. Benachrichtigungen werden unten rechts eingeblendet.", + "notificationCenterHeaderForeground": "Vordergrundfarbe für Kopfzeile der Benachrichtigungszentrale. Benachrichtigungen werden unten rechts eingeblendet.", + "notificationCenterHeaderBackground": "Hintergrundfarbe für Kopfzeile der Benachrichtigungszentrale. Benachrichtigungen werden unten rechts eingeblendet.", + "notificationsBorder": "Rahmenfarbe für Benachrichtigungen zum Trennen von anderen Benachrichtigungen in der Benachrichtigungszentrale. Benachrichtigungen werden unten rechts eingeblendet." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/common/views.i18n.json b/i18n/deu/src/vs/workbench/common/views.i18n.json index 35229bd6699..53cde5ce487 100644 --- a/i18n/deu/src/vs/workbench/common/views.i18n.json +++ b/i18n/deu/src/vs/workbench/common/views.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "duplicateId": "Eine Ansicht mit der ID \"{0}\" ist bereits am Speicherort \"{1}\" registriert." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/deu/src/vs/workbench/electron-browser/actions.i18n.json index f7b5d114612..443028d2ccb 100644 --- a/i18n/deu/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/deu/src/vs/workbench/electron-browser/actions.i18n.json @@ -18,6 +18,7 @@ "zoomReset": "Zoom zurücksetzen", "appPerf": "Startleistung", "reloadWindow": "Fenster erneut laden", + "reloadWindowWithExntesionsDisabled": "Fenster mit deaktivierten Erweiterungen erneut laden", "switchWindowPlaceHolder": "Fenster auswählen, zu dem Sie wechseln möchten", "current": "Aktuelles Fenster", "close": "Fenster schließen", @@ -48,5 +49,6 @@ "moveWindowTabToNewWindow": "Fensterregisterkarte in neues Fenster verschieben", "mergeAllWindowTabs": "Alle Fenster zusammenführen", "toggleWindowTabsBar": "Fensterregisterkarten-Leiste umschalten", - "about": "Informationen zu {0}" + "about": "Informationen zu {0}", + "inspect context keys": "Kontextschlüssel prüfen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json index c6b5b2cb314..d7684461feb 100644 --- a/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -35,6 +35,7 @@ "panelDefaultLocation": "Steuert die Standardposition des Panels. Dieses kann entweder unterhalb oder rechts von der Workbench angezeigt werden.", "statusBarVisibility": "Steuert die Sichtbarkeit der Statusleiste im unteren Bereich der Workbench.", "activityBarVisibility": "Steuert die Sichtbarkeit der Aktivitätsleiste in der Workbench.", + "viewVisibility": "Steuert die Sichtbarkeit von Headeraktionen. Headeraktionen können immer sichtbar sein oder nur sichtbar sein, wenn diese Ansicht fokussiert ist oder mit der Maus darauf gezeigt wird.", "fontAliasing": "Steuert die Schriftartaliasingmethode in der Workbench.\n - default: Subpixel-Schriftartglättung. Auf den meisten Nicht-Retina-Displays wird Text bei dieser Einstellung am schärfsten dargestellt. \n- antialiased: Glättet die Schriftart auf der Pixelebene (im Gegensatz zur Subpixelebene). Bei dieser Einstellung kann die Schriftart insgesamt heller wirken.\n- none: Deaktiviert die Schriftartglättung. Text wird mit gezackten scharfen Kanten dargestellt.\n- auto: Wendet ausgehend vom DPI der Anzeige automatisch \"default\" oder \"antialiased\" an.", "workbench.fontAliasing.default": "Subpixel-Schriftartglättung. Auf den meisten Nicht-Retina-Displays wird Text bei dieser Einstellung am schärfsten dargestellt.", "workbench.fontAliasing.antialiased": "Glättet die Schriftart auf der Pixelebene (im Gegensatz zur Subpixelebene). Bei dieser Einstellung kann die Schriftart insgesamt heller wirken.", @@ -75,6 +76,7 @@ "window.nativeTabs": "Aktiviert MacOS Sierra-Fensterregisterkarten. Beachten Sie, dass zum Übernehmen von Änderungen ein vollständiger Neustart erforderlich ist und durch ggf. konfigurierte native Registerkarten ein benutzerdefinierter Titelleistenstil deaktiviert wird.", "zenModeConfigurationTitle": "Zen-Modus", "zenMode.fullScreen": "Steuert, ob die Workbench durch das Aktivieren des Zen-Modus in den Vollbildmodus wechselt.", + "zenMode.centerLayout": "Steuert, ob das Layout durch Aktivieren des Zen-Modus ebenfalls zentriert wird.", "zenMode.hideTabs": "Steuert, ob die Workbench-Registerkarten durch Aktivieren des Zen-Modus ebenfalls ausgeblendet werden.", "zenMode.hideStatusBar": "Steuert, ob die Statusleiste im unteren Bereich der Workbench durch Aktivieren des Zen-Modus ebenfalls ausgeblendet wird.", "zenMode.hideActivityBar": "Steuert, ob die Aktivitätsleiste im linken Bereich der Workbench durch Aktivieren des Zen-Modus ebenfalls ausgeblendet wird.", diff --git a/i18n/deu/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 5fb263b1c0b..6a4e04d332e 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -10,6 +10,10 @@ "functionBreakpointsNotSupported": "Funktionshaltepunkte werden von diesem Debugtyp nicht unterstützt.", "functionBreakpointPlaceholder": "Funktion mit Haltepunkt", "functionBreakPointInputAriaLabel": "Geben Sie den Funktionshaltepunkt ein.", + "breakpointDisabledHover": "Deaktivierter Haltepunkt", + "breakpointUnverifieddHover": "Nicht überprüfter Haltepunkt", + "functionBreakpointUnsupported": "Funktionshaltepunkte werden von diesem Debugtyp nicht unterstützt.", "breakpointDirtydHover": "Nicht überprüfter Haltepunkt. Die Datei wurde geändert. Bitte starten Sie die Debugsitzung neu.", - "conditionalBreakpointUnsupported": "Bedingte Haltepunkte werden für diesen Debugtyp nicht unterstützt." + "conditionalBreakpointUnsupported": "Bedingte Haltepunkte werden für diesen Debugtyp nicht unterstützt.", + "hitBreakpointUnsupported": "Bedingte Trefferhaltepunkte werden für diesen Debugtyp nicht unterstützt." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json index 77be1d58c4b..0e8f2ebb565 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "noFolderDebugConfig": "Öffnen Sie bitte einen Ordner, um erweitertes Debuggen zu konfigurieren.", + "columnBreakpoint": "Spaltenhaltepunkt", "debug": "Debuggen", "addColumnBreakpoint": "Spaltenhaltepunkt hinzufügen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json index 9fd2802436e..17a45e18038 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "unable": "Die Ressource konnte ohne eine Debugsitzung nicht aufgelöst werden." + "unable": "Die Ressource konnte ohne eine Debugsitzung nicht aufgelöst werden.", + "canNotResolveSource": "Ressource {0} konnte nicht aufgelöst werden. Keine Antwort von der Debugerweiterung." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index b59c791cf01..3c811f992f4 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "Debuggen immer in Statusleiste anzeigen", "onFirstSessionStart": "Debuggen nur in Statusleiste anzeigen, nachdem das Debuggen erstmals gestartet wurde", "showInStatusBar": "Steuert, wann die Debug-Statusleiste angezeigt werden soll", - "openDebug": "Steuert, ob das Debug-Viewlet beim Start der Debugsitzung offen ist.", + "openDebug": "Steuert, ob das Debug-Menü beim Start der Debugsitzung offen ist.", "launch": "Startkonfiguration für globales Debuggen. Sollte als Alternative zu \"launch.json\" verwendet werden, das übergreifend von mehreren Arbeitsbereichen genutzt wird" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 99751dbb7a8..451f6c89a46 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -14,9 +14,11 @@ "breakpointRemoved": "Der Haltepunkt wurde entfernt. Zeile {0}, Datei \"{1}\".", "compoundMustHaveConfigurations": "Für den Verbund muss das Attribut \"configurations\" festgelegt werden, damit mehrere Konfigurationen gestartet werden können.", "noConfigurationNameInWorkspace": "Die Startkonfiguration \"{0}\" wurde im Arbeitsbereich nicht gefunden.", + "multipleConfigurationNamesInWorkspace": "Im Arbeitsbereich sind mehrere Startkonfigurationen \"{0}\" vorhanden. Verwenden Sie den Ordnernamen, um die Konfiguration zu qualifizieren.", "noFolderWithName": "Der Ordner mit dem Namen \"{0}\" für die Konfiguration \"{1}\" wurde im Verbund \"{2}\" nicht gefunden.", "configMissing": "Konfiguration \"{0}\" fehlt in \"launch.json\".", "launchJsonDoesNotExist": "\"launch.json\" ist nicht vorhanden.", + "debugRequestNotSupported": "Das Attribut \"{0}\" weist in der ausgewählten Debugkonfiguration den nicht unterstützten Wert \"{1}\" auf.", "debugRequesMissing": "Das Attribut \"{0}\" fehlt in der ausgewählten Debugkonfiguration.", "debugTypeNotSupported": "Der konfigurierte Debugtyp \"{0}\" wird nicht unterstützt.", "debugTypeMissing": "Fehlende Eigenschaft \"type\" für die ausgewählte Startkonfiguration.", diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json index f73b4c4eba5..6703205a4d2 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "copyValue": "Wert kopieren", + "copyAsExpression": "Als Ausdruck kopieren", "copy": "Kopieren", "copyAll": "Alles kopieren", "copyStackTrace": "Aufrufliste kopieren" diff --git a/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index c783ac42436..0e47ff84d42 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "Standard, hell", "defaultHC": "Standard, hoher Kontrast", "JSON Validation": "JSON-Validierung ({0})", + "fileMatch": "Dateiübereinstimmung", + "schema": "Schema", "commands": "Befehle ({0})", "command name": "Name", "keyboard shortcuts": "Tastenkombinationen", diff --git a/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index eeaeb33f57e..5b2cebadb75 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "Manuell herunterladen", + "install vsix": "Installieren Sie nach dem Herunterladen das heruntergeladene VSIX von \"{0}\" manuell.", "installAction": "Installieren", "installing": "Wird installiert.", + "failedToInstall": "Fehler beim Installieren von \"{0}\".", "uninstallAction": "Deinstallieren", "Uninstalling": "Wird deinstalliert", "updateAction": "Aktualisieren", "updateTo": "Auf \"{0}\" aktualisieren", + "failedToUpdate": "Fehler beim Aktualisieren von \"{0}\".", "ManageExtensionAction.uninstallingTooltip": "Wird deinstalliert", "enableForWorkspaceAction": "Aktivieren (Arbeitsbereich)", "enableGloballyAction": "Aktivieren", @@ -38,6 +42,7 @@ "showInstalledExtensions": "Installierte Erweiterungen anzeigen", "showDisabledExtensions": "Deaktivierte Erweiterungen anzeigen", "clearExtensionsInput": "Extensioneingabe löschen", + "showBuiltInExtensions": "Integrierte Erweiterungen anzeigen", "showOutdatedExtensions": "Veraltete Erweiterungen anzeigen", "showPopularExtensions": "Beliebte Erweiterungen anzeigen", "showRecommendedExtensions": "Empfohlene Erweiterungen anzeigen", @@ -55,6 +60,18 @@ "malicious": "Böswillig", "disableAll": "Alle installierten Erweiterungen löschen", "disableAllWorkspace": "Alle installierten Erweiterungen für diesen Arbeitsbereich deaktivieren", + "enableAll": "Alle Erweiterungen aktivieren", + "enableAllWorkspace": "Alle Erweiterungen für diesen Arbeitsbereich aktivieren", + "openExtensionsFolder": "Erweiterungsordner öffnen", + "installVSIX": "Aus VSIX installieren...", + "installFromVSIX": "Aus VSIX installieren", + "installButton": "&&Installieren", + "InstallVSIXAction.success": "Die Erweiterung wurde erfolgreich installiert. Aktivieren Sie sie durch erneutes Laden.", + "InstallVSIXAction.reloadNow": "Jetzt erneut laden", + "reinstall": "Erweiterung erneut installieren…", + "selectExtension": "Erweiterung für die erneute Installation auswählen", + "ReinstallAction.success": "Die Erweiterung wurde erneut installiert.", + "ReinstallAction.reloadNow": "Jetzt erneut laden", "extensionButtonProminentBackground": "Hintergrundfarbe für markante Aktionenerweiterungen (z. B. die Schaltfläche zum Installieren).", "extensionButtonProminentForeground": "Vordergrundfarbe für markante Aktionenerweiterungen (z. B. die Schaltfläche zum Installieren).", "extensionButtonProminentHoverBackground": "Hoverhintergrundfarbe für markante Aktionenerweiterungen (z. B. die Schaltfläche zum Installieren)." diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 7b7aa96e478..aac1ac14a6d 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "Profilerweiterungen", + "restart2": "Zum Erstellen von Profilerweiterungen ist ein Neustart erforderlich. Möchten Sie \"{0}\" jetzt neu starten?", "restart3": "Neu starten", "cancel": "Abbrechen", "selectAndStartDebug": "Klicken Sie, um die Profilerstellung zu beenden." diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 43e27dc6463..161dda932e8 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -8,6 +8,8 @@ ], "neverShowAgain": "Nicht mehr anzeigen", "searchMarketplace": "Marketplace durchsuchen", + "showLanguagePackExtensions": "Der Marketplace enthält Erweiterungen, die beim Lokalisieren von VS Code in die Sprache \"{0}\" behilflich sein können.", + "dynamicWorkspaceRecommendation": "Diese Erweiterung ist für Sie möglicherweise interessant, da sie von vielen anderen Benutzern des Repositorys {0} verwendet wird.", "exeBasedRecommendation": "Diese Erweiterung wird empfohlen, da Sie {0} installiert haben.", "fileBasedRecommendation": "Ausgehend von den kürzlich geöffneten Dateien wird diese Erweiterung empfohlen.", "workspaceRecommendation": "Diese Erweiterung wird von Benutzern des aktuellen Arbeitsbereichs empfohlen.", diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 2706f3528d8..eec3ca6a8c6 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -15,5 +15,6 @@ "developer": "Entwickler", "extensionsConfigurationTitle": "Erweiterungen", "extensionsAutoUpdate": "Erweiterungen automatisch aktualisieren", - "extensionsIgnoreRecommendations": "Bei TRUE werden Benachrichtigungen für Erweiterungsempfehlungen nicht mehr angezeigt." + "extensionsIgnoreRecommendations": "Bei TRUE werden Benachrichtigungen für Erweiterungsempfehlungen nicht mehr angezeigt.", + "extensionsShowRecommendationsOnlyOnDemand": "Wenn Sie \"True\" festlegen, werden Empfehlungen nur auf Anforderung vom Benutzer abgerufen oder angezeigt." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index a3725fa64c5..29577e29ba6 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,7 @@ "recommendedExtensions": "Empfohlen", "otherRecommendedExtensions": "Weitere Empfehlungen", "workspaceRecommendedExtensions": "Arbeitsbereich-Empfehlungen", + "builtInExtensions": "Integriert", "searchExtensions": "Nach Erweiterungen im Marketplace suchen", "sort by installs": "Sortieren nach: Installationsanzahl", "sort by rating": "Sortieren nach: Bewertung", diff --git a/i18n/deu/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json index 73cbebd6c66..eea50360cc9 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json @@ -10,6 +10,7 @@ "malicious": "Diese Erweiterung wird als problematisch gemeldet.", "installingMarketPlaceExtension": "Die Erweiterung wird aus dem Marketplace installiert …", "uninstallingExtension": "Die Erweiterung wird deinstalliert …", + "enableDependeciesConfirmation": "Durch Aktivieren von \"{0}\" werden auch die dazugehörigen Abhängigkeiten aktiviert. Möchten Sie fortfahren?", "enable": "Ja", "doNotEnable": "Nein", "disableDependeciesConfirmation": "Möchten Sie nur \"{0}\" oder auch die dazugehörigen Abhängigkeiten deaktivieren?", diff --git a/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json index 28d99a7fb05..da62e80408d 100644 --- a/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json @@ -29,6 +29,7 @@ "compareSelected": "Auswahl vergleichen", "close": "Schließen", "closeOthers": "Andere schließen", + "closeSaved": "Gespeicherte schließen", "closeAll": "Alle schließen", "deleteFile": "Endgültig löschen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 9041660f194..157f84b48e7 100644 --- a/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -39,6 +39,8 @@ "importFiles": "Dateien importieren", "confirmOverwrite": "Im Zielordner ist bereits eine Datei oder ein Ordner mit dem gleichen Namen vorhanden. Möchten Sie sie bzw. ihn ersetzen?", "replaceButtonLabel": "&&Ersetzen", + "fileIsAncestor": "Die einzufügende Datei ist ein Vorgänger des Zielordners", + "fileDeleted": "Die einzufügende Datei wurde zwischenzeitlich gelöscht oder verschoben.", "duplicateFile": "Duplikat", "globalCompareFile": "Aktive Datei vergleichen mit...", "openFileToCompare": "Zuerst eine Datei öffnen, um diese mit einer anderen Datei zu vergleichen", diff --git a/i18n/deu/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json b/i18n/deu/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json index e294f8a4195..fa18bc6bf78 100644 --- a/i18n/deu/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "userGuide": "Verwenden Sie die Aktionen in der Editor-Symbolleiste, um Ihre Änderungen rückgängig zu machen oder den Inhalt auf dem Datenträger mit Ihren Änderungen zu überschreiben.", + "staleSaveError": "Fehler beim Speichern von \"{0}\": Der Inhalt auf dem Datenträger ist neuer. Vergleichen Sie Ihre Version mit der Version auf dem Datenträger.", "retry": "Wiederholen", "discard": "Verwerfen", "readonlySaveErrorAdmin": "Fehler beim Speichern von '{0}': Datei ist schreibgeschützt. 'Als Admin überschreiben' auswählen, um den Vorgang als Administrator zu wiederholen. ", diff --git a/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json b/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json index 322a11067cc..11569de2aad 100644 --- a/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "label": "Explorer", - "canNotResolve": "Arbeitsbereichsordner kann nicht aufgelöst werden." + "canNotResolve": "Arbeitsbereichsordner kann nicht aufgelöst werden.", + "symbolicLlink": "Symbolischer Link" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index 939255ddb78..10464e3a656 100644 --- a/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Geben Sie den Dateinamen ein. Drücken Sie zur Bestätigung die EINGABETASTE oder ESC, um den Vorgang abzubrechen.", + "constructedPath": "{0} in **{1}** erstellen", "filesExplorerViewerAriaLabel": "{0}, Datei-Explorer", "dropFolders": "Möchten Sie die Ordner zum Arbeitsbereich hinzufügen?", "dropFolder": "Möchten Sie den Ordner zum Arbeitsbereich hinzufügen?", diff --git a/i18n/deu/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/deu/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index 3c0ad95664d..80462854694 100644 --- a/i18n/deu/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editor.action.webvieweditor.showFind": "Widget zum Anzeigen der Suche mit Fokus" + "editor.action.webvieweditor.showFind": "Widget zum Anzeigen der Suche mit Fokus", + "openToolsLabel": "Webview-Entwicklertools öffnen", + "refreshWebviewLabel": "Webviews erneut laden" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index ea3ceda24e1..2e89465d3be 100644 --- a/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -9,6 +9,7 @@ "JsonSchema.locale": "Die zu verwendende Sprache der Benutzeroberfläche.", "vscode.extension.contributes.localizations": "Trägt Lokalisierungen zum Editor bei", "vscode.extension.contributes.localizations.languageId": "ID der Sprache, in die Anzeigezeichenfolgen übersetzt werden.", + "vscode.extension.contributes.localizations.languageName": "Englischer Name der Sprache.", "vscode.extension.contributes.localizations.languageNameLocalized": "Name der Sprache in beigetragener Sprache.", "vscode.extension.contributes.localizations.translations": "Liste der Übersetzungen, die der Sprache zugeordnet sind.", "vscode.extension.contributes.localizations.translations.id": "ID von VS Code oder der Erweiterung, für die diese Übersetzung beigetragen wird. Die ID von VS Code ist immer \"vscode\", und die ID einer Erweiterung muss im Format \"publisherId.extensionName\" vorliegen.", diff --git a/i18n/deu/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json b/i18n/deu/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json index 74d6cf05753..0b0f4d7c9c6 100644 --- a/i18n/deu/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json @@ -15,6 +15,7 @@ "mainProcess": "Haupt", "selectProcess": "Protokoll für Prozess auswählen", "openLogFile": "Protokolldatei öffnen …", + "setLogLevel": "Protokollstufe festlegen…", "trace": "Nachverfolgen", "debug": "Debuggen", "info": "Info", diff --git a/i18n/deu/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/deu/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index b36d8277169..d9089d4fc04 100644 --- a/i18n/deu/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -20,6 +20,7 @@ "showSameKeybindings": "Die gleichen Tastenzuordnung anzeigen", "copyLabel": "Kopieren", "copyCommandLabel": "Befehl kopieren", + "error": "Fehler \"{0}\" beim Bearbeiten der Tastenzuordnung. Überprüfen Sie die Datei \"keybindings.json\" auf Fehler.", "command": "Befehlstaste", "keybinding": "Tastenzuordnung", "source": "Quelle", diff --git a/i18n/deu/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json b/i18n/deu/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json index c685af0ff7e..7897df0e505 100644 --- a/i18n/deu/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json @@ -12,6 +12,7 @@ "entryAriaLabelWithKey": "{0}, {1}, Befehle", "entryAriaLabel": "{0}, Befehle", "actionNotEnabled": "Der Befehl \"{0}\" ist im aktuellen Kontext nicht aktiviert.", + "canNotRun": "Der Befehl \"{0}\" hat zu einem Fehler geführt.", "recentlyUsed": "zuletzt verwendet", "morecCommands": "andere Befehle", "cat.title": "{0}: {1}", diff --git a/i18n/deu/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json b/i18n/deu/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json index b24db305a38..e0b0a9a0758 100644 --- a/i18n/deu/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json @@ -10,6 +10,8 @@ "change": "{0} von {1} Änderung", "show previous change": "Vorherige Änderung anzeigen", "show next change": "Nächste Änderung anzeigen", + "move to previous change": "Zur vorherigen Änderung", + "move to next change": "Zur nächsten Änderung", "editorGutterModifiedBackground": "Hintergrundfarbe für die Editor-Leiste für Zeilen, die geändert wurden.", "editorGutterAddedBackground": "Hintergrundfarbe für die Editor-Leiste für Zeilen, die hinzugefügt wurden.", "editorGutterDeletedBackground": "Hintergrundfarbe für die Editor-Leiste für Zeilen, die gelöscht wurden.", diff --git a/i18n/deu/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json index a9fedc14f84..eb263d7ae8b 100644 --- a/i18n/deu/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json @@ -12,5 +12,6 @@ "view": "Anzeigen", "scmConfigurationTitle": "SCM", "alwaysShowProviders": "Ob der Quellcodeverwaltungsanbieter-Abschnitt immer angezeigt wird.", - "diffDecorations": "Steuert die Diff-Dekorationen im Editor." + "diffDecorations": "Steuert die Diff-Dekorationen im Editor.", + "diffGutterWidth": "Steuert die Breite (px) der Diff-Dekorationen in der Liste (hinzugefügt und verändert)." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index cdeb92a64db..1dbbf27f3f1 100644 --- a/i18n/deu/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,5 +25,6 @@ "search.quickOpen.includeSymbols": "Konfigurieren Sie diese Option, um Ergebnisse aus einer globalen Symbolsuche in die Dateiergebnisse für Quick Open einzuschließen.", "search.followSymlinks": "Steuert, ob Symlinks während der Suche gefolgt werden.", "search.smartCase": "Sucht ohne Berücksichtigung von Groß-/Kleinschreibung, wenn das Muster kleingeschrieben ist, andernfalls wird mit Berücksichtigung von Groß-/Kleinschreibung gesucht.", - "search.globalFindClipboard": "Steuert, ob das Viewlet zum Suchen die freigegebene Suchzwischenablage auf macOS lesen oder verändern soll" + "search.globalFindClipboard": "Steuert, ob die Suchansicht die freigegebene Suchzwischenablage auf macOS lesen oder verändern soll", + "search.location": "Vorschau: Steuert, ob die Suche als Ansicht in der Seitenleiste oder als Bedienfeld im Bereich des Bedienfelds für horizontales Layout angezeigt wird. In der nächsten Version wird das horizontale Layout im Bedienfeld verbessert und dies keine Vorschau mehr sein." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/deu/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index 00670c601d0..cf9da95afab 100644 --- a/i18n/deu/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -7,10 +7,13 @@ "Do not edit this file. It is machine generated." ], "ProblemPatternParser.loopProperty.notLast": "Die loop-Eigenschaft wird nur für Matcher für die letzte Zeile unterstützt.", + "ProblemPatternParser.problemPattern.kindProperty.notFirst": "Das Problemmuster ist ungültig. Die Eigenschaft darf nur im ersten Element angegeben werden.", "ProblemPatternParser.problemPattern.missingRegExp": "Im Problemmuster fehlt ein regulärer Ausdruck.", "ProblemPatternParser.problemPattern.missingProperty": "Das Problemmuster ist ungültig. Es muss mindestens eine Datei und eine Nachricht aufweisen.", + "ProblemPatternParser.problemPattern.missingLocation": "Das Problemmuster ist ungültig. Es muss die Art \"Datei\" oder eine Zeile oder eine Speicherort-Übereinstimmungsgruppe aufweisen.", "ProblemPatternParser.invalidRegexp": "Fehler: Die Zeichenfolge {0} ist kein gültiger regulärer Ausdruck.\n", "ProblemPatternSchema.regexp": "Der reguläre Ausdruck zum Ermitteln eines Fehlers, einer Warnung oder von Informationen in der Ausgabe.", + "ProblemPatternSchema.kind": "Ob das Muster einen Speicherort (Datei und Zeile) oder nur eine Datei enthält.", "ProblemPatternSchema.file": "Der Übereinstimmungsgruppenindex des Dateinamens. Wenn keine Angabe erfolgt, wird 1 verwendet.", "ProblemPatternSchema.location": "Der Übereinstimmungsgruppenindex der Position des Problems. Gültige Positionsmuster: (line), (line,column) und (startLine,startColumn,endLine,endColumn). Wenn keine Angabe erfolgt, wird (line,column) angenommen.", "ProblemPatternSchema.line": "Der Übereinstimmungsgruppenindex der Zeile des Problems. Der Standardwert ist 2.", diff --git a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 1676ce23875..f3b5da63084 100644 --- a/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -28,6 +28,8 @@ "selectProblemMatcher": "Fehler- und Warnungsarten auswählen, auf die die Aufgabenausgabe überprüft werden soll", "customizeParseErrors": "Die aktuelle Aufgabenkonfiguration weist Fehler auf. Beheben Sie die Fehler, bevor Sie eine Aufgabe anpassen.", "moreThanOneBuildTask": "In \"tasks.json\" sind mehrere Buildaufgaben definiert. Die erste wird ausgeführt.\n", + "TaskSystem.activeSame.background": "Die Aufgabe \"{0}\" ist bereits im Hintergrundmodus aktiv. Klicken Sie zum Beenden der Aufgabe im Menü \"Aufgaben\" auf \"Aufgabe beenden…\".", + "TaskSystem.activeSame.noBackground": "Die Aufgabe \"{0}\" ist bereits aktiv. Klicken Sie zum Beenden der Aufgabe im Menü \"Aufgaben\" auf \"Aufgabe beenden\".", "TaskSystem.active": "Eine aktive Aufgabe wird bereits ausgeführt. Beenden Sie diese, bevor Sie eine andere Aufgabe ausführen.", "TaskSystem.restartFailed": "Fehler beim Beenden und Neustarten der Aufgabe \"{0}\".", "TaskService.noConfiguration": "Fehler: Die Aufgabenerkennung {0} hat für die folgende Konfiguration keine Aufgabe beigetragen:\n {1}\nDie Aufgabe wird ignoriert.\n", @@ -44,6 +46,7 @@ "recentlyUsed": "zuletzt verwendete Aufgaben", "configured": "konfigurierte Aufgaben", "detected": "erkannte Aufgaben", + "TaskService.ignoredFolder": "Die folgenden Arbeitsbereichsordner werden ignoriert, da sie Aufgabenversion 0.1.0 verwenden: {0}", "TaskService.notAgain": "Nicht mehr anzeigen", "TaskService.pickRunTask": "Auszuführende Aufgabe auswählen", "TaslService.noEntryToRun": "Es wurde keine auszuführende Aufgabe gefunden. Aufgaben konfigurieren...", diff --git a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json index c0f035df8a0..40cfcdf87f2 100644 --- a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json @@ -20,10 +20,13 @@ "terminal.integrated.fontFamily": "Steuert die Schriftartfamilie des Terminals. Der Standardwert ist \"editor.fontFamily\".", "terminal.integrated.fontSize": "Steuert den Schriftgrad des Terminals in Pixeln.", "terminal.integrated.lineHeight": "Steuert die Zeilenhöhe für das Terminal. Dieser Wert wird mit dem Schriftgrad des Terminals multipliziert, um die tatsächliche Zeilenhöhe in Pixeln zu erhalten.", + "terminal.integrated.fontWeight": "Die innerhalb des Terminals zu verwendende Schriftbreite für nicht fetten Text.", + "terminal.integrated.fontWeightBold": "Die innerhalb des Terminals zu verwendende Schriftbreite für fetten Text.", "terminal.integrated.cursorBlinking": "Steuert, ob der Terminalcursor blinkt.", "terminal.integrated.cursorStyle": "Steuert den Stil des Terminalcursors.", "terminal.integrated.scrollback": "Steuert die maximale Anzahl von Zeilen, die das Terminal im Puffer beibehält.", "terminal.integrated.setLocaleVariables": "Steuert, ob Gebietsschemavariablen beim Start des Terminals festgelegt werden. Der Standardwert ist unter OS X TRUE und FALSE auf anderen Plattformen.", + "terminal.integrated.rightClickBehavior": "Steuert, wie das Terminal auf einen Rechtsklick reagiert. Möglich sind \"default\", \"copyPaste\", und \"selectWord\". \"default\" zeigt das Kontextmenü an, \"copyPaste\" kopiert, wenn eine Auswahl vorhanden ist, \"selectWord\" wählt das Wort unter dem Cursor aus und zeigt das Kontextmenü an.", "terminal.integrated.cwd": "Ein expliziter Startpfad zum Starten des Terminals, dies dient als das aktuelle Arbeitsverzeichnis (CWD) für den Shellprozess. Dies ist insbesondere in Arbeitsbereichseinstellungen praktisch, wenn das Stammverzeichnis kein passendes CWD ist.", "terminal.integrated.confirmOnExit": "Ob aktive Terminalsitzungen beim Beenden bestätigt werden sollen.", "terminal.integrated.enableBell": "Gibt an, ob die Terminalglocke aktiviert ist.", @@ -32,6 +35,7 @@ "terminal.integrated.env.linux": "Objekt mit Umgebungsvariablen, das dem unter Linux vom Terminal zu verwendenden VS Code-Prozess hinzugefügt wird", "terminal.integrated.env.windows": "Objekt mit Umgebungsvariablen, das dem unter Windows vom Terminal zu verwendenden VS Code-Prozess hinzugefügt wird", "terminal.integrated.showExitAlert": "Warnung \"Der Terminalprozess wurde mit folgendem Exitcode beendet\" anzeigen, wenn der Exitcode nicht Null ist.", + "terminal.integrated.experimentalRestore": "Ob aktive Terminalsitzungen für den Arbeitsbereich beim Starten von VS Code automatisch wiederhergestellt werden sollen. Diese Einstellung ist in der Testphase, kann fehlerhaft sein und in Zukunft geändert werden.", "terminalCategory": "Terminal", "viewCategory": "Anzeigen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 44f7458c23a..b47e2f347c0 100644 --- a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -14,10 +14,19 @@ "workbench.action.terminal.selectAll": "Alles auswählen", "workbench.action.terminal.deleteWordLeft": "Wort links löschen", "workbench.action.terminal.deleteWordRight": "Wort rechts löschen", + "workbench.action.terminal.moveToLineStart": "Zum Zeilenanfang", + "workbench.action.terminal.moveToLineEnd": "Zum Zeilenende", "workbench.action.terminal.new": "Neues integriertes Terminal erstellen", "workbench.action.terminal.new.short": "Neues Terminal", "workbench.action.terminal.newWorkspacePlaceholder": "Aktuelles Arbeitsverzeichnis für neues Terminal auswählen", "workbench.action.terminal.newInActiveWorkspace": "Neues integriertes Terminal erstellen (in aktivem Arbeitsbereich)", + "workbench.action.terminal.split": "Details zu Sucheinstellungen", + "workbench.action.terminal.focusPreviousPane": "Fokus in vorherigem Bereich", + "workbench.action.terminal.focusNextPane": "Fokus in nächstem Bereich", + "workbench.action.terminal.resizePaneLeft": "Größe des linken Bereichs ändern", + "workbench.action.terminal.resizePaneRight": "Größe des rechten Bereichs ändern", + "workbench.action.terminal.resizePaneUp": "Größe des oberen Bereichs ändern", + "workbench.action.terminal.resizePaneDown": "Größe des unteren Bereichs ändern", "workbench.action.terminal.focus": "Fokus im Terminal", "workbench.action.terminal.focusNext": "Fokus im nächsten Terminal", "workbench.action.terminal.focusPrevious": "Fokus im vorherigen Terminal", @@ -26,6 +35,7 @@ "workbench.action.terminal.runSelectedText": "Ausgewählten Text im aktiven Terminal ausführen", "workbench.action.terminal.runActiveFile": "Aktive Datei im aktiven Terminal ausführen", "workbench.action.terminal.runActiveFile.noFile": "Nur Dateien auf der Festplatte können im Terminal ausgeführt werden.", + "workbench.action.terminal.switchTerminal": "Terminal wechseln", "workbench.action.terminal.scrollDown": "Nach unten scrollen (Zeile)", "workbench.action.terminal.scrollDownPage": "Nach unten scrollen (Seite)", "workbench.action.terminal.scrollToBottom": "Bildlauf nach unten", diff --git a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index d2d35c523b0..84fc7fe0d67 100644 --- a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,5 +11,6 @@ "terminalCursor.foreground": "Die Vordergrundfarbe des Terminalcursors.", "terminalCursor.background": "Die Hintergrundfarbe des Terminalcursors. Ermöglicht das Anpassen der Farbe eines Zeichens, das von einem Blockcursor überdeckt wird.", "terminal.selectionBackground": "Die Auswahlvordergrundfarbe des Terminals.", + "terminal.border": "Die Farbe des Rahmens, der Bereiche innerhalb des Terminals teilt. Der Standardwert ist panel.border.", "terminal.ansiColor": "\"{0}\" ANSI-Farbe im Terminal" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json index 4c15459ad7c..d16dc80c2da 100644 --- a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json @@ -8,7 +8,9 @@ ], "terminal.integrated.a11yBlankLine": "Leere Zeile", "terminal.integrated.a11yPromptLabel": "Terminaleingabe", + "terminal.integrated.a11yTooMuchOutput": "Zu viele Ausgaben zum Anzeigen, navigieren Sie manuell zu den Zeilen, um sie zu lesen", "terminal.integrated.copySelection.noSelection": "Das Terminal enthält keine Auswahl zum Kopieren.", "terminal.integrated.exitedWithCode": "Der Terminalprozess wurde mit folgendem Exitcode beendet: {0}", - "terminal.integrated.waitOnExit": "Betätigen Sie eine beliebige Taste, um das Terminal zu schließen." + "terminal.integrated.waitOnExit": "Betätigen Sie eine beliebige Taste, um das Terminal zu schließen.", + "terminal.integrated.launchFailed": "Fehler beim Starten des Terminalprozessbefehls \"{0}{1}\" (Exitcode: {2})." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index ebdb5f3e119..10ca73d9616 100644 --- a/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -9,5 +9,6 @@ "copy": "Kopieren", "paste": "Einfügen", "selectAll": "Alles auswählen", - "clear": "Löschen" + "clear": "Löschen", + "split": "Teilen" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index 2dc4127a556..fd696a9b61a 100644 --- a/i18n/deu/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "openWorkspaceSettings": "Arbeitsbereichseinstellungen öffnen", - "dontShowAgain": "Nicht mehr anzeigen" + "dontShowAgain": "Nicht mehr anzeigen", + "unsupportedWorkspaceSettings": "Dieser Arbeitsbereich enthält Einstellungen, die nur in den Benutzereinstellungen festgelegt werden können ({0}). Klicken Sie [hier]({1}), um mehr zu erfahren." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 0a8f5bec312..f2d901b3bb9 100644 --- a/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -11,8 +11,12 @@ "releaseNotes": "Anmerkungen zu dieser Version", "showReleaseNotes": "Anmerkungen zu dieser Version anzeigen", "read the release notes": "Willkommen bei {0} v{1}! Möchten Sie die Hinweise zu dieser Version lesen?", + "licenseChanged": "Unsere Lizenzbedingungen haben sich geändert. Bitte klicken Sie [hier]({0}), um die neuen Bedingungen zu lesen.", "neveragain": "Nicht mehr anzeigen", + "64bitisavailable": "{0} für 64-Bit-Windows ist jetzt verfügbar! Klicken Sie [hier]({1}), um mehr zu erfahren.", "updateIsReady": "Neues {0}-Update verfügbar.", + "noUpdatesAvailable": "Zurzeit sind keine Updates verfügbar.", + "ok": "OK", "download now": "Jetzt herunterladen", "thereIsUpdateAvailable": "Ein Update ist verfügbar.", "installUpdate": "Update installieren", diff --git a/i18n/deu/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/deu/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index e7aa98fddfb..ee5f56d7e44 100644 --- a/i18n/deu/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/deu/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -16,6 +16,16 @@ "errorInvalidWorkspaceTarget": "In die Arbeitsbereichseinstellungen kann nicht geschrieben werden, da {0} den Arbeitsbereichsumfang in einem Arbeitsbereich mit mehreren Ordnern nicht unterstützt.", "errorInvalidFolderTarget": "In die Ordnereinstellungen kann nicht geschrieben werden, weil keine Ressource angegeben ist.", "errorNoWorkspaceOpened": "In {0} kann nicht geschrieben werden, weil kein Arbeitsbereich geöffnet ist. Öffnen Sie zuerst einen Arbeitsbereich, und versuchen Sie es noch mal.", + "errorInvalidTaskConfiguration": "In die Konfigurationsdatei der Aufgabe kann nicht geschrieben werden. Öffnen Sie die Datei, um Fehler/Warnungen darin zu beheben, und versuchen Sie es noch mal.", + "errorInvalidLaunchConfiguration": "In die Startkonfigurationsdatei kann nicht geschrieben werden. Öffnen Sie die Datei, um Fehler/Warnungen darin zu beheben, und versuchen Sie es noch mal.", + "errorInvalidConfiguration": "In die Benutzereinstellungen kann nicht geschrieben werden. Öffnen Sie die Benutzereinstellungen, um Fehler/Warnungen in der Datei zu korrigieren, und versuchen Sie es noch mal.", + "errorInvalidConfigurationWorkspace": "In die Konfigurationseinstellungen kann nicht geschrieben werden. Öffnen Sie die Arbeitsbereichseinstellungen, um Fehler/Warnungen in der Datei zu korrigieren, und versuchen Sie es noch mal.", + "errorInvalidConfigurationFolder": "In die Ordnereinstellungen kann nicht geschrieben werden. Öffnen Sie die Ordnereinstellungen \"{0}'\", um Fehler/Warnungen in der Datei zu korrigieren, und versuchen Sie es noch mal.", + "errorTasksConfigurationFileDirty": "In die Konfigurationsdatei der Aufgabe kann nicht geschrieben werden, weil sie geändert wurde. Speichern Sie die Datei, und versuchen Sie es noch mal.", + "errorLaunchConfigurationFileDirty": "In die Startkonfigurationsdatei kann nicht geschrieben werden, weil sie geändert wurde. Speichern Sie die Datei, und versuchen Sie es noch mal.", + "errorConfigurationFileDirty": "In die Benutzereinstellungen kann nicht geschrieben werden, weil die Datei geändert wurde. Speichern Sie die Datei mit den Benutzereinstellungen, und versuchen Sie es noch mal.", + "errorConfigurationFileDirtyWorkspace": "In die Arbeitsbereichseinstellungen kann nicht geschrieben werden, weil die Datei geändert wurde. Speichern Sie die Datei mit den Arbeitsbereichseinstellungen, und versuchen Sie es noch mal.", + "errorConfigurationFileDirtyFolder": "In die Ordnereinstellungen kann nicht geschrieben werden, da die Datei geändert wurde. Speichern Sie die Datei mit den Ordnereinstellungen \"{0}\" und versuchen Sie es noch mal.", "userTarget": "Benutzereinstellungen", "workspaceTarget": "Arbeitsbereichseinstellungen", "folderTarget": "Ordnereinstellungen" diff --git a/i18n/deu/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/deu/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index e9e4a6887bc..c2750cd84cc 100644 --- a/i18n/deu/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/deu/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "Eine Beschreibung für den Badge.", "vscode.extension.extensionDependencies": "Abhängigkeiten von anderen Erweiterungen. Der Bezeichner einer Erweiterung ist immer ${publisher}.${name}, beispielsweise \"vscode.csharp\".", "vscode.extension.scripts.prepublish": "Ein Skript, das ausgeführt wird, bevor das Paket als VS Code-Extension veröffentlicht wird.", + "vscode.extension.scripts.uninstall": "Uninstall-Hook für VS Code-Erweiterung: Skript, das ausgeführt wird, wenn die Erweiterung vollständig aus VS Code deinstalliert wurde. Dies ist der Fall, wenn VS Code nach der Deinstallation der Erweiterung neu gestartet wurde (Herunterfahren und Starten). Nur Node-Skripts werden unterstützt. ", "vscode.extension.icon": "Der Pfad zu einem 128x128-Pixel-Symbol." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 027f83502b5..37247fac832 100644 --- a/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/deu/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -9,5 +9,8 @@ "installNet": ".NET Framework 4.5 herunterladen", "neverShowAgain": "Nicht mehr anzeigen", "netVersionError": "Microsoft .NET Framework 4.5 ist erforderlich. Klicken Sie auf den Link, um die Anwendung zu installieren.", + "learnMore": "Anweisungen", + "enospcError": "Keine Dateihandles mehr in {0} vorhanden. Folgen Sie dem Anwendungslink, um das Problem zu beheben.", + "binFailed": "Fehler beim Verschieben von \"{0}\" in den Papierkorb.", "trashFailed": "Fehler beim Verschieben von \"{0}\" in den Papierkorb." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/deu/src/vs/workbench/services/files/node/fileService.i18n.json index a2229be0cee..548b1344de6 100644 --- a/i18n/deu/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/deu/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,6 +9,7 @@ "fileInvalidPath": "Ungültige Dateiressource ({0})", "fileIsDirectoryError": "Die Datei ist ein Verzeichnis", "fileNotModifiedError": "Datei nicht geändert seit", + "fileTooLargeForHeapError": "Die Dateigröße überschreitet die maximale Speichergröße für Fenster. Führen Sie folgenden Code aus: --max-memory=NEWSIZE", "fileTooLargeError": "Die Datei ist zu groß, um sie zu öffnen.", "fileNotFoundError": "Die Datei wurde nicht gefunden ({0}).", "fileBinaryError": "Die Datei scheint eine Binärdatei zu sein und kann nicht als Text geöffnet werden.", diff --git a/i18n/deu/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json b/i18n/deu/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json index ed47ec6aa12..2f8ca4e179e 100644 --- a/i18n/deu/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json +++ b/i18n/deu/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json @@ -6,5 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "errorKeybindingsFileDirty": "Schreiben nicht möglich, da die Tastenbindungskonfiguration geändert wurde. Speichern Sie die Datei, und versuchen Sie es noch mal.", + "parseErrors": "In die configuration\n\nIn die Tastenbindungskonfigurationsdatei kann nicht geschrieben werden. Öffnen Sie die Datei, um Fehler/Warnungen darin zu beheben, und versuchen Sie es noch mal.", + "errorInvalidConfiguration": "In die Tastenbindungskonfigurationsdatei kann nicht geschrieben werden. Sie enthält ein Objekt, bei dem es sich nicht um ein Array handelt. Öffnen Sie die Datei, um das Problem zu beheben, und versuchen Sie es dann nochmal.", "emptyKeybindingsHeader": "Platzieren Sie Ihre Tastenzuordnungen in dieser Datei, um die Standardwerte zu überschreiben." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json b/i18n/deu/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json index c047b61611c..ee2ed63656e 100644 --- a/i18n/deu/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json +++ b/i18n/deu/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json @@ -13,6 +13,7 @@ "contributes.defaults.light": "Die Standardfarbe für helle Themen. Entweder eine Farbe als Hex-Code (#RRGGBB[AA]) oder der Bezeichner einer verwendbaren Farbe, der eine Standardeinstellung bereitstellt.", "contributes.defaults.dark": "Die Standardfarbe für dunkle Themen. Entweder eine Farbe als Hex-Code (#RRGGBB[AA]) oder der Bezeichner einer verwendbaren Farbe, der eine Standardeinstellung bereitstellt.", "contributes.defaults.highContrast": "Die Standardfarbe für Themen mit hohem Kontrast. Entweder eine Farbe als Hex-Code (#RRGGBB[AA]) oder der Bezeichner einer verwendbaren Farbe, der eine Standardeinstellung bereitstellt.", + "invalid.colorConfiguration": "\"configuration.colors\" muss ein Array sein.", "invalid.default.colorType": "{0} muss entweder eine Farbe als Hex-Code (#RRGGBB[AA] oder #RGB[A]) sein oder der Bezeichner einer verwendbaren Farbe, der eine Standardeinstellung bereitstellt.", "invalid.id": "\"configuration.colors.id\" muss definiert und nicht leer sein", "invalid.id.format": "\"configuration.colors.id\" muss auf das Wort[.word]* folgen", diff --git a/i18n/deu/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json b/i18n/deu/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json index 5fa1ababee7..8d8aab58b0c 100644 --- a/i18n/deu/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json +++ b/i18n/deu/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json @@ -9,6 +9,9 @@ "schema.token.settings": "Farben und Stile für das Token.", "schema.token.foreground": "Vordergrundfarbe für das Token.", "schema.token.background.warning": "Token Hintergrundfarben werden derzeit nicht unterstützt.", + "schema.token.fontStyle": "Schriftschnitt der Regel: kursiv, fett und unterstrichen (einzeln oder in Kombination). Die leere Zeichenfolge setzt geerbte Einstellungen zurück.", + "schema.fontStyle.error": "Die Schriftart muss \"kursiv\", \"fett\" oder \"unterstrichen\", eine Kombination daraus oder eine leere Zeichenfolge sein.", + "schema.token.fontStyle.none": "Keine (geerbten Stil löschen)", "schema.properties.name": "Beschreibung der Regel.", "schema.properties.scope": "Bereichsauswahl, mit der diese Regel einen Abgleich ausführt.", "schema.tokenColors.path": "Pfad zu einer tmTheme-Designdatei (relativ zur aktuellen Datei).", diff --git a/i18n/deu/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json b/i18n/deu/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json index 747d675d36a..e86a18877a7 100644 --- a/i18n/deu/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json +++ b/i18n/deu/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "errorInvalidTaskConfiguration": "In die Konfigurationsdatei des Arbeitsbereichs kann nicht geschrieben werden. Öffnen Sie die Datei, um Fehler/Warnungen darin zu beheben, und versuchen Sie es noch mal.", - "errorWorkspaceConfigurationFileDirty": "In die Konfigurationsdatei des Arbeitsbereichs kann nicht geschrieben werden, weil sie geändert wurde. Speichern Sie die Datei, und versuchen Sie es noch mal." + "errorWorkspaceConfigurationFileDirty": "In die Konfigurationsdatei des Arbeitsbereichs kann nicht geschrieben werden, weil sie geändert wurde. Speichern Sie die Datei, und versuchen Sie es noch mal.", + "openWorkspaceConfigurationFile": "Konfiguration des Arbeitsbereichs öffnen" } \ No newline at end of file diff --git a/i18n/esn/extensions/bat/package.i18n.json b/i18n/esn/extensions/bat/package.i18n.json index 35229bd6699..cbcaa78ee2d 100644 --- a/i18n/esn/extensions/bat/package.i18n.json +++ b/i18n/esn/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Windows Bat", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos por lotes de Windows." } \ No newline at end of file diff --git a/i18n/esn/extensions/clojure/package.i18n.json b/i18n/esn/extensions/clojure/package.i18n.json index 35229bd6699..e81462551ed 100644 --- a/i18n/esn/extensions/clojure/package.i18n.json +++ b/i18n/esn/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Clojure", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Clojure." } \ No newline at end of file diff --git a/i18n/esn/extensions/coffeescript/package.i18n.json b/i18n/esn/extensions/coffeescript/package.i18n.json index 35229bd6699..3bae8327b6c 100644 --- a/i18n/esn/extensions/coffeescript/package.i18n.json +++ b/i18n/esn/extensions/coffeescript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje CoffeeScript", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de CoffeeScript." } \ No newline at end of file diff --git a/i18n/esn/extensions/configuration-editing/package.i18n.json b/i18n/esn/extensions/configuration-editing/package.i18n.json index b2ecb44fb71..6c2337da1a4 100644 --- a/i18n/esn/extensions/configuration-editing/package.i18n.json +++ b/i18n/esn/extensions/configuration-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Edición de configuración", - "description": "Proporciona capacidades (Intelli-Sense avanzado, corrección automática) en archivos de configuración, como configuraciones, archivos de extensión y recomendación de lanzamiento" + "description": "Proporciona características (IntelliSense avanzado, corrección automática) en archivos de configuración, como archivos de parámetros, de inicio y de recomendación de extensiones." } \ No newline at end of file diff --git a/i18n/esn/extensions/cpp/package.i18n.json b/i18n/esn/extensions/cpp/package.i18n.json index 35229bd6699..b624bdfdca9 100644 --- a/i18n/esn/extensions/cpp/package.i18n.json +++ b/i18n/esn/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje C y C++", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de C/C++." } \ No newline at end of file diff --git a/i18n/esn/extensions/csharp/package.i18n.json b/i18n/esn/extensions/csharp/package.i18n.json index 35229bd6699..dbdc811109d 100644 --- a/i18n/esn/extensions/csharp/package.i18n.json +++ b/i18n/esn/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje C#", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de C#." } \ No newline at end of file diff --git a/i18n/esn/extensions/docker/package.i18n.json b/i18n/esn/extensions/docker/package.i18n.json index 35229bd6699..0a04c7921e8 100644 --- a/i18n/esn/extensions/docker/package.i18n.json +++ b/i18n/esn/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Docker", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Docker." } \ No newline at end of file diff --git a/i18n/esn/extensions/emmet/package.i18n.json b/i18n/esn/extensions/emmet/package.i18n.json index 6b3d1578ba5..852d92d405c 100644 --- a/i18n/esn/extensions/emmet/package.i18n.json +++ b/i18n/esn/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Soporte de Emmet para VS Code", "command.wrapWithAbbreviation": "Encapsular con abreviatura", "command.wrapIndividualLinesWithAbbreviation": "Encapsular las líneas individuales con abreviatura", "command.removeTag": "Quitar etiqueta", diff --git a/i18n/esn/extensions/extension-editing/package.i18n.json b/i18n/esn/extensions/extension-editing/package.i18n.json index e5dde176f94..2cb914f2d03 100644 --- a/i18n/esn/extensions/extension-editing/package.i18n.json +++ b/i18n/esn/extensions/extension-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Edición de archivos de paquetes", - "description": "Proporciona intelli-sense en puntos de extensión de VS Code y capacidades Lint en los archivos de paquete JSON" + "description": "Proporciona IntelliSense para puntos de extensión de VS Code y linting en archivos de package.json." } \ No newline at end of file diff --git a/i18n/esn/extensions/fsharp/package.i18n.json b/i18n/esn/extensions/fsharp/package.i18n.json index 35229bd6699..8da11780fb4 100644 --- a/i18n/esn/extensions/fsharp/package.i18n.json +++ b/i18n/esn/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje F#", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de F#." } \ No newline at end of file diff --git a/i18n/esn/extensions/git/out/autofetch.i18n.json b/i18n/esn/extensions/git/out/autofetch.i18n.json index eaf1adc2887..8ad760617c8 100644 --- a/i18n/esn/extensions/git/out/autofetch.i18n.json +++ b/i18n/esn/extensions/git/out/autofetch.i18n.json @@ -8,5 +8,6 @@ ], "yes": "Sí", "no": "No", - "not now": "Preguntarme luego" + "not now": "Preguntarme luego", + "suggest auto fetch": "¿Te gustaría que Code [ejecute 'git fetch' periódicamente]({0})?" } \ No newline at end of file diff --git a/i18n/esn/extensions/git/package.i18n.json b/i18n/esn/extensions/git/package.i18n.json index e95dcc57c4b..0fdd9b9bbbf 100644 --- a/i18n/esn/extensions/git/package.i18n.json +++ b/i18n/esn/extensions/git/package.i18n.json @@ -75,6 +75,7 @@ "config.decorations.enabled": "Controla si Git contribuye los colores y distintivos al explorador y a los editores abiertos.", "config.promptToSaveFilesBeforeCommit": "Controla si Git debe comprobar los archivos no guardados antes de confirmar las actualizaciones. ", "config.showInlineOpenFileAction": "Controla si se debe mostrar una acción de archivo abierto en la vista de cambios en Git", + "config.inputValidation": "Controla cuándo mostrar el mensaje de validación de entrada en el contador de entrada.", "config.detectSubmodules": "Controla si se detectan automáticamente los submódulos Git. ", "colors.modified": "Color para recursos modificados.", "colors.deleted": "Color para los recursos eliminados.", diff --git a/i18n/esn/extensions/go/package.i18n.json b/i18n/esn/extensions/go/package.i18n.json index 35229bd6699..6466924b63a 100644 --- a/i18n/esn/extensions/go/package.i18n.json +++ b/i18n/esn/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Elementos básicos del lenguaje Go", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Go." } \ No newline at end of file diff --git a/i18n/esn/extensions/groovy/package.i18n.json b/i18n/esn/extensions/groovy/package.i18n.json index 35229bd6699..53e2b819ca3 100644 --- a/i18n/esn/extensions/groovy/package.i18n.json +++ b/i18n/esn/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Groovy", + "description": "Proporciona fragmentos de código, resaltado de sintaxis y correspondencia de corchetes en archivos de Groovy." } \ No newline at end of file diff --git a/i18n/esn/extensions/gulp/package.i18n.json b/i18n/esn/extensions/gulp/package.i18n.json index 0e38c1390ac..9992a1ae875 100644 --- a/i18n/esn/extensions/gulp/package.i18n.json +++ b/i18n/esn/extensions/gulp/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.gulp.autoDetect": "Controla si la detección automática de tareas Gulp esta activada/desactivada. El valor predeterminado es \"activada\"." + "description": "Extensión para añadir funcionalidad de Gulp a VSCode.", + "displayName": "Soporte de Gulp para VSCode", + "config.gulp.autoDetect": "Controla si la detección automática de tareas Gulp esta activada/desactivada. El valor predeterminado es \"activada\".", + "gulp.taskDefinition.type.description": "La tarea de Gulp que se va a personalizar.", + "gulp.taskDefinition.file.description": "El archivo de Gulp que proporciona la tarea. Se puede omitir." } \ No newline at end of file diff --git a/i18n/esn/extensions/handlebars/package.i18n.json b/i18n/esn/extensions/handlebars/package.i18n.json index 35229bd6699..6879f92b20e 100644 --- a/i18n/esn/extensions/handlebars/package.i18n.json +++ b/i18n/esn/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Handlebars ", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Handlebars." } \ No newline at end of file diff --git a/i18n/esn/extensions/hlsl/package.i18n.json b/i18n/esn/extensions/hlsl/package.i18n.json index 35229bd6699..b4913dbf60f 100644 --- a/i18n/esn/extensions/hlsl/package.i18n.json +++ b/i18n/esn/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje HLSL", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de HLSL." } \ No newline at end of file diff --git a/i18n/esn/extensions/ini/package.i18n.json b/i18n/esn/extensions/ini/package.i18n.json index 35229bd6699..ad6b4870465 100644 --- a/i18n/esn/extensions/ini/package.i18n.json +++ b/i18n/esn/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Ini", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos Ini." } \ No newline at end of file diff --git a/i18n/esn/extensions/jake/package.i18n.json b/i18n/esn/extensions/jake/package.i18n.json index 1b84fae502e..239e0f4e7e7 100644 --- a/i18n/esn/extensions/jake/package.i18n.json +++ b/i18n/esn/extensions/jake/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Extensión para añadir funcionalidad de Jake a VSCode.", + "displayName": "Soporte de Jake para VSCode", + "jake.taskDefinition.type.description": "La tarea de Jake que se va a personalizar.", + "jake.taskDefinition.file.description": "EL archivo de Jake que proporciona la tarea. Se puede omitir.", "config.jake.autoDetect": "Controla si la detección automática de tareas Jake estan activada/desactivada. El valor predeterminado es \"activada\"." } \ No newline at end of file diff --git a/i18n/esn/extensions/java/package.i18n.json b/i18n/esn/extensions/java/package.i18n.json index 35229bd6699..3485279d8e9 100644 --- a/i18n/esn/extensions/java/package.i18n.json +++ b/i18n/esn/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Java", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de Java." } \ No newline at end of file diff --git a/i18n/esn/extensions/javascript/package.i18n.json b/i18n/esn/extensions/javascript/package.i18n.json index 35229bd6699..bf6fd4af88f 100644 --- a/i18n/esn/extensions/javascript/package.i18n.json +++ b/i18n/esn/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje JavaScript", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de JavaScript." } \ No newline at end of file diff --git a/i18n/esn/extensions/less/package.i18n.json b/i18n/esn/extensions/less/package.i18n.json index 35229bd6699..8735f5ab0ab 100644 --- a/i18n/esn/extensions/less/package.i18n.json +++ b/i18n/esn/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Less", + "description": "Proporciona resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de Less." } \ No newline at end of file diff --git a/i18n/esn/extensions/log/package.i18n.json b/i18n/esn/extensions/log/package.i18n.json index d17f49dc825..25c856f856c 100644 --- a/i18n/esn/extensions/log/package.i18n.json +++ b/i18n/esn/extensions/log/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Registro", - "description": "Proporciona resaltado de sintaxis para archivos con la extensión .log" + "description": "Proporciona resaltado de sintaxis para archivos con la extensión .log." } \ No newline at end of file diff --git a/i18n/esn/extensions/lua/package.i18n.json b/i18n/esn/extensions/lua/package.i18n.json index 35229bd6699..9a226d4f38c 100644 --- a/i18n/esn/extensions/lua/package.i18n.json +++ b/i18n/esn/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Lua", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Lua." } \ No newline at end of file diff --git a/i18n/esn/extensions/make/package.i18n.json b/i18n/esn/extensions/make/package.i18n.json index 35229bd6699..bea3ffacd7d 100644 --- a/i18n/esn/extensions/make/package.i18n.json +++ b/i18n/esn/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Make", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos Make." } \ No newline at end of file diff --git a/i18n/esn/extensions/markdown-basics/package.i18n.json b/i18n/esn/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..ae1623cce0f --- /dev/null +++ b/i18n/esn/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Conceptos básicos del lenguaje Markdown", + "description": "Proporciona fragmentos de código y resaltado de sintaxis para Markdown." +} \ No newline at end of file diff --git a/i18n/esn/extensions/markdown/out/features/preview.i18n.json b/i18n/esn/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..0743f600836 --- /dev/null +++ b/i18n/esn/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Vista previa] {0}", + "previewTitle": "Vista Previa {0}" +} \ No newline at end of file diff --git a/i18n/esn/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/esn/extensions/markdown/out/features/previewContentProvider.i18n.json index d9298f2da67..ef0bed92441 100644 --- a/i18n/esn/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/esn/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,6 +8,5 @@ ], "preview.securityMessage.text": "Se ha deshabilitado parte del contenido de este documento", "preview.securityMessage.title": "Se ha deshabilitado el contenido potencialmente inseguro en la previsualización de Markdown. Para permitir el contenido inseguro o habilitar scripts cambie la configuración de la previsualización de Markdown", - "preview.securityMessage.label": "Alerta de seguridad de contenido deshabilitado", - "previewTitle": "Vista Previa {0}" + "preview.securityMessage.label": "Alerta de seguridad de contenido deshabilitado" } \ No newline at end of file diff --git a/i18n/esn/extensions/markdown/package.i18n.json b/i18n/esn/extensions/markdown/package.i18n.json index d615e80000e..0e6d8a1f74f 100644 --- a/i18n/esn/extensions/markdown/package.i18n.json +++ b/i18n/esn/extensions/markdown/package.i18n.json @@ -15,12 +15,18 @@ "markdown.preview.fontSize.desc": "Controla el tamaño de la fuente en píxeles utilizado en la previsualización del descuento.", "markdown.preview.lineHeight.desc": "Controla la altura de línea utilizada en la previsualización del descuento. Este número es relativo al tamaño de la fuente.", "markdown.preview.markEditorSelection.desc": "Marca la selección del editor actual en la vista previa de Markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Al desplazarse en la vista previa de Markdown, se actualiza la vista del editor.", + "markdown.preview.scrollPreviewWithEditor.desc": "Al desplazarse en el editor de Markdown, se actualiza la vista de la previsualización .", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Desestimado] Desplaza la vista previa de Markdown para revelar la línea del editor seleccionada actualmente.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Este valor se ha reemplazado por \"markdown.preview.scrollPreviewWithEditor\" y ya no tiene ningún efecto.", "markdown.preview.title": "Abrir vista previa", "markdown.previewFrontMatter.dec": "Establece cómo se debe representar el asunto de la parte delantera de YAML en la vista previa del descuento. 'hide' quita el asunto de la parte delantera. De lo contrario, el asunto de la parte delantera se trata como contenido del descuento.", "markdown.previewSide.title": "Abrir vista previa en el lateral", + "markdown.showLockedPreviewToSide.title": "Abrir vista previa fija en el lateral", "markdown.showSource.title": "Mostrar origen", "markdown.styles.dec": "Una lista de direcciones URL o rutas de acceso locales a hojas de estilo CSS que utilizar desde la vista previa del descuento. Las tutas de acceso relativas se interpretan en relación con la carpeta abierta en el explorador. Si no hay ninguna carpeta abierta, se interpretan en relación con la ubicación del archivo del descuento. Todos los '\\' deben escribirse como '\\\\'.", "markdown.showPreviewSecuritySelector.title": "Cambiar configuración de seguridad de vista previa", "markdown.trace.desc": "Habilitar registro de depuración para las extensiones de Markdown. ", - "markdown.refreshPreview.title": "Actualizar vista previa" + "markdown.preview.refresh.title": "Actualizar vista previa", + "markdown.preview.toggleLock.title": "Cambiar fijación de la vista previa " } \ No newline at end of file diff --git a/i18n/esn/extensions/merge-conflict/package.i18n.json b/i18n/esn/extensions/merge-conflict/package.i18n.json index abfab70acfe..0ca0776dd5a 100644 --- a/i18n/esn/extensions/merge-conflict/package.i18n.json +++ b/i18n/esn/extensions/merge-conflict/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Fusionar conflicto", + "description": "Resaltado y comandos para conflictos de fusión insertada.", "command.category": "Fusionar conflicto", "command.accept.all-current": "Aceptar todo actual", "command.accept.all-incoming": "Aceptar todos los entrantes", diff --git a/i18n/esn/extensions/npm/package.i18n.json b/i18n/esn/extensions/npm/package.i18n.json index 49f455c6432..76e4d49bacf 100644 --- a/i18n/esn/extensions/npm/package.i18n.json +++ b/i18n/esn/extensions/npm/package.i18n.json @@ -11,5 +11,8 @@ "config.npm.autoDetect": "Controla si la detección automática de scripts npm está activada o desactivada. Por defecto está activada.", "config.npm.runSilent": "Ejecutar comandos de npm con la opción '--silent'", "config.npm.packageManager": "El administrador de paquetes utilizado para ejecutar secuencias de comandos. ", - "npm.parseError": "Detección de tareas de nueva gestión pública: no se pudo analizar el archivo {0}" + "config.npm.exclude": "Configura patrones globales para carpetas que deben excluirse de la detección automática de scripts. ", + "npm.parseError": "Detección de tareas de nueva gestión pública: no se pudo analizar el archivo {0}", + "taskdef.script": "Script npm que debe personalizarse.", + "taskdef.path": "Ruta de acceso a la carpeta del archivo package.json que proporciona el script. Se puede omitir." } \ No newline at end of file diff --git a/i18n/esn/extensions/objective-c/package.i18n.json b/i18n/esn/extensions/objective-c/package.i18n.json index 35229bd6699..5f058f75d8c 100644 --- a/i18n/esn/extensions/objective-c/package.i18n.json +++ b/i18n/esn/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Objective-C", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Objective-C." } \ No newline at end of file diff --git a/i18n/esn/extensions/perl/package.i18n.json b/i18n/esn/extensions/perl/package.i18n.json index 35229bd6699..a67e06d50ce 100644 --- a/i18n/esn/extensions/perl/package.i18n.json +++ b/i18n/esn/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Perl", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Perl." } \ No newline at end of file diff --git a/i18n/esn/extensions/php/package.i18n.json b/i18n/esn/extensions/php/package.i18n.json index dd2f1e37fd8..1e2e57cee70 100644 --- a/i18n/esn/extensions/php/package.i18n.json +++ b/i18n/esn/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Indica si linter se ejecuta al guardar o al escribir.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "No permitir el ejecutable de validación de PHP (como configuración de área de trabajo)" + "command.untrustValidationExecutable": "No permitir el ejecutable de validación de PHP (como configuración de área de trabajo)", + "displayName": "Características del lenguaje PHP", + "description": "Proporciona IntelliSense, linting y conceptos básicos del lenguaje para archivos de PHP." } \ No newline at end of file diff --git a/i18n/esn/extensions/powershell/package.i18n.json b/i18n/esn/extensions/powershell/package.i18n.json index 35229bd6699..9c2129b530a 100644 --- a/i18n/esn/extensions/powershell/package.i18n.json +++ b/i18n/esn/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Powershell", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de Powershell." } \ No newline at end of file diff --git a/i18n/esn/extensions/pug/package.i18n.json b/i18n/esn/extensions/pug/package.i18n.json index 35229bd6699..d503c1e53f6 100644 --- a/i18n/esn/extensions/pug/package.i18n.json +++ b/i18n/esn/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Pug", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Pug." } \ No newline at end of file diff --git a/i18n/esn/extensions/python/package.i18n.json b/i18n/esn/extensions/python/package.i18n.json index 35229bd6699..bb3030cc7dd 100644 --- a/i18n/esn/extensions/python/package.i18n.json +++ b/i18n/esn/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Python", + "description": "Proporciona resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de Python." } \ No newline at end of file diff --git a/i18n/esn/extensions/r/package.i18n.json b/i18n/esn/extensions/r/package.i18n.json index 35229bd6699..c80f566c2dc 100644 --- a/i18n/esn/extensions/r/package.i18n.json +++ b/i18n/esn/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje R", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de R." } \ No newline at end of file diff --git a/i18n/esn/extensions/razor/package.i18n.json b/i18n/esn/extensions/razor/package.i18n.json index 35229bd6699..a188d3ad536 100644 --- a/i18n/esn/extensions/razor/package.i18n.json +++ b/i18n/esn/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Razor", + "description": "Proporciona resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de Razor." } \ No newline at end of file diff --git a/i18n/esn/extensions/ruby/package.i18n.json b/i18n/esn/extensions/ruby/package.i18n.json index 35229bd6699..c29bac30292 100644 --- a/i18n/esn/extensions/ruby/package.i18n.json +++ b/i18n/esn/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Ruby", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Ruby." } \ No newline at end of file diff --git a/i18n/esn/extensions/rust/package.i18n.json b/i18n/esn/extensions/rust/package.i18n.json index 35229bd6699..d931e577db0 100644 --- a/i18n/esn/extensions/rust/package.i18n.json +++ b/i18n/esn/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Rust", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Rust." } \ No newline at end of file diff --git a/i18n/esn/extensions/scss/package.i18n.json b/i18n/esn/extensions/scss/package.i18n.json index 35229bd6699..f4c0be3071f 100644 --- a/i18n/esn/extensions/scss/package.i18n.json +++ b/i18n/esn/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje SCSS", + "description": "Proporciona resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de SCSS." } \ No newline at end of file diff --git a/i18n/esn/extensions/shaderlab/package.i18n.json b/i18n/esn/extensions/shaderlab/package.i18n.json index 35229bd6699..b25f108cec4 100644 --- a/i18n/esn/extensions/shaderlab/package.i18n.json +++ b/i18n/esn/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Shaderlab", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de Shaderlab." } \ No newline at end of file diff --git a/i18n/esn/extensions/shellscript/package.i18n.json b/i18n/esn/extensions/shellscript/package.i18n.json index 35229bd6699..1a7dc83f3a2 100644 --- a/i18n/esn/extensions/shellscript/package.i18n.json +++ b/i18n/esn/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Shell Script", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de script de shell." } \ No newline at end of file diff --git a/i18n/esn/extensions/sql/package.i18n.json b/i18n/esn/extensions/sql/package.i18n.json index 35229bd6699..428b841f761 100644 --- a/i18n/esn/extensions/sql/package.i18n.json +++ b/i18n/esn/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje SQL", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de SQL." } \ No newline at end of file diff --git a/i18n/esn/extensions/swift/package.i18n.json b/i18n/esn/extensions/swift/package.i18n.json index 35229bd6699..c487b83e00f 100644 --- a/i18n/esn/extensions/swift/package.i18n.json +++ b/i18n/esn/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje Swift", + "description": "Proporciona fragmentos de código, resaltado de sintaxis y correspondencia de corchetes en archivos de Swift." } \ No newline at end of file diff --git a/i18n/esn/extensions/theme-monokai-dimmed/package.i18n.json b/i18n/esn/extensions/theme-monokai-dimmed/package.i18n.json index dfea3250d94..aa17012b485 100644 --- a/i18n/esn/extensions/theme-monokai-dimmed/package.i18n.json +++ b/i18n/esn/extensions/theme-monokai-dimmed/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Tema Monokai atenuado", "description": "Tema atenuado Monokai para VS Code" } \ No newline at end of file diff --git a/i18n/esn/extensions/theme-seti/package.i18n.json b/i18n/esn/extensions/theme-seti/package.i18n.json index 35229bd6699..f964fdb545f 100644 --- a/i18n/esn/extensions/theme-seti/package.i18n.json +++ b/i18n/esn/extensions/theme-seti/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Tema del icono de archivo Seti", + "description": "Un tema de icono de archivo basados en Seti IU" } \ No newline at end of file diff --git a/i18n/esn/extensions/theme-solarized-dark/package.i18n.json b/i18n/esn/extensions/theme-solarized-dark/package.i18n.json index 35229bd6699..56219a79e96 100644 --- a/i18n/esn/extensions/theme-solarized-dark/package.i18n.json +++ b/i18n/esn/extensions/theme-solarized-dark/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Tema oscuro Solarized ", + "description": "Tema oscuro Solarized para VS Code" } \ No newline at end of file diff --git a/i18n/esn/extensions/theme-solarized-light/package.i18n.json b/i18n/esn/extensions/theme-solarized-light/package.i18n.json index 35229bd6699..19d3d07fd50 100644 --- a/i18n/esn/extensions/theme-solarized-light/package.i18n.json +++ b/i18n/esn/extensions/theme-solarized-light/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Tema claro Solarized ", + "description": "Tema claro Solarized para VS Code" } \ No newline at end of file diff --git a/i18n/esn/extensions/theme-tomorrow-night-blue/package.i18n.json b/i18n/esn/extensions/theme-tomorrow-night-blue/package.i18n.json index 35229bd6699..c3ba1ddea2d 100644 --- a/i18n/esn/extensions/theme-tomorrow-night-blue/package.i18n.json +++ b/i18n/esn/extensions/theme-tomorrow-night-blue/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Tema Tomorrow Night Blue", + "description": "Tema Tomorrow Night Blue para VS Code" } \ No newline at end of file diff --git a/i18n/esn/extensions/typescript-basics/package.i18n.json b/i18n/esn/extensions/typescript-basics/package.i18n.json index 35229bd6699..392dbd4121e 100644 --- a/i18n/esn/extensions/typescript-basics/package.i18n.json +++ b/i18n/esn/extensions/typescript-basics/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Elementos básicos del lenguaje TypeScript", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de TypeScript." } \ No newline at end of file diff --git a/i18n/esn/extensions/typescript/out/utils/typingsStatus.i18n.json b/i18n/esn/extensions/typescript/out/utils/typingsStatus.i18n.json index a5ab6c537cd..290207978aa 100644 --- a/i18n/esn/extensions/typescript/out/utils/typingsStatus.i18n.json +++ b/i18n/esn/extensions/typescript/out/utils/typingsStatus.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "installingPackages": "Recuperando cambios en los datos para un mejor rendimiento de TypeScript IntelliSense", + "typesInstallerInitializationFailed.title": "No se pudieron instalar archivos de términos para las características de lenguaje de JavaScript. Asegúrese de que NPM está instalado o configure \"typescript.npm\" en la configuración de usuario. Haga clic [aquí]({0}) para obtener más información.", "typesInstallerInitializationFailed.doNotCheckAgain": "No volver a mostrar" } \ No newline at end of file diff --git a/i18n/esn/extensions/typescript/package.i18n.json b/i18n/esn/extensions/typescript/package.i18n.json index 8d78782bf4e..622b6fc5881 100644 --- a/i18n/esn/extensions/typescript/package.i18n.json +++ b/i18n/esn/extensions/typescript/package.i18n.json @@ -56,5 +56,6 @@ "typescript.locale": "Establece la configuración regional para reportar errores de TypeScript. Requiere TypeScript > = 2.6.0. Por defecto, utiliza el valor 'null' de VS Code para errores de TypeScript.", "javascript.implicitProjectConfig.experimentalDecorators": "Activar/desactivar 'experimentalDecorators' para los archivos JavaScript que no son parte de un proyecto. Los archivos jsconfig.json o tsconfig.json reemplazan esta configuración. Requiere inicio > = 2.3.1. ", "typescript.autoImportSuggestions.enabled": "Habilita o deshabilita sugerencias de importación automática.  Requiere TypeScript >= 2.6.1.", - "typescript.experimental.syntaxFolding": "Habilita/deshabilita los marcadores de plegado sensibles a la sintaxis." + "typescript.experimental.syntaxFolding": "Habilita/deshabilita los marcadores de plegado sensibles a la sintaxis.", + "taskDefinition.tsconfig.description": "Archivo tsconfig que define la compilación de TS." } \ No newline at end of file diff --git a/i18n/esn/extensions/vb/package.i18n.json b/i18n/esn/extensions/vb/package.i18n.json index 35229bd6699..f1d50c0faa9 100644 --- a/i18n/esn/extensions/vb/package.i18n.json +++ b/i18n/esn/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje VB", + "description": "Proporciona fragmentos de código, resaltado de sintaxis, correspondencia de corchetes y plegado de código en archivos de Visual Basic." } \ No newline at end of file diff --git a/i18n/esn/extensions/xml/package.i18n.json b/i18n/esn/extensions/xml/package.i18n.json index 35229bd6699..d4e84bb60dc 100644 --- a/i18n/esn/extensions/xml/package.i18n.json +++ b/i18n/esn/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje XML", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos XML." } \ No newline at end of file diff --git a/i18n/esn/extensions/yaml/package.i18n.json b/i18n/esn/extensions/yaml/package.i18n.json index 35229bd6699..41e8524f44e 100644 --- a/i18n/esn/extensions/yaml/package.i18n.json +++ b/i18n/esn/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Conceptos básicos del lenguaje YAML", + "description": "Proporciona resaltado de sintaxis y correspondencia de corchetes en archivos de YAML." } \ No newline at end of file diff --git a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 6a41a243cf1..9719ad40a2d 100644 --- a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -7,14 +7,22 @@ "Do not edit this file. It is machine generated." ], "previewOnGitHub": "Visualizar en GitHub", + "loadingData": "Cargando datos...", "similarIssues": "Problemas similares", "open": "Abrir", "closed": "Cerrado", "noResults": "No se encontraron resultados", + "settingsSearchIssue": "Problema de búsqueda de configuración", "bugReporter": "Informe de errores", "performanceIssue": "Problema de rendimiento", + "featureRequest": "Solicitud de característica", "stepsToReproduce": "Pasos para reproducir", + "bugDescription": "Indique los pasos necesarios para reproducir el problema. Debe incluir el resultado real y el resultado esperado. Admitimos Markdown al estilo de GitHub. Podrá editar el problema y agregar capturas de pantalla cuando veamos una vista previa en GitHub.", + "performanceIssueDesciption": "¿Cuándo ocurrió este problema de rendimiento? ¿Se produce al inicio o después de realizar una serie específica de acciones? Admitimos Markdown al estilo de GitHub. Podrá editar el problema y agregar capturas de pantalla cuando veamos una vista previa en GitHub.", "description": "Descripción", + "featureRequestDescription": "Describa la característica que le gustaría ver. Admitimos Markdown al estilo de GitHub. Podrá editar esta información y agregar capturas de pantalla cuando veamos una vista previa en GitHub.", "expectedResults": "Resultados esperados", + "settingsSearchResultsDescription": "Indique los resultados que esperaba encontrar cuando usó esta consulta para la búsqueda. Admitimos Markdown al estilo de GitHub. Podrá editar el problema y agregar capturas de pantalla cuando veamos una vista previa en GitHub.", + "pasteData": "Hemos escrito los datos necesarios en su Portapapeles porque eran demasiado grandes para enviarlos. Ahora debe pegarlos.", "disabledExtensions": "Las extensiones están deshabilitadas" } \ No newline at end of file diff --git a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 359f0fb08f4..5e6ecd766bd 100644 --- a/i18n/esn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/esn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -7,15 +7,24 @@ "Do not edit this file. It is machine generated." ], "completeInEnglish": "Por favor complete el formulario en inglés.", + "issueTypeLabel": "Esto es un", "issueTitleLabel": "Título", "issueTitleRequired": "Por favor, introduzca un título.", + "titleLengthValidation": "El título es demasiado largo.", "systemInfo": "Mi información del sistema", "sendData": "Enviar mis datos", "processes": "Procesos actualmente en ejecución", "workspaceStats": "Estadísticas de mi área de trabajo", "extensions": "Mis extensiones", + "searchedExtensions": "Extensiones que se han buscado", + "settingsSearchDetails": "Detalles de la búsqueda de configuración", + "tryDisablingExtensions": "¿Se reproduce el problema cuando están deshabilitadas las extensiones?", "yes": "Sí", "no": "No", + "disableExtensionsLabelText": "Intente reproducir el problema después de {0}.", "disableExtensions": "Deshabilitar todas las extensiones y volver a cargar la ventana", + "showRunningExtensionsLabelText": "Si sospecha que se trata de un problema con una extensión, {0} para notificarlo.", + "showRunningExtensions": "Ver todas las extensiones que están en ejecución", + "details": "Especifique los detalles.", "loadingData": "Cargando datos..." } \ No newline at end of file diff --git a/i18n/esn/src/vs/code/electron-main/logUploader.i18n.json b/i18n/esn/src/vs/code/electron-main/logUploader.i18n.json index c643286c37e..4af98bb7924 100644 --- a/i18n/esn/src/vs/code/electron-main/logUploader.i18n.json +++ b/i18n/esn/src/vs/code/electron-main/logUploader.i18n.json @@ -9,6 +9,10 @@ "invalidEndpoint": "Punto final del registro Uploader no válido", "beginUploading": "Cargando ", "didUploadLogs": "Carga exitosa. ID. del archivo de registro: {0}", + "logUploadPromptHeader": "Va a cargar los registros de sesión en un punto de conexión seguro de Microsoft al que solo tienen acceso miembros del equipo de VS Code de Microsoft.", + "logUploadPromptBody": "Los registros de sesión pueden contener información personal, como rutas de acceso completas o contenido de archivos. Revise y redacte sus archivos de registro de sesión aquí: \"{0}\"", + "logUploadPromptBodyDetails": "Si continúa, confirma que ha revisado y redactado sus archivos de registro de sesión y que consiente que Microsoft los utilice para depurar VS Code.", + "logUploadPromptAcceptInstructions": "Ejecute el código con \"--upload-logs={0}\" para continuar con la carga", "postError": "Error al publicar los registros: {0}", "responseError": "Error al publicar los registros. Consiguió {0} - {1} ", "parseError": "Error al analizar la respuesta", diff --git a/i18n/esn/src/vs/code/electron-main/menus.i18n.json b/i18n/esn/src/vs/code/electron-main/menus.i18n.json index 85fdf82ae3f..5286de3ed56 100644 --- a/i18n/esn/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/esn/src/vs/code/electron-main/menus.i18n.json @@ -93,6 +93,7 @@ "miOpenView": "&& Vista abierta...", "miToggleFullScreen": "Alternar &&pantalla completa", "miToggleZenMode": "Alternar modo zen", + "miToggleCenteredLayout": "Alternar diseño centrado", "miToggleMenuBar": "Alternar &&barra de menús", "miSplitEditor": "Dividir &&editor", "miToggleEditorLayout": "Alternar diseño del grupo de &&editores", @@ -173,7 +174,7 @@ "miLicense": "Ver &&licencia", "miPrivacyStatement": "&&Declaración de privacidad", "miAbout": "&&Acerca de", - "miRunTask": "&&Ejecutar Tarea...", + "miRunTask": "&&Ejecutar tarea... ", "miBuildTask": "Ejecutar &&tarea de compilación...", "miRunningTask": "Mostrar las &&tareas en ejecución", "miRestartTask": "R&&einiciar tarea en ejecución...", diff --git a/i18n/esn/src/vs/code/electron-main/window.i18n.json b/i18n/esn/src/vs/code/electron-main/window.i18n.json index 35229bd6699..bd72eedfb57 100644 --- a/i18n/esn/src/vs/code/electron-main/window.i18n.json +++ b/i18n/esn/src/vs/code/electron-main/window.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hiddenMenuBar": "Aún puede acceder a la barra de menús presionando la tecla Alt." } \ No newline at end of file diff --git a/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 4f128e2031a..0206bd0f46c 100644 --- a/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/esn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "Anular", "cancel": "Cancelar", "errorInstallingDependencies": "Error instalando dependencias. {0}", + "MarketPlaceDisabled": "Marketplace no está habilitado", + "removeError": "Error al quitar la extensión: {0}. Salga e inicie VS Code antes de intentarlo de nuevo.", + "Not Market place extension": "Solo se pueden reinstalar las extensiones de Marketplace", "notFoundCompatible": "No se pueden instalar '{0}'; no hay ninguna versión disponible compatible con VS Code '{1}'. ", "malicious extension": "No se puede instalar la extensión ya que se informó que era problemático.", "notFoundCompatibleDependency": "No se puede instalar porque no se encuentra la extensión dependiente '{0}' compatible con la versión actual '{1}' del VS Code.", diff --git a/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index 616408c3b3e..9f5ae6237d2 100644 --- a/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (extensión)", "defaultSource": "Extensión", "manageExtension": "Administrar extensión", "cancel": "Cancelar", diff --git a/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 35229bd6699..7957a5748f1 100644 --- a/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/esn/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "webview.editor.label": "Editor de vistas web" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json b/i18n/esn/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json index 35229bd6699..0566852f130 100644 --- a/i18n/esn/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json +++ b/i18n/esn/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "unknownDep": "No se pudo activar la extensión \"{1}\" debido a una dependencia desconocida: \"{0}\".", + "failedDep1": "No se pudo activar la extensión \"{1}\" porque no se pudo activar la dependencia \"{0}\".", + "failedDep2": "No se pudo activar la extensión \"{0}\" porque hay más de 10 niveles de dependencias (lo más probable es que sea un bucle de dependencia).", + "activationError": "No se pudo activar la extensión \"{0}\": {1}." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json b/i18n/esn/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json index f4bb246e6ce..dfb57784d13 100644 --- a/i18n/esn/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "toggleCenteredLayout": "Alternar diseño centrado", "view": "Ver" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json index b8df15d12ff..0c66b08e50d 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json @@ -19,12 +19,14 @@ "close": "Cerrar", "closeOthers": "Cerrar otros", "closeRight": "Cerrar a la derecha", + "closeAllSaved": "Cerrar guardados", "closeAll": "Cerrar todo", "keepOpen": "Mantener abierto", "toggleInlineView": "Cambiar vista en línea", "showOpenedEditors": "Mostrar editores abiertos", "keepEditor": "Mantener editor", "closeEditorsInGroup": "Cerrar todos los editores del grupo", + "closeSavedEditors": "Cerrar los editores guardados del grupo", "closeOtherEditors": "Cerrar otros editores", "closeRightEditors": "Cerrar los editores a la derecha" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json index 2265c1d45f1..7e874dd6baf 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json @@ -6,6 +6,11 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "clearNotification": "Borrar notificación", + "clearNotifications": "Borrar todas las notificaciones", "hideNotificationsCenter": "Ocultar notificaciones", - "configureNotification": "Configurar la Notificación" + "expandNotification": "Expandir notificación", + "collapseNotification": "Contraer notificación", + "configureNotification": "Configurar la Notificación", + "copyNotification": "Copiar texto" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index cb05c5aaf0f..369309aa7cb 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notifications": "Notificaciones", + "notificationsToolbar": "Acciones del centro de notificaciones", "notificationsList": "Lista de notificaciones" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 307a69dac12..e924b15c5c8 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -8,5 +8,7 @@ ], "hideNotifications": "Ocultar notificaciones", "zeroNotifications": "No hay notificaciones", - "noNotifications": "No hay nuevas notificaciones" + "noNotifications": "No hay nuevas notificaciones", + "oneNotification": "1 notificación nueva", + "notifications": "{0} notificaciones nuevas" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json index 35229bd6699..51c8e4e7237 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationsToast": "Notificación del sistema" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json index 67b62543d27..85c1c2fba14 100644 --- a/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json +++ b/i18n/esn/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "notificationActions": "Acciones de notificaciones", "notificationSource": "Origen: {0}." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/common/theme.i18n.json b/i18n/esn/src/vs/workbench/common/theme.i18n.json index b0fa110ac11..9a536b10342 100644 --- a/i18n/esn/src/vs/workbench/common/theme.i18n.json +++ b/i18n/esn/src/vs/workbench/common/theme.i18n.json @@ -58,5 +58,13 @@ "titleBarInactiveForeground": "Color de primer plano de la barra de título cuando la ventana está inactiva. Tenga en cuenta que, actualmente, este color solo se admite en macOS.", "titleBarActiveBackground": "Fondo de la barra de título cuando la ventana está activa. Tenga en cuenta que, actualmente, este color solo se admite en macOS.", "titleBarInactiveBackground": "Color de fondo de la barra de título cuando la ventana está inactiva. Tenga en cuenta que, actualmente, este color solo se admite en macOS.", - "titleBarBorder": "Color de borde de la barra de título. Tenga en cuenta que, actualmente, este color se admite solo en macOS." + "titleBarBorder": "Color de borde de la barra de título. Tenga en cuenta que, actualmente, este color se admite solo en macOS.", + "notificationCenterBorder": "Color del borde del centro de notificaciones. Las notificaciones se deslizan desde la parte inferior derecha de la ventana.", + "notificationToastBorder": "Color del borde de las notificaciones del sistema. Las notificaciones se deslizan desde la parte inferior derecha de la ventana.", + "notificationsForeground": "Color de primer plano de las notificaciones. Las notificaciones se deslizan desde la parte inferior derecha de la ventana.", + "notificationsBackground": "Color de fondo de las notificaciones. Las notificaciones se deslizan desde la parte inferior derecha de la ventana.", + "notificationsLink": "Color de primer plano de los vínculos de las notificaciones. Las notificaciones se deslizan desde la parte inferior derecha de la ventana.", + "notificationCenterHeaderForeground": "Color de primer plano del encabezado del centro de notificaciones. Las notificaciones se deslizan desde la parte inferior derecha de la ventana.", + "notificationCenterHeaderBackground": "Color de fondo del encabezado del centro de notificaciones. Las notificaciones se deslizan desde la parte inferior derecha de la ventana.", + "notificationsBorder": "Color de borde que separa las notificaciones en el centro de notificaciones. Las notificaciones se deslizan desde la parte inferior derecha de la ventana." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/esn/src/vs/workbench/electron-browser/actions.i18n.json index 9b26d17ec2b..8c8e17dfa93 100644 --- a/i18n/esn/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/esn/src/vs/workbench/electron-browser/actions.i18n.json @@ -18,6 +18,7 @@ "zoomReset": "Restablecer zoom", "appPerf": "Rendimiento de inicio", "reloadWindow": "Recargar ventana", + "reloadWindowWithExntesionsDisabled": "Recargar la ventana con las extensiones deshabilitadas", "switchWindowPlaceHolder": "Seleccionar una ventana a la que cambiar", "current": "Ventana actual", "close": "Cerrar ventana", @@ -48,5 +49,6 @@ "moveWindowTabToNewWindow": "Mover pestaña de ventana a una nueva ventana", "mergeAllWindowTabs": "Fusionar todas las ventanas", "toggleWindowTabsBar": "Alternar barra de pestañas de ventana", - "about": "Acerca de {0}" + "about": "Acerca de {0}", + "inspect context keys": "Inspeccionar claves de contexto" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 5d8ae0207ef..19e1e0cc44d 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -10,7 +10,10 @@ "functionBreakpointsNotSupported": "Este tipo de depuración no admite puntos de interrupción en funciones", "functionBreakpointPlaceholder": "Función donde interrumpir", "functionBreakPointInputAriaLabel": "Escribir punto de interrupción de función", + "breakpointDisabledHover": "Punto de interrupción deshabilitado", + "breakpointUnverifieddHover": "Punto de interrupción no comprobado", "functionBreakpointUnsupported": "Este tipo de depuración no admite puntos de interrupción en funciones", "breakpointDirtydHover": "Punto de interrupción no comprobado. El archivo se ha modificado, reinicie la sesión de depuración.", - "conditionalBreakpointUnsupported": "Este tipo de depuración no es compatible con los puntos de interrupción condicionales." + "conditionalBreakpointUnsupported": "Este tipo de depuración no es compatible con los puntos de interrupción condicionales.", + "hitBreakpointUnsupported": "Este tipo de depuración no admite el uso de puntos de interrupción condicionales" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json index f413f8710fa..29a3149fe84 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "noFolderDebugConfig": "Abra una carpeta para trabajar con la configuración avanzada de depuración.", + "columnBreakpoint": "Punto de interrupción de columna", "debug": "Depurar", "addColumnBreakpoint": "Agregar punto de interrupción de columna" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json index 48d28579160..82d1a899997 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "unable": "No se puede resolver el recurso sin una sesión de depuración" + "unable": "No se puede resolver el recurso sin una sesión de depuración", + "canNotResolveSource": "No se puede resolver el recurso {0}, no hay respuesta de la extensión de depuración." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index c18a930c279..0f55ee82f03 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "Siempre mostrar debug en la barra de estado", "onFirstSessionStart": "Mostrar debug en la barra de estado solamente después del primero uso de debug", "showInStatusBar": "Controla cuando se debe mostrar la barra de estado de depuración", - "openDebug": "Controla si el viewlet de depuración debería abrirse al inicio de la sesión de depuración.", + "openDebug": "Controla si debe abrirse la vista de depuración al iniciar una sesión de depuración.", "launch": "Configuración de lanzamiento para depuración global. Debe utilizarse como una alternativa a “launch.json” en espacios de trabajo compartidos." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 8683657122f..818cc21eb9a 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -14,9 +14,11 @@ "breakpointRemoved": "Punto de interrupción quitado, línea {0}, archivo {1}", "compoundMustHaveConfigurations": "El compuesto debe tener configurado el atributo \"configurations\" a fin de iniciar varias configuraciones.", "noConfigurationNameInWorkspace": "No se pudo encontrar la configuración de inicio ' {0} ' en el espacio de trabajo.", + "multipleConfigurationNamesInWorkspace": "Hay varias configuraciones de inicio \"{0}\" en el área de trabajo. Use el nombre de la carpeta para calificar la configuración.", "noFolderWithName": "No se puede encontrar la carpeta con el nombre ' {0} ' para la configuración ' {1} ' en el compuesto ' {2} '.", "configMissing": "La configuración \"{0}\" falta en \"launch.json\".", "launchJsonDoesNotExist": "'launch.json' no existe.", + "debugRequestNotSupported": "El atributo \"{0}\" tiene un valor no admitido ({1}) en la configuración de depuración elegida.", "debugRequesMissing": "El atributo '{0}' está ausente en la configuración de depuración elegida. ", "debugTypeNotSupported": "El tipo de depuración '{0}' configurado no es compatible.", "debugTypeMissing": "Falta la propiedad \"type\" en la configuración de inicio seleccionada.", diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json index 4059528d80a..e9747f31c44 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "copyValue": "Copiar valor", + "copyAsExpression": "Copiar como expresión", "copy": "Copiar", "copyAll": "Copiar todo", "copyStackTrace": "Copiar pila de llamadas" diff --git a/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index ca10e7d21f0..8661e63bcbe 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "Claro por defecto", "defaultHC": "Contraste alto por defecto", "JSON Validation": "Validación JSON ({0})", + "fileMatch": "Coincidencia de archivo", + "schema": "Esquema", "commands": "Comandos ({0})", "command name": "Nombre", "keyboard shortcuts": "Métodos abreviados de teclado", diff --git a/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 8df2ad7b2d4..d1cf9483c41 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "Descargar manualmente", + "install vsix": "Una vez descargado el VSIX de \"{0}\", instálelo manualmente.", "installAction": "Instalar", "installing": "Instalando", + "failedToInstall": "No se pudo instalar \"{0}\".", "uninstallAction": "Desinstalación", "Uninstalling": "Desinstalando", "updateAction": "Actualizar", "updateTo": "Actualizar a {0}", + "failedToUpdate": "No se pudo actualizar \"{0}\".", "ManageExtensionAction.uninstallingTooltip": "Desinstalando", "enableForWorkspaceAction": "Habilitar (área de trabajo)", "enableGloballyAction": "Habilitar", @@ -56,6 +60,18 @@ "malicious": "Malintencionado", "disableAll": "Deshabilitar todas las extensiones instaladas", "disableAllWorkspace": "Deshabilitar todas las extensiones instaladas para esta área de trabajo", + "enableAll": "Habilitar todas las extensiones", + "enableAllWorkspace": "Habilitar todas las extensiones para esta área de trabajo", + "openExtensionsFolder": "Abrir carpeta de extensiones", + "installVSIX": "Instalar desde VSIX...", + "installFromVSIX": "Instalar desde VSIX", + "installButton": "&&Instalar", + "InstallVSIXAction.success": "La extensión se instaló correctamente. Reinicie para habilitarla.", + "InstallVSIXAction.reloadNow": "Recargar ahora", + "reinstall": "Reinstalar extensión...", + "selectExtension": "Seleccione una extensión para reinstalarla", + "ReinstallAction.success": "La extensión se reinstaló correctamente.", + "ReinstallAction.reloadNow": "Recargar ahora", "extensionButtonProminentBackground": "Color de fondo del botón para la extensión de acciones que se destacan (por ejemplo, el botón de instalación).", "extensionButtonProminentForeground": "Color de primer plano del botón para la extensión de acciones que se destacan (por ejemplo, botón de instalación).", "extensionButtonProminentHoverBackground": "Color de fondo del botón al mantener el mouse para la extensión de acciones que se destacan (por ejemplo, el botón de instalación)." diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 8177afe5841..b5e53f1bf34 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "Generar perfil de extensiones", + "restart2": "Para generar el perfil de las extensiones, es necesario reiniciar el sistema. ¿Desea reiniciar \"{0}\" ahora?", "restart3": "Reiniciar", "cancel": "Cancelar", "selectAndStartDebug": "Haga clic aquí para detener la generación de perfiles." diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index f5664bf0a4e..7a8e29d1760 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -8,6 +8,7 @@ ], "neverShowAgain": "No volver a mostrar", "searchMarketplace": "Buscar en Marketplace ", + "showLanguagePackExtensions": "Marketplace tiene extensiones que pueden facilitar la adaptación de VS Code a la configuración regional \"{0}\"", "dynamicWorkspaceRecommendation": "Esta extensión podría interesarle porque muchos otros usuarios del repositorio {0} la utilizan.", "exeBasedRecommendation": "Se recomienda esta extensión porque tiene instalado {0} . ", "fileBasedRecommendation": "Esta extensión se recomienda basado en los archivos que abrió recientemente.", diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 896424f6a2c..7e5657b2ee0 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,7 @@ "recommendedExtensions": "Recomendado", "otherRecommendedExtensions": "Otras recomendaciones", "workspaceRecommendedExtensions": "Recomendaciones de espacio de trabajo", + "builtInExtensions": "Integrado", "searchExtensions": "Buscar extensiones en Marketplace", "sort by installs": "Criterio de ordenación: Número de instalaciones", "sort by rating": "Criterio de ordenación: Clasificación", diff --git a/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json index 666ea16cd1d..1dbea27e453 100644 --- a/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json @@ -29,6 +29,7 @@ "compareSelected": "Comparar seleccionados", "close": "Cerrar", "closeOthers": "Cerrar otros", + "closeSaved": "Cerrar guardados", "closeAll": "Cerrar todo", "deleteFile": "Eliminar permanentemente" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 0e53011e602..88a1e52e347 100644 --- a/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -39,6 +39,8 @@ "importFiles": "Importar archivos", "confirmOverwrite": "Ya existe un archivo o carpeta con el mismo nombre en la carpeta de destino. ¿Quiere reemplazarlo?", "replaceButtonLabel": "&&Reemplazar", + "fileIsAncestor": "El archivo que se va a pegar es un antecesor de la carpeta de destino", + "fileDeleted": "El archivo que se iba a pegar se ha eliminado o movido mientras tanto", "duplicateFile": "Duplicado", "globalCompareFile": "Comparar archivo activo con...", "openFileToCompare": "Abrir un archivo antes para compararlo con otro archivo.", diff --git a/i18n/esn/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json b/i18n/esn/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json index 2c92ad6f356..c8225196607 100644 --- a/i18n/esn/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "userGuide": "Use las acciones de la barra de herramientas del editor para deshacer los cambios o sobrescribir el contenido del disco con los cambios.", + "staleSaveError": "No se pudo guardar \"{0}\". El contenido del disco es más reciente. Compare su versión con la del disco.", "retry": "Reintentar", "discard": "Descartar", "readonlySaveErrorAdmin": "No se pudo guardar '{0}': El archivo está protegido contra escritura. Seleccione 'Sobrescribir como Admin' para volverlo a intentar como administrador.", diff --git a/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json b/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json index bc84be58bdf..e3d585e8769 100644 --- a/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "label": "Explorador", - "canNotResolve": "No se puede resolver la carpeta de trabajo" + "canNotResolve": "No se puede resolver la carpeta de trabajo", + "symbolicLlink": "Vínculo simbólico" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index a5999740f1e..1bcad541fa7 100644 --- a/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Escriba el nombre de archivo. Presione ENTRAR para confirmar o Esc para cancelar", + "constructedPath": "Crear {0} en **{1}**", "filesExplorerViewerAriaLabel": "{0}, Explorador de archivos", "dropFolders": "¿Quiere agregar las carpetas al área de trabajo?", "dropFolder": "¿Quiere agregar la carpeta al área de trabajo?", diff --git a/i18n/esn/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/esn/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index 28ecf4a4ae6..38469956531 100644 --- a/i18n/esn/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editor.action.webvieweditor.showFind": "Foco Encontrar Widget" + "editor.action.webvieweditor.showFind": "Foco Encontrar Widget", + "openToolsLabel": "Abrir herramientas de desarrollo de vistas web", + "refreshWebviewLabel": "Recargar vistas web" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/esn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 9987392f1d2..b0f61204eeb 100644 --- a/i18n/esn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -20,6 +20,7 @@ "showSameKeybindings": "Mostrar mismo KeyBindings ", "copyLabel": "Copiar", "copyCommandLabel": "Comando Copiar", + "error": "Error \"{0}\" al editar el enlace de teclado. Abra el archivo \"keybindings.json\" y compruebe si tiene errores.", "command": "Comando", "keybinding": "Enlace de teclado", "source": "Origen", diff --git a/i18n/esn/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json b/i18n/esn/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json index ad8d0bb5feb..9411cebaec2 100644 --- a/i18n/esn/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json @@ -12,6 +12,7 @@ "entryAriaLabelWithKey": "{0}, {1}, comandos", "entryAriaLabel": "{0}, comandos", "actionNotEnabled": "El comando '{0}' no está habilitado en el contexto actual.", + "canNotRun": "El comando \"{0}\" dio error.", "recentlyUsed": "usado recientemente", "morecCommands": "otros comandos", "cat.title": "{0}: {1}", diff --git a/i18n/esn/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json index b5581db88a5..dcde42ae5b9 100644 --- a/i18n/esn/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json @@ -12,5 +12,6 @@ "view": "Ver", "scmConfigurationTitle": "SCM", "alwaysShowProviders": "Si desea mostrar siempre la sección proveedor de control de código fuente.", - "diffDecorations": "Controla las decoraciones de diff en el editor." + "diffDecorations": "Controla las decoraciones de diff en el editor.", + "diffGutterWidth": "Controla el ancho (px) de las decoraciones de diferencias en el medianil (agregadas y modificadas)." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 18a11b2ccb1..1cb9f6c349e 100644 --- a/i18n/esn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,5 +25,6 @@ "search.quickOpen.includeSymbols": "Configurar para incluir los resultados de una búsqueda global de símbolos en los resultados de archivos de Quick Open.", "search.followSymlinks": "Controla si debe seguir enlaces simbólicos durante la búsqueda.", "search.smartCase": "Proporciona busquedas de mayúsculas y minúsculas si el patrón es todo en minúsculas, de lo contrario, busca en mayúsculas y minúsculas", - "search.globalFindClipboard": "Controla si la Viewlet de búsqueda debe leer o modificar el portapapeles de búsqueda compartido en macOS" + "search.globalFindClipboard": "Controla si la vista de búsqueda debe leer o modificar el portapapeles de búsqueda compartido en macOS", + "search.location": "Vista previa: controla si se muestra la búsqueda como una vista en la barra lateral o como un panel en el área de paneles para tener más espacio horizontal. En la próxima versión, la búsqueda en panel tendrá una distribución horizontal mejorada y dejará de ser una vista previa." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/esn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index 67738e91857..485b6c325bf 100644 --- a/i18n/esn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -7,9 +7,13 @@ "Do not edit this file. It is machine generated." ], "ProblemPatternParser.loopProperty.notLast": "La propiedad loop solo se admite en el buscador de coincidencias de la última línea.", + "ProblemPatternParser.problemPattern.kindProperty.notFirst": "El patrón de problema no es válido. El tipo de propiedad debe proporcionarse solo en el primer elemento.", "ProblemPatternParser.problemPattern.missingRegExp": "Falta una expresión regular en el patrón de problema.", + "ProblemPatternParser.problemPattern.missingProperty": "El patrón de problema no es válido. Debe tener al menos un archivo y un mensaje.", + "ProblemPatternParser.problemPattern.missingLocation": "El patrón de problema no es válido. Debe tener el tipo \"file\" o un grupo de coincidencias de línea o ubicación.", "ProblemPatternParser.invalidRegexp": "Error: La cadena {0} no es una expresión regular válida.\n", "ProblemPatternSchema.regexp": "Expresión regular para encontrar un error, una advertencia o información en la salida.", + "ProblemPatternSchema.kind": "Indica si el patrón coincide con una ubicación (archivo y línea) o solo un archivo.", "ProblemPatternSchema.file": "Índice de grupo de coincidencias del nombre de archivo. Si se omite, se usa 1.", "ProblemPatternSchema.location": "Índice de grupo de coincidencias de la ubicación del problema. Los patrones de ubicación válidos son: (line), (line,column) y (startLine,startColumn,endLine,endColumn). Si se omite, se asume el uso de (line,column).", "ProblemPatternSchema.line": "Índice de grupo de coincidencias de la línea del problema. Valor predeterminado: 2.", diff --git a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index d3bad486b12..6613231543f 100644 --- a/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -28,6 +28,8 @@ "selectProblemMatcher": "Seleccione qué tipo de errores y advertencias deben buscarse durante el examen de la salida de la tarea", "customizeParseErrors": "La configuración actual de tareas contiene errores. Antes de personalizar una tarea, corrija los errores.", "moreThanOneBuildTask": "Hay muchas tareas de compilación definidas en el archivo tasks.json. Se ejecutará la primera.\n", + "TaskSystem.activeSame.background": "La tarea \"{0}\" ya está activa en segundo plano. Para terminarla, use la opción \"Terminar tarea\" del menú Tareas.", + "TaskSystem.activeSame.noBackground": "La tarea \"{0}\" ya está activa. Para terminarla, use la opción \"Terminar tarea\" del menú Tareas.", "TaskSystem.active": "Ya hay una tarea en ejecución. Finalícela antes de ejecutar otra tarea.", "TaskSystem.restartFailed": "No se pudo terminar y reiniciar la tarea {0}", "TaskService.noConfiguration": "Error: La detección de tarea {0} no encontró una tarea para la siguiente configuración:\n{1}\nLa tarea será omitida.\n", @@ -44,6 +46,7 @@ "recentlyUsed": "Tareas usadas recientemente", "configured": "tareas configuradas", "detected": "tareas detectadas", + "TaskService.ignoredFolder": "Las siguientes carpetas del área de trabajo se omitirán porque utilizan la versión 0.1.0 de la tarea: {0}", "TaskService.notAgain": "No volver a mostrar", "TaskService.pickRunTask": "Seleccione la tarea a ejecutar", "TaslService.noEntryToRun": "No se encontraron tareas para ejecutar. Configurar tareas...", diff --git a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json index f12d6ac1dcf..b168b6691a4 100644 --- a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json @@ -20,10 +20,13 @@ "terminal.integrated.fontFamily": "Controla la familia de fuentes del terminal, que está establecida de manera predeterminada en el valor de editor.fontFamily.", "terminal.integrated.fontSize": "Controla el tamaño de la fuente en píxeles del terminal.", "terminal.integrated.lineHeight": "Controla el alto de línea del terminal. Este número se multiplica por el tamaño de fuente del terminal para obtener el alto de línea real en píxeles.", + "terminal.integrated.fontWeight": "Espesor de fuente que debe usarse en el terminal para el texto que no está en negrita.", + "terminal.integrated.fontWeightBold": "Espesor de fuente que debe usarse en el terminal para el texto en negrita.", "terminal.integrated.cursorBlinking": "Controla si el cursor del terminal parpadea.", "terminal.integrated.cursorStyle": "Controla el estilo de cursor del terminal.", "terminal.integrated.scrollback": "Controla la cantidad máxima de líneas que mantiene el terminal en su búfer.", "terminal.integrated.setLocaleVariables": "Controla si las variables de configuración regional se definen al inicio del terminal. El valor predeterminado es true en OS X y false en las demás plataformas.", + "terminal.integrated.rightClickBehavior": "Controla el modo en el que el terminal reacciona al clic con el botón derecho. Las posibilidades son \"default\", \"copyPaste\" y \"selectWord\". \"default\" muestra el menú contextual. \"copyPaste\" copia si hay algo seleccionado; de lo contrario, pega. \"selectWord\" selecciona la palabra que hay debajo del cursor y muestra el menú contextual.", "terminal.integrated.cwd": "Una ruta de acceso de inicio explícita en la que se iniciará el terminal; se utiliza como el directorio de trabajo actual (cwd) para el proceso de shell. Puede resultar especialmente útil en una configuración de área de trabajo si la raíz de directorio no es un cwd práctico.", "terminal.integrated.confirmOnExit": "Indica si debe confirmarse a la salida si hay sesiones de terminal activas.", "terminal.integrated.enableBell": "Si la campana terminal está activada o no.", @@ -32,6 +35,7 @@ "terminal.integrated.env.linux": "Objeto con variables de entorno que se agregarán al proceso de VS Code para que las use el terminal en Linux", "terminal.integrated.env.windows": "Objeto con variables de entorno que se agregarán al proceso de VS Code para que las use el terminal en Windows", "terminal.integrated.showExitAlert": "Mostrar alerta 'El proceso de terminal terminó con el código de salida ' cuando el código de salida no es cero.", + "terminal.integrated.experimentalRestore": "Indica si se restauran automáticamente las sesiones del terminal para el área de trabajo cuando se inicia VS Code. Esta es una opción experimental; puede tener errores y podría cambiar en el futuro.", "terminalCategory": "Terminal", "viewCategory": "Ver" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index dc3a3a2aa6d..1c13a74b033 100644 --- a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -14,10 +14,19 @@ "workbench.action.terminal.selectAll": "Seleccionar todo", "workbench.action.terminal.deleteWordLeft": "Eliminar una palabra a la izquierda", "workbench.action.terminal.deleteWordRight": "Eliminar una palabra a la derecha", + "workbench.action.terminal.moveToLineStart": "Mover al principio de la línea", + "workbench.action.terminal.moveToLineEnd": "Mover al final de la línea", "workbench.action.terminal.new": "Crear nuevo terminal integrado", "workbench.action.terminal.new.short": "Nuevo terminal", "workbench.action.terminal.newWorkspacePlaceholder": "Seleccione el directorio de trabajo actual para el nuevo terminal", "workbench.action.terminal.newInActiveWorkspace": "Crear nuevo terminal integrado (en el espacio de trabajo activo)", + "workbench.action.terminal.split": "Dividir terminal", + "workbench.action.terminal.focusPreviousPane": "Aplicar el foco al panel anterior", + "workbench.action.terminal.focusNextPane": "Aplicar el foco al panel siguiente", + "workbench.action.terminal.resizePaneLeft": "Cambiar el tamaño del panel por la izquierda", + "workbench.action.terminal.resizePaneRight": "Cambiar el tamaño del panel por la derecha", + "workbench.action.terminal.resizePaneUp": "Cambiar el tamaño del panel por arriba", + "workbench.action.terminal.resizePaneDown": "Cambiar el tamaño del panel por abajo", "workbench.action.terminal.focus": "Enfocar terminal", "workbench.action.terminal.focusNext": "Enfocar terminal siguiente", "workbench.action.terminal.focusPrevious": "Enfocar terminal anterior", @@ -26,6 +35,7 @@ "workbench.action.terminal.runSelectedText": "Ejecutar texto seleccionado en el terminal activo", "workbench.action.terminal.runActiveFile": "Ejecutar el archivo activo en la terminal activa", "workbench.action.terminal.runActiveFile.noFile": "Solo se pueden ejecutar en la terminal los archivos en disco", + "workbench.action.terminal.switchTerminal": "Cambiar terminal", "workbench.action.terminal.scrollDown": "Desplazar hacia abajo (línea)", "workbench.action.terminal.scrollDownPage": "Desplazar hacia abajo (página)", "workbench.action.terminal.scrollToBottom": "Desplazar al final", diff --git a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index d5630179464..452c57e6943 100644 --- a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,5 +11,6 @@ "terminalCursor.foreground": "Color de primer plano del cursor del terminal.", "terminalCursor.background": "Color de fondo del cursor del terminal. Permite personalizar el color de un carácter solapado por un cursor de bloque.", "terminal.selectionBackground": "Color de fondo de selección del terminal.", + "terminal.border": "Color del borde que separa paneles divididos en el terminal. El valor predeterminado es panel.border.", "terminal.ansiColor": "color ANSI ' {0} ' en el terminal." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json index b7fa6cf1667..9b9c6d0cbc3 100644 --- a/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json @@ -8,7 +8,9 @@ ], "terminal.integrated.a11yBlankLine": "Línea en blanco", "terminal.integrated.a11yPromptLabel": "Entrada de terminal", + "terminal.integrated.a11yTooMuchOutput": "Demasiada salida para anunciarla. Vaya a las filas manualmente para leerlas.", "terminal.integrated.copySelection.noSelection": "El terminal no tiene ninguna selección para copiar", "terminal.integrated.exitedWithCode": "El proceso del terminal finalizó con el código de salida: {0}", - "terminal.integrated.waitOnExit": "Presione cualquier tecla para cerrar el terminar" + "terminal.integrated.waitOnExit": "Presione cualquier tecla para cerrar el terminar", + "terminal.integrated.launchFailed": "No se pudo iniciar el comando de proceso del terminal \"{0}{1}\" (código de salida: {2})" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index 7f31fd3941e..330fde9328b 100644 --- a/i18n/esn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "openWorkspaceSettings": "Abrir configuración del área de trabajo", - "dontShowAgain": "No volver a mostrar" + "dontShowAgain": "No volver a mostrar", + "unsupportedWorkspaceSettings": "Esta área de trabajo contiene valores de configuración que solo se pueden establecer en Configuración de usuario ({0}). Haga clic [aquí]({1}) para obtener más información." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json index c28b2b771d4..0c545a6b005 100644 --- a/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -11,8 +11,12 @@ "releaseNotes": "Notas de la versión", "showReleaseNotes": "Mostrar las notas de la versión", "read the release notes": "{0} v{1}. ¿Quiere leer las notas de la versión?", + "licenseChanged": "Los términos de licencia han cambiado. Haga clic [aquí]({0}) para revisarlos.", "neveragain": "No volver a mostrar", + "64bitisavailable": "Ya está disponible {0} para Windows de 64 bits. Haga clic [aquí]({1}) para obtener más información.", "updateIsReady": "Nueva actualización de {0} disponible.", + "noUpdatesAvailable": "Actualmente, no hay actualizaciones disponibles.", + "ok": "Aceptar", "download now": "Descargar ahora", "thereIsUpdateAvailable": "Hay una actualización disponible.", "installUpdate": "Instalar la actualización ", diff --git a/i18n/esn/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json b/i18n/esn/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json index 0439de31472..4f4bf42a65b 100644 --- a/i18n/esn/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json +++ b/i18n/esn/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json @@ -22,6 +22,7 @@ "menus.editorTabContext": "El menú contextual de pestañas del editor", "menus.debugCallstackContext": "El menú contextual de la pila de llamadas de depuración", "menus.scmTitle": "El menú del título Control de código fuente", + "menus.scmSourceControl": "El menú de control de código fuente", "menus.resourceGroupContext": "El menú contextual del grupo de recursos de Control de código fuente", "menus.resourceStateContext": "El menú contextual de estado de recursos de Control de código fuente", "view.viewTitle": "El menú de título de vista contribuida", diff --git a/i18n/esn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/esn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index c49fa03c1ef..890db5376d9 100644 --- a/i18n/esn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -16,6 +16,16 @@ "errorInvalidWorkspaceTarget": "No se puede escribir a la configuración del espacio de trabajo porque {0} no soporta a un espacio de trabajo con multi carpetas.", "errorInvalidFolderTarget": "No se puede escribir en Configuración de carpeta porque no se ha proporcionado ningún recurso.", "errorNoWorkspaceOpened": "No se puede escribir en {0} porque no hay ninguna área de trabajo abierta. Abra un área de trabajo y vuelva a intentarlo.", + "errorInvalidTaskConfiguration": "No se puede escribir en el archivo de configuración de tareas. Por favor, ábralo para corregir sus errores/advertencias e inténtelo de nuevo.", + "errorInvalidLaunchConfiguration": "No se puede escribir en el archivo de configuración de inicio. Ábralo para corregir los posibles errores o advertencias que tenga y vuelva a intentarlo.", + "errorInvalidConfiguration": "No se puede escribir en la configuración de usuario. Ábrala para corregir los posibles errores o advertencias que tenga y vuelva a intentarlo.", + "errorInvalidConfigurationWorkspace": "No se puede escribir en la configuración del área de trabajo. Por favor, abra la configuración del área de trabajo para corregir los errores/advertencias en el archivo e inténtelo de nuevo.", + "errorInvalidConfigurationFolder": "No se puede escribir en la configuración de carpeta. Abra la configuración de la carpeta \"{0}\" para corregir los posibles errores o advertencias que tenga y vuelva a intentarlo.", + "errorTasksConfigurationFileDirty": "No se puede escribir en el archivo de configuración de tareas porque se ha modificado. Guarde primero el archivo y vuelva a intentarlo.", + "errorLaunchConfigurationFileDirty": "No se puede escribir en el archivo de configuración de inicio porque se ha modificado. Guarde primero el archivo y vuelva a intentarlo.", + "errorConfigurationFileDirty": "No se puede escribir en el archivo de configuración de usuario porque se ha modificado. Guarde primero el archivo y vuelva a intentarlo.", + "errorConfigurationFileDirtyWorkspace": "No se puede escribir en el archivo de configuración del área de trabajo porque se ha modificado. Guarde primero el archivo y vuelva a intentarlo.", + "errorConfigurationFileDirtyFolder": "No se puede escribir en el archivo de configuración de carpeta porque se ha modificado. Guarde primero el archivo de configuración de la carpeta \"{0}\" y vuelva a intentarlo.", "userTarget": "Configuración de usuario", "workspaceTarget": "Configuración de área de trabajo", "folderTarget": "Configuración de carpeta" diff --git a/i18n/esn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/esn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index c6e20a5fff0..29f353047f0 100644 --- a/i18n/esn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/esn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "Descripción del distintivo.", "vscode.extension.extensionDependencies": "Dependencias a otras extensiones. El identificador de una extensión siempre es ${publisher}.${name}. Por ejemplo: vscode.csharp.", "vscode.extension.scripts.prepublish": "Script que se ejecuta antes de publicar el paquete como extensión VS Code.", + "vscode.extension.scripts.uninstall": "Enlace de desinstalación para la extensión de VS Code. Script que se ejecuta cuando la extensión se ha desinstalado por completo de VS Code, que es cuando VS Code se reinicia (se cierra y se inicia) después de haberse desinstalado la extensión. Solo se admiten scripts de Node.", "vscode.extension.icon": "Ruta de acceso a un icono de 128 x 128 píxeles." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 5e1f167f64d..3170eed61fb 100644 --- a/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -10,5 +10,7 @@ "neverShowAgain": "No volver a mostrar", "netVersionError": "Requiere Microsoft .NET Framework 4.5. Siga el vínculo para instalarlo.", "learnMore": "Instrucciones", + "enospcError": "{0} está a punto de agotar los identificadores de archivo. Por favor siga el enlace de instrucciones para resolver este problema.", + "binFailed": "No se pudo mover \"{0}\" a la papelera de reciclaje", "trashFailed": "No se pudo mover '{0}' a la papelera" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/esn/src/vs/workbench/services/files/node/fileService.i18n.json index 69847e82751..7f057c36490 100644 --- a/i18n/esn/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,6 +9,7 @@ "fileInvalidPath": "Recurso de archivo no válido ({0})", "fileIsDirectoryError": "Archivo es el directorio", "fileNotModifiedError": "Archivo no modificado desde", + "fileTooLargeForHeapError": "El tamaño del archivo excede el límite de memoria de la ventana, intente ejecutarlo con --max-memory=NUEVOTAMAÑO", "fileTooLargeError": "Archivo demasiado grande para abrirlo", "fileNotFoundError": "Archivo no encontrado ({0})", "fileBinaryError": "El archivo parece ser binario y no se puede abrir como texto", diff --git a/i18n/esn/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json b/i18n/esn/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json index 28a4da0e99d..c5f8d60d0be 100644 --- a/i18n/esn/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json +++ b/i18n/esn/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json @@ -11,6 +11,7 @@ "schema.token.background.warning": "En este momento los colores de fondo para Token no están soportados.", "schema.token.fontStyle": "Estilo de fuente de la regla: 'cursiva', 'negrita' o 'subrayado' o una combinación. La cadena vacía desestablece la configuración heredada.", "schema.fontStyle.error": "El estilo de fuente debe ser ' cursiva', ' negrita' o ' subrayado ' o una combinación o la cadena vacía.", + "schema.token.fontStyle.none": "Ninguno (borrar el estilo heredado)", "schema.properties.name": "Descripción de la regla.", "schema.properties.scope": "Selector de ámbito con el que se compara esta regla.", "schema.tokenColors.path": "Ruta a un archivo tmTheme (relativa al archivo actual).", diff --git a/i18n/esn/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json b/i18n/esn/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json index 991f8eb3439..3fc80146a13 100644 --- a/i18n/esn/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json +++ b/i18n/esn/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "errorInvalidTaskConfiguration": "No se puede escribir en el archivo de configuración del espacio de trabajo. Por favor, abra el archivo para corregir sus errores/advertencias e inténtelo de nuevo.", - "errorWorkspaceConfigurationFileDirty": "No se puede escribir en el archivo de configuración de espacio de trabajo porque el archivo ha sido modificado. Por favor, guárdelo y vuelva a intentarlo." + "errorWorkspaceConfigurationFileDirty": "No se puede escribir en el archivo de configuración de espacio de trabajo porque el archivo ha sido modificado. Por favor, guárdelo y vuelva a intentarlo.", + "openWorkspaceConfigurationFile": "Configuración del espacio de trabajo abierta" } \ No newline at end of file diff --git a/i18n/fra/extensions/bat/package.i18n.json b/i18n/fra/extensions/bat/package.i18n.json index 35229bd6699..423047efe72 100644 --- a/i18n/fra/extensions/bat/package.i18n.json +++ b/i18n/fra/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Windows Bat", + "description": "Fournit des extraits de code, la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers de commandes Windows." } \ No newline at end of file diff --git a/i18n/fra/extensions/clojure/package.i18n.json b/i18n/fra/extensions/clojure/package.i18n.json index 35229bd6699..1113e349fc9 100644 --- a/i18n/fra/extensions/clojure/package.i18n.json +++ b/i18n/fra/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Clojure", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Clojure." } \ No newline at end of file diff --git a/i18n/fra/extensions/coffeescript/package.i18n.json b/i18n/fra/extensions/coffeescript/package.i18n.json index f4048090c1b..870afb5d5c3 100644 --- a/i18n/fra/extensions/coffeescript/package.i18n.json +++ b/i18n/fra/extensions/coffeescript/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Bases du langage CoffeeScript" + "displayName": "Bases du langage CoffeeScript", + "description": "Fournit des extraits de code, la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers CoffeeScript." } \ No newline at end of file diff --git a/i18n/fra/extensions/configuration-editing/package.i18n.json b/i18n/fra/extensions/configuration-editing/package.i18n.json index 5fe0c566062..b1e0df5374a 100644 --- a/i18n/fra/extensions/configuration-editing/package.i18n.json +++ b/i18n/fra/extensions/configuration-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Configuration de l'édition", - "description": "Fournit des fonctionnalités (intelli-sense avancé, auto-correction) dans les fichiers de configuration comme les fichiers de paramètres, de lancement et les recommandations d'extension" + "description": "Fournit des fonctionnalités (IntelliSense avancé, correction automatique) dans les fichiers de configuration comme les fichiers de paramètres, de lancement et de recommandation d'extension." } \ No newline at end of file diff --git a/i18n/fra/extensions/cpp/package.i18n.json b/i18n/fra/extensions/cpp/package.i18n.json index 35229bd6699..e451e349d6f 100644 --- a/i18n/fra/extensions/cpp/package.i18n.json +++ b/i18n/fra/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage C/C++", + "description": "Fournit des extraits de code, la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers C/C++." } \ No newline at end of file diff --git a/i18n/fra/extensions/csharp/package.i18n.json b/i18n/fra/extensions/csharp/package.i18n.json index 35229bd6699..f7664bed014 100644 --- a/i18n/fra/extensions/csharp/package.i18n.json +++ b/i18n/fra/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage C#", + "description": "Fournit les extraits de code, la coloration syntaxique, la correspondance des parenthèses et le repliement dans les fichiers C#." } \ No newline at end of file diff --git a/i18n/fra/extensions/docker/package.i18n.json b/i18n/fra/extensions/docker/package.i18n.json index 35229bd6699..150b17c9eaa 100644 --- a/i18n/fra/extensions/docker/package.i18n.json +++ b/i18n/fra/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Docker", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Docker." } \ No newline at end of file diff --git a/i18n/fra/extensions/emmet/package.i18n.json b/i18n/fra/extensions/emmet/package.i18n.json index b0d8c038b77..498ecb9bffd 100644 --- a/i18n/fra/extensions/emmet/package.i18n.json +++ b/i18n/fra/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Prise en charge d'Emmet pour VS Code", "command.wrapWithAbbreviation": "Envelopper avec une abréviation", "command.wrapIndividualLinesWithAbbreviation": "Envelopper les lignes individuelles avec une abréviation", "command.removeTag": "Supprimer le Tag", diff --git a/i18n/fra/extensions/extension-editing/package.i18n.json b/i18n/fra/extensions/extension-editing/package.i18n.json index 211704ba8b1..eb3d8ff1ee7 100644 --- a/i18n/fra/extensions/extension-editing/package.i18n.json +++ b/i18n/fra/extensions/extension-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Edition de fichier Package", - "description": "Fournit de l'intelli-sense pour les points d'extensions VS Code et des fonctionnalités de linting dans les fichiers Package json" + "description": "Fournit IntelliSense pour les points d'extension VS Code et les fonctionnalités de linting dans les fichiers package.json." } \ No newline at end of file diff --git a/i18n/fra/extensions/fsharp/package.i18n.json b/i18n/fra/extensions/fsharp/package.i18n.json index 35229bd6699..049532caf2d 100644 --- a/i18n/fra/extensions/fsharp/package.i18n.json +++ b/i18n/fra/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage F#", + "description": "Fournit des extraits de code, la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers F#." } \ No newline at end of file diff --git a/i18n/fra/extensions/git/out/autofetch.i18n.json b/i18n/fra/extensions/git/out/autofetch.i18n.json index 2fa364c809d..3f1feec0c84 100644 --- a/i18n/fra/extensions/git/out/autofetch.i18n.json +++ b/i18n/fra/extensions/git/out/autofetch.i18n.json @@ -8,5 +8,6 @@ ], "yes": "Oui", "no": "Non", - "not now": "Me demander plus tard" + "not now": "Me demander plus tard", + "suggest auto fetch": "Voulez-vous que Code exécute [périodiquement 'git fetch']({0}) ?" } \ No newline at end of file diff --git a/i18n/fra/extensions/go/package.i18n.json b/i18n/fra/extensions/go/package.i18n.json index 35229bd6699..784c0e68f27 100644 --- a/i18n/fra/extensions/go/package.i18n.json +++ b/i18n/fra/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Go", + "description": "Fournit la coloration syntaxique et la correspondance de parenthèses dans les fichiers Go." } \ No newline at end of file diff --git a/i18n/fra/extensions/groovy/package.i18n.json b/i18n/fra/extensions/groovy/package.i18n.json index 35229bd6699..8741fad8c79 100644 --- a/i18n/fra/extensions/groovy/package.i18n.json +++ b/i18n/fra/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Groovy", + "description": "Fournit des extraits de code, la coloration syntaxique et la correspondance des crochets dans les fichiers Groovy." } \ No newline at end of file diff --git a/i18n/fra/extensions/handlebars/package.i18n.json b/i18n/fra/extensions/handlebars/package.i18n.json index 35229bd6699..85c6638b8bd 100644 --- a/i18n/fra/extensions/handlebars/package.i18n.json +++ b/i18n/fra/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Handlebars", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Handlebars." } \ No newline at end of file diff --git a/i18n/fra/extensions/hlsl/package.i18n.json b/i18n/fra/extensions/hlsl/package.i18n.json index 35229bd6699..4ed80f76a4f 100644 --- a/i18n/fra/extensions/hlsl/package.i18n.json +++ b/i18n/fra/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage HLSL", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers HLSL." } \ No newline at end of file diff --git a/i18n/fra/extensions/ini/package.i18n.json b/i18n/fra/extensions/ini/package.i18n.json index 35229bd6699..e41be7867e3 100644 --- a/i18n/fra/extensions/ini/package.i18n.json +++ b/i18n/fra/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Ini", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Ini." } \ No newline at end of file diff --git a/i18n/fra/extensions/java/package.i18n.json b/i18n/fra/extensions/java/package.i18n.json index 35229bd6699..041afb54852 100644 --- a/i18n/fra/extensions/java/package.i18n.json +++ b/i18n/fra/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Java", + "description": "Fournit des extraits de code, la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers Java." } \ No newline at end of file diff --git a/i18n/fra/extensions/javascript/package.i18n.json b/i18n/fra/extensions/javascript/package.i18n.json index 35229bd6699..34c0c122441 100644 --- a/i18n/fra/extensions/javascript/package.i18n.json +++ b/i18n/fra/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage JavaScript", + "description": "Fournit des extraits de code, la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers JavaScript." } \ No newline at end of file diff --git a/i18n/fra/extensions/less/package.i18n.json b/i18n/fra/extensions/less/package.i18n.json index 35229bd6699..3adba942a3f 100644 --- a/i18n/fra/extensions/less/package.i18n.json +++ b/i18n/fra/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Less", + "description": "Fournit la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers Less." } \ No newline at end of file diff --git a/i18n/fra/extensions/log/package.i18n.json b/i18n/fra/extensions/log/package.i18n.json index 924a067e67b..ef0bb5a2006 100644 --- a/i18n/fra/extensions/log/package.i18n.json +++ b/i18n/fra/extensions/log/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Log", - "description": "Fournit une coloration syntaxique pour les fichiers ayant l'extension .log" + "description": "Fournit la coloration syntaxique pour les fichiers avec une extension .log." } \ No newline at end of file diff --git a/i18n/fra/extensions/lua/package.i18n.json b/i18n/fra/extensions/lua/package.i18n.json index 35229bd6699..afeadcccc27 100644 --- a/i18n/fra/extensions/lua/package.i18n.json +++ b/i18n/fra/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage LUA", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Lua." } \ No newline at end of file diff --git a/i18n/fra/extensions/make/package.i18n.json b/i18n/fra/extensions/make/package.i18n.json index 35229bd6699..0005acb1f0e 100644 --- a/i18n/fra/extensions/make/package.i18n.json +++ b/i18n/fra/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Make", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Make." } \ No newline at end of file diff --git a/i18n/fra/extensions/markdown-basics/package.i18n.json b/i18n/fra/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..cc2cb10952b --- /dev/null +++ b/i18n/fra/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Concepts de base du langage Markdown", + "description": "Fournit des extraits de code et la coloration syntaxique pour Markdown." +} \ No newline at end of file diff --git a/i18n/fra/extensions/markdown/out/features/preview.i18n.json b/i18n/fra/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..9e9f654e2f9 --- /dev/null +++ b/i18n/fra/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Aperçu] {0}", + "previewTitle": "Prévisualiser {0}" +} \ No newline at end of file diff --git a/i18n/fra/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/fra/extensions/markdown/out/features/previewContentProvider.i18n.json index ffa370d43e7..38a6bf3c24e 100644 --- a/i18n/fra/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/fra/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,6 +8,5 @@ ], "preview.securityMessage.text": "Du contenu a été désactivé dans ce document", "preview.securityMessage.title": "Le contenu potentiellement dangereux ou précaire a été désactivé dans l’aperçu du format markdown. Modifier le paramètre de sécurité Aperçu Markdown afin d’autoriser les contenus non sécurisés ou activer les scripts", - "preview.securityMessage.label": "Avertissement de sécurité de contenu désactivé", - "previewTitle": "Prévisualiser {0}" + "preview.securityMessage.label": "Avertissement de sécurité de contenu désactivé" } \ No newline at end of file diff --git a/i18n/fra/extensions/markdown/package.i18n.json b/i18n/fra/extensions/markdown/package.i18n.json index 76860af15e6..f5aede8507b 100644 --- a/i18n/fra/extensions/markdown/package.i18n.json +++ b/i18n/fra/extensions/markdown/package.i18n.json @@ -15,12 +15,18 @@ "markdown.preview.fontSize.desc": "Contrôle la taille de police en pixels utilisée dans l'aperçu Markdown.", "markdown.preview.lineHeight.desc": "Contrôle la hauteur de ligne utilisée dans l'aperçu Markdown. Ce nombre est relatif à la taille de police.", "markdown.preview.markEditorSelection.desc": "Permet de marquer la sélection actuelle de l'éditeur dans l'aperçu Markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Lors du défilement de l'aperçu markdown, actualiser l’affichage de l’éditeur.", + "markdown.preview.scrollPreviewWithEditor.desc": "Lors du défilement d’un éditeur markdow, actualiser l’affichage de l’aperçu.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Déprécié] Fait défiler l'aperçu Markdown pour révéler la ligne actuellement sélectionnée dans l'éditeur.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Ce paramètre a été remplacé par 'markdown.preview.scrollPreviewWithEditor' et n'a plus aucun effet.", "markdown.preview.title": "Ouvrir l'aperçu", "markdown.previewFrontMatter.dec": "Définit comment les pages liminaires YAML doivent être affichées dans l'aperçu Markdown. L'option 'hide' supprime les pages liminaires. Sinon, elles sont traitées comme du contenu Markdown.", "markdown.previewSide.title": "Ouvrir l'aperçu sur le côté", + "markdown.showLockedPreviewToSide.title": "Ouvrir l'aperçu verrrouillé sur le côté", "markdown.showSource.title": "Afficher la source", "markdown.styles.dec": "Liste d'URL ou de chemins locaux de feuilles de style CSS à utiliser dans l'aperçu Markdown. Les chemins relatifs sont interprétés par rapport au dossier ouvert dans l'explorateur. S'il n'y a aucun dossier ouvert, ils sont interprétés par rapport à l'emplacement du fichier Markdown. Tous les signes '\\' doivent être écrits sous la forme '\\\\'.", "markdown.showPreviewSecuritySelector.title": "Changer les paramètres de sécurité de l'aperçu", "markdown.trace.desc": "Active la journalisation du débogage pour l'extension Markdown.", - "markdown.refreshPreview.title": "Actualiser l’aperçu" + "markdown.preview.refresh.title": "Actualiser l'aperçu", + "markdown.preview.toggleLock.title": "Activer/désactiver le verrouillage de l'aperçu" } \ No newline at end of file diff --git a/i18n/fra/extensions/merge-conflict/package.i18n.json b/i18n/fra/extensions/merge-conflict/package.i18n.json index 3bfb714e400..c2da2db9fb3 100644 --- a/i18n/fra/extensions/merge-conflict/package.i18n.json +++ b/i18n/fra/extensions/merge-conflict/package.i18n.json @@ -7,7 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Conflit de fusion", - "description": "Coloration et commandes pour des conflits de fusion en ligne.", + "description": "Mise en surbrillance et commandes pour les conflits de fusion inline.", "command.category": "Conflit de fusion", "command.accept.all-current": "Accepter les modifications actuelles", "command.accept.all-incoming": "Accepter toutes les modifications entrantes", diff --git a/i18n/fra/extensions/npm/package.i18n.json b/i18n/fra/extensions/npm/package.i18n.json index 0fc7ca5aa05..e469e500438 100644 --- a/i18n/fra/extensions/npm/package.i18n.json +++ b/i18n/fra/extensions/npm/package.i18n.json @@ -11,5 +11,8 @@ "config.npm.autoDetect": "Contrôle si la détection automatique des scripts npm est activée ou désactivée. La valeur par défaut est activée.", "config.npm.runSilent": "Exécutez les commandes npm avec l'option `--silent`.", "config.npm.packageManager": "Le gestionnaire de paquets utilisé pour exécuter des scripts.", - "npm.parseError": "Détection de tâche Npm : impossible d’analyser le fichier {0}" + "config.npm.exclude": "Configurer les profils glob pour les dossiers qui doivent être exclus de la détection de script automatique.", + "npm.parseError": "Détection de tâche Npm : impossible d’analyser le fichier {0}", + "taskdef.script": "Le script npm à personnaliser.", + "taskdef.path": "Le chemin d’accès au dossier du fichier package.json qui fournit le script. Peut être oublié." } \ No newline at end of file diff --git a/i18n/fra/extensions/objective-c/package.i18n.json b/i18n/fra/extensions/objective-c/package.i18n.json index 35229bd6699..def0474c8d7 100644 --- a/i18n/fra/extensions/objective-c/package.i18n.json +++ b/i18n/fra/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Objective-C", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Objective-C." } \ No newline at end of file diff --git a/i18n/fra/extensions/perl/package.i18n.json b/i18n/fra/extensions/perl/package.i18n.json index 35229bd6699..e5deaf4d2e4 100644 --- a/i18n/fra/extensions/perl/package.i18n.json +++ b/i18n/fra/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Perl", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Perl." } \ No newline at end of file diff --git a/i18n/fra/extensions/php/package.i18n.json b/i18n/fra/extensions/php/package.i18n.json index 4c45ca08938..38ff61530b7 100644 --- a/i18n/fra/extensions/php/package.i18n.json +++ b/i18n/fra/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Spécifie si linter est exécuté au moment de l'enregistrement ou de la saisie.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Interdire l'exécutable de validation PHP (défini comme paramètre d'espace de travail)" + "command.untrustValidationExecutable": "Interdire l'exécutable de validation PHP (défini comme paramètre d'espace de travail)", + "displayName": "Fonctionnalités du langage PHP", + "description": "Fournit IntelliSense, le linting et les concepts de base de langage pour les fichiers PHP." } \ No newline at end of file diff --git a/i18n/fra/extensions/powershell/package.i18n.json b/i18n/fra/extensions/powershell/package.i18n.json index 35229bd6699..84a10e53a7d 100644 --- a/i18n/fra/extensions/powershell/package.i18n.json +++ b/i18n/fra/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage PowerShell", + "description": "Fournit des extraits de code, la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers PowerShell." } \ No newline at end of file diff --git a/i18n/fra/extensions/pug/package.i18n.json b/i18n/fra/extensions/pug/package.i18n.json index 35229bd6699..a73e18d97c6 100644 --- a/i18n/fra/extensions/pug/package.i18n.json +++ b/i18n/fra/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Pug", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Pug." } \ No newline at end of file diff --git a/i18n/fra/extensions/python/package.i18n.json b/i18n/fra/extensions/python/package.i18n.json index 35229bd6699..a3eafdab2f1 100644 --- a/i18n/fra/extensions/python/package.i18n.json +++ b/i18n/fra/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Python", + "description": "Fournit la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers Python." } \ No newline at end of file diff --git a/i18n/fra/extensions/r/package.i18n.json b/i18n/fra/extensions/r/package.i18n.json index 35229bd6699..0c86f299095 100644 --- a/i18n/fra/extensions/r/package.i18n.json +++ b/i18n/fra/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage R", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers R." } \ No newline at end of file diff --git a/i18n/fra/extensions/razor/package.i18n.json b/i18n/fra/extensions/razor/package.i18n.json index 35229bd6699..c9d1398180c 100644 --- a/i18n/fra/extensions/razor/package.i18n.json +++ b/i18n/fra/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Razor", + "description": "Fournit la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers Razor." } \ No newline at end of file diff --git a/i18n/fra/extensions/ruby/package.i18n.json b/i18n/fra/extensions/ruby/package.i18n.json index 35229bd6699..0ee328c3806 100644 --- a/i18n/fra/extensions/ruby/package.i18n.json +++ b/i18n/fra/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Ruby", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Ruby." } \ No newline at end of file diff --git a/i18n/fra/extensions/rust/package.i18n.json b/i18n/fra/extensions/rust/package.i18n.json index 35229bd6699..bdea3047f49 100644 --- a/i18n/fra/extensions/rust/package.i18n.json +++ b/i18n/fra/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Rust", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Rust." } \ No newline at end of file diff --git a/i18n/fra/extensions/scss/package.i18n.json b/i18n/fra/extensions/scss/package.i18n.json index 35229bd6699..6417970edaf 100644 --- a/i18n/fra/extensions/scss/package.i18n.json +++ b/i18n/fra/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage SCSS", + "description": "Fournit la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers SCSS." } \ No newline at end of file diff --git a/i18n/fra/extensions/shaderlab/package.i18n.json b/i18n/fra/extensions/shaderlab/package.i18n.json index 35229bd6699..69bd806ab9b 100644 --- a/i18n/fra/extensions/shaderlab/package.i18n.json +++ b/i18n/fra/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Concepts de base du langage Shaderlab", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Shaderlab." } \ No newline at end of file diff --git a/i18n/fra/extensions/shellscript/package.i18n.json b/i18n/fra/extensions/shellscript/package.i18n.json index 35229bd6699..4c38e7d6c7d 100644 --- a/i18n/fra/extensions/shellscript/package.i18n.json +++ b/i18n/fra/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Shell Script", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers Shell Script." } \ No newline at end of file diff --git a/i18n/fra/extensions/sql/package.i18n.json b/i18n/fra/extensions/sql/package.i18n.json index 35229bd6699..c63217a408b 100644 --- a/i18n/fra/extensions/sql/package.i18n.json +++ b/i18n/fra/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage SQL", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers SQL." } \ No newline at end of file diff --git a/i18n/fra/extensions/swift/package.i18n.json b/i18n/fra/extensions/swift/package.i18n.json index 35229bd6699..5db65c48d13 100644 --- a/i18n/fra/extensions/swift/package.i18n.json +++ b/i18n/fra/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Swift", + "description": "Fournit des extraits de code, la coloration syntaxique et la correspondance des crochets dans les fichiers Swift." } \ No newline at end of file diff --git a/i18n/fra/extensions/typescript-basics/package.i18n.json b/i18n/fra/extensions/typescript-basics/package.i18n.json index 293d1bc15c3..e9a0ef2fe1a 100644 --- a/i18n/fra/extensions/typescript-basics/package.i18n.json +++ b/i18n/fra/extensions/typescript-basics/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Bases du langage TypeScript" + "displayName": "Bases du langage TypeScript", + "description": "Fournit des extraits de code, la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers TypeScript." } \ No newline at end of file diff --git a/i18n/fra/extensions/typescript/package.i18n.json b/i18n/fra/extensions/typescript/package.i18n.json index a8f7f50a578..a8c7633468e 100644 --- a/i18n/fra/extensions/typescript/package.i18n.json +++ b/i18n/fra/extensions/typescript/package.i18n.json @@ -56,5 +56,6 @@ "typescript.locale": "Définit les paramètres locaux utilisés pour signaler les erreurs TypeScript . Nécessite TypeScript >= 2.6.0. Par défaut 'null' utilise les paramètres locaux de VS Code pour les erreurs TypeScript.", "javascript.implicitProjectConfig.experimentalDecorators": "Activer/désactiver 'experimentalDecorators' pour les fichiers JavaScript qui ne font pas partie d'un projet. Les fichiers jsconfig.json ou tsconfig.json existants remplacent ce paramètre. Nécessite TypeScript >=2.3.1.", "typescript.autoImportSuggestions.enabled": "Activer/désactiver les suggestions d'import automatiques. Nécessite TypeScript >= 2.6.1.", - "typescript.experimental.syntaxFolding": "Active/désactive les marqueurs de réduction en fonction de la syntaxe." + "typescript.experimental.syntaxFolding": "Active/désactive les marqueurs de réduction en fonction de la syntaxe.", + "taskDefinition.tsconfig.description": "Fichier tsconfig qui définit la build TS." } \ No newline at end of file diff --git a/i18n/fra/extensions/vb/package.i18n.json b/i18n/fra/extensions/vb/package.i18n.json index 35229bd6699..da63f559132 100644 --- a/i18n/fra/extensions/vb/package.i18n.json +++ b/i18n/fra/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage Visual Basic", + "description": "Fournit des extraits de code, la coloration syntaxique, la correspondance des crochets et le repli dans les fichiers Visual Basic." } \ No newline at end of file diff --git a/i18n/fra/extensions/xml/package.i18n.json b/i18n/fra/extensions/xml/package.i18n.json index 35229bd6699..34ebbb7050f 100644 --- a/i18n/fra/extensions/xml/package.i18n.json +++ b/i18n/fra/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage XML", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers XML." } \ No newline at end of file diff --git a/i18n/fra/extensions/yaml/package.i18n.json b/i18n/fra/extensions/yaml/package.i18n.json index 35229bd6699..baa637549d4 100644 --- a/i18n/fra/extensions/yaml/package.i18n.json +++ b/i18n/fra/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Bases du langage YAML", + "description": "Fournit la coloration syntaxique et la correspondance des crochets dans les fichiers YAML." } \ No newline at end of file diff --git a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 2cf7b95f59c..4372aeafc54 100644 --- a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -23,6 +23,6 @@ "featureRequestDescription": "Veuillez décrire la fonctionnalité que vous voulez voir. Nous supportons la syntaxe GitHub Markdown. Vous pourrez modifier votre problème et ajouter des captures d’écran lorsque nous la prévisualiserons sur GitHub.", "expectedResults": "Résultats attendus", "settingsSearchResultsDescription": "Veuillez lister les résultats que vous vous attendiez à voir quand vous avez cherché cette requête. Nous supportons la syntaxe GitHub Markdown. Vous pourrez modifier votre question et ajouter des captures d’écran lorsque nous la prévisualiserons sur GitHub.", - "urlLengthError": "Les données dépassent la longueur limite de {0} caractères. La longueur des données est {1}.", + "pasteData": "Nous avons écrit les données nécessaires dans votre presse-papiers, car elles étaient trop volumineuses à envoyer. Veuillez les coller.", "disabledExtensions": "Les extensions sont désactivées" } \ No newline at end of file diff --git a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index d2a009b4aba..b903d97313a 100644 --- a/i18n/fra/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/fra/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -10,6 +10,7 @@ "issueTypeLabel": "Ceci est un ", "issueTitleLabel": "Titre", "issueTitleRequired": "Veuillez s’il vous plaît entrer un titre.", + "titleLengthValidation": "Le titre est trop long.", "systemInfo": "Mes infos système", "sendData": "Envoyer mes données", "processes": "Processus en cours d’exécution", @@ -20,7 +21,10 @@ "tryDisablingExtensions": "Le problème est-il reproductible lorsque les extensions sont désactivées?", "yes": "Oui", "no": "Non", + "disableExtensionsLabelText": "Essayez de reproduire le problème après {0}.", "disableExtensions": "en désactivant toutes les extensions et en rechargeant la fenêtre", + "showRunningExtensionsLabelText": "Si vous pensez que c'est un problème d'extension, {0} pour reporter le problème de l'extension.", + "showRunningExtensions": "Afficher toutes les extensions en cours d'exécution", "details": "Veuillez saisir les détails ", "loadingData": "Chargement des données..." } \ No newline at end of file diff --git a/i18n/fra/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/fra/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index f962bfa91d8..705af653f74 100644 --- a/i18n/fra/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/fra/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "Remplacer", "cancel": "Annuler", "errorInstallingDependencies": "Erreur lors de l'installation des dépendances. {0}", + "MarketPlaceDisabled": "Le marketplace n’est pas activé", + "removeError": "Erreur lors de la suppression de l’extension : {0}. Veuillez quitter et relancer VS Code avant de réessayer.", + "Not Market place extension": "Seules les Extensions de Marketplace peuvent être réinstallées", "notFoundCompatible": "Impossible d’installer '{0}'; Il n’y a pas de version disponible compatible avec VS Code '{1}'.", "malicious extension": "Impossible d’installer l'extension car elle a été signalée comme problématique.", "notFoundCompatibleDependency": "Installation impossible car l'extension dépendante '{0}' compatible avec la version actuelle '{1}' de VS Code est introuvable.", diff --git a/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index b7a670d16a5..63a7e687fcb 100644 --- a/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/fra/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (Extension)", "defaultSource": "Extension", "manageExtension": "Gérer l'extension", "cancel": "Annuler", diff --git a/i18n/fra/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/fra/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 6be2faf585d..f971622b8ff 100644 --- a/i18n/fra/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/fra/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -8,5 +8,7 @@ ], "hideNotifications": "Masquer les notifications", "zeroNotifications": "Aucune notification", - "noNotifications": "Aucune nouvelle notification" + "noNotifications": "Aucune nouvelle notification", + "oneNotification": "1 nouvelle notification", + "notifications": "{0} nouvelles notifications" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/common/theme.i18n.json b/i18n/fra/src/vs/workbench/common/theme.i18n.json index a5bb14bb6d2..c488ecd8215 100644 --- a/i18n/fra/src/vs/workbench/common/theme.i18n.json +++ b/i18n/fra/src/vs/workbench/common/theme.i18n.json @@ -59,11 +59,12 @@ "titleBarActiveBackground": "Arrière-plan de la barre de titre quand la fenêtre est active. Notez que cette couleur est uniquement prise en charge sur macOS.", "titleBarInactiveBackground": "Arrière-plan de la barre de titre quand la fenêtre est inactive. Notez que cette couleur est uniquement prise en charge sur macOS.", "titleBarBorder": "Couleur de bordure de la barre titre. Notez que cette couleur est actuellement uniquement pris en charge sur macOS.", - "notificationsCenterBorder": "Couleur de bordure du centre de notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", - "notificationsToastBorder": "Couleur de bordure du toast des notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", + "notificationCenterBorder": "Couleur de bordure du centre de notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", + "notificationToastBorder": "Couleur de bordure du toast des notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", "notificationsForeground": "Couleur de premier plan des notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", "notificationsBackground": "Couleur d'arrière plan des notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", "notificationsLink": "Couleur de premier plan des liens des notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", - "notificationsCenterHeaderBackground": "Couleur d'arrière plan de l'en-tête du centre de notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", + "notificationCenterHeaderForeground": "Couleur de premier plan de l'en-tête du centre de notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", + "notificationCenterHeaderBackground": "Couleur d'arrière plan de l'en-tête du centre de notifications. Les notifications défilent à partir du bas à droite de la fenêtre.", "notificationsBorder": "Couleur de bordure séparant des autres notifications dans le centre de notifications. Les notifications défilent à partir du bas à droite de la fenêtre." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index bf5029bdf25..f3007ffa419 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -10,6 +10,8 @@ "functionBreakpointsNotSupported": "Les points d'arrêt de fonction ne sont pas pris en charge par ce type de débogage", "functionBreakpointPlaceholder": "Fonction où effectuer un point d'arrêt", "functionBreakPointInputAriaLabel": "Point d'arrêt sur fonction de type", + "breakpointDisabledHover": "Point d'arrêt désactivé", + "breakpointUnverifieddHover": "Point d'arrêt non vérifié", "functionBreakpointUnsupported": "Les points d'arrêt de fonction ne sont pas pris en charge par ce type de débogage", "breakpointDirtydHover": "Point d'arrêt non vérifié. Fichier modifié. Redémarrez la session de débogage.", "conditionalBreakpointUnsupported": "Les points d'arrêt conditionnels ne sont pas pris en charge par ce type de débogage", diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index ea2ee6334e1..899866a157c 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "Toujours afficher debug dans la barre d’état", "onFirstSessionStart": "Afficher debug dans seule la barre d’état après que le débogage a été lancé pour la première fois", "showInStatusBar": "Contrôle quand la barre d’état de débogage doit être visible", - "openDebug": "Contrôle si les Viewlets de débogage doivent être ouverts au démarrage d’une session de débogage.", + "openDebug": "Contrôle si la vue de débogage doit être ouverte au démarrage de la session de débogage.", "launch": "Configuration du lancement du débogage global. Doit être utilisée comme alternative à 'launch.json' qui est partagé entre les espaces de travail" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json index bfc920c94a5..93be98f6e5b 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "copyValue": "Copier la valeur", + "copyAsExpression": "Copier en tant qu'Expression", "copy": "Copier", "copyAll": "Copier tout", "copyStackTrace": "Copier la pile des appels" diff --git a/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index 24493063f7a..7c8133234c3 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "Défaut pour le thème clair", "defaultHC": "Défaut pour le thème de contraste élevé", "JSON Validation": "Validation JSON ({0})", + "fileMatch": "Correspondance de fichier", + "schema": "Schéma", "commands": "Commandes ({0})", "command name": "Nom", "keyboard shortcuts": "Raccourcis clavier", diff --git a/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 7b19258118c..8414cc420ad 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "Télécharger manuellement", + "install vsix": "Une fois téléchargé, installez manuellement le VSIX de '{0}'.", "installAction": "Installer", "installing": "Installation", + "failedToInstall": "Échec d'installation de '{0}'.", "uninstallAction": "Désinstaller", "Uninstalling": "Désinstallation en cours", "updateAction": "Mettre à jour", "updateTo": "Mettre à jour vers {0}", + "failedToUpdate": "Échec de mise à jour de '{0}'.", "ManageExtensionAction.uninstallingTooltip": "Désinstallation en cours", "enableForWorkspaceAction": "Activer (espace de travail)", "enableGloballyAction": "Activer", @@ -58,6 +62,16 @@ "disableAllWorkspace": "Désactiver toutes les extensions installées pour cet espace de travail", "enableAll": "Activer toutes les extension", "enableAllWorkspace": "Activer toutes les extensions pour cet espace de travail", + "openExtensionsFolder": "Ouvrir le dossier d'extensions", + "installVSIX": "Installer depuis un VSIX...", + "installFromVSIX": "Installer à partir d'un VSIX", + "installButton": "&&Installer", + "InstallVSIXAction.success": "Installation réussie de l'extension. Recharger pour l'activer.", + "InstallVSIXAction.reloadNow": "Recharger maintenant", + "reinstall": "Réinstallez l'extension...", + "selectExtension": "Sélectionner l'extension à réinstaller", + "ReinstallAction.success": "Extension réinstallée.", + "ReinstallAction.reloadNow": "Recharger maintenant", "extensionButtonProminentBackground": "Couleur d'arrière-plan du bouton pour les extension d'actions importantes (par ex., le bouton d'installation).", "extensionButtonProminentForeground": "Couleur d'arrière-plan du bouton pour l'extension d'actions importantes (par ex., le bouton d'installation).", "extensionButtonProminentHoverBackground": "Couleur d'arrière-plan du pointage de bouton pour l'extension d'actions importantes (par ex., le bouton d'installation)." diff --git a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index ea087f85fa6..8968ae34eb7 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "Profiler les extensions", + "restart2": "Un redémarrage est nécessaire pour profiler les extensions. Voulez-vous redémarrer '{0}' maintenant ?", "restart3": "Redémarrer", "cancel": "Annuler", "selectAndStartDebug": "Cliquer pour arrêter le profilage" diff --git a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 557f45e5910..518cd664a2e 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,7 @@ "recommendedExtensions": "Recommandées", "otherRecommendedExtensions": "Autres recommandations", "workspaceRecommendedExtensions": "Recommandations de l’espace de travail", + "builtInExtensions": "Intégrée", "searchExtensions": "Rechercher des extensions dans Marketplace", "sort by installs": "Trier par : nombre d'installations", "sort by rating": "Trier par : évaluation", diff --git a/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json index 4ddda166c7b..722fad1246b 100644 --- a/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json @@ -29,6 +29,7 @@ "compareSelected": "Comparer le sélectionné", "close": "Fermer", "closeOthers": "Fermer les autres", + "closeSaved": "Fermer la version sauvegardée", "closeAll": "Tout fermer", "deleteFile": "Supprimer définitivement" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/fra/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index c74c6426030..992faa16f96 100644 --- a/i18n/fra/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -7,6 +7,6 @@ "Do not edit this file. It is machine generated." ], "editor.action.webvieweditor.showFind": "Focus sur le widget de recherche", - "openToolsLabel": "Outils Webview", + "openToolsLabel": "Ouvrir les outils de développement Webview", "refreshWebviewLabel": "Recharger les Webviews" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index b2a614b8bb8..dbb8b385ac4 100644 --- a/i18n/fra/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,6 +25,6 @@ "search.quickOpen.includeSymbols": "Configurez l'ajout des résultats d'une recherche de symboles globale dans le fichier de résultats pour Quick Open.", "search.followSymlinks": "Contrôle s'il faut suivre les symlinks pendant la recherche.", "search.smartCase": "Recherches de manière non case-sensitive si le modèle est entièrement en minuscules, dans le cas contraire, recherche de manière case-sensitive", - "search.globalFindClipboard": "Contrôle si le viewlet de recherche doit lire ou modifier le presse-papiers partagé sur macOS", - "search.location": "Contrôle si la recherche sera affichée comme un viewlet dans la barre latérale ou comme un panneau dans la zone de panneaux pour plus d'espace horizontal" + "search.globalFindClipboard": "Contrôle si la vue de recherche doit lire ou modifier le presse-papiers partagé sur macOS", + "search.location": "Aperçu : contrôle si la recherche est affichée comme une vue dans la barre latérale ou comme un panneau dans la zone correspondante pour libérer de l'espace horizontal. La prochaine version de la recherche dans le panneau prévoit une amélioration de la disposition horizontale qui ne sera plus un aperçu." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json index 6b13e14cdb6..174156252ae 100644 --- a/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json @@ -35,6 +35,7 @@ "terminal.integrated.env.linux": "Objet avec les variables d’environnement qui seront ajoutées au processus VS Code pour être utilisées par le terminal sous Linux", "terminal.integrated.env.windows": "Objet avec les variables d’environnement qui seront ajoutées au processus VS Code pour être utilisées par le terminal sous Windows", "terminal.integrated.showExitAlert": "Afficher une alerte `Le processus terminal s’est arrêté avec le code de sortie` lorsque le code de sortie est différent de zéro.", + "terminal.integrated.experimentalRestore": "Si le fait de restaurer automatiquement les sessions du terminal pour l'espace de travail au lancement de VS Code. Il s'agit d'une fonctionnalité expérimentale; elle peut être boguée et peut changer dans le futur.", "terminalCategory": "Terminal", "viewCategory": "Affichage" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index 060ff0a2bc0..e89604d8194 100644 --- a/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,6 +11,6 @@ "terminalCursor.foreground": "La couleur de premier plan du curseur du terminal.", "terminalCursor.background": "La couleur d’arrière-plan du curseur terminal. Permet de personnaliser la couleur d’un caractère recouvert par un curseur de bloc.", "terminal.selectionBackground": "La couleur d’arrière-plan de sélection du terminal.", - "terminal.border": "La couleur de bordure qui sépare les multiples terminaux. Ceci est par défaut à panel.border", + "terminal.border": "Couleur de bordure qui sépare les volets de fractionnement dans le terminal. La valeur par défaut est panel.border.", "terminal.ansiColor": "Couleur ansi '{0}' dans le terminal." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 0d61d2e3d7e..0a4355e2acf 100644 --- a/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -16,6 +16,7 @@ "64bitisavailable": "{0} pour Windows 64 bits est maintenant disponible ! Cliquez [ici]({0}) pour en savoir plus.", "updateIsReady": "Nouvelle mise à jour de {0} disponible.", "noUpdatesAvailable": "Aucune mise à jour n'est disponible actuellement.", + "ok": "OK", "download now": "Télécharger maintenant", "thereIsUpdateAvailable": "Une mise à jour est disponible.", "installUpdate": "Installer la mise à jour", diff --git a/i18n/fra/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/fra/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index dadc42773a1..0e26b3fa0ff 100644 --- a/i18n/fra/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/fra/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "Description du badge.", "vscode.extension.extensionDependencies": "Dépendances envers d'autres extensions. L'identificateur d'une extension est toujours ${publisher}.${name}. Exemple : vscode.csharp.", "vscode.extension.scripts.prepublish": "Le script exécuté avant le package est publié en tant qu'extension VS Code.", + "vscode.extension.scripts.uninstall": "Désinstallez le crochet pour l'extension VS Code. Script exécuté quand l'extension est complètement désinstallée dans VS Code et au redémarrage de VS Code (arrêt, puis démarrage). Seuls les scripts Node sont pris en charge.", "vscode.extension.icon": "Chemin d'une icône de 128 x 128 pixels." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index ff425d5d1cd..d1cd27ab59c 100644 --- a/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/fra/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -11,5 +11,6 @@ "netVersionError": "Microsoft .NET Framework 4.5 est obligatoire. Suivez le lien pour l'installer.", "learnMore": "Instructions", "enospcError": "{0} est à court de mémoire pour les fichiers. Veuillez suivre le lien avec les instructions pour résoudre ce problème.", + "binFailed": "Échec du déplacement de '{0}' vers la corbeille", "trashFailed": "Échec du déplacement de '{0}' vers la corbeille" } \ No newline at end of file diff --git a/i18n/hun/extensions/bat/package.i18n.json b/i18n/hun/extensions/bat/package.i18n.json index e37c0119913..4a72e2ab0ad 100644 --- a/i18n/hun/extensions/bat/package.i18n.json +++ b/i18n/hun/extensions/bat/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Windows kötegfájl (batch) nyelvi alapok" + "displayName": "Windows kötegfájl (batch) nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a Windows kötegfájlokban (batch)." } \ No newline at end of file diff --git a/i18n/hun/extensions/clojure/package.i18n.json b/i18n/hun/extensions/clojure/package.i18n.json index a498d5a9264..f384aa1a280 100644 --- a/i18n/hun/extensions/clojure/package.i18n.json +++ b/i18n/hun/extensions/clojure/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Clojure nyelvi alapok" + "displayName": "Clojure nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Clojure-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/coffeescript/package.i18n.json b/i18n/hun/extensions/coffeescript/package.i18n.json index 91a7cfc163d..4f89f37bf23 100644 --- a/i18n/hun/extensions/coffeescript/package.i18n.json +++ b/i18n/hun/extensions/coffeescript/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "CoffeeScript nyelvi alapok" + "displayName": "CoffeeScript nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a CoffeeScript-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/cpp/package.i18n.json b/i18n/hun/extensions/cpp/package.i18n.json index d4e16feba32..de969f62936 100644 --- a/i18n/hun/extensions/cpp/package.i18n.json +++ b/i18n/hun/extensions/cpp/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "C/C++ nyelvi alapok" + "displayName": "C/C++ nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a C/C++-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/csharp/package.i18n.json b/i18n/hun/extensions/csharp/package.i18n.json index 08c88adf840..dccdf9350f9 100644 --- a/i18n/hun/extensions/csharp/package.i18n.json +++ b/i18n/hun/extensions/csharp/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "C# nyelvi alapok" + "displayName": "C# nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a C#-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/docker/package.i18n.json b/i18n/hun/extensions/docker/package.i18n.json index 1a85aa12b85..455c4836cc7 100644 --- a/i18n/hun/extensions/docker/package.i18n.json +++ b/i18n/hun/extensions/docker/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Docker nyelvi alapok" + "displayName": "Docker nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Docker-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/emmet/package.i18n.json b/i18n/hun/extensions/emmet/package.i18n.json index 3df37c61cd7..8809e7dca73 100644 --- a/i18n/hun/extensions/emmet/package.i18n.json +++ b/i18n/hun/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Emmet-támogatás a VS Code-hoz", "command.wrapWithAbbreviation": "Becsomagolás rövidítéssel", "command.wrapIndividualLinesWithAbbreviation": "Egyedi sorok becsomagolása rövidítéssel", "command.removeTag": "Elem eltávolítása", diff --git a/i18n/hun/extensions/extension-editing/package.i18n.json b/i18n/hun/extensions/extension-editing/package.i18n.json index a029b3e5793..adbf056f045 100644 --- a/i18n/hun/extensions/extension-editing/package.i18n.json +++ b/i18n/hun/extensions/extension-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Csomagfájl-szerkesztő", - "description": "IntelliSense-t szolgáltat a VS Code kiegészítési pontjaihoz, illetve lintelést a csomagokhoz tartozó JSON-fájlokhoz." + "description": "IntelliSense-t szolgáltat a VS Code kiegészítési pontjaihoz, illetve lintelést a package.json-fájlokhoz." } \ No newline at end of file diff --git a/i18n/hun/extensions/fsharp/package.i18n.json b/i18n/hun/extensions/fsharp/package.i18n.json index 916b7a53e0d..ea3427a1908 100644 --- a/i18n/hun/extensions/fsharp/package.i18n.json +++ b/i18n/hun/extensions/fsharp/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "F# nyelvi alapok" + "displayName": "F# nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását az F#-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/go/package.i18n.json b/i18n/hun/extensions/go/package.i18n.json index 35229bd6699..165670e7cda 100644 --- a/i18n/hun/extensions/go/package.i18n.json +++ b/i18n/hun/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Go nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Go-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/groovy/package.i18n.json b/i18n/hun/extensions/groovy/package.i18n.json index e6c5249bc09..66eda5f518f 100644 --- a/i18n/hun/extensions/groovy/package.i18n.json +++ b/i18n/hun/extensions/groovy/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Groovy nyelvi alapok" + "displayName": "Groovy nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Groovy-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/handlebars/package.i18n.json b/i18n/hun/extensions/handlebars/package.i18n.json index 5b4dfbc74ae..25c39aa2da3 100644 --- a/i18n/hun/extensions/handlebars/package.i18n.json +++ b/i18n/hun/extensions/handlebars/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Handlebars nyelvi alapok" + "displayName": "Handlebars nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Handlebars-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/hlsl/package.i18n.json b/i18n/hun/extensions/hlsl/package.i18n.json index fcee70b4b99..eb39b4e6163 100644 --- a/i18n/hun/extensions/hlsl/package.i18n.json +++ b/i18n/hun/extensions/hlsl/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "HLSL nyelvi alapok" + "displayName": "HLSL nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a HLSL-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/ini/package.i18n.json b/i18n/hun/extensions/ini/package.i18n.json index 34534d63437..d380b0043d4 100644 --- a/i18n/hun/extensions/ini/package.i18n.json +++ b/i18n/hun/extensions/ini/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Ini nyelvi alapok" + "displayName": "Ini nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket az Ini-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/java/package.i18n.json b/i18n/hun/extensions/java/package.i18n.json index 51933057873..bf342f657aa 100644 --- a/i18n/hun/extensions/java/package.i18n.json +++ b/i18n/hun/extensions/java/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Java nyelvi alapok" + "displayName": "Java nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a Java-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/javascript/package.i18n.json b/i18n/hun/extensions/javascript/package.i18n.json index da9abb7e5f0..33fe12968b7 100644 --- a/i18n/hun/extensions/javascript/package.i18n.json +++ b/i18n/hun/extensions/javascript/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "JavaScript nyelvi alapok" + "displayName": "JavaScript nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a JavaScript-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/json/package.i18n.json b/i18n/hun/extensions/json/package.i18n.json index c1c327f7066..a4504577c67 100644 --- a/i18n/hun/extensions/json/package.i18n.json +++ b/i18n/hun/extensions/json/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "JSON nyelvi funkciók", "description": "Széleskörű nyelvi támogatás JSON-fájlokhoz.", "json.schemas.desc": "Sémák hozzárendelése JSON-fájlokhoz a jelenlegi projektben", "json.schemas.url.desc": "Egy séma URL-címe vagy egy séma relatív elérési útja az aktuális könyvtárban", diff --git a/i18n/hun/extensions/less/package.i18n.json b/i18n/hun/extensions/less/package.i18n.json index e638e4197d8..71ae3d80fad 100644 --- a/i18n/hun/extensions/less/package.i18n.json +++ b/i18n/hun/extensions/less/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Less nyelvi alapok" + "displayName": "Less nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a C/C++-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/log/package.i18n.json b/i18n/hun/extensions/log/package.i18n.json index 1907436ff6d..3e59a00375b 100644 --- a/i18n/hun/extensions/log/package.i18n.json +++ b/i18n/hun/extensions/log/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Log", - "description": "Szintaktikai kiemelést szolgáltat .log kiterjesztésű fájlokhoz." + "description": "Szintaktikai kiemelést szolgáltat a .log kiterjesztésű fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/lua/package.i18n.json b/i18n/hun/extensions/lua/package.i18n.json index 63345a16dd8..2c5787544a6 100644 --- a/i18n/hun/extensions/lua/package.i18n.json +++ b/i18n/hun/extensions/lua/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Lua nyelvi alapok" + "displayName": "Lua nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Lua-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/make/package.i18n.json b/i18n/hun/extensions/make/package.i18n.json index e47d6485b09..bb050058481 100644 --- a/i18n/hun/extensions/make/package.i18n.json +++ b/i18n/hun/extensions/make/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Make nyelvi alapok" + "displayName": "Make nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Make-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/markdown-basics/package.i18n.json b/i18n/hun/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..25f466b5c0b --- /dev/null +++ b/i18n/hun/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat a Markdown-fájlokban." +} \ No newline at end of file diff --git a/i18n/hun/extensions/markdown/out/features/preview.i18n.json b/i18n/hun/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..a7a0c887484 --- /dev/null +++ b/i18n/hun/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Előnézet] {0}", + "previewTitle": "{0} előnézete" +} \ No newline at end of file diff --git a/i18n/hun/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/hun/extensions/markdown/out/features/previewContentProvider.i18n.json index 20527ec02d2..0a920063d63 100644 --- a/i18n/hun/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/hun/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,7 +8,5 @@ ], "preview.securityMessage.text": "A tartalom egy része le van tiltva az aktuális dokumentumban", "preview.securityMessage.title": "Potencionálisan veszélyes vagy nem biztonságos tartalom lett letiltva a markdown-előnézetben. Módosítsa a markdown-előnézet biztonsági beállításait a nem biztonságos tartalmak vagy parancsfájlok engedélyezéséhez!", - "preview.securityMessage.label": "Biztonsági figyelmeztetés: tartalom le van tiltva", - "pinnedPreviewTitle": "[Előnézet] {0}", - "previewTitle": "{0} előnézete" + "preview.securityMessage.label": "Biztonsági figyelmeztetés: tartalom le van tiltva" } \ No newline at end of file diff --git a/i18n/hun/extensions/markdown/package.i18n.json b/i18n/hun/extensions/markdown/package.i18n.json index d15eb09873b..5e8a8541227 100644 --- a/i18n/hun/extensions/markdown/package.i18n.json +++ b/i18n/hun/extensions/markdown/package.i18n.json @@ -16,13 +16,17 @@ "markdown.preview.lineHeight.desc": "Meghatározza a markdown-előnézeten használt sormagasságot. Az érték relatív a betűmérethez képest.", "markdown.preview.markEditorSelection.desc": "Az aktuális kijelölés megjelölése a markdown-előnézeten", "markdown.preview.scrollEditorWithPreview.desc": "Amikor a markdown-előnézetet görgetik, a szerkesztőnézet is aktualizálódik", + "markdown.preview.scrollPreviewWithEditor.desc": "Amikor a markdown-szerkesztőnézetet görgetik, az előnézet is aktualizálódik.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Elavult] A markdown-előnézetet úgy görgeti, hogy látni lehessen az aktuálisan kijelölt sort.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Ezt a beállítást leváltotta a 'markdown.preview.scrollPreviewWithEditor' beállítás, és már nincs hatása.", "markdown.preview.title": "Előnézet megnyitása", "markdown.previewFrontMatter.dec": "Meghatározza, hogy a YAML konfiguráció (front matter) hogyan legyen megjelenítve a markdown-előnézetben. A 'hide' elrejti a konfigurációt, minden más esetben a front matter markdown-tartalomként van kezelve.", "markdown.previewSide.title": "Előnézet megnyitása oldalt", - "markdown.showPinnedPreviewToSide.title": "Rögzített előnézet megnyitása oldalt", + "markdown.showLockedPreviewToSide.title": "Rögzített előnézet megnyitása oldalt", "markdown.showSource.title": "Forrás megjelenítése", "markdown.styles.dec": "CSS-stíluslapok URL-címeinek vagy helyi elérési útjainak listája, amelyek a markdown-előnézeten használva vannak. A relatív elérési utak az intézőben megnyitott mappához képest vannak relatívan értelmezve. Ha nincs mappa megnyitva, akkor a markdown-fájl elréséi útjához képest. Minden '\\' karaktert '\\\\' formában kell megadni.", "markdown.showPreviewSecuritySelector.title": "Az előnézet biztonsági beállításainak módosítása", "markdown.trace.desc": "Hibakeresési napló engedélyezése a markdown kiterjesztésben.", - "markdown.refreshPreview.title": "Előnézet frissítése" + "markdown.preview.refresh.title": "Előnézet frissítése", + "markdown.preview.toggleLock.title": "Előnézet rögzítésének be- és kikapcsolása" } \ No newline at end of file diff --git a/i18n/hun/extensions/merge-conflict/package.i18n.json b/i18n/hun/extensions/merge-conflict/package.i18n.json index faff82e5cf4..7f0702ec131 100644 --- a/i18n/hun/extensions/merge-conflict/package.i18n.json +++ b/i18n/hun/extensions/merge-conflict/package.i18n.json @@ -7,7 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Összeolvasztási konfliktus", - "description": "Színezés és parancsok a sorok között sorok között megjelenített összeolvasztási konfliktusok esetén.", + "description": "Kiemelés és parancsok a sorok között sorok között megjelenített összeolvasztási konfliktusok esetén.", "command.category": "Összeolvasztási konfliktus", "command.accept.all-current": "Összes aktuális elfogadása", "command.accept.all-incoming": "Összes beérkező változás elfogadása", diff --git a/i18n/hun/extensions/npm/package.i18n.json b/i18n/hun/extensions/npm/package.i18n.json index 9358ab6aa38..bdac8dc69e3 100644 --- a/i18n/hun/extensions/npm/package.i18n.json +++ b/i18n/hun/extensions/npm/package.i18n.json @@ -11,5 +11,8 @@ "config.npm.autoDetect": "Meghatározza, hogy az npm-parancsfájlok automatikus felderításe be van-e kapcsolva. A beállítás alapértelmezetten aktív.", "config.npm.runSilent": "Az npm-parancsok a '--silent' kapcsolóval fussanak.", "config.npm.packageManager": "A parancsfájlok futtatásához használt csomagkezelő.", - "npm.parseError": "Npm-feladatok felderítése: nem sikerült beolvasni a következő fájlt: {0}" + "config.npm.exclude": "Azokat a mappákat leíró globális minta, amelyek ne legyenek vizsgálva az automatikus parancsfájlkeresés közben.", + "npm.parseError": "Npm-feladatok felderítése: nem sikerült beolvasni a következő fájlt: {0}", + "taskdef.script": "A testreszabott npm parancsfájl.", + "taskdef.path": "Azon mappa elérési útja, amely a parancsfájlt szolgáltató package.json fájlt tartalmazza. Elhagyható." } \ No newline at end of file diff --git a/i18n/hun/extensions/objective-c/package.i18n.json b/i18n/hun/extensions/objective-c/package.i18n.json index 1fd34a7fa26..84612d5c83b 100644 --- a/i18n/hun/extensions/objective-c/package.i18n.json +++ b/i18n/hun/extensions/objective-c/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Objective-C nyelvi alapok" + "displayName": "Objective-C nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket az Objective-C-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/perl/package.i18n.json b/i18n/hun/extensions/perl/package.i18n.json index f9e3b1bc627..1868dab6aa1 100644 --- a/i18n/hun/extensions/perl/package.i18n.json +++ b/i18n/hun/extensions/perl/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Perl nyelvi alapok" + "displayName": "Perl nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Perl-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/php/package.i18n.json b/i18n/hun/extensions/php/package.i18n.json index a45cb7f5c61..2fd2af0d0e8 100644 --- a/i18n/hun/extensions/php/package.i18n.json +++ b/i18n/hun/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "A linter mentéskor vagy gépeléskor fut-e.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "PHP-validációs végrehajtható fájl letiltása (munkaterületi beállításként megadva)" + "command.untrustValidationExecutable": "PHP-validációs végrehajtható fájl letiltása (munkaterületi beállításként megadva)", + "displayName": "PHP nyelvi funkciók", + "description": "IntelliSense-t, lintelést és alapvető nyelvi funkciókat szolgáltat a PHP-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/powershell/package.i18n.json b/i18n/hun/extensions/powershell/package.i18n.json index fb4194c726d..1a9325f4dac 100644 --- a/i18n/hun/extensions/powershell/package.i18n.json +++ b/i18n/hun/extensions/powershell/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Powershell nyelvi alapok" + "displayName": "Powershell nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a Powershell-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/pug/package.i18n.json b/i18n/hun/extensions/pug/package.i18n.json index 487e1ca9f75..9103f4a31be 100644 --- a/i18n/hun/extensions/pug/package.i18n.json +++ b/i18n/hun/extensions/pug/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Pug nyelvi alapok" + "displayName": "Pug nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Pug-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/python/package.i18n.json b/i18n/hun/extensions/python/package.i18n.json index de8078525ad..3d42383d435 100644 --- a/i18n/hun/extensions/python/package.i18n.json +++ b/i18n/hun/extensions/python/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Python nyelvi alapok" + "displayName": "Python nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a Python-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/r/package.i18n.json b/i18n/hun/extensions/r/package.i18n.json index 848b3d1bdb5..37dccfe08e1 100644 --- a/i18n/hun/extensions/r/package.i18n.json +++ b/i18n/hun/extensions/r/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "R nyelvi alapok" + "displayName": "R nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket az R-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/razor/package.i18n.json b/i18n/hun/extensions/razor/package.i18n.json index 5acb2099e75..6f6cbd8a9f6 100644 --- a/i18n/hun/extensions/razor/package.i18n.json +++ b/i18n/hun/extensions/razor/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Razor nyelvi alapok" + "displayName": "Razor nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a Razor-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/ruby/package.i18n.json b/i18n/hun/extensions/ruby/package.i18n.json index 03fb7fd2f3d..8ce68a0be80 100644 --- a/i18n/hun/extensions/ruby/package.i18n.json +++ b/i18n/hun/extensions/ruby/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Ruby nyelvi alapok" + "displayName": "Ruby nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Ruby-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/rust/package.i18n.json b/i18n/hun/extensions/rust/package.i18n.json index 61bcb27df86..38748f59705 100644 --- a/i18n/hun/extensions/rust/package.i18n.json +++ b/i18n/hun/extensions/rust/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Rust nyelvi alapok" + "displayName": "Rust nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Rust-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/scss/package.i18n.json b/i18n/hun/extensions/scss/package.i18n.json index 44b93b7e656..4e54e6e1ef7 100644 --- a/i18n/hun/extensions/scss/package.i18n.json +++ b/i18n/hun/extensions/scss/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "SCSS nyelvi alapok" + "displayName": "SCSS nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását az SCSS-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/shaderlab/package.i18n.json b/i18n/hun/extensions/shaderlab/package.i18n.json index 4a20221c85c..18a9c7b9225 100644 --- a/i18n/hun/extensions/shaderlab/package.i18n.json +++ b/i18n/hun/extensions/shaderlab/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Shaderlab nyelvi alapok" + "displayName": "Shaderlab nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Shaderlab-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/shellscript/package.i18n.json b/i18n/hun/extensions/shellscript/package.i18n.json index ecf2653e0cd..823c814187e 100644 --- a/i18n/hun/extensions/shellscript/package.i18n.json +++ b/i18n/hun/extensions/shellscript/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Shell Script nyelvi alapok" + "displayName": "Shell Script nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a shell script-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/sql/package.i18n.json b/i18n/hun/extensions/sql/package.i18n.json index 31cf95b7674..f5ff4be5ac7 100644 --- a/i18n/hun/extensions/sql/package.i18n.json +++ b/i18n/hun/extensions/sql/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "SQL nyelvi alapok" + "displayName": "SQL nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket az SQL-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/swift/package.i18n.json b/i18n/hun/extensions/swift/package.i18n.json index 56d600d5e70..948e51515f4 100644 --- a/i18n/hun/extensions/swift/package.i18n.json +++ b/i18n/hun/extensions/swift/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Swift nyelvi alapok" + "displayName": "Swift nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a Swift-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/typescript-basics/package.i18n.json b/i18n/hun/extensions/typescript-basics/package.i18n.json index 38a4cee8051..81f0aec5f27 100644 --- a/i18n/hun/extensions/typescript-basics/package.i18n.json +++ b/i18n/hun/extensions/typescript-basics/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "TypeScript nyelvi alapok" + "displayName": "TypeScript nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a TypeScript-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/typescript/package.i18n.json b/i18n/hun/extensions/typescript/package.i18n.json index 6a9878af25f..e19877c4360 100644 --- a/i18n/hun/extensions/typescript/package.i18n.json +++ b/i18n/hun/extensions/typescript/package.i18n.json @@ -56,5 +56,6 @@ "typescript.locale": "Meghatározza a TypeScript-hibák jelentésénél használt lokalizációt. TypeScript >= 2.6.0-t igényel. Az alapértelmezett 'null' érték esetén a VS Code-ban beállított nyelven jelennek meg a TypeScript-hibák.", "javascript.implicitProjectConfig.experimentalDecorators": " 'experimentalDecorators' beállítás engedélyezése azon JavaScript-fájlok esetében, amelyek nem részei a projektnek. A meglévő jsconfig.json vagy tsconfig.json fájlok felülírják ezt a beállítást. TypeScript >= 2.3.1-et igényel.", "typescript.autoImportSuggestions.enabled": "Automatikus importálási ajánlatok engedélyezése vagy letiltása. TypeScript >= 2.6.1-t igényel.", - "typescript.experimental.syntaxFolding": "Szintaxisalapú becsukható kódrészletek engedélyezése vagy letiltása." + "typescript.experimental.syntaxFolding": "Szintaxisalapú becsukható kódrészletek engedélyezése vagy letiltása.", + "taskDefinition.tsconfig.description": "A tsconfig-fájl, ami meghatározza a TS-buildet." } \ No newline at end of file diff --git a/i18n/hun/extensions/vb/package.i18n.json b/i18n/hun/extensions/vb/package.i18n.json index e5b0206fc5f..d65c1cd2fca 100644 --- a/i18n/hun/extensions/vb/package.i18n.json +++ b/i18n/hun/extensions/vb/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Visual Basic nyelvi alapok" + "displayName": "Visual Basic nyelvi alapok", + "description": "Kódtöredékeket és szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket és a kódrészek bezárását a Visual Basic-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/xml/package.i18n.json b/i18n/hun/extensions/xml/package.i18n.json index 2b06097d9a0..fcdce1d4ec8 100644 --- a/i18n/hun/extensions/xml/package.i18n.json +++ b/i18n/hun/extensions/xml/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "XML nyelvi alapok" + "displayName": "XML nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket az XML-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/extensions/yaml/package.i18n.json b/i18n/hun/extensions/yaml/package.i18n.json index 76b479c88be..528b7e23e9e 100644 --- a/i18n/hun/extensions/yaml/package.i18n.json +++ b/i18n/hun/extensions/yaml/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "YAML nyelvi alapok" + "displayName": "YAML nyelvi alapok", + "description": "Szintaktikai kiemelést szolgáltat, valamint kezeli az összetartozó zárójeleket a YAML-fájlokban." } \ No newline at end of file diff --git a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 1847b9dcdbf..ed46a94304d 100644 --- a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -23,6 +23,6 @@ "featureRequestDescription": "Írja körül a funkciót, amit látni szeretne! A mezőben GitHub-stílusú markdown használható. A hibajelentés szerkeszthető lesz és képernyőfotók is csatolhatók a githubos előnézetnél.", "expectedResults": "Elvárt működés", "settingsSearchResultsDescription": "Írja le, hogy milyen találatokat szeretett volna kapni, amikor ezzel a keresőkifejezéssel keresett! A mezőben GitHub-stílusú markdown használható. A hibajelentés szerkeszthető lesz és képernyőfotók is csatolhatók a githubos előnézetnél.", - "urlLengthError": "Az adat túllépi a(z) {0} karakteres korlátot. Hossza: {1} karakter.", + "pasteData": "A szükséges adat túl nagy az elküldéshez, ezért a vágólapra másoltuk. Illessze be!", "disabledExtensions": "A kiegészítők le vannak tiltva." } \ No newline at end of file diff --git a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 2ae4255abe0..a53b4129ee2 100644 --- a/i18n/hun/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/hun/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -10,6 +10,7 @@ "issueTypeLabel": "Ez egy", "issueTitleLabel": "Cím", "issueTitleRequired": "Kérjük, adja meg a címet!", + "titleLengthValidation": "A cím túl hosszú.", "systemInfo": "Rendszerinformációk", "sendData": "Adatok elküldése", "processes": "Jelenleg futó folyamatok", @@ -20,9 +21,9 @@ "tryDisablingExtensions": "A probléma letiltott kiegészítőkkel is előidézhető?", "yes": "Igen", "no": "Nem", - "disableExtensionsLabel": "Próbálja meg előidézni a hibát {0}!", + "disableExtensionsLabelText": "Próbálja meg előidézni a hibát {0}!", "disableExtensions": "az összes kiegészítő letiltása és az ablak újratöltése után", - "showRunningExtensionsLabel": "Ha azt gyanítja, hogy a hiba egy kiegészítőben van, {0} a kiegészítővel kapcsolatos hiba jelentéséhez!", + "showRunningExtensionsLabelText": "Ha azt gyanítja, hogy a hiba egy kiegészítőben van, {0} a kiegészítővel kapcsolatos hiba jelentéséhez!", "showRunningExtensions": "tekintse meg a futó kiegészítők listáját", "details": "Írja le a részleteket!", "loadingData": "Adatok betöltése..." diff --git a/i18n/hun/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/hun/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 9f9b5cc3316..0cfe9dca9e2 100644 --- a/i18n/hun/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/hun/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "Felülírás", "cancel": "Mégse", "errorInstallingDependencies": "Hiba a függőségek telepítése közben. {0}", + "MarketPlaceDisabled": "A piactér nincs engedélyezve", + "removeError": "Hiba történt a kiegészítő eltávolítása közben: {0}. Lépjen ki és indítsa el a VS Code-ot mielőtt újrapróbálná!", + "Not Market place extension": "Csak a piactérről származó kiegészítőket lehet újratelepíteni", "notFoundCompatible": "A(z) '{0}' nem telepíthető: nincs a VS Code '{1}' verziójával kompatibilis változat.", "malicious extension": "A kiegészítő nem telepíthető, mert jelentették, hogy problémás.", "notFoundCompatibleDependency": "A telepítés nem sikerült, mert a(z) '{0}' kiegészítő függőség VS Code '{1}' verziójával kompatibilis változata nem található. ", diff --git a/i18n/hun/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/hun/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 3b64a384a83..959ad7f1643 100644 --- a/i18n/hun/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/hun/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -8,5 +8,7 @@ ], "hideNotifications": "Értesítések elrejtése", "zeroNotifications": "Nincs értesítés", - "noNotifications": "Nincs új értesítés" + "noNotifications": "Nincs új értesítés", + "oneNotification": "1 új értesítés", + "notifications": "{0} új értesítés" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/common/theme.i18n.json b/i18n/hun/src/vs/workbench/common/theme.i18n.json index 49d3ed267af..964a483d958 100644 --- a/i18n/hun/src/vs/workbench/common/theme.i18n.json +++ b/i18n/hun/src/vs/workbench/common/theme.i18n.json @@ -59,12 +59,12 @@ "titleBarActiveBackground": "A címsor háttérszíne, ha az ablak aktív. Megjegyzés: ez a beállítás jelenleg csak macOS-en támogatott.", "titleBarInactiveBackground": "A címsor háttérszíne, ha az ablak inaktív. Megjegyzés: ez a beállítás jelenleg csak macOS-en támogatott.", "titleBarBorder": "A címsor keretszíne, ha az ablak aktív. Megjegyzés: ez a beállítás jelenleg csak macOS-en támogatott.", - "notificationsCenterBorder": "Az értesítési központ keretszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", - "notificationsToastBorder": "Az értesítések keretszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", + "notificationCenterBorder": "Az értesítési központ keretszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", + "notificationToastBorder": "Az értesítések keretszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", "notificationsForeground": "Az értesítések előtérszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", "notificationsBackground": "Az értesítések háttérszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", "notificationsLink": "Az értesítésekben található hivatkozások előtérszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", - "notificationsCenterHeaderForeground": "Az értesítési központ fejlécének előtérszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", - "notificationsCenterHeaderBackground": "Az értesítési központ fejlécének háttérszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", + "notificationCenterHeaderForeground": "Az értesítési központ fejlécének előtérszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", + "notificationCenterHeaderBackground": "Az értesítési központ fejlécének háttérszíne. Az értesítések az ablak jobb alsó részén jelennek meg.", "notificationsBorder": "Az értesítéseket egymástól elválasztó keret színe az értesítési központban. Az értesítések az ablak jobb alsó részén jelennek meg." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index b89ad6eeda7..8f5ebe5ec40 100644 --- a/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "Mindig jelenjen meg a hibakeresés az állapotsoron", "onFirstSessionStart": "A hibakeresés csak akkor jelenjen meg az állapotsoron, miután először el lett indítva a hibakeresés", "showInStatusBar": "Meghatározza, hogy megjelenjen-e a hibakeresési állapotsáv", - "openDebug": "Meghatározza, hogy megnyíljon-e a hibakeresési panel a hibakeresési munkamenet indulásakor.", + "openDebug": "Meghatározza, hogy megnyíljon-e a hibakeresési modul a hibakeresési munkamenet indulásakor.", "launch": "Globális hibakeresés indítási konfiguráció. Használható a 'launch.json' alternatívájaként, ami meg van osztva több munkaterület között" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index 557f3786ca3..823bbb73568 100644 --- a/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "Alapértelmezett világos", "defaultHC": "Alapértelmezett nagy kontrasztú", "JSON Validation": "JSON-validációk ({0})", + "fileMatch": "Fájlegyezés", + "schema": "Séma", "commands": "Parancsok ({0})", "command name": "Név", "keyboard shortcuts": "Billentyűparancsok", diff --git a/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index e8b75590c38..cea278e8b7c 100644 --- a/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "Manuális letöltés", + "install vsix": "A letöltés után telepítse manuálisan a letöltött '{0}' VSIX-et.", "installAction": "Telepítés", "installing": "Telepítés...", + "failedToInstall": "Nem sikerült telepíteni a következőt: '{0}'.", "uninstallAction": "Eltávolítás", "Uninstalling": "Eltávolítás...", "updateAction": "Frissítés", "updateTo": "Frissítés ({0})", + "failedToUpdate": "Nem sikerült a következő frissítése: '{0}'.", "ManageExtensionAction.uninstallingTooltip": "Eltávolítás", "enableForWorkspaceAction": "Engedélyezés a munkaterületen", "enableGloballyAction": "Engedélyezés", @@ -58,6 +62,16 @@ "disableAllWorkspace": "Összes telepített kiegészítő letiltása a munkaterületre vonatkozóan", "enableAll": "Összes kiegészítő engedélyezése", "enableAllWorkspace": "Összes kiegészítő engedélyezése ezen a munkaterületen", + "openExtensionsFolder": "Kiegészítők mappájának megnyitása", + "installVSIX": "Telepítés VSIX-ből...", + "installFromVSIX": "Telepítés VSIX-ből", + "installButton": "&&Telepítés", + "InstallVSIXAction.success": "A kiegészítő sikeresen fel lett telepítve. Töltse újra az engedélyezéshez!", + "InstallVSIXAction.reloadNow": "Újratöltés most", + "reinstall": "Kiegészítő újratelepítése...", + "selectExtension": "Válassza ki az újratelepítendő kiegészítőt", + "ReinstallAction.success": "Kiegészítő sikeresen újratelepítve.", + "ReinstallAction.reloadNow": "Újratöltés most", "extensionButtonProminentBackground": "A kiegészítőkhöz tartozó kiemelt műveletgombok (pl. a Telepítés gomb) háttérszíne.", "extensionButtonProminentForeground": "A kiegészítőkhöz tartozó kiemelt műveletgombok (pl. a Telepítés gomb) előtérszíne.", "extensionButtonProminentHoverBackground": "A kiegészítőkhöz tartozó kiemelt műveletgombok (pl. a Telepítés gomb) háttérszíne, ha az egér fölötte van." diff --git a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 9eeabeda5ec..be33ca1c92f 100644 --- a/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "Kiegészítők profilozása", + "restart2": "Kiegészítők profilozásához újraindítás szükséges. Szeretné újraindítani az alkalmazást?", "restart3": "Újraindítás", "cancel": "Mégse", "selectAndStartDebug": "Kattintson a profilozás leállításához!" diff --git a/i18n/hun/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/hun/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index 5f66469d0bd..ff551556d4a 100644 --- a/i18n/hun/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -7,6 +7,6 @@ "Do not edit this file. It is machine generated." ], "editor.action.webvieweditor.showFind": "Váltás a keresőmodulra", - "openToolsLabel": "Webview-eszközök", + "openToolsLabel": "Webview-fejlesztőeszközök megnyitása", "refreshWebviewLabel": "Webview-k újratöltése" } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/hun/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index a00a37e81e8..ffaed50c03f 100644 --- a/i18n/hun/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -26,5 +26,5 @@ "search.followSymlinks": "Meghatározza, hogy keresés során követve legyenek-e a szimbolikus linkek.", "search.smartCase": "Figyelmen kívül hagyja a kis- és nagybetűket, ha a minta csak kisbetűkből áll, ellenkező esetben kis- és nagybetűérzékenyen keres", "search.globalFindClipboard": "Meghatározza, hogy a keresőmodul olvassa és módosítsa-e a megosztott keresési vágólapot macOS-en.", - "search.location": "Meghatározza, hogy a keresés az oldalsávon jelenik meg vagy egy panelként a panelterületen, mely utóbbi esetén több hely van vízszintesen." + "search.location": "Előzetes funkció: meghatározza, hogy a keresés az oldalsávon jelenik meg vagy egy panelként a panelterületen, mely utóbbi esetén több hely van vízszintesen. A következő kiadásban a panel megjelenése optimalizálva lesz a vízszintes megjelenítéshez, és a funkció nem lesz előzetes." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index 342fe2d17d1..e68d7791167 100644 --- a/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,6 +11,6 @@ "terminalCursor.foreground": "A terminál kurzorának előtérszíne.", "terminalCursor.background": "A terminál kurzorának háttérszíne. Lehetővé teszik az olyan karakterek színének módosítását, amelyek fölött egy blokk-típusú kurzor áll.", "terminal.selectionBackground": "A terminálban kijelölt tartalom háttérszíne.", - "terminal.border": "Több terminált elválasztó keret színe. Alapértelmezett értéke megegyezik a panel.border értékével.", + "terminal.border": "A terminálokat elválasztó keret színe. Alapértelmezett értéke megegyezik a panel.border értékével.", "terminal.ansiColor": "'{0}' ANSI-szín a terminálban." } \ No newline at end of file diff --git a/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json index e2b8eaba4c1..41b05f04072 100644 --- a/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/hun/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -16,6 +16,7 @@ "64bitisavailable": "Elérhető a {0} 64-bites Windowsra készült változata! További információhoz kattintson [ide]({1})!", "updateIsReady": "Új {0}-frissítés érhető el.", "noUpdatesAvailable": "Jelenleg nincs elérhető frissítés.", + "ok": "OK", "download now": "Letöltés most", "thereIsUpdateAvailable": "Van elérhető frissítés.", "installUpdate": "Frissítés telepítése", diff --git a/i18n/hun/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/hun/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index d26555edd69..c71dafc3472 100644 --- a/i18n/hun/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/hun/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,6 +30,6 @@ "vscode.extension.badges.description": "A jelvény leírása.", "vscode.extension.extensionDependencies": "Más kiegészítők, melyek függőségei ennek a kiegészítőnek. A kiegészítők azonosítója mindig ${publisher}.${name} formájú. Például: vscode.csharp.", "vscode.extension.scripts.prepublish": "A VS Code kiegészítő publikálása előtt végrehajtott parancsfájl.", - "vscode.extension.scripts.uninstall": "Parancsfájl, ami akkor fut le, miután a kiegészítőt eltávolítják a VS Code-ból (a VS Code újraindítása után). Csak Node-parancsfájlok használhatók.", + "vscode.extension.scripts.uninstall": "Eltávolítási illesztőpont VS Code kiegészítők számára. Parancsfájl, ami a VS Code újraindítása (leállása és elindítása) esetén fut le a kiegészítő teljes eltávolítása után. Csak Node-parancsfájlok használhatók.", "vscode.extension.icon": "Egy 128x128 pixeles ikon elérési útja." } \ No newline at end of file diff --git a/i18n/ita/extensions/bat/package.i18n.json b/i18n/ita/extensions/bat/package.i18n.json index 35229bd6699..57bd86e640b 100644 --- a/i18n/ita/extensions/bat/package.i18n.json +++ b/i18n/ita/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Windows Bat", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file batch Windows." } \ No newline at end of file diff --git a/i18n/ita/extensions/clojure/package.i18n.json b/i18n/ita/extensions/clojure/package.i18n.json index 35229bd6699..7e2eebcb932 100644 --- a/i18n/ita/extensions/clojure/package.i18n.json +++ b/i18n/ita/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Clojure", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Clojure." } \ No newline at end of file diff --git a/i18n/ita/extensions/coffeescript/package.i18n.json b/i18n/ita/extensions/coffeescript/package.i18n.json index 35229bd6699..5a017283e39 100644 --- a/i18n/ita/extensions/coffeescript/package.i18n.json +++ b/i18n/ita/extensions/coffeescript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base sul linguaggio CoffeeScript", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file CoffeeScript." } \ No newline at end of file diff --git a/i18n/ita/extensions/configuration-editing/package.i18n.json b/i18n/ita/extensions/configuration-editing/package.i18n.json index 480d156e9c2..38af8d4423f 100644 --- a/i18n/ita/extensions/configuration-editing/package.i18n.json +++ b/i18n/ita/extensions/configuration-editing/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Modifica della configurazione" + "displayName": "Modifica della configurazione", + "description": "Offre funzionalità (IntelliSense avanzato, auto correzione) nei file di configurazione come le impostazioni, i file di suggerimenti di avvio e di estensione." } \ No newline at end of file diff --git a/i18n/ita/extensions/cpp/package.i18n.json b/i18n/ita/extensions/cpp/package.i18n.json index 35229bd6699..e37028ee02a 100644 --- a/i18n/ita/extensions/cpp/package.i18n.json +++ b/i18n/ita/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni fondamentali del linguaggio C/C++", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file C/C++." } \ No newline at end of file diff --git a/i18n/ita/extensions/csharp/package.i18n.json b/i18n/ita/extensions/csharp/package.i18n.json index 35229bd6699..30b9c0af4c7 100644 --- a/i18n/ita/extensions/csharp/package.i18n.json +++ b/i18n/ita/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio c#", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file C#." } \ No newline at end of file diff --git a/i18n/ita/extensions/css/package.i18n.json b/i18n/ita/extensions/css/package.i18n.json index 6ef7ed5aaf9..35517becb5b 100644 --- a/i18n/ita/extensions/css/package.i18n.json +++ b/i18n/ita/extensions/css/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Funzionalità del linguaggio CSS", + "description": "Offre un supporto avanzato per i file CSS, LESS e SCSS", "css.title": "CSS", "css.lint.argumentsInColorFunction.desc": "Numero di parametri non valido", "css.lint.boxModel.desc": "Non usare width o height con padding o border", diff --git a/i18n/ita/extensions/docker/package.i18n.json b/i18n/ita/extensions/docker/package.i18n.json index 35229bd6699..2eeef5df563 100644 --- a/i18n/ita/extensions/docker/package.i18n.json +++ b/i18n/ita/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Docker", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Docker." } \ No newline at end of file diff --git a/i18n/ita/extensions/emmet/package.i18n.json b/i18n/ita/extensions/emmet/package.i18n.json index a62c898a9fb..4b669f7fc49 100644 --- a/i18n/ita/extensions/emmet/package.i18n.json +++ b/i18n/ita/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Supporto di Emmet per VS codice", "command.wrapWithAbbreviation": "Esegui il wrapping con l'abbreviazione", "command.wrapIndividualLinesWithAbbreviation": "Esegui il wrapping di singole righe con l'abbreviazione", "command.removeTag": "Rimuovi Tag", @@ -54,5 +55,9 @@ "emmetPreferencesFilterCommentTrigger": "Un elenco delimitato da virgole di nomi di attributi che dovrebbero esistere come abbreviazione per il filtro commenti da applicare", "emmetPreferencesFormatNoIndentTags": "Una matrice di nomi di tag che non dovrebbe ottenere il rientro interno", "emmetPreferencesFormatForceIndentTags": "Una matrice di nomi di tag che dovrebbe sempre ottenere il rientro interno", - "emmetPreferencesAllowCompactBoolean": "Se true, viene prodotta una notazione compatta degli attributi booleani" + "emmetPreferencesAllowCompactBoolean": "Se true, viene prodotta una notazione compatta degli attributi booleani", + "emmetPreferencesCssWebkitProperties": "Proprietà CSS delimitate da virgola che assumono il prefisso 'webkit' del vendor quando utilizzate nelle abbreviazioni di Emmet che iniziano per '-'. Per evitare sempre il prefisso 'webkit' impostare stringa vuota.", + "emmetPreferencesCssMozProperties": "Proprietà CSS delimitate da virgola che assumono il prefisso 'moz' del vendor quando utilizzate nelle abbreviazioni di Emmet che iniziano per '-'. Per evitare sempre il prefisso 'moz' impostare stringa vuota.", + "emmetPreferencesCssOProperties": "Proprietà CSS delimitate da virgola che assumono il prefisso 'o' del vendor quando utilizzate nelle abbreviazioni di Emmet che iniziano per '-'. Per evitare sempre il prefisso 'o' impostare stringa vuota.", + "emmetPreferencesCssMsProperties": "Proprietà CSS delimitate da virgola che assumono il prefisso 'ms' del vendor quando utilizzate nelle abbreviazioni di Emmet che iniziano per '-'. Per evitare sempre il prefisso 'ms' impostare stringa vuota." } \ No newline at end of file diff --git a/i18n/ita/extensions/extension-editing/package.i18n.json b/i18n/ita/extensions/extension-editing/package.i18n.json index 81c70f2959a..74c24f789d3 100644 --- a/i18n/ita/extensions/extension-editing/package.i18n.json +++ b/i18n/ita/extensions/extension-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Modifica dei file del pacchetto", - "description": "Fornisce intelli-sense per i punti di estensione per VS Code e le capacità di linting nei file json del pacchetto" + "description": "Offre IntelliSense per i punti di estensione VS Code e le funzionalità di linting nei file package.json." } \ No newline at end of file diff --git a/i18n/ita/extensions/fsharp/package.i18n.json b/i18n/ita/extensions/fsharp/package.i18n.json index 35229bd6699..d07ecc71f82 100644 --- a/i18n/ita/extensions/fsharp/package.i18n.json +++ b/i18n/ita/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio F #", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file F#." } \ No newline at end of file diff --git a/i18n/ita/extensions/git/out/autofetch.i18n.json b/i18n/ita/extensions/git/out/autofetch.i18n.json index a126c47e8b0..204ce599932 100644 --- a/i18n/ita/extensions/git/out/autofetch.i18n.json +++ b/i18n/ita/extensions/git/out/autofetch.i18n.json @@ -8,5 +8,6 @@ ], "yes": "Sì", "no": "No", - "not now": "Chiedimelo in seguito" + "not now": "Chiedimelo in seguito", + "suggest auto fetch": "Desideri che Code [esegua `git fetch` periodicamente]({0})?" } \ No newline at end of file diff --git a/i18n/ita/extensions/git/out/model.i18n.json b/i18n/ita/extensions/git/out/model.i18n.json index f5ab915a1c3..25fcf223ffe 100644 --- a/i18n/ita/extensions/git/out/model.i18n.json +++ b/i18n/ita/extensions/git/out/model.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "too many submodules": "Il repository '{0}' ha {1} sottomoduli che non verranno aperti automaticamente. È possibile comunque aprirli individualmente aprendo il file all'interno.", "no repositories": "Non ci sono repository disponibili", "pick repo": "Scegli un repository" } \ No newline at end of file diff --git a/i18n/ita/extensions/git/package.i18n.json b/i18n/ita/extensions/git/package.i18n.json index cda8e937b55..24f0b387a00 100644 --- a/i18n/ita/extensions/git/package.i18n.json +++ b/i18n/ita/extensions/git/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "GIT", + "description": "Integrazione SCM su Git", "command.clone": "Clona", "command.init": "Inizializza repository", "command.close": "Chiudi repository", @@ -74,6 +75,7 @@ "config.decorations.enabled": "Controlla se Git fornisce colori e distintivi alle visualizzazioni Esplora risorse e Editor aperti.", "config.promptToSaveFilesBeforeCommit": "Controlla se GIT deve verificare la presenza di file non salvati prima di eseguire il commit.", "config.showInlineOpenFileAction": "Controlla se visualizzare un'azione Apri file inline nella visualizzazione modifiche GIT.", + "config.inputValidation": "Controlla quando visualizzare la convalida sull'input del messaggio di commit.", "config.detectSubmodules": "Controlla se rilevare automaticamente i moduli secondari GIT.", "colors.modified": "Colore delle risorse modificate.", "colors.deleted": "Colore delle risorse eliminate.", diff --git a/i18n/ita/extensions/go/package.i18n.json b/i18n/ita/extensions/go/package.i18n.json index 35229bd6699..f3780926927 100644 --- a/i18n/ita/extensions/go/package.i18n.json +++ b/i18n/ita/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Go", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Go." } \ No newline at end of file diff --git a/i18n/ita/extensions/groovy/package.i18n.json b/i18n/ita/extensions/groovy/package.i18n.json index 35229bd6699..c0ca3b88219 100644 --- a/i18n/ita/extensions/groovy/package.i18n.json +++ b/i18n/ita/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Groovy", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file Groovy." } \ No newline at end of file diff --git a/i18n/ita/extensions/grunt/package.i18n.json b/i18n/ita/extensions/grunt/package.i18n.json index 767db525c67..7759deade75 100644 --- a/i18n/ita/extensions/grunt/package.i18n.json +++ b/i18n/ita/extensions/grunt/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.grunt.autoDetect": "Controlla se la rilevazione automatica delle attività Grunt è on/off. L'impostazione predefinita è 'on'." + "description": "Estensione che aggiunge le funzionalità di Grunt a VSCode.", + "displayName": "Supporto Grunt per VSCode", + "config.grunt.autoDetect": "Controlla se la rilevazione automatica delle attività Grunt è on/off. L'impostazione predefinita è 'on'.", + "grunt.taskDefinition.type.description": "L'attività di Grunt da personalizzare.", + "grunt.taskDefinition.file.description": "Il file di Grunt che fornisce l'attività. Può essere omesso." } \ No newline at end of file diff --git a/i18n/ita/extensions/gulp/package.i18n.json b/i18n/ita/extensions/gulp/package.i18n.json index 7535ee5347a..756d2a2dd2d 100644 --- a/i18n/ita/extensions/gulp/package.i18n.json +++ b/i18n/ita/extensions/gulp/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.gulp.autoDetect": "Controlla se la rilevazione automatica delle attività gulp è on/off. L'impostazione predefinita è 'on'." + "description": "Estensione che aggiunge le funzionalità di Gulp a VSCode.", + "displayName": "Supporto Gulp per VSCode", + "config.gulp.autoDetect": "Controlla se la rilevazione automatica delle attività gulp è on/off. L'impostazione predefinita è 'on'.", + "gulp.taskDefinition.type.description": "L'attività di Gulp da personalizzare.", + "gulp.taskDefinition.file.description": "Il file di Grunt che fornisce l'attività. Può essere omesso." } \ No newline at end of file diff --git a/i18n/ita/extensions/handlebars/package.i18n.json b/i18n/ita/extensions/handlebars/package.i18n.json index 35229bd6699..1d6614abda4 100644 --- a/i18n/ita/extensions/handlebars/package.i18n.json +++ b/i18n/ita/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Handlebars", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Handlebars." } \ No newline at end of file diff --git a/i18n/ita/extensions/hlsl/package.i18n.json b/i18n/ita/extensions/hlsl/package.i18n.json index 35229bd6699..0876afb4ee1 100644 --- a/i18n/ita/extensions/hlsl/package.i18n.json +++ b/i18n/ita/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio HLSL", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file HLSL." } \ No newline at end of file diff --git a/i18n/ita/extensions/html/package.i18n.json b/i18n/ita/extensions/html/package.i18n.json index 55d9fa1dde7..08d31d44db6 100644 --- a/i18n/ita/extensions/html/package.i18n.json +++ b/i18n/ita/extensions/html/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Funzionalità del linguaggio HTML", + "description": "Offre un supporto avanzato sul linguaggio per i file HTML, Razor e Handlebars", "html.format.enable.desc": "Abilita/Disabilita il formattatore HTML predefinito", "html.format.wrapLineLength.desc": "Numero massimo di caratteri per riga (0 = disabilita).", "html.format.unformatted.desc": "Elenco di tag, separati da virgole, che non devono essere riformattati. Con 'null' viene usata l'impostazione predefinita che prevede l'uso di tutti i tag elencati in https://www.w3.org/TR/html5/dom.html#phrasing-content.", @@ -27,5 +29,6 @@ "html.trace.server.desc": "Traccia la comunicazione tra VS Code e il server del linguaggio HTML.", "html.validate.scripts": "Consente di configurare se il supporto del linguaggio HTML predefinito convalida gli script incorporati.", "html.validate.styles": "Consente di configurare se il supporto del linguaggio HTML predefinito convalida gli stili incorporati.", + "html.experimental.syntaxFolding": "Abilita/disabilita i marcatori di folding con riconoscimento della sintassi.", "html.autoClosingTags": "Abilita/Disabilita la chiusura automatica dei tag HTML." } \ No newline at end of file diff --git a/i18n/ita/extensions/ini/package.i18n.json b/i18n/ita/extensions/ini/package.i18n.json index 35229bd6699..69b59b8fa80 100644 --- a/i18n/ita/extensions/ini/package.i18n.json +++ b/i18n/ita/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio ini", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Ini." } \ No newline at end of file diff --git a/i18n/ita/extensions/jake/package.i18n.json b/i18n/ita/extensions/jake/package.i18n.json index cd44bf56a70..ca78c7d1009 100644 --- a/i18n/ita/extensions/jake/package.i18n.json +++ b/i18n/ita/extensions/jake/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Estensione che aggiunge le funzionalità di Jake a VSCode.", + "displayName": "Supporto di Jake per VSCode", + "jake.taskDefinition.type.description": "L'attività di Jake da personalizzare.", + "jake.taskDefinition.file.description": "Il file di Jake che fornisce l'attività. Può essere omesso.", "config.jake.autoDetect": "Controlla se la rilevazione automatica delle attività Jake è on/off. L'impostazione predefinita è 'on'." } \ No newline at end of file diff --git a/i18n/ita/extensions/java/package.i18n.json b/i18n/ita/extensions/java/package.i18n.json index 35229bd6699..bf17c2aa557 100644 --- a/i18n/ita/extensions/java/package.i18n.json +++ b/i18n/ita/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Java", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file Java." } \ No newline at end of file diff --git a/i18n/ita/extensions/javascript/package.i18n.json b/i18n/ita/extensions/javascript/package.i18n.json index 35229bd6699..7383e18eed6 100644 --- a/i18n/ita/extensions/javascript/package.i18n.json +++ b/i18n/ita/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio JavaScript", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file JavaScript." } \ No newline at end of file diff --git a/i18n/ita/extensions/json/package.i18n.json b/i18n/ita/extensions/json/package.i18n.json index 22c075040ad..b6f387db316 100644 --- a/i18n/ita/extensions/json/package.i18n.json +++ b/i18n/ita/extensions/json/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Funzionalità del linguaggio JSON", + "description": "Fornisce supporto avanzato del linguaggio per i file JSON.", "json.schemas.desc": "Associa schemi a file JSON nel progetto corrente", "json.schemas.url.desc": "URL di uno schema o percorso relativo di uno schema nella directory corrente", "json.schemas.fileMatch.desc": "Matrice di criteri dei file da usare per la ricerca durante la risoluzione di file JSON in schemi.", @@ -14,5 +16,6 @@ "json.format.enable.desc": "Abilita/Disabilita il formattatore JSON predefinito (richiede il riavvio)", "json.tracing.desc": "Traccia la comunicazione tra VS Code e il server del linguaggio JSON.", "json.colorDecorators.enable.desc": "Abilita o disabilita gli elementi Decorator di tipo colore", - "json.colorDecorators.enable.deprecationMessage": "L'impostazione `json.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`." + "json.colorDecorators.enable.deprecationMessage": "L'impostazione `json.colorDecorators.enable` è stata deprecata e sostituita da `editor.colorDecorators`.", + "json.experimental.syntaxFolding": "Abilita/disabilita i marcatori di folding con riconoscimento della sintassi." } \ No newline at end of file diff --git a/i18n/ita/extensions/less/package.i18n.json b/i18n/ita/extensions/less/package.i18n.json index 35229bd6699..ef423d2dd45 100644 --- a/i18n/ita/extensions/less/package.i18n.json +++ b/i18n/ita/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Less", + "description": "Offre la sottolineatura delle sintassi, il match delle parentesi e il folding nei file Less." } \ No newline at end of file diff --git a/i18n/ita/extensions/log/package.i18n.json b/i18n/ita/extensions/log/package.i18n.json index 18b39839b8a..f29fd95bf3d 100644 --- a/i18n/ita/extensions/log/package.i18n.json +++ b/i18n/ita/extensions/log/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Log", - "description": "Offre la sottolineatura delle sintassi per i file con estensione .log" + "description": "Offre la sottolineatura delle sintassi per i file con estensione log." } \ No newline at end of file diff --git a/i18n/ita/extensions/lua/package.i18n.json b/i18n/ita/extensions/lua/package.i18n.json index 35229bd6699..e5d42018ae1 100644 --- a/i18n/ita/extensions/lua/package.i18n.json +++ b/i18n/ita/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Lua", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Lua." } \ No newline at end of file diff --git a/i18n/ita/extensions/make/package.i18n.json b/i18n/ita/extensions/make/package.i18n.json index 35229bd6699..e8034f3eb77 100644 --- a/i18n/ita/extensions/make/package.i18n.json +++ b/i18n/ita/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Make", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Make." } \ No newline at end of file diff --git a/i18n/ita/extensions/markdown-basics/package.i18n.json b/i18n/ita/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..816ce519d4d --- /dev/null +++ b/i18n/ita/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Nozioni di base del linguaggio Markdown", + "description": "Offre gli snippet e la sottolineatura delle sintassi per Markdown." +} \ No newline at end of file diff --git a/i18n/ita/extensions/markdown/out/features/preview.i18n.json b/i18n/ita/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..c46a3464cc4 --- /dev/null +++ b/i18n/ita/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Anteprima] {0}", + "previewTitle": "Anteprima {0}" +} \ No newline at end of file diff --git a/i18n/ita/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/ita/extensions/markdown/out/features/previewContentProvider.i18n.json index d37fe56fec1..991ae221d10 100644 --- a/i18n/ita/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/ita/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,6 +8,5 @@ ], "preview.securityMessage.text": "Alcuni contenuti sono stati disabilitati in questo documento", "preview.securityMessage.title": "Contenuti potenzialmente non sicuri sono stati disattivati nell'anteprima del Markdown. Modificare l'impostazione di protezione dell'anteprima del Markdown per consentire la visualizzazione di contenuto insicuro o abilitare gli script", - "preview.securityMessage.label": "Avviso di sicurezza contenuto disabilitato", - "previewTitle": "Anteprima {0}" + "preview.securityMessage.label": "Avviso di sicurezza contenuto disabilitato" } \ No newline at end of file diff --git a/i18n/ita/extensions/markdown/package.i18n.json b/i18n/ita/extensions/markdown/package.i18n.json index 8a109f9df23..a46f2021ca0 100644 --- a/i18n/ita/extensions/markdown/package.i18n.json +++ b/i18n/ita/extensions/markdown/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Funzionalità del linguaggio Markdown", + "description": "Fornisce un supporto avanzato del linguaggio per Markdown.", "markdown.preview.breaks.desc": "Imposta come le interruzioni di riga vengono visualizzate nell'anteprima di markdown. Impostarlo a 'true' crea un
per ogni carattere di nuova riga.", "markdown.preview.linkify": "Abilita o disabilita la conversione di testo simile a URL in collegamenti nell'anteprima markdown.", "markdown.preview.doubleClickToSwitchToEditor.desc": "Fare doppio clic nell'anteprima markdown per passare all'editor.", @@ -13,12 +15,18 @@ "markdown.preview.fontSize.desc": "Consente di controllare le dimensioni del carattere in pixel usate nell'anteprima markdown.", "markdown.preview.lineHeight.desc": "Consente di controllare l'altezza della riga usata nell'anteprima markdown. Questo numero è relativo alle dimensioni del carattere.", "markdown.preview.markEditorSelection.desc": "Contrassegna la selezione dell'editor corrente nell'anteprima markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Quando si scorre un anteprima di markdown, aggiornare la visualizzazione dell'editor.", + "markdown.preview.scrollPreviewWithEditor.desc": "Quando si scorre un editor di markdown, aggiornare la visualizzazione dell'anteprima.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Deprecato] Scorre l'anteprima markdown in modo da visualizzare la riga attualmente selezionata dall'editor.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Questa impostazione è stata sostituita da 'markdown.preview.scrollPreviewWithEditor' e non ha più effetto.", "markdown.preview.title": "Apri anteprima", "markdown.previewFrontMatter.dec": "Consente di impostare il rendering del front matter YAML nell'anteprima markdown. Con 'hide' il front matter viene rimosso; altrimenti il front matter viene considerato come contenuto markdown.", "markdown.previewSide.title": "Apri anteprima lateralmente", + "markdown.showLockedPreviewToSide.title": "Apri anteprima bloccata lateralmente", "markdown.showSource.title": "Mostra origine", "markdown.styles.dec": "Elenco di URL o percorsi locali dei fogli di stile CSS da usare dall'anteprima markdown. I percorsi relativi vengono interpretati come relativi alla cartella aperta nella finestra di esplorazione. Se non è presente alcuna cartella aperta, vengono interpretati come relativi al percorso del file markdown. Tutti i caratteri '\\' devono essere scritti come '\\\\'.", "markdown.showPreviewSecuritySelector.title": "Modifica impostazioni di sicurezza anteprima", "markdown.trace.desc": "Abilitare la registrazione debug per l'estensione markdown.", - "markdown.refreshPreview.title": "Aggiorna anteprima" + "markdown.preview.refresh.title": "Aggiorna anteprima", + "markdown.preview.toggleLock.title": "Attiva/Disattiva blocco anteprima" } \ No newline at end of file diff --git a/i18n/ita/extensions/merge-conflict/package.i18n.json b/i18n/ita/extensions/merge-conflict/package.i18n.json index d442fe0881f..5c38762d3e8 100644 --- a/i18n/ita/extensions/merge-conflict/package.i18n.json +++ b/i18n/ita/extensions/merge-conflict/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Esegui merge del conflitto", + "description": "Evidenziazione e comandi per i conflitti di merge inline.", "command.category": "Esegui merge del conflitto", "command.accept.all-current": "Accettare tutte le modifiche correnti", "command.accept.all-incoming": "Accettare tutte le modifiche in ingresso", diff --git a/i18n/ita/extensions/npm/package.i18n.json b/i18n/ita/extensions/npm/package.i18n.json index e2947af8da1..b541b36c365 100644 --- a/i18n/ita/extensions/npm/package.i18n.json +++ b/i18n/ita/extensions/npm/package.i18n.json @@ -6,9 +6,13 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Estensione che aggiunge il supporto delle attività per gli script npm.", "displayName": "Supporto Npm per VSCode", "config.npm.autoDetect": "Controlla se la rilevazione automatica degli script npm è on/off. L'impostazione predefinita è 'on'.", "config.npm.runSilent": "Eseguire comandi npm con l'opzione `--silent`.", "config.npm.packageManager": "Il gestore dei pacchetti utilizzato per eseguire script.", - "npm.parseError": "Rilevamento attività NPM: Impossibile analizzare il file {0}" + "config.npm.exclude": "Configura i modelli glob per le cartelle che dovrebbero essere escluse dalla rilevazione automatica di script.", + "npm.parseError": "Rilevamento attività NPM: Impossibile analizzare il file {0}", + "taskdef.script": "Lo script di npm da personalizzare.", + "taskdef.path": "Il percorso della cartella del file package.json che fornisce lo script. Può essere omesso." } \ No newline at end of file diff --git a/i18n/ita/extensions/objective-c/package.i18n.json b/i18n/ita/extensions/objective-c/package.i18n.json index 35229bd6699..256532fbeeb 100644 --- a/i18n/ita/extensions/objective-c/package.i18n.json +++ b/i18n/ita/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Objective-C", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Objective-C." } \ No newline at end of file diff --git a/i18n/ita/extensions/perl/package.i18n.json b/i18n/ita/extensions/perl/package.i18n.json index 35229bd6699..2bf8c09acc7 100644 --- a/i18n/ita/extensions/perl/package.i18n.json +++ b/i18n/ita/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Perl", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Perl." } \ No newline at end of file diff --git a/i18n/ita/extensions/php/package.i18n.json b/i18n/ita/extensions/php/package.i18n.json index ea44ea91d9f..f2707697f23 100644 --- a/i18n/ita/extensions/php/package.i18n.json +++ b/i18n/ita/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Indica se il linter viene eseguito durante il salvataggio o la digitazione.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Non consentire la convalida di PHP eseguibile (definito come impostazione dell'area di lavoro)" + "command.untrustValidationExecutable": "Non consentire la convalida di PHP eseguibile (definito come impostazione dell'area di lavoro)", + "displayName": "Funzionalità del linguaggio PHP", + "description": "Offre IntelliSense, linting e nozioni di base sul linguaggio per i file PHP." } \ No newline at end of file diff --git a/i18n/ita/extensions/powershell/package.i18n.json b/i18n/ita/extensions/powershell/package.i18n.json index 35229bd6699..d8a5cae7e5a 100644 --- a/i18n/ita/extensions/powershell/package.i18n.json +++ b/i18n/ita/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio PowerShell", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file PowerShell." } \ No newline at end of file diff --git a/i18n/ita/extensions/pug/package.i18n.json b/i18n/ita/extensions/pug/package.i18n.json index 35229bd6699..bc45fcd9c9e 100644 --- a/i18n/ita/extensions/pug/package.i18n.json +++ b/i18n/ita/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Pug", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Pug." } \ No newline at end of file diff --git a/i18n/ita/extensions/python/package.i18n.json b/i18n/ita/extensions/python/package.i18n.json index 35229bd6699..27872730a05 100644 --- a/i18n/ita/extensions/python/package.i18n.json +++ b/i18n/ita/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Python", + "description": "Offre la sottolineatura delle sintassi, il match delle parentesi e il folding nei file Python." } \ No newline at end of file diff --git a/i18n/ita/extensions/r/package.i18n.json b/i18n/ita/extensions/r/package.i18n.json index 35229bd6699..c50685cdd2b 100644 --- a/i18n/ita/extensions/r/package.i18n.json +++ b/i18n/ita/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio R", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file R." } \ No newline at end of file diff --git a/i18n/ita/extensions/razor/package.i18n.json b/i18n/ita/extensions/razor/package.i18n.json index 35229bd6699..8146d5409a7 100644 --- a/i18n/ita/extensions/razor/package.i18n.json +++ b/i18n/ita/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Razor", + "description": "Offre la sottolineatura delle sintassi, il match delle parentesi e il folding nei file Razor." } \ No newline at end of file diff --git a/i18n/ita/extensions/ruby/package.i18n.json b/i18n/ita/extensions/ruby/package.i18n.json index 35229bd6699..b6336a966e3 100644 --- a/i18n/ita/extensions/ruby/package.i18n.json +++ b/i18n/ita/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Ruby", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Ruby." } \ No newline at end of file diff --git a/i18n/ita/extensions/rust/package.i18n.json b/i18n/ita/extensions/rust/package.i18n.json index 35229bd6699..9c58aeacc52 100644 --- a/i18n/ita/extensions/rust/package.i18n.json +++ b/i18n/ita/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Rust", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Rust." } \ No newline at end of file diff --git a/i18n/ita/extensions/scss/package.i18n.json b/i18n/ita/extensions/scss/package.i18n.json index 35229bd6699..3f89b4c205d 100644 --- a/i18n/ita/extensions/scss/package.i18n.json +++ b/i18n/ita/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio SCSS", + "description": "Offre la sottolineatura delle sintassi, il match delle parentesi e il folding nei file SCSS." } \ No newline at end of file diff --git a/i18n/ita/extensions/shaderlab/package.i18n.json b/i18n/ita/extensions/shaderlab/package.i18n.json index 35229bd6699..8646622df05 100644 --- a/i18n/ita/extensions/shaderlab/package.i18n.json +++ b/i18n/ita/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Shaderlab", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Shaderlab." } \ No newline at end of file diff --git a/i18n/ita/extensions/shellscript/package.i18n.json b/i18n/ita/extensions/shellscript/package.i18n.json index 35229bd6699..fdb72128acb 100644 --- a/i18n/ita/extensions/shellscript/package.i18n.json +++ b/i18n/ita/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Shell Script", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file Shell Script." } \ No newline at end of file diff --git a/i18n/ita/extensions/sql/package.i18n.json b/i18n/ita/extensions/sql/package.i18n.json index 35229bd6699..5b9d8f3c879 100644 --- a/i18n/ita/extensions/sql/package.i18n.json +++ b/i18n/ita/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio SQL", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file SQL." } \ No newline at end of file diff --git a/i18n/ita/extensions/swift/package.i18n.json b/i18n/ita/extensions/swift/package.i18n.json index 35229bd6699..d913b1f06c8 100644 --- a/i18n/ita/extensions/swift/package.i18n.json +++ b/i18n/ita/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Swift", + "description": "Offre gli snippet, la sottolineatura delle sintassi e il match delle parentesi nei file Swift." } \ No newline at end of file diff --git a/i18n/ita/extensions/typescript-basics/package.i18n.json b/i18n/ita/extensions/typescript-basics/package.i18n.json index 35229bd6699..cf91c25e086 100644 --- a/i18n/ita/extensions/typescript-basics/package.i18n.json +++ b/i18n/ita/extensions/typescript-basics/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio TypeScript", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file TypeScript." } \ No newline at end of file diff --git a/i18n/ita/extensions/typescript/package.i18n.json b/i18n/ita/extensions/typescript/package.i18n.json index 46344c8d88e..054fef232fe 100644 --- a/i18n/ita/extensions/typescript/package.i18n.json +++ b/i18n/ita/extensions/typescript/package.i18n.json @@ -55,5 +55,7 @@ "typescript.quickSuggestionsForPaths": "Attiva/Disattiva suggerimenti rapidi quando si digita un percorso di importazione.", "typescript.locale": "Assegna le impostazioni internazionali utilizzate per riportare errori TypeScript. Richiede TypeScript > = 2.6.0. Il valore predefinito 'null' utilizza le impostazioni internazionali di VS Code.", "javascript.implicitProjectConfig.experimentalDecorators": "Abilita/disabilita 'experimentalDecorators' per i file JavaScript che non fanno parte di un progetto. File jsconfig.json o tsconfig.json esistenti ignorano questa impostazione. Richiede TypeScript >= 2.3.1.", - "typescript.autoImportSuggestions.enabled": "Abilita/Disabilita suggerimenti importazione automatica. Richiede una versione di TypeScript >= 2.6.1" + "typescript.autoImportSuggestions.enabled": "Abilita/Disabilita suggerimenti importazione automatica. Richiede una versione di TypeScript >= 2.6.1", + "typescript.experimental.syntaxFolding": "Abilita/disabilita i marcatori di folding con riconoscimento della sintassi.", + "taskDefinition.tsconfig.description": "File tsconfig che definisce la compilazione TS." } \ No newline at end of file diff --git a/i18n/ita/extensions/vb/package.i18n.json b/i18n/ita/extensions/vb/package.i18n.json index 35229bd6699..94b9116a352 100644 --- a/i18n/ita/extensions/vb/package.i18n.json +++ b/i18n/ita/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio Visual Basic", + "description": "Offre gli snippet, la sottolineatura delle sintassi, il match delle parentesi e il folding nei file Visual Basic." } \ No newline at end of file diff --git a/i18n/ita/extensions/xml/package.i18n.json b/i18n/ita/extensions/xml/package.i18n.json index 35229bd6699..25306841830 100644 --- a/i18n/ita/extensions/xml/package.i18n.json +++ b/i18n/ita/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio XML", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file XML." } \ No newline at end of file diff --git a/i18n/ita/extensions/yaml/package.i18n.json b/i18n/ita/extensions/yaml/package.i18n.json index 35229bd6699..c61f843104a 100644 --- a/i18n/ita/extensions/yaml/package.i18n.json +++ b/i18n/ita/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Nozioni di base del linguaggio YAML", + "description": "Offre la sottolineatura delle sintassi e il match delle parentesi nei file YAML." } \ No newline at end of file diff --git a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index c9c81e13178..24c38320db5 100644 --- a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -12,7 +12,17 @@ "open": "Apri", "closed": "Chiuso", "noResults": "Non sono stati trovati risultati", + "settingsSearchIssue": "Problema di ricerca impostazioni", + "bugReporter": "Segnalazione bug", + "performanceIssue": "Problema di prestazioni", + "featureRequest": "Richiesta di funzionalità", "stepsToReproduce": "Passi da riprodurre", + "bugDescription": "Indicare i passaggi necessari per riprodurre il problema in modo affidabile. Includere i risultati effettivi e quelli previsti. È supportato il linguaggio Markdown per GitHub. Sarà possibile modificare il problema e aggiungere screenshot quando verrà visualizzato in anteprima in GitHub.", + "performanceIssueDesciption": "Quando si è verificato questo problema di prestazioni? All'avvio o dopo una serie specifiche di azioni? È supportato il linguaggio Markdown per GitHub. Sarà possibile modificare il problema e aggiungere screenshot quando verrà visualizzato in anteprima in GitHub.", "description": "Descrizione", + "featureRequestDescription": "Descrivere la funzionalità desiderata. È supportato il linguaggio Markdown per GitHub. Sarà possibile modificare il problema e aggiungere screenshot quando verrà visualizzato in anteprima in GitHub.", + "expectedResults": "Risultati previsti", + "settingsSearchResultsDescription": "Elencare i risultati che si prevedeva di visualizzare durante la ricerca con questa query. È supportato il linguaggio Markdown per GitHub. Sarà possibile modificare il problema e aggiungere screenshot quando verrà visualizzato in anteprima in GitHub.", + "pasteData": "I dati necessari sono stati scritti negli appunti perché erano eccessivi per l'invio. Incollarli.", "disabledExtensions": "Le estensioni sono disabilitate" } \ No newline at end of file diff --git a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 9abb25d7aca..bd90ead3d7e 100644 --- a/i18n/ita/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/ita/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -7,15 +7,24 @@ "Do not edit this file. It is machine generated." ], "completeInEnglish": "Completare il modulo in lingua inglese.", + "issueTypeLabel": "Questo è un", "issueTitleLabel": "Titolo", "issueTitleRequired": "Immettere un titolo.", + "titleLengthValidation": "Il titolo è troppo lungo.", "systemInfo": "Informazioni sul sistema in uso", "sendData": "Invia i dati", "processes": "Processi attualmente in esecuzione", "workspaceStats": "Statistiche area di lavoro personale", "extensions": "Estensioni personali", + "searchedExtensions": "Estensioni cercate", + "settingsSearchDetails": "Dettagli ricerca impostazioni", + "tryDisablingExtensions": "Il problema è riproducibile quando le estensioni sono disabilitate?", "yes": "Sì", "no": "No", + "disableExtensionsLabelText": "Provare a riprodurre il problema dopo {0}.", "disableExtensions": "disabilitando tutte le estensioni e ricaricando la finestra", + "showRunningExtensionsLabelText": "Se si sospetta che il problema sia relativo all'estensione, {0} per segnalare il problema.", + "showRunningExtensions": "visualizzare tutte le estensioni in esecuzione", + "details": "Immettere i dettagli.", "loadingData": "Caricamento dei dati..." } \ No newline at end of file diff --git a/i18n/ita/src/vs/code/electron-main/logUploader.i18n.json b/i18n/ita/src/vs/code/electron-main/logUploader.i18n.json index c1049b16456..39ed2854c63 100644 --- a/i18n/ita/src/vs/code/electron-main/logUploader.i18n.json +++ b/i18n/ita/src/vs/code/electron-main/logUploader.i18n.json @@ -9,6 +9,10 @@ "invalidEndpoint": "Endpoint dell'uploader di log non valido", "beginUploading": "Caricamento...", "didUploadLogs": "Caricamento riuscito. ID file di log: {0}", + "logUploadPromptHeader": "I log della sessione verranno caricati in un endpoint Microsoft protetto accessibile solo ai membri Microsoft del team di VS Code.", + "logUploadPromptBody": "I log della sessione possono contenere informazioni personali, quali percorsi completi o contenuti di file. Esaminare e correggere i file di log della sessione qui: '{0}'", + "logUploadPromptBodyDetails": "Continuando si conferma di aver esaminato e corretto i file di log della sessione e di accettare che Microsoft li usi per eseguire il debug di VS Code.", + "logUploadPromptAcceptInstructions": "Per proseguire con l'upload, eseguire il codice con '--upload-logs={0}'", "postError": "Si è verificato un errore durante l'invio dei log: {0}", "responseError": "Si è verificato un errore durante l'invio dei log. È stato ottenuto {0} - {1}", "parseError": "Si è verificato un errore durante l'analisi della risposta", diff --git a/i18n/ita/src/vs/code/electron-main/menus.i18n.json b/i18n/ita/src/vs/code/electron-main/menus.i18n.json index f30391d5843..4b19663530a 100644 --- a/i18n/ita/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/ita/src/vs/code/electron-main/menus.i18n.json @@ -93,6 +93,7 @@ "miOpenView": "&&Apri visualizzazione...", "miToggleFullScreen": "Attiva/Disattiva sc&&hermo intero", "miToggleZenMode": "Attiva/Disattiva modalità Zen", + "miToggleCenteredLayout": "Attiva/Disattiva layout centrato", "miToggleMenuBar": "Attiva/Disattiva &&barra dei menu", "miSplitEditor": "Dividi &&editor", "miToggleEditorLayout": "Attiva/Disattiva &&layout gruppi dell'editor", diff --git a/i18n/ita/src/vs/code/electron-main/window.i18n.json b/i18n/ita/src/vs/code/electron-main/window.i18n.json index 35229bd6699..5b97df86881 100644 --- a/i18n/ita/src/vs/code/electron-main/window.i18n.json +++ b/i18n/ita/src/vs/code/electron-main/window.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hiddenMenuBar": "È comunque possibile accedere alla barra dei menu premendo ALT." } \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json index bd30748cae5..d51e843ddbf 100644 --- a/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/ita/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -9,11 +9,13 @@ "lineHighlight": "Colore di sfondo per l'evidenziazione della riga alla posizione del cursore.", "lineHighlightBorderBox": "Colore di sfondo per il bordo intorno alla riga alla posizione del cursore.", "rangeHighlight": "Colore di sfondo degli intervalli evidenziati, ad esempio dalle funzionalità Quick Open e Trova. il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", + "rangeHighlightBorder": "Colore di sfondo del bordo intorno agli intervalli selezionati.", "caret": "Colore del cursore dell'editor.", "editorCursorBackground": "Colore di sfondo del cursore editor. Permette di personalizzare il colore di un carattere quando sovrapposto da un blocco cursore.", "editorWhitespaces": "Colore dei caratteri di spazio vuoto nell'editor.", "editorIndentGuides": "Colore delle guide per i rientri dell'editor.", "editorLineNumbers": "Colore dei numeri di riga dell'editor.", + "editorActiveLineNumber": "Colore dei numeri per la riga attiva dell'editor", "editorRuler": "Colore dei righelli dell'editor.", "editorCodeLensForeground": "Colore primo piano delle finestre di CodeLens dell'editor", "editorBracketMatchBackground": "Colore di sfondo delle parentesi corrispondenti", diff --git a/i18n/ita/src/vs/editor/contrib/format/formatActions.i18n.json b/i18n/ita/src/vs/editor/contrib/format/formatActions.i18n.json index 16fb8383a56..6a24fce8757 100644 --- a/i18n/ita/src/vs/editor/contrib/format/formatActions.i18n.json +++ b/i18n/ita/src/vs/editor/contrib/format/formatActions.i18n.json @@ -10,6 +10,7 @@ "hintn1": "Sono state apportate {0} modifiche di formattazione a riga {1}", "hint1n": "È stata apportata 1 modifica di formattazione tra le righe {0} e {1}", "hintnn": "Sono state apportate {0} modifiche di formattazione tra le righe {1} e {2}", + "no.provider": "Non c'è alcun formattatore installato per i file '{0}'.", "formatDocument.label": "Formatta documento", "formatSelection.label": "Formatta selezione" } \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/contrib/links/links.i18n.json b/i18n/ita/src/vs/editor/contrib/links/links.i18n.json index e086db7fd7d..3c877aef4f6 100644 --- a/i18n/ita/src/vs/editor/contrib/links/links.i18n.json +++ b/i18n/ita/src/vs/editor/contrib/links/links.i18n.json @@ -12,5 +12,7 @@ "links.command": "Ctrl + clic per eseguire il comando", "links.navigate.al": "Alt + clic per seguire il collegamento", "links.command.al": "Alt + clic per eseguire il comando", + "invalid.url": "Non è stato possibile aprire questo collegamento perché il formato non è valido: {0}", + "missing.url": "Non è stato possibile aprire questo collegamento perché manca la destinazione.", "label": "Apri il collegamento" } \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/contrib/rename/rename.i18n.json b/i18n/ita/src/vs/editor/contrib/rename/rename.i18n.json index eae35f925cb..c0974ff283c 100644 --- a/i18n/ita/src/vs/editor/contrib/rename/rename.i18n.json +++ b/i18n/ita/src/vs/editor/contrib/rename/rename.i18n.json @@ -8,5 +8,6 @@ ], "no result": "Nessun risultato.", "aria": "Correttamente rinominato '{0}' in '{1}'. Sommario: {2}", + "rename.failed": "L'esecuzione dell'operazione di ridenominazione non è riuscita.", "rename.label": "Rinomina simbolo" } \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index 78ccdd76386..0129c5330e3 100644 --- a/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/ita/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -8,6 +8,8 @@ ], "wordHighlight": "Colore di sfondo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", "wordHighlightStrong": "Colore di sfondo di un simbolo durante l'accesso in scrittura, per esempio durante la scrittura di una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", + "wordHighlightBorder": "Colore del bordo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile.", + "wordHighlightStrongBorder": "Colore del bordo di un simbolo durante l'accesso in scrittura, ad esempio durante la scrittura in una variabile.", "overviewRulerWordHighlightForeground": "Colore del marcatore del righello delle annotazioni per le evidenziazioni dei simboli.", "overviewRulerWordHighlightStrongForeground": "Colore del marcatore del righello delle annotazioni per le evidenziazioni dei simboli di accesso in scrittura.", "wordHighlight.next.label": "Vai al prossimo simbolo evidenziato", diff --git a/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index ca0ebf07c84..2dbb832ebf5 100644 --- a/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/ita/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "Eseguire l'override", "cancel": "Annulla", "errorInstallingDependencies": "Errore durante l'installazione delle dipendenze. {0}", + "MarketPlaceDisabled": "Il Marketplace non è abilitato", + "removeError": "Errore durante la rimozione dell'estensione: {0}. Chiudere e riavviare VS Code prima di riprovare.", + "Not Market place extension": "Solo le Estensioni del Marketplace possono essere reinstallate", "notFoundCompatible": "Impossibile installare '{0}'; non è presente alcuna versione compatibile con VS Code '{1}'.", "malicious extension": "Non è possibile installare l'estensione poiché è stata segnalata come problematica.", "notFoundCompatibleDependency": "Impossibile installare perché non è stata trovata l'estensione dipendente '{0}' compatibile con la versione corrente '{1}' di VS Code.", diff --git a/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json index 564925338c7..52b0e204cb5 100644 --- a/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/ita/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -34,6 +34,7 @@ "inputValidationErrorBackground": "Colore di sfondo di convalida dell'input di tipo Errore.", "inputValidationErrorBorder": "Colore bordo di convalida dell'input di tipo Errore.", "dropdownBackground": "Sfondo dell'elenco a discesa.", + "dropdownListBackground": "Sfondo dell'elenco a discesa.", "dropdownForeground": "Primo piano dell'elenco a discesa.", "dropdownBorder": "Bordo dell'elenco a discesa.", "listFocusBackground": "Colore sfondo Elenco/Struttura ad albero per l'elemento evidenziato quando l'Elenco/Struttura ad albero è attivo. Un Elenco/Struttura ad albero attivo\nha il focus della tastiera, uno inattivo no.", @@ -67,13 +68,19 @@ "editorSelectionForeground": "Colore del testo selezionato per il contrasto elevato.", "editorInactiveSelection": "Colore della selezione in un editor non attivo. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", "editorSelectionHighlight": "Colore delle aree con lo stesso contenuto della selezione. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", + "editorSelectionHighlightBorder": "Colore del bordo delle regioni con lo stesso contenuto della selezione.", "editorFindMatch": "Colore della corrispondenza di ricerca corrente.", "findMatchHighlight": "Colore degli altri risultati della ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", "findRangeHighlight": "Colore dell'intervallo limite della ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", + "editorFindMatchBorder": "Colore del bordo della corrispondenza della ricerca corrente.", + "findMatchHighlightBorder": "Colore del bordo delle altre corrispondenze della ricerca.", + "findRangeHighlightBorder": "Colore del bordo dell'intervallo che delimita la ricerca. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.", "hoverHighlight": "Evidenziazione sotto la parola per cui è visualizzata un'area sensibile al passaggio del mouse. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", "hoverBackground": "Colore di sfondo dell'area sensibile al passaggio del mouse dell'editor.", "hoverBorder": "Colore del bordo dell'area sensibile al passaggio del mouse dell'editor.", "activeLinkForeground": "Colore dei collegamenti attivi.", + "diffEditorInserted": "Colore di sfondo per il testo che è stato inserito. Il colore non deve essere opaco per non nascondere le decorazioni sottostanti.", + "diffEditorRemoved": "Colore di sfondo per il testo che è stato rimosso. Il colore non deve essere opaco per non nascondere le decorazioni sottostanti.", "diffEditorInsertedOutline": "Colore del contorno del testo che è stato inserito.", "diffEditorRemovedOutline": "Colore del contorno del testo che è stato rimosso.", "mergeCurrentHeaderBackground": "Sfondo intestazione corrente in conflitti di merge in linea. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.", diff --git a/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index 117d2cfad9f..65746665f69 100644 --- a/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (estensione)", "defaultSource": "Estensione", "manageExtension": "Gestisci estensione", "cancel": "Annulla", diff --git a/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 35229bd6699..6162c44dea8 100644 --- a/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/ita/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "webview.editor.label": "editor Webview" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json b/i18n/ita/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json index 35229bd6699..da45d7e41c8 100644 --- a/i18n/ita/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json +++ b/i18n/ita/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "unknownDep": "L'attivazione dell'estensione '{1}' non è riuscita. Motivo: la dipendenza '{0}' è sconosciuta.", + "failedDep1": "L'attivazione dell'estensione '{1}' non è riuscita. Motivo: non è stato possibile attivare la dipendenza '{0}'.", + "failedDep2": "L'attivazione dell'estensione '{0}' non è riuscita. Motivo: sono presenti più di 10 livelli di dipendenze (molto probabilmente un ciclo di dipendenze).", + "activationError": "L'attivazione dell'estensione '{0}' non è riuscita: {1}." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json b/i18n/ita/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json index 545f6a759a7..405a253466c 100644 --- a/i18n/ita/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "toggleCenteredLayout": "Attiva/Disattiva layout al centro", "view": "Visualizza" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json index 5437bd2226f..cf3660bce1c 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json @@ -19,12 +19,14 @@ "close": "Chiudi", "closeOthers": "Chiudi altri", "closeRight": "Chiudi a destra", + "closeAllSaved": "Chiudi salvati", "closeAll": "Chiudi tutto", "keepOpen": "Mantieni aperto", "toggleInlineView": "Attiva/disattiva visualizzazione Inline", "showOpenedEditors": "Mostra editor aperti", "keepEditor": "Mantieni editor", "closeEditorsInGroup": "Chiudi tutti gli editor del gruppo", + "closeSavedEditors": "Chiudi editor salvati del gruppo", "closeOtherEditors": "Chiudi gli altri editor", "closeRightEditors": "Chiudi editor a destra" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json index 35229bd6699..7c397013973 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json @@ -5,5 +5,12 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "clearNotification": "Cancella notifica", + "clearNotifications": "Cancella tutte le notifiche", + "hideNotificationsCenter": "Nascondi notifiche", + "expandNotification": "Espandi notifica", + "collapseNotification": "Comprimi notifica", + "configureNotification": "Configura notifica", + "copyNotification": "Copia testo" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 35229bd6699..40f3e83a7db 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -5,5 +5,8 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "Notifiche", + "notificationsToolbar": "Azioni del centro notifiche", + "notificationsList": "Elenco notifiche" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json index 35229bd6699..41e6a2aec82 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "Notifiche", + "showNotifications": "Mostra notifiche", + "hideNotifications": "Nascondi notifiche", + "clearAllNotifications": "Cancella tutte le notifiche" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 35229bd6699..9d0a5939e1f 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -5,5 +5,10 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hideNotifications": "Nascondi notifiche", + "zeroNotifications": "Nessuna notifica", + "noNotifications": "Nessuna nuova notifica", + "oneNotification": "1 nuova notifica", + "notifications": "{0} nuove notifiche" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json index 35229bd6699..325f3cbc5dc 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationsToast": "Avviso popup di notifica" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json index 35229bd6699..599667672d6 100644 --- a/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationActions": "Azioni notifica", + "notificationSource": "Origine: {0}" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/browser/viewlet.i18n.json b/i18n/ita/src/vs/workbench/browser/viewlet.i18n.json index 3187e86f29f..4a89346d720 100644 --- a/i18n/ita/src/vs/workbench/browser/viewlet.i18n.json +++ b/i18n/ita/src/vs/workbench/browser/viewlet.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "compositePart.hideSideBarLabel": "Nascondi barra laterale", "collapse": "Comprimi tutto" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/common/theme.i18n.json b/i18n/ita/src/vs/workbench/common/theme.i18n.json index a1c1ce4de38..e7034721bfd 100644 --- a/i18n/ita/src/vs/workbench/common/theme.i18n.json +++ b/i18n/ita/src/vs/workbench/common/theme.i18n.json @@ -58,5 +58,13 @@ "titleBarInactiveForeground": "Colore primo piano della barra del titolo quando la finestra è inattiva. Si noti che questo colore è attualmente supportato solo su macOS.", "titleBarActiveBackground": "Colore di sfondo della barra di titolo quando la finestra è attiva. Si noti che questo colore è attualmente solo supportati su macOS.", "titleBarInactiveBackground": "Colore di sfondo della barra del titolo quando la finestra è inattiva. Si noti che questo colore è attualmente supportato solo su macOS.", - "titleBarBorder": "Colore del bordo della barra di stato. Si noti che questo colore è attualmente supportato solo su macOS." + "titleBarBorder": "Colore del bordo della barra di stato. Si noti che questo colore è attualmente supportato solo su macOS.", + "notificationCenterBorder": "Colore del bordo del centro notifiche. Le notifiche scorrono dalla parte inferiore destra della finestra.", + "notificationToastBorder": "Colore del bordo dell'avviso popup di notifica. Le notifiche scorrono dalla parte inferiore destra della finestra.", + "notificationsForeground": "Colore primo piano delle notifiche. Le notifiche scorrono dalla parte inferiore destra della finestra.", + "notificationsBackground": "Colore di sfondo delle notifiche. Le notifiche scorrono dalla parte inferiore destra della finestra.", + "notificationsLink": "Colore primo piano dei collegamenti delle notifiche. Le notifiche scorrono dalla parte inferiore destra della finestra.", + "notificationCenterHeaderForeground": "Colore primo piano dell'intestazione del centro notifiche. Le notifiche scorrono dalla parte inferiore destra della finestra.", + "notificationCenterHeaderBackground": "Colore di sfondo dell'intestazione del centro notifiche. Le notifiche scorrono dalla parte inferiore destra della finestra.", + "notificationsBorder": "Colore del bordo che separa le notifiche da altre notifiche nel centro notifiche. Le notifiche scorrono dalla parte inferiore destra della finestra." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/common/views.i18n.json b/i18n/ita/src/vs/workbench/common/views.i18n.json index 35229bd6699..eb055ed4506 100644 --- a/i18n/ita/src/vs/workbench/common/views.i18n.json +++ b/i18n/ita/src/vs/workbench/common/views.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "duplicateId": "Nel percorso '{1}' è già registrata una visualizzazione con ID '{0}' " } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/ita/src/vs/workbench/electron-browser/actions.i18n.json index 02447eacaeb..4cb81a85d37 100644 --- a/i18n/ita/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/ita/src/vs/workbench/electron-browser/actions.i18n.json @@ -18,6 +18,7 @@ "zoomReset": "Reimposta zoom", "appPerf": "Prestazioni all'avvio", "reloadWindow": "Ricarica finestra", + "reloadWindowWithExntesionsDisabled": "Ricarica la finestra con le estensioni disabilitate", "switchWindowPlaceHolder": "Selezionare una finestra a cui passare", "current": "Finestra corrente", "close": "Chiudi finestra", @@ -48,5 +49,6 @@ "moveWindowTabToNewWindow": "Sposta scheda della finestra in una nuova finestra", "mergeAllWindowTabs": "Unisci tutte le finestre", "toggleWindowTabsBar": "Attiva/Disattiva barra delle schede delle finestre", - "about": "Informazioni su {0}" + "about": "Informazioni su {0}", + "inspect context keys": "Esamina le chiavi di contesto" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json index 093fcc4441b..c4f1db5d289 100644 --- a/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -35,6 +35,7 @@ "panelDefaultLocation": "Controlla la posizione predefinita del pannello. Può essere mostrato nella parte inferiore o a destra del banco di lavoro.", "statusBarVisibility": "Controlla la visibilità della barra di stato nella parte inferiore del workbench.", "activityBarVisibility": "Controlla la visibilità della barra attività nel workbench.", + "viewVisibility": "Controlla la visibilità delle azioni dell'intestazione della visualizzazione. Le azioni dell'intestazione della visualizzazione possono essere sempre visibili oppure visibili solo quando lo stato attivo è spostato sulla visualizzazione o si passa con il puntatore sulla visualizzazione.", "fontAliasing": "Controlla il metodo di aliasing dei caratteri nell'area di lavoro.\n- default: anti-aliasing dei caratteri a livello di sub-pixel. Nella maggior parte delle visualizzazioni non retina consentirà di ottenere un testo con il massimo contrasto.\n- antialiased: anti-aliasing dei caratteri a livello di pixel, invece che a livello di sub-pixel. Consente di visualizzare i caratteri più chiari.\n- none: disabilita l'anti-aliasing dei caratteri. Il testo verrà visualizzato con contorni irregolari.\n- auto: applica automaticamente `default` o `antialiased` in base al valore DPI degli schermi.", "workbench.fontAliasing.default": "Anti-aliasing dei caratteri a livello di sub-pixel. Nella maggior parte delle visualizzazioni non retina consentirà di ottenere un testo con il massimo contrasto.", "workbench.fontAliasing.antialiased": "Anti-aliasing dei caratteri a livello di pixel, invece che a livello di sub-pixel. Consente di visualizzare i caratteri più chiari.", @@ -75,6 +76,7 @@ "window.nativeTabs": "Abilita le finestre di tab per macOS Sierra. La modifica richiede un riavvio. Eventuali personalizzazioni della barra del titolo verranno disabilitate", "zenModeConfigurationTitle": "Modalità Zen", "zenMode.fullScreen": "Consente di controllare se attivando la modalità Zen anche l'area di lavoro passa alla modalità schermo intero.", + "zenMode.centerLayout": "Controlla se attivando la modalità Zen viene centrato anche il layout.", "zenMode.hideTabs": "Controlla se attivando la modalità Zen vengono nascoste anche le schede del workbench.", "zenMode.hideStatusBar": "Controlla se attivando la modalità Zen viene nascosta anche la barra di stato nella parte inferiore del workbench.", "zenMode.hideActivityBar": "Controlla se attivando la modalità Zen viene nascosta anche la barra di stato alla sinistra del workbench", diff --git a/i18n/ita/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 8ade9e0bdac..5e7acab8dbe 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -10,6 +10,10 @@ "functionBreakpointsNotSupported": "Punti di interruzione delle funzioni non sono supportati da questo tipo di debug", "functionBreakpointPlaceholder": "Funzione per cui inserire il punto di interruzione", "functionBreakPointInputAriaLabel": "Digitare il punto di interruzione della funzione", + "breakpointDisabledHover": "Punto di interruzione disabilitato", + "breakpointUnverifieddHover": "Punto di interruzione non verificato", + "functionBreakpointUnsupported": "Punti di interruzione di funzione non supportati da questo tipo di debug", "breakpointDirtydHover": "Punto di interruzione non verificato. Il file è stato modificato. Riavviare la sessione di debug.", - "conditionalBreakpointUnsupported": "Punti di interruzione condizionali non supportati da questo tipo di debug" + "conditionalBreakpointUnsupported": "Punti di interruzione condizionali non supportati da questo tipo di debug", + "hitBreakpointUnsupported": "Sono stati raggiunti punti di interruzione condizionali non supportati da questo tipo di debug" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json index 8a98da3cfbe..9a306a433da 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "noFolderDebugConfig": "Si prega di aprire prima una cartella per consentire una configurazione di debug avanzato.", + "columnBreakpoint": "Punto di interruzione colonna", "debug": "Debug", "addColumnBreakpoint": "Aggiungi punto di interruzione colonna" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json index bfab3d1e983..37041dc7dfc 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "unable": "Non è possibile risolvere la risorsa senza una sessione di debug" + "unable": "Non è possibile risolvere la risorsa senza una sessione di debug", + "canNotResolveSource": "Non è stato possibile risolvere la risorsa {0}. Nessuna risposta dall'estensione di debug." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index 19b06bc0881..61aec381ab6 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "Visualizzare sempre debug nella barra di stato", "onFirstSessionStart": "Mostra debug nella barra solo stato dopo il primo avvio del debug", "showInStatusBar": "Controlla se rendere visibile la barra di stato del debug", - "openDebug": "Controlla se la viewlet di debug debba essere aperta all'avvio della sessione di debug.", + "openDebug": "Controlla se la visualizzazione di debug debba essere aperta all'avvio della sessione di debug.", "launch": "Configurazione globale per l'esecuzione del debug. Può essere usata come un'alternativa a \"launch.json\" " } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 0efada11b7d..1418cb86caf 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -14,9 +14,11 @@ "breakpointRemoved": "Rimosso un punto di interruzione a riga {0} del file {1}", "compoundMustHaveConfigurations": "Per avviare più configurazioni, deve essere impostato l'attributo \"configurations\" dell'elemento compounds.", "noConfigurationNameInWorkspace": "Non è stato possibile trovare la configurazione di avvio '{0}' nell'area di lavoro.", + "multipleConfigurationNamesInWorkspace": "Nell'area di lavoro sono presenti più configurazioni di avvio '{0}'. Usare il nome di cartella per qualificare la configurazione.", "noFolderWithName": "La cartella denominata '{0}' per la configurazione '{1}' nell'elemento compounds '{2}' non è stata trovata.", "configMissing": "In 'launch.json' manca la configurazione '{0}'.", "launchJsonDoesNotExist": "'launch.json' non esiste.", + "debugRequestNotSupported": "Nella configurazione di debug scelta l'attributo '{0}' ha un valore non supportato '{1}'.", "debugRequesMissing": "Nella configurazione di debug scelta manca l'attributo '{0}'.", "debugTypeNotSupported": "Il tipo di debug configurato '{0}' non è supportato.", "debugTypeMissing": "Manca la proprietà 'type' per la configurazione di avvio scelta.", diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json index ee0fcec0100..296065c3efd 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "copyValue": "Copia valore", + "copyAsExpression": "Copia come espressione", "copy": "Copia", "copyAll": "Copia tutti", "copyStackTrace": "Copia stack di chiamate" diff --git a/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index bbb0f14b1a0..c10190882f0 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "Predefinito chiaro", "defaultHC": "Predefinito contrasto elevato", "JSON Validation": "Convalida JSON ({0})", + "fileMatch": "Corrispondenza file", + "schema": "Schema", "commands": "Comandi ({0})", "command name": "Nome", "keyboard shortcuts": "Tasti di scelta rapida", diff --git a/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 7b55ca77a71..79c3b874203 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "Scarica manualmente", + "install vsix": "Dopo il download, installare manualmente il VSIX scaricato di '{0}'.", "installAction": "Installa", "installing": "Installazione", + "failedToInstall": "Non è stato possibile installare '{0}'.", "uninstallAction": "Disinstalla", "Uninstalling": "Disinstallazione", "updateAction": "Aggiorna", "updateTo": "Aggiorna a {0}", + "failedToUpdate": "Non è stato possibile aggiornare '{0}'.", "ManageExtensionAction.uninstallingTooltip": "Disinstallazione", "enableForWorkspaceAction": "Abilita (area di lavoro)", "enableGloballyAction": "Abilita", @@ -38,6 +42,7 @@ "showInstalledExtensions": "Mostra estensioni installate", "showDisabledExtensions": "Mostra estensioni disabilitate", "clearExtensionsInput": "Cancella input estensioni", + "showBuiltInExtensions": "Mostra estensioni predefinite", "showOutdatedExtensions": "Mostra estensioni obsolete", "showPopularExtensions": "Mostra estensioni più richieste", "showRecommendedExtensions": "Mostra estensioni consigliate", @@ -55,6 +60,18 @@ "malicious": "Dannosa", "disableAll": "Disabilita tutte le estensioni installate", "disableAllWorkspace": "Disabilita tutte le estensioni installate per questa area di lavoro", + "enableAll": "Abilita tutte le estensioni", + "enableAllWorkspace": "Abilita tutte le estensioni per questa area di lavoro", + "openExtensionsFolder": "Apri cartella estensioni", + "installVSIX": "Installa da VSIX...", + "installFromVSIX": "Installa da VSIX", + "installButton": "&&Installa", + "InstallVSIXAction.success": "L'estensione è stata installata. Ricaricare per abilitarla.", + "InstallVSIXAction.reloadNow": "Ricarica ora", + "reinstall": "Reinstalla estensione...", + "selectExtension": "Seleziona l'estensione da reinstallare", + "ReinstallAction.success": "L'estensione è stata reinstallata.", + "ReinstallAction.reloadNow": "Ricarica ora", "extensionButtonProminentBackground": "Colore di sfondo delle azioni di estensioni che si distinguono (es. pulsante Installa).", "extensionButtonProminentForeground": "Colore primo piano di pulsanti per azioni di estensioni che si distinguono (es. pulsante Installa).", "extensionButtonProminentHoverBackground": "Colore di sfondo al passaggio del mouse dei pulsanti per azioni di estensione che si distinguono (es. pulsante Installa)." diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 0fe81149837..122ac0848d2 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "Esegui profilatura estensioni", + "restart2": "Per eseguire la profilatura delle estensioni, è richiesto un riavvio. Riavviare '{0}' ora?", "restart3": "Riavvia", "cancel": "Annulla", "selectAndStartDebug": "Fare clic per arrestare la profilatura." diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index c9155a70c0f..aeb7cee0d71 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -8,6 +8,8 @@ ], "neverShowAgain": "Non visualizzare più questo messaggio", "searchMarketplace": "Cerca nel Marketplace", + "showLanguagePackExtensions": "Nel Marketplace sono disponibili estensioni che consentono di localizzare VS Code nelle impostazioni locali '{0}'", + "dynamicWorkspaceRecommendation": "Questa estensione potrebbe essere interessante perché viene usata da altri utenti del repository {0}.", "exeBasedRecommendation": "Questa estensione è consigliata perché avete installato {0}.", "fileBasedRecommendation": "Questa estensione è raccomandata in base ai file aperti di recente.", "workspaceRecommendation": "Questa estensione è consigliata dagli utenti dell'area di lavoro corrente.", diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 93ca44a2857..73ccd10b71c 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -15,5 +15,6 @@ "developer": "Sviluppatore", "extensionsConfigurationTitle": "Estensioni", "extensionsAutoUpdate": "Aggiorna automaticamente le estensioni", - "extensionsIgnoreRecommendations": "Se impostato a true, le notifiche delle raccomandazioni dell'estensione non verranno più mostrate." + "extensionsIgnoreRecommendations": "Se impostato a true, le notifiche delle raccomandazioni dell'estensione non verranno più mostrate.", + "extensionsShowRecommendationsOnlyOnDemand": "Se impostato su true, le raccomandazioni non verranno recuperate o modificate a meno che non sia specificamente richiesto dall'utente." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index d9192794c71..96e949cb24a 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,7 @@ "recommendedExtensions": "Consigliate", "otherRecommendedExtensions": "Altri consigli", "workspaceRecommendedExtensions": "Consigli per l'area di lavoro", + "builtInExtensions": "Predefinite", "searchExtensions": "Cerca le estensioni nel Marketplace", "sort by installs": "Ordina per: conteggio installazioni", "sort by rating": "Ordina per: classificazione", diff --git a/i18n/ita/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json index 1452ff54ded..184ccf3b77b 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json @@ -10,6 +10,7 @@ "malicious": "Questa estensione è segnalata come problematica.", "installingMarketPlaceExtension": "Installazione dell'estensione dal Marketplace...", "uninstallingExtension": "Disinstallazione estensione in corso...", + "enableDependeciesConfirmation": "Se si abilita '{0}', verranno abilitate anche le relative dipendenze. Continuare?", "enable": "Sì", "doNotEnable": "No", "disableDependeciesConfirmation": "Disabilitare solo '{0}' o anche le relative dipendenze?", diff --git a/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json index 93edd859b4e..f659f351cf6 100644 --- a/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json @@ -29,6 +29,7 @@ "compareSelected": "Confronta selezionati", "close": "Chiudi", "closeOthers": "Chiudi altri", + "closeSaved": "Chiudi salvati", "closeAll": "Chiudi tutto", "deleteFile": "Elimina definitivamente" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 72109697fbb..1dfea4391db 100644 --- a/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -39,6 +39,8 @@ "importFiles": "Importa file", "confirmOverwrite": "Nella cartella di destinazione esiste già un file o una cartella con lo stesso nome. Sovrascrivere?", "replaceButtonLabel": "&&Sostituisci", + "fileIsAncestor": "Il file da incollare è un predecessore della cartella di destinazione", + "fileDeleted": "Il file da incollare è stato eliminato o spostato nel frattempo", "duplicateFile": "Duplicato", "globalCompareFile": "Confronta file attivo con...", "openFileToCompare": "Aprire prima un file per confrontarlo con un altro file.", diff --git a/i18n/ita/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json b/i18n/ita/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json index 0953f68d73d..f0de873df31 100644 --- a/i18n/ita/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "userGuide": "Usare le azioni della barra degli strumenti dell'editor per annullare le modifiche oppure sovrascrivere il contenuto su disco con le modifiche.", + "staleSaveError": "Non è stato possibile salvare '{0}': il contenuto sul disco è più recente. Confrontare la versione corrente con quella sul disco.", "retry": "Riprova", "discard": "Rimuovi", "readonlySaveErrorAdmin": "Impossibile salvare '{0}': Il file è protetto da scrittura. Selezionare 'Sovrascrivi come Admin' per riprovare come amministratore.", diff --git a/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json b/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json index e9a4689dd21..a8895546c98 100644 --- a/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "label": "Esplora risorse", - "canNotResolve": "Non è possibile risolvere la cartella dell'area di lavoro" + "canNotResolve": "Non è possibile risolvere la cartella dell'area di lavoro", + "symbolicLlink": "Collegamento simbolico" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index 89525198530..fffcdf8e562 100644 --- a/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Digitare il nome file. Premere INVIO per confermare oppure ESC per annullare.", + "constructedPath": "Crea {0} in **{1}**", "filesExplorerViewerAriaLabel": "{0}, Esplora file", "dropFolders": "Aggiungere le cartelle all'area di lavoro?", "dropFolder": "Aggiungere la cartella all'area di lavoro?", diff --git a/i18n/ita/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/ita/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index 67580bac670..de0fdcaec9f 100644 --- a/i18n/ita/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editor.action.webvieweditor.showFind": "Stato attivo su widget Trova" + "editor.action.webvieweditor.showFind": "Stato attivo su widget Trova", + "openToolsLabel": "Apri strumenti di sviluppo Webview", + "refreshWebviewLabel": "Ricarica Webview" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index 69740a58bbc..3e7cf3f5df4 100644 --- a/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -9,6 +9,7 @@ "JsonSchema.locale": "Linguaggio dell'interfaccia utente da usare.", "vscode.extension.contributes.localizations": "Contribuisce traduzioni all'editor", "vscode.extension.contributes.localizations.languageId": "Id della lingua in cui sono tradotte le stringhe visualizzate.", + "vscode.extension.contributes.localizations.languageName": "Nome della lingua in inglese.", "vscode.extension.contributes.localizations.languageNameLocalized": "Nome della lingua nella lingua stessa.", "vscode.extension.contributes.localizations.translations": "Lista delle traduzioni associate alla lingua.", "vscode.extension.contributes.localizations.translations.id": "ID di VS Code o dell'estensione cui si riferisce questa traduzione. L'ID di VS Code è sempre 'vscode' e quello di un'estensione deve essere nel formato 'publisherId.extensionName'.", diff --git a/i18n/ita/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json b/i18n/ita/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json index 40245d35eda..1f4e198062a 100644 --- a/i18n/ita/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json @@ -15,6 +15,7 @@ "mainProcess": "Principale", "selectProcess": "Seleziona log per il processo", "openLogFile": "Apri file di Log...", + "setLogLevel": "Imposta livello log...", "trace": "Analisi", "debug": "Debug", "info": "Informazioni", diff --git a/i18n/ita/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/ita/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index e875be271f9..915767115f7 100644 --- a/i18n/ita/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -20,6 +20,7 @@ "showSameKeybindings": "Mostra gli stessi tasti di scelta rapida", "copyLabel": "Copia", "copyCommandLabel": "Copia comando", + "error": "Si è verificato l'errore '{0}' durante la modifica del tasto di scelta rapida. Aprire il file 'keybindings.json' e verificare la presenza di errori.", "command": "Comando", "keybinding": "Tasto di scelta rapida", "source": "Origine", diff --git a/i18n/ita/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json b/i18n/ita/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json index 70c9628d0d7..b9f87d66972 100644 --- a/i18n/ita/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json @@ -12,6 +12,7 @@ "entryAriaLabelWithKey": "{0}, {1}, comandi", "entryAriaLabel": "{0}, comandi", "actionNotEnabled": "Il comando '{0}' non è abilitato nel contesto corrente.", + "canNotRun": "Il comando '{0}' ha restituito un errore.", "recentlyUsed": "usate di recente", "morecCommands": "altri comandi", "cat.title": "{0}: {1}", diff --git a/i18n/ita/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json b/i18n/ita/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json index 8f2ed95bb76..d04bc9f9683 100644 --- a/i18n/ita/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json @@ -10,6 +10,8 @@ "change": "{0} di {1} modifica", "show previous change": "Mostra modifica precedente", "show next change": "Mostra modifica successiva", + "move to previous change": "Passa alla modifica precedente", + "move to next change": "Passa alla modifica successiva", "editorGutterModifiedBackground": "Colore di sfondo della barra di navigazione dell'editor per le righe che sono state modificate.", "editorGutterAddedBackground": "Colore di sfondo della barra di navigazione dell'editor per le righe che sono state aggiunte.", "editorGutterDeletedBackground": "Colore di sfondo della barra di navigazione dell'editor per le righe che sono state cancellate.", diff --git a/i18n/ita/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json index 14e7e6018a6..1bf66fd38b6 100644 --- a/i18n/ita/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json @@ -12,5 +12,6 @@ "view": "Visualizza", "scmConfigurationTitle": "Gestione controllo servizi", "alwaysShowProviders": "Mostrare sempre la sezione Provider di controllo del codice sorgente.", - "diffDecorations": "Controlla decorazioni diff nell'editor" + "diffDecorations": "Controlla decorazioni diff nell'editor", + "diffGutterWidth": "Controlla la larghezza (px) delle decorazioni diff nella barra di navigazione (aggiunte e modificate)." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json index b36eee6cd0b..e2aee106234 100644 --- a/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -30,6 +30,7 @@ "removeAll.occurrences.files.confirmation.message": "Sostituire {0} occorrenze in {1} file con '{2}'?", "replaceAll.occurrences.files.confirmation.message": "Sostituire {0} occorrenze in {1} file?", "treeAriaLabel": "Risultati ricerca", + "searchPathNotFoundError": "Percorso di ricerca non trovato: {0}", "searchMaxResultsWarning": "Il set di risultati contiene solo un subset di tutte le corrispondenze. Eseguire una ricerca più specifica per ridurre il numero di risultati.", "searchCanceled": "La ricerca è stata annullata prima della visualizzazione dei risultati - ", "noResultsIncludesExcludes": "Non sono stati trovati risultati in '{0}' escludendo '{1}' - ", diff --git a/i18n/ita/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 6f893f45c4e..2990ba49e00 100644 --- a/i18n/ita/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,5 +25,6 @@ "search.quickOpen.includeSymbols": "Configurare questa opzione per includere i risultati di una ricerca di simboli globale nei risultati dei file per Quick Open.", "search.followSymlinks": "Controlla se seguire i collegamenti simbolici durante la ricerca.", "search.smartCase": "Cerca in modo insensibile alle maiuscole/minuscole se il criterio è tutto minuscolo, altrimenti cerca in modalità sensibile a maiuscole/minuscole", - "search.globalFindClipboard": "Controlla se il viewlet di ricerca deve leggere o modificare gli appunti di ricerca condivisi in macOS" + "search.globalFindClipboard": "Controlla se il viewlet di ricerca deve leggere o modificare gli appunti di ricerca condivisi in macOS", + "search.location": "Anteprima: controlla se la ricerca verrà mostrata in una visualizzazione della barra laterale o in un pannello nell'area pannelli in modo da disporre di maggiore spazio in orizzontale. Nella versione successiva la ricerca nel pannello sarà caratterizzata da un layout orizzontale ottimizzato e questa funzione non sarà più un'anteprima." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/ita/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index abb3ffc0e71..65ecc6909d4 100644 --- a/i18n/ita/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -7,9 +7,13 @@ "Do not edit this file. It is machine generated." ], "ProblemPatternParser.loopProperty.notLast": "La proprietà loop è supportata solo sul matcher dell'ultima riga.", + "ProblemPatternParser.problemPattern.kindProperty.notFirst": "Il criterio del problema non è valido. La proprietà kind deve essere specificata solo nel primo elemento", "ProblemPatternParser.problemPattern.missingRegExp": "Nel criterio del problema manca un'espressione regolare.", + "ProblemPatternParser.problemPattern.missingProperty": "Il criterio del problema non è valido. Deve includere almeno un file e un messaggio.", + "ProblemPatternParser.problemPattern.missingLocation": "Il criterio del problema non è valido. Il tipo deve essere \"file\" oppure deve il criterio deve includere un gruppo di corrispondenze di tipo line o posizione.", "ProblemPatternParser.invalidRegexp": "Errore: la stringa {0} non è un'espressione regolare valida.\n", "ProblemPatternSchema.regexp": "Espressione regolare per trovare un messaggio di tipo errore, avviso o info nell'output.", + "ProblemPatternSchema.kind": "Indica se il criterio corrisponde a una posizione (file e riga) o solo a un file.", "ProblemPatternSchema.file": "Indice del gruppo di corrispondenze del nome file. Se omesso, viene usato 1.", "ProblemPatternSchema.location": "Indice del gruppo di corrispondenze della posizione del problema. I criteri di posizione validi sono: (line), (line,column) e (startLine,startColumn,endLine,endColumn). Se omesso, si presuppone che sia impostato su (line,column).", "ProblemPatternSchema.line": "Indice del gruppo di corrispondenze della riga del problema. Il valore predefinito è 2", diff --git a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 01582fa9521..b2e3a492ebb 100644 --- a/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -28,6 +28,8 @@ "selectProblemMatcher": "Selezionare il tipo di errori e di avvisi per cui analizzare l'output dell'attività", "customizeParseErrors": "La configurazione dell'attività corrente presenta errori. Per favore correggere gli errori prima di personalizzazione un'attività.", "moreThanOneBuildTask": "tasks.json contiene molte attività di compilazione. È in corso l'esecuzione della prima.\n", + "TaskSystem.activeSame.background": "L'attività '{0}' è già attiva ed in modalità background. Per terminarla, usare 'Termina attività' dal menu Attività.", + "TaskSystem.activeSame.noBackground": "L'attività '{0}' è già attiva. Per terminarla, usare 'Termina attività' dal menu Attività.", "TaskSystem.active": "Al momento c'è già un'attività in esecuzione. Terminarla prima di eseguirne un'altra.", "TaskSystem.restartFailed": "Non è stato possibile terminare e riavviare l'attività {0}", "TaskService.noConfiguration": "Errore: Il rilevamento di attività {0} non ha contribuito un'attività nella seguente configurazione: \n{1} \nL'attività verrà ignorata.\n", @@ -44,6 +46,7 @@ "recentlyUsed": "attività usate di recente", "configured": "attività configurate", "detected": "attività rilevate", + "TaskService.ignoredFolder": "Le cartelle dell'area di lavoro seguenti verranno ignorate perché usano la versione 0.1.0 delle attività: {0}", "TaskService.notAgain": "Non visualizzare più questo messaggio", "TaskService.pickRunTask": "Selezionare l'attività da eseguire", "TaslService.noEntryToRun": "Non è stata trovata alcuna attività da eseguire. Configurare le attività...", diff --git a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json index d263eec6450..9dd32e0ddc3 100644 --- a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json @@ -20,10 +20,13 @@ "terminal.integrated.fontFamily": "Controlla la famiglia di caratteri del terminale. L'impostazione predefinita è il valore di editor.fontFamily.", "terminal.integrated.fontSize": "Consente di controllare le dimensioni del carattere in pixel del terminale.", "terminal.integrated.lineHeight": "Controlla l'altezza della riga del terminale. Questo numero è moltiplicato per la dimensione del carattere del terminale per ottenere l'effettiva altezza della riga in pixel.", + "terminal.integrated.fontWeight": "Spessore del carattere da usare nel terminale per il testo non in grassetto.", + "terminal.integrated.fontWeightBold": "Spessore del carattere da usare nel terminale per il testo in grassetto.", "terminal.integrated.cursorBlinking": "Controlla se il cursore del terminale è intermittente o meno.", "terminal.integrated.cursorStyle": "Controlla lo stile del cursore del terminale.", "terminal.integrated.scrollback": "Consente di controllare il numero massimo di righe che il terminale mantiene nel buffer.", "terminal.integrated.setLocaleVariables": "Controlla se le variabili delle impostazioni locali sono impostate all'avvio del terminale. Il valore predefinito è true per OS X e false per altre piattaforme.", + "terminal.integrated.rightClickBehavior": "Controlla la reazione del terminale quando viene fatto clic con il pulsante destro del mouse. Le opzioni disponibili solo 'default', 'copyPaste' e 'selectWord'. Con 'default' verrà visualizzato il menu di scelta rapida. Con 'copyPaste' verrà eseguita un'operazione di copia in presenza di una selezione o in caso contrario un'operazione di incollamento. Con 'selectWord' verrà selezionata la parola sotto il cursore e verrà visualizzato il menu di scelta rapida.", "terminal.integrated.cwd": "Percorso di avvio esplicito in cui verrà avviato il terminale. Viene usato come directory di lavoro corrente per il processo della shell. Può risultare particolarmente utile nelle impostazioni dell'area di lavoro se la directory radice non costituisce una directory di lavoro corrente comoda.", "terminal.integrated.confirmOnExit": "Indica se confermare all'uscita la presenza di sessioni di terminale attive.", "terminal.integrated.enableBell": "Indica se il cicalino del terminale è abilitato o meno.", @@ -32,6 +35,7 @@ "terminal.integrated.env.linux": "Oggetto con variabili di ambiente che verrà aggiunto al processo VS Code per essere utilizzato dal terminale su Linux", "terminal.integrated.env.windows": "Oggetto con variabili di ambiente che verrà aggiunto al processo VS Code per essere utilizzato dal terminale su Windows", "terminal.integrated.showExitAlert": "Visualizza avviso \"Il processo terminale ha restituito codice di uscita\" quando il codice di uscita è diverso da zero.", + "terminal.integrated.experimentalRestore": "Indica se ripristinare automaticamente le sessioni di terminale per l'area di lavoro all'avvio di VS Code. Si tratta di un'impostazione sperimentale che potrebbe contenere bug e cambiare in futuro.", "terminalCategory": "Terminale", "viewCategory": "Visualizza" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 5d418a1a3e9..183e933c6e1 100644 --- a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -14,10 +14,19 @@ "workbench.action.terminal.selectAll": "Seleziona tutto", "workbench.action.terminal.deleteWordLeft": "Elimina parola a sinistra", "workbench.action.terminal.deleteWordRight": "Elimina la parola a destra", + "workbench.action.terminal.moveToLineStart": "Passa all'inizio della riga", + "workbench.action.terminal.moveToLineEnd": "Passa alla fine della riga", "workbench.action.terminal.new": "Crea nuovo terminale integrato", "workbench.action.terminal.new.short": "Nuovo terminale", "workbench.action.terminal.newWorkspacePlaceholder": "Selezionare la cartella di lavoro corrente per un nuovo terminale.", "workbench.action.terminal.newInActiveWorkspace": "Crea un nuovo terminale integrato (nel workspace attivo)", + "workbench.action.terminal.split": "Terminale diviso", + "workbench.action.terminal.focusPreviousPane": "Sposta stato attivo sul riquadro precedente", + "workbench.action.terminal.focusNextPane": "Sposta stato attivo sul riquadro successivo", + "workbench.action.terminal.resizePaneLeft": "Ridimensiona il riquadro a sinistra", + "workbench.action.terminal.resizePaneRight": "Ridimensiona il riquadro a destra", + "workbench.action.terminal.resizePaneUp": "Ridimensiona il riquadro in alto", + "workbench.action.terminal.resizePaneDown": "Ridimensiona il riquadro in basso", "workbench.action.terminal.focus": "Sposta stato attivo su terminale", "workbench.action.terminal.focusNext": "Sposta stato attivo su terminale successivo", "workbench.action.terminal.focusPrevious": "Sposta stato attivo su terminale precedente", @@ -26,6 +35,7 @@ "workbench.action.terminal.runSelectedText": "Esegui testo selezionato nel terminale attivo", "workbench.action.terminal.runActiveFile": "Esegui file attivo nel terminale attivo", "workbench.action.terminal.runActiveFile.noFile": "Nel terminale è possibile eseguire solo file su disco", + "workbench.action.terminal.switchTerminal": "Cambia terminale", "workbench.action.terminal.scrollDown": "Scorri giù (riga)", "workbench.action.terminal.scrollDownPage": "Scorri giù (pagina)", "workbench.action.terminal.scrollToBottom": "Scorri alla fine", diff --git a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index 29b148eb67c..7ae3aac58f6 100644 --- a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,5 +11,6 @@ "terminalCursor.foreground": "Colore di primo piano del cursore del terminale.", "terminalCursor.background": "Colore di sfondo del cursore del terminale. Permette di personalizzare il colore di un carattere quando sovrapposto da un blocco cursore.", "terminal.selectionBackground": "Colore di sfondo di selezione del terminale.", + "terminal.border": "Colore del bordo che separa i riquadri divisi all'interno del terminale. L'impostazione predefinita è panel.border.", "terminal.ansiColor": "'{0}' colori ANSI nel terminale. " } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json index 53ce8c39427..26ff40d49d3 100644 --- a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json @@ -8,7 +8,9 @@ ], "terminal.integrated.a11yBlankLine": "Riga vuota", "terminal.integrated.a11yPromptLabel": "Input di terminale", + "terminal.integrated.a11yTooMuchOutput": "Troppo output da annunciare. Per leggere, spostarsi manualmente nelle righe", "terminal.integrated.copySelection.noSelection": "Il terminale non contiene alcuna selezione da copiare", "terminal.integrated.exitedWithCode": "Il processo del terminale è stato terminato. Codice di uscita: {0}", - "terminal.integrated.waitOnExit": "Premere un tasto qualsiasi per chiudere il terminale" + "terminal.integrated.waitOnExit": "Premere un tasto qualsiasi per chiudere il terminale", + "terminal.integrated.launchFailed": "Non è stato possibile avviare il comando '{0}{1}' del processo del terminale (codice di uscita: {2})" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index ab29b44f780..e0033bb7d61 100644 --- a/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -9,5 +9,6 @@ "copy": "Copia", "paste": "Incolla", "selectAll": "Seleziona tutto", - "clear": "Cancella" + "clear": "Cancella", + "split": "Dividi" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index 2a7e6cf2583..a2ee6206bbf 100644 --- a/i18n/ita/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "openWorkspaceSettings": "Apri impostazioni area di lavoro", - "dontShowAgain": "Non visualizzare più questo messaggio" + "dontShowAgain": "Non visualizzare più questo messaggio", + "unsupportedWorkspaceSettings": "Quest'area di lavoro contiene impostazioni che è possibile specificare solo nelle impostazioni utente ({0}). Per maggiori informazioni, fare clic [qui]({1})." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 01f2f4392af..e675aaedcf6 100644 --- a/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -11,8 +11,12 @@ "releaseNotes": "Note sulla versione", "showReleaseNotes": "Mostra note sulla versione", "read the release notes": "Benvenuti in {0} versione {1}. Leggere le note sulla versione?", + "licenseChanged": "I termini della licenza sono cambiati. Fare clic [qui]({0}) e leggerli con attenzione.", "neveragain": "Non visualizzare più questo messaggio", + "64bitisavailable": "{0} per Windows a 64 bit è ora disponibile. Per maggiori informazioni, fare clic [qui]({1}).", "updateIsReady": "Nuovo aggiornamento di {0} disponibile.", + "noUpdatesAvailable": "Al momento non sono disponibili aggiornamenti.", + "ok": "OK", "download now": "Scarica ora", "thereIsUpdateAvailable": "È disponibile un aggiornamento.", "installUpdate": "Installa aggiornamento", diff --git a/i18n/ita/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/ita/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index 899b84a1d9e..25de7b826b6 100644 --- a/i18n/ita/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/ita/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -16,6 +16,16 @@ "errorInvalidWorkspaceTarget": "Impossibile scrivere nell'area di lavoro perché {0} non supporta l'ambito globale in un'area di lavoro a cartelle multiple.", "errorInvalidFolderTarget": "Impossibile scrivere nella cartella impostazioni perché non viene fornita alcuna risorsa.", "errorNoWorkspaceOpened": "Impossibile scrivere su {0} poiché nessuna area di lavoro è aperta. Si prega di aprire un'area di lavoro e riprovare.", + "errorInvalidTaskConfiguration": "Non è possibile scrivere nel file di configurazione delle attività. Aprirlo per correggere eventuali errori/avvisi e riprovare.", + "errorInvalidLaunchConfiguration": "Non è possibile scrivere nel file di configurazione di avvio. Aprirlo per correggere eventuali errori/avvisi e riprovare.", + "errorInvalidConfiguration": "Non è possibile scrivere nelle impostazioni utente. Aprirlo per correggere eventuali errori/avvisi e riprovare.", + "errorInvalidConfigurationWorkspace": "Non è possibile scrivere nelle impostazioni dell'area di lavoro. Aprire le impostazioni dell'area di lavoro e per correggere eventuali errori/avvisi presenti nel file e riprovare.", + "errorInvalidConfigurationFolder": "Non è possibile scrivere nelle impostazioni della cartella. Aprire le impostazioni della cartella '{0}' per correggere eventuali errori/avvisi e riprovare.", + "errorTasksConfigurationFileDirty": "Non è possibile scrivere nel file di configurazione delle attività perché il file è stato modificato. Salvarlo prima, quindi riprovare.", + "errorLaunchConfigurationFileDirty": "Non è possibile scrivere nel file di configurazione di avvio perché il file è stato modificato. Salvarlo prima, quindi riprovare.", + "errorConfigurationFileDirty": "Non è possibile scrivere nelle impostazioni utente perché il file è stato modificato. Salvare prima il file delle impostazioni utente, quindi riprovare.", + "errorConfigurationFileDirtyWorkspace": "Non è possibile scrivere nelle impostazioni dell'area di lavoro perché il file è stato modificato. Salvare prima il file delle impostazioni dell'area di lavoro, quindi riprovare.", + "errorConfigurationFileDirtyFolder": "Non è possibile scrivere nelle impostazioni della cartella perché il file è stato modificato. Salvare prima il file di impostazioni della cartella '{0}', quindi riprovare.", "userTarget": "Impostazioni utente", "workspaceTarget": "Impostazioni area di lavoro", "folderTarget": "Impostazioni della cartella" diff --git a/i18n/ita/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/ita/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index f793c5994e0..c432e186411 100644 --- a/i18n/ita/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/ita/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "Descrizione della notifica.", "vscode.extension.extensionDependencies": "Dipendenze ad altre estensioni. L'identificatore di un'estensione è sempre ${publisher}.${name}. Ad esempio: vscode.csharp.", "vscode.extension.scripts.prepublish": "Script eseguito prima che il pacchetto venga pubblicato come estensione Visual Studio Code.", + "vscode.extension.scripts.uninstall": "Hook di disinstallazione per l'estensione VS Code. Script che viene eseguito quando l'estensione viene disinstallata completamente da VS Code, ovvero quando VS Code viene riavviato (arresto e avvio) dopo la disinstallazione dell'estensione. Sono supportati solo gli script Node.", "vscode.extension.icon": "Percorso di un'icona da 128x128 pixel." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index f8626350b50..1b3859ecb50 100644 --- a/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/ita/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -9,5 +9,8 @@ "installNet": "Scarica .NET Framework 4.5", "neverShowAgain": "Non visualizzare più questo messaggio", "netVersionError": "Microsoft .NET Framework 4.5 è obbligatorio. Selezionare il collegamento per installarlo.", + "learnMore": "Istruzioni", + "enospcError": "{0} sta esaurendo gli handle di file. Per risolvere questo problema, seguire il collegamento alle istruzioni.", + "binFailed": "Non è stato possibile spostare '{0}' nel Cestino", "trashFailed": "Non è stato possibile spostare '{0}' nel Cestino" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/ita/src/vs/workbench/services/files/node/fileService.i18n.json index e98cc6a8898..6e9f57076de 100644 --- a/i18n/ita/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/ita/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,6 +9,7 @@ "fileInvalidPath": "Risorsa del file non valida ({0})", "fileIsDirectoryError": "Il File è una Directory", "fileNotModifiedError": "File non modificato dal giorno", + "fileTooLargeForHeapError": "Le dimensioni del file superano il limite di memoria della finestra. Provare a eseguire il codice --max-memory=NEWSIZE", "fileTooLargeError": "File troppo grande per essere aperto", "fileNotFoundError": "Il file non è stato trovato ({0})", "fileBinaryError": "Il file sembra essere binario e non può essere aperto come file di testo", diff --git a/i18n/ita/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json b/i18n/ita/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json index f06ca18253b..82e6a7b770b 100644 --- a/i18n/ita/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json +++ b/i18n/ita/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json @@ -6,5 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "errorKeybindingsFileDirty": "Non è possibile scrivere perché il file di configurazione dei tasti di scelta rapida è stato modificato. Salvarlo prima e quindi riprovare.", + "parseErrors": "Non è possibile scrivere nel file di configurazione dei tasti di scelta rapida. Aprirlo e correggere gli errori/avvisi nel file, quindi riprovare.", + "errorInvalidConfiguration": "Non è possibile scrivere nel file di configurazione dei tasti di scelta rapida. Contiene un oggetto non di tipo Array. Aprire il file per pulirlo e riprovare.", "emptyKeybindingsHeader": "Inserire i tasti di scelta rapida in questo file per sovrascrivere i valori predefiniti" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json b/i18n/ita/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json index 1c4f906c185..3c84f247f78 100644 --- a/i18n/ita/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json +++ b/i18n/ita/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json @@ -15,6 +15,8 @@ "contributes.defaults.highContrast": "Colore predefinito per i temi a contrasto elevato. Può essere un valore di colore in formato esadecimale (#RRGGBB[AA]) oppure l'identificativo di un colore che supporta i temi e fornisce l'impostazione predefinita.", "invalid.colorConfiguration": "'configuration.colors' deve essere un array", "invalid.default.colorType": "{0} deve essere un valore di colore in formato esadecimale (#RRGGBB [AA] o #RGB[A]) o l'identificativo di un colore che supporta i temi e che fornisce il valore predefinito. ", + "invalid.id": "'configuration.colors.id' deve essere definito e non può essere vuoto", "invalid.id.format": "'configuration.colors.id' deve essere specificato dopo parola[.parola]*", + "invalid.description": "'configuration.colors.description' deve essere definito e non può essere vuoto", "invalid.defaults": "'configuration.colors.defaults' deve essere definito e deve contenere 'light', 'dark' e 'highContrast'" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json b/i18n/ita/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json index 6d09586334c..ca82bab7411 100644 --- a/i18n/ita/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json +++ b/i18n/ita/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json @@ -9,6 +9,9 @@ "schema.token.settings": "Colori e stili per il token.", "schema.token.foreground": "Colore primo piano per il token.", "schema.token.background.warning": "I colori di sfondo del token non sono supportati.", + "schema.token.fontStyle": "Stile del carattere della regola: 'italic', 'bold' o 'underline' o una combinazione. Con una stringa vuota le impostazioni ereditate vengono annullate.", + "schema.fontStyle.error": "Lo stile del carattere deve 'italic', 'bold' o 'underline' oppure una combinazione di tali impostazioni oppure la stringa vuota.", + "schema.token.fontStyle.none": "Nessuno (cancella lo stile ereditato)", "schema.properties.name": "Descrizione della regola.", "schema.properties.scope": "Selettore di ambito usato per la corrispondenza della regola.", "schema.tokenColors.path": "Percorso di un file tmTheme (relativo al file corrente).", diff --git a/i18n/ita/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json b/i18n/ita/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json index 63fc014b0a5..11167d34b3d 100644 --- a/i18n/ita/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json +++ b/i18n/ita/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "errorInvalidTaskConfiguration": "Impossibile scrivere nel file di configurazione dell'area di lavoro. Si prega di aprire il file per correggere eventuali errori/avvisi e riprovare.", - "errorWorkspaceConfigurationFileDirty": "Impossibile scrivere nel file di configurazione dell'area di lavoro, perché il file è sporco. Si prega di salvarlo e riprovare." + "errorWorkspaceConfigurationFileDirty": "Impossibile scrivere nel file di configurazione dell'area di lavoro, perché il file è sporco. Si prega di salvarlo e riprovare.", + "openWorkspaceConfigurationFile": "Apri configurazione dell'area di lavoro" } \ No newline at end of file diff --git a/i18n/jpn/extensions/bat/package.i18n.json b/i18n/jpn/extensions/bat/package.i18n.json index 35229bd6699..4a631398a58 100644 --- a/i18n/jpn/extensions/bat/package.i18n.json +++ b/i18n/jpn/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Windows バッチ言語の基礎", + "description": "Windows batch ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/clojure/package.i18n.json b/i18n/jpn/extensions/clojure/package.i18n.json index 35229bd6699..452a9e3f777 100644 --- a/i18n/jpn/extensions/clojure/package.i18n.json +++ b/i18n/jpn/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Clojure の基本言語サポート", + "description": "Clojure ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/coffeescript/package.i18n.json b/i18n/jpn/extensions/coffeescript/package.i18n.json index 35229bd6699..8469f5de5b3 100644 --- a/i18n/jpn/extensions/coffeescript/package.i18n.json +++ b/i18n/jpn/extensions/coffeescript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "CoffeeScript の基本言語サポート", + "description": "CoffeScript ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/configuration-editing/package.i18n.json b/i18n/jpn/extensions/configuration-editing/package.i18n.json index 45aab69a392..95a0b875ebd 100644 --- a/i18n/jpn/extensions/configuration-editing/package.i18n.json +++ b/i18n/jpn/extensions/configuration-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "設定の編集機能", - "description": "設定、起動、拡張機能の推奨事項ファイルなどの構成ファイル内で機能 (高度な intelli-sense、auto-fixing など) を提供" + "description": "設定、起動、そして拡張機能の推奨事項ファイルのような、構成ファイルの機能 (高度な IntelliSense、auto-fixing など) を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/cpp/package.i18n.json b/i18n/jpn/extensions/cpp/package.i18n.json index 35229bd6699..1aaab9dc95f 100644 --- a/i18n/jpn/extensions/cpp/package.i18n.json +++ b/i18n/jpn/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C/C++ の基本言語サポート", + "description": "C/C++ ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/csharp/package.i18n.json b/i18n/jpn/extensions/csharp/package.i18n.json index 35229bd6699..0e9a464c970 100644 --- a/i18n/jpn/extensions/csharp/package.i18n.json +++ b/i18n/jpn/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C# の基本言語サポート", + "description": "C# ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/docker/package.i18n.json b/i18n/jpn/extensions/docker/package.i18n.json index 35229bd6699..c12e263b0ec 100644 --- a/i18n/jpn/extensions/docker/package.i18n.json +++ b/i18n/jpn/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Docker ファイルの基本言語サポート", + "description": "Docker ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/emmet/package.i18n.json b/i18n/jpn/extensions/emmet/package.i18n.json index 0717d0a3b57..b9dfede7063 100644 --- a/i18n/jpn/extensions/emmet/package.i18n.json +++ b/i18n/jpn/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "VSCode の Emmet サポート", "command.wrapWithAbbreviation": "ラップ変換", "command.wrapIndividualLinesWithAbbreviation": "個々の行でラップ変換", "command.removeTag": "タグの削除", diff --git a/i18n/jpn/extensions/extension-editing/package.i18n.json b/i18n/jpn/extensions/extension-editing/package.i18n.json index 51ef864fbe3..a5a04889ab5 100644 --- a/i18n/jpn/extensions/extension-editing/package.i18n.json +++ b/i18n/jpn/extensions/extension-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "パッケージ ファイルの編集機能", - "description": "Package json ファイル内で VS Code の拡張箇所やリント機能などの intelli-sense を提供" + "description": "VS Code の拡張ポイント向けの IntelliSense と、package.json ファイルでのリンティング機能を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/fsharp/package.i18n.json b/i18n/jpn/extensions/fsharp/package.i18n.json index 35229bd6699..6d591e732ee 100644 --- a/i18n/jpn/extensions/fsharp/package.i18n.json +++ b/i18n/jpn/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "F# の基本言語サポート", + "description": "F# ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/go/package.i18n.json b/i18n/jpn/extensions/go/package.i18n.json index 94727813625..3f97bde04dc 100644 --- a/i18n/jpn/extensions/go/package.i18n.json +++ b/i18n/jpn/extensions/go/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Go 言語の基礎" + "displayName": "Go 言語の基礎", + "description": "Go ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/groovy/package.i18n.json b/i18n/jpn/extensions/groovy/package.i18n.json index 35229bd6699..0c6d0586213 100644 --- a/i18n/jpn/extensions/groovy/package.i18n.json +++ b/i18n/jpn/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Groovy の基本言語サポート", + "description": "Groovy ファイル内でスニペット、構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/handlebars/package.i18n.json b/i18n/jpn/extensions/handlebars/package.i18n.json index 35229bd6699..a92c28504e0 100644 --- a/i18n/jpn/extensions/handlebars/package.i18n.json +++ b/i18n/jpn/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Handlebars の基本言語サポート", + "description": "Handlebars ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/hlsl/package.i18n.json b/i18n/jpn/extensions/hlsl/package.i18n.json index 35229bd6699..a88dfee66db 100644 --- a/i18n/jpn/extensions/hlsl/package.i18n.json +++ b/i18n/jpn/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "HLSL の基本言語サポート", + "description": "HLSL ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/ini/package.i18n.json b/i18n/jpn/extensions/ini/package.i18n.json index 35229bd6699..ee77be67f3f 100644 --- a/i18n/jpn/extensions/ini/package.i18n.json +++ b/i18n/jpn/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ini の基本言語サポート", + "description": "Ini ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/java/package.i18n.json b/i18n/jpn/extensions/java/package.i18n.json index 35229bd6699..39f4027b3f4 100644 --- a/i18n/jpn/extensions/java/package.i18n.json +++ b/i18n/jpn/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Java の基本言語サポート", + "description": "Java ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/javascript/package.i18n.json b/i18n/jpn/extensions/javascript/package.i18n.json index 35229bd6699..d26c5684759 100644 --- a/i18n/jpn/extensions/javascript/package.i18n.json +++ b/i18n/jpn/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JavaScript の基本言語サポート", + "description": "JavaScript ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/less/package.i18n.json b/i18n/jpn/extensions/less/package.i18n.json index 35229bd6699..e4347a969e8 100644 --- a/i18n/jpn/extensions/less/package.i18n.json +++ b/i18n/jpn/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Less の基本言語サポート", + "description": "Less ファイル内で構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/log/package.i18n.json b/i18n/jpn/extensions/log/package.i18n.json index be872368d0f..a6c829a1fd2 100644 --- a/i18n/jpn/extensions/log/package.i18n.json +++ b/i18n/jpn/extensions/log/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "ログ", - "description": ".log 拡張子を持つファイルの構文ハイライトを提供" + "description": ".log 拡張子を持つファイルの構文ハイライトを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/lua/package.i18n.json b/i18n/jpn/extensions/lua/package.i18n.json index 35229bd6699..f91a605ad03 100644 --- a/i18n/jpn/extensions/lua/package.i18n.json +++ b/i18n/jpn/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Lua の基本言語サポート", + "description": "Lua ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/make/package.i18n.json b/i18n/jpn/extensions/make/package.i18n.json index 35229bd6699..8c66e8a639d 100644 --- a/i18n/jpn/extensions/make/package.i18n.json +++ b/i18n/jpn/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Make の基本言語サポート", + "description": "Make ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown-basics/package.i18n.json b/i18n/jpn/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..24adb748216 --- /dev/null +++ b/i18n/jpn/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown の基本言語サポート", + "description": "Markdown のスニペット、構文ハイライトを提供します。" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown/out/features/preview.i18n.json b/i18n/jpn/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..21f810889f0 --- /dev/null +++ b/i18n/jpn/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[プレビュー] {0}", + "previewTitle": "プレビュー {0}" +} \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/jpn/extensions/markdown/out/features/previewContentProvider.i18n.json index f81c8c61438..8031d3c647d 100644 --- a/i18n/jpn/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/jpn/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,6 +8,5 @@ ], "preview.securityMessage.text": "このドキュメントで一部のコンテンツが無効になっています", "preview.securityMessage.title": "安全でない可能性があるか保護されていないコンテンツは、マークダウン プレビューで無効化されています。保護されていないコンテンツやスクリプトを有効にするには、マークダウン プレビューのセキュリティ設定を変更してください", - "preview.securityMessage.label": "セキュリティが無効なコンテンツの警告", - "previewTitle": "プレビュー {0}" + "preview.securityMessage.label": "セキュリティが無効なコンテンツの警告" } \ No newline at end of file diff --git a/i18n/jpn/extensions/markdown/package.i18n.json b/i18n/jpn/extensions/markdown/package.i18n.json index e84fcf58d7b..58b68df0b74 100644 --- a/i18n/jpn/extensions/markdown/package.i18n.json +++ b/i18n/jpn/extensions/markdown/package.i18n.json @@ -15,12 +15,18 @@ "markdown.preview.fontSize.desc": "マークダウン プレビューで使用されるフォント サイズ (ピクセル単位) を制御します。", "markdown.preview.lineHeight.desc": "マークダウン プレビューで使用される行の高さを制御します。この数値はフォント サイズを基準とします。", "markdown.preview.markEditorSelection.desc": "マークダウンのプレビューに、エディターの現在の選択範囲を示すマークが付きます。", + "markdown.preview.scrollEditorWithPreview.desc": "マークダウンのプレビューをスクロールすると、エディターのビューが更新されます 。", + "markdown.preview.scrollPreviewWithEditor.desc": "マークダウンのエディターをスクロールすると、プレビューのビューが更新されます。", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[非推奨] エディターの現在選択されている行を表示するためにマークダウン プレビューをスクロールします。", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "この設定は 'markdown.preview.scrollPreviewWithEditor' に置き換えられ、もはや有効ではありません。", "markdown.preview.title": "プレビューを開く", "markdown.previewFrontMatter.dec": "マークダウン プレビューで YAML front matter がレンダリングされる方法を設定します。'hide' の場合、front matter が削除されます。その他の場合には、front matter はマークダウン コンテンツとして処理されます。", "markdown.previewSide.title": "プレビューを横に表示", + "markdown.showLockedPreviewToSide.title": "ロックされたプレビューを横に表示", "markdown.showSource.title": "ソースの表示", "markdown.styles.dec": "マークダウン プレビューから使用する CSS スタイル シートの URL またはローカル パスの一覧。相対パスは、エクスプローラーで開かれているフォルダーへの絶対パスと解釈されます。開かれているフォルダーがない場合、マークダウン ファイルの場所を基準としていると解釈されます。'\\' はすべて '\\\\' と入力する必要があります。", "markdown.showPreviewSecuritySelector.title": "プレビュー のセキュリティ設定を変更", "markdown.trace.desc": "マークダウン拡張機能のデバッグ ログを有効にします。", - "markdown.refreshPreview.title": "プレビューを更新" + "markdown.preview.refresh.title": "プレビューを更新", + "markdown.preview.toggleLock.title": "プレビュー ロックの切り替え" } \ No newline at end of file diff --git a/i18n/jpn/extensions/merge-conflict/package.i18n.json b/i18n/jpn/extensions/merge-conflict/package.i18n.json index ae1af61b50b..a21287ee929 100644 --- a/i18n/jpn/extensions/merge-conflict/package.i18n.json +++ b/i18n/jpn/extensions/merge-conflict/package.i18n.json @@ -7,7 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "マージの競合", - "description": "行内マージ競合のカラーリングとコマンド。", + "description": "行内マージ競合のハイライト、コマンドを提供します。", "command.category": "マージの競合", "command.accept.all-current": "現在の方をすべて取り込む", "command.accept.all-incoming": "入力側のすべてを取り込む", diff --git a/i18n/jpn/extensions/npm/package.i18n.json b/i18n/jpn/extensions/npm/package.i18n.json index 3ee785b5b1f..30c35404674 100644 --- a/i18n/jpn/extensions/npm/package.i18n.json +++ b/i18n/jpn/extensions/npm/package.i18n.json @@ -11,5 +11,8 @@ "config.npm.autoDetect": "npm スクリプトの自動検出をオンにするかオフにするかを制御します。既定はオンです。", "config.npm.runSilent": "`--silent` オプションを使用して npm コマンドを実行する。", "config.npm.packageManager": "スクリプトを実行するために使用するパッケージ マネージャー。", - "npm.parseError": "npmタスク検出: ファイル {0} の解析に失敗しました" + "config.npm.exclude": "自動スクリプト検出から除外するフォルダーの glob パターンを構成します。", + "npm.parseError": "npmタスク検出: ファイル {0} の解析に失敗しました", + "taskdef.script": "カスタマイズする npm スクリプト。", + "taskdef.path": "スクリプトを提供する package.json ファイルのフォルダーへのパス。省略をすることができます。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/objective-c/package.i18n.json b/i18n/jpn/extensions/objective-c/package.i18n.json index 35229bd6699..3a96752f68e 100644 --- a/i18n/jpn/extensions/objective-c/package.i18n.json +++ b/i18n/jpn/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Objective-C の基本言語サポート", + "description": "Objective-C ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/perl/package.i18n.json b/i18n/jpn/extensions/perl/package.i18n.json index 35229bd6699..86a5b57dc53 100644 --- a/i18n/jpn/extensions/perl/package.i18n.json +++ b/i18n/jpn/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Perl の基本言語サポート", + "description": "Perl ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/php/package.i18n.json b/i18n/jpn/extensions/php/package.i18n.json index 49f3920699e..c5c7d5d62ef 100644 --- a/i18n/jpn/extensions/php/package.i18n.json +++ b/i18n/jpn/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "リンターを保存時に実行するか、入力時に実行するか。", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "PHP の検証を無効にします (ワークスペース設定として定義)。" + "command.untrustValidationExecutable": "PHP の検証を無効にします (ワークスペース設定として定義)。", + "displayName": "PHP 言語機能", + "description": "PHP ファイルの IntelliSense、リンティング、および基本言語サポートを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/powershell/package.i18n.json b/i18n/jpn/extensions/powershell/package.i18n.json index 35229bd6699..180dafb0718 100644 --- a/i18n/jpn/extensions/powershell/package.i18n.json +++ b/i18n/jpn/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Powershell の基本言語サポート", + "description": "Powershell ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/pug/package.i18n.json b/i18n/jpn/extensions/pug/package.i18n.json index 35229bd6699..73d653c5737 100644 --- a/i18n/jpn/extensions/pug/package.i18n.json +++ b/i18n/jpn/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Pug の基本言語サポート", + "description": "Pug ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/python/package.i18n.json b/i18n/jpn/extensions/python/package.i18n.json index 35229bd6699..f430b5629f8 100644 --- a/i18n/jpn/extensions/python/package.i18n.json +++ b/i18n/jpn/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Python の基本言語サポート", + "description": "Python ファイル内で構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/r/package.i18n.json b/i18n/jpn/extensions/r/package.i18n.json index 35229bd6699..03ea0598bc5 100644 --- a/i18n/jpn/extensions/r/package.i18n.json +++ b/i18n/jpn/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "R の基本言語サポート", + "description": "R ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/razor/package.i18n.json b/i18n/jpn/extensions/razor/package.i18n.json index 35229bd6699..5865de3607d 100644 --- a/i18n/jpn/extensions/razor/package.i18n.json +++ b/i18n/jpn/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Razor の基本言語サポート", + "description": "Razor ファイル内で構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/ruby/package.i18n.json b/i18n/jpn/extensions/ruby/package.i18n.json index 35229bd6699..f540ede6f97 100644 --- a/i18n/jpn/extensions/ruby/package.i18n.json +++ b/i18n/jpn/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ruby の基本言語サポート", + "description": "Ruby ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/rust/package.i18n.json b/i18n/jpn/extensions/rust/package.i18n.json index 35229bd6699..79d1cff744d 100644 --- a/i18n/jpn/extensions/rust/package.i18n.json +++ b/i18n/jpn/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Rust の基本言語サポート", + "description": "Rust ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/scss/package.i18n.json b/i18n/jpn/extensions/scss/package.i18n.json index 35229bd6699..3ee04074328 100644 --- a/i18n/jpn/extensions/scss/package.i18n.json +++ b/i18n/jpn/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SCSS の基本言語サポート", + "description": "SCSS ファイル内で構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/shaderlab/package.i18n.json b/i18n/jpn/extensions/shaderlab/package.i18n.json index 35229bd6699..79c517dc10d 100644 --- a/i18n/jpn/extensions/shaderlab/package.i18n.json +++ b/i18n/jpn/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shaderlab の基本言語サポート", + "description": "Shaderlab ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/shellscript/package.i18n.json b/i18n/jpn/extensions/shellscript/package.i18n.json index 35229bd6699..c5a4ab21dbb 100644 --- a/i18n/jpn/extensions/shellscript/package.i18n.json +++ b/i18n/jpn/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shell Script の基本言語サポート", + "description": "Shell Script ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/sql/package.i18n.json b/i18n/jpn/extensions/sql/package.i18n.json index 35229bd6699..e22a9a3147f 100644 --- a/i18n/jpn/extensions/sql/package.i18n.json +++ b/i18n/jpn/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SQL の基本言語サポート", + "description": "SQL ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/swift/package.i18n.json b/i18n/jpn/extensions/swift/package.i18n.json index 35229bd6699..1e24cc65054 100644 --- a/i18n/jpn/extensions/swift/package.i18n.json +++ b/i18n/jpn/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Swift の基本言語サポート", + "description": "Swift ファイル内でスニペット、構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript-basics/package.i18n.json b/i18n/jpn/extensions/typescript-basics/package.i18n.json index 70990fd177a..a5d1254d7b7 100644 --- a/i18n/jpn/extensions/typescript-basics/package.i18n.json +++ b/i18n/jpn/extensions/typescript-basics/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "TypeScript 言語の基礎" + "displayName": "TypeScript 言語の基礎", + "description": "TypeScript ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript/package.i18n.json b/i18n/jpn/extensions/typescript/package.i18n.json index 851820a7e07..a1554306e84 100644 --- a/i18n/jpn/extensions/typescript/package.i18n.json +++ b/i18n/jpn/extensions/typescript/package.i18n.json @@ -56,5 +56,6 @@ "typescript.locale": "TypeScript のエラーを報告するために使用するロケールを設定します。TypeScript 2.6.0 以上が必要です。'null' の規定値は TypeScript のエラーに VS Code のロケールを使用します。", "javascript.implicitProjectConfig.experimentalDecorators": "プロジェクト外の JavaScript ファイルの 'experimentalDecorators' を有効/無効にします。既存の jsconfi.json や tsconfi.json ファイルの設定はこれより優先されます。TypeScript は 2.3.1 以上である必要があります。", "typescript.autoImportSuggestions.enabled": "自動 import 提案を有効/無効にします。TypeScript 2.6.1 以上が必要です", - "typescript.experimental.syntaxFolding": "構文の折りたたみマーカー認識を有効/無効にします。" + "typescript.experimental.syntaxFolding": "構文の折りたたみマーカー認識を有効/無効にします。", + "taskDefinition.tsconfig.description": "TS ビルドを定義する tsconfig ファイル。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/vb/package.i18n.json b/i18n/jpn/extensions/vb/package.i18n.json index 35229bd6699..f4b027a8478 100644 --- a/i18n/jpn/extensions/vb/package.i18n.json +++ b/i18n/jpn/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Visual Basic の基本言語サポート", + "description": "Visual Basic ファイル内でスニペット、構文ハイライト、かっこ一致、折りたたみを提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/xml/package.i18n.json b/i18n/jpn/extensions/xml/package.i18n.json index 35229bd6699..2665b81d6ff 100644 --- a/i18n/jpn/extensions/xml/package.i18n.json +++ b/i18n/jpn/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "XML の基本言語サポート", + "description": "XML ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/extensions/yaml/package.i18n.json b/i18n/jpn/extensions/yaml/package.i18n.json index 35229bd6699..3e00386dff8 100644 --- a/i18n/jpn/extensions/yaml/package.i18n.json +++ b/i18n/jpn/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "YAML の基本言語サポート", + "description": "YAML ファイル内で構文ハイライト、かっこ一致を提供します。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 78e5ce26eb0..2abf82cf890 100644 --- a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -23,6 +23,6 @@ "featureRequestDescription": "見てみたいその機能についての詳細を入力してください。GitHub-flavored Markdown に対応しています。GitHub 上で確認するときに問題を編集してスクリーンショットを追加できます。", "expectedResults": "期待された結果", "settingsSearchResultsDescription": "このクエリで検索したときに、表示されることを期待していた結果をリストしてください。GitHub-flavored Markdown に対応しています。GitHub 上で確認するときに問題を編集してスクリーンショットを追加できます。", - "urlLengthError": "{0} 文字の長さ制限を超えました。このデータの長さは {1} です。", + "pasteData": "必要なデータが送信するには大きすぎたため、クリップボードに書き込みました。貼り付けてください。", "disabledExtensions": "拡張機能が無効化されています" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index eecdb8d682c..4222ad5ea5d 100644 --- a/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/jpn/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -10,6 +10,7 @@ "issueTypeLabel": "種類", "issueTitleLabel": "題名", "issueTitleRequired": "題名を入力してください", + "titleLengthValidation": "タイトルが長すぎます。", "systemInfo": "私のシステム情報", "sendData": "データを送信する", "processes": "現在実行中のプロセス", @@ -20,9 +21,9 @@ "tryDisablingExtensions": "拡張機能が無効な場合に問題は再現可能ですか?", "yes": "はい", "no": "いいえ", - "disableExtensionsLabel": "{0} を実行後に問題を再現してみてください。", + "disableExtensionsLabelText": "{0} を実行後に問題を再現してみてください。", "disableExtensions": "すべての拡張機能を無効にしてウィンドウを再読みする", - "showRunningExtensionsLabel": "拡張機能の問題と疑われる場合、拡張機能の問題を報告するために {0} を実行してください。", + "showRunningExtensionsLabelText": "拡張機能の問題と疑われる場合、拡張機能の問題を報告するために {0} を実行してください。", "showRunningExtensions": "すべての実行中の拡張機能を表示する", "details": "詳細を入力してください。", "loadingData": "データを読み込んでいます..." diff --git a/i18n/jpn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/jpn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 4cd87e974bd..d9c8c1e7d10 100644 --- a/i18n/jpn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/jpn/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "上書き", "cancel": "キャンセル", "errorInstallingDependencies": "依存関係のインストール中にエラーが発生しました。{0}", + "MarketPlaceDisabled": "Marketplace が有効になっていません", + "removeError": "拡張機能の削除中にエラーが発生しました: {0}。もう一度やり直す前に、VS Code の終了と起動を実施してください。", + "Not Market place extension": "Marketplace の拡張機能のみ再インストールできます", "notFoundCompatible": "'{0}' をインストールできません。VS Code '{1}' と互換性がある利用可能なバージョンがありません。", "malicious extension": "問題が報告されたので、拡張機能をインストールできません。", "notFoundCompatibleDependency": "VS Code の現在のバージョン '{1}' と互換性を持つ、依存関係がある拡張機能 '{0}' が見つからないため、インストールできません。", diff --git a/i18n/jpn/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/jpn/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 4318c9a681a..74d1a30af44 100644 --- a/i18n/jpn/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/jpn/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -8,5 +8,7 @@ ], "hideNotifications": "通知を非表示", "zeroNotifications": "通知はありません", - "noNotifications": "新しい通知はありません" + "noNotifications": "新しい通知はありません", + "oneNotification": "1 件の新しい通知", + "notifications": "{0} 件の新しい通知" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/common/theme.i18n.json b/i18n/jpn/src/vs/workbench/common/theme.i18n.json index f65da6ed297..ec711f49239 100644 --- a/i18n/jpn/src/vs/workbench/common/theme.i18n.json +++ b/i18n/jpn/src/vs/workbench/common/theme.i18n.json @@ -59,12 +59,12 @@ "titleBarActiveBackground": "ウィンドウがアクティブな場合のタイトル バーの背景。現在、この色は macOS でのみサポートされているのでご注意ください。", "titleBarInactiveBackground": "ウィンドウが非アクティブな場合のタイトル バーの背景。現在、この色は macOS でのみサポートされているのでご注意ください。", "titleBarBorder": "タイトル バーの境界線色。現在、この色は macOS でのみサポートされているのでご注意ください。", - "notificationsCenterBorder": "通知センターの境界線色。通知はウィンドウの右下からスライド表示します。", - "notificationsToastBorder": "通知トーストの境界線色。通知はウィンドウの右下からスライド表示します。", + "notificationCenterBorder": "通知センターの境界線色。通知はウィンドウの右下からスライド表示します。", + "notificationToastBorder": "通知トーストの境界線色。通知はウィンドウの右下からスライド表示します。", "notificationsForeground": "通知の前景色。通知はウィンドウの右下からスライド表示します。", "notificationsBackground": "通知の背景色。通知はウィンドウの右下からスライド表示します。", "notificationsLink": "通知内リンクの前景色。通知はウィンドウの右下からスライド表示します。", - "notificationsCenterHeaderForeground": "通知センターのヘッダーの前景色。通知はウィンドウの右下からスライド表示します。", - "notificationsCenterHeaderBackground": "通知センターのヘッダーの背景色。通知はウィンドウの右下からスライド表示します。", + "notificationCenterHeaderForeground": "通知センターのヘッダーの前景色。通知はウィンドウの右下からスライド表示します。", + "notificationCenterHeaderBackground": "通知センターのヘッダーの背景色。通知はウィンドウの右下からスライド表示します。", "notificationsBorder": "通知センターで通知を他の通知と区切っている境界線色。通知はウィンドウの右下からスライド表示します。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index 5a8a58b378f..54068276642 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "ステータス バーにデバッグを常に表示する", "onFirstSessionStart": "初めてデバッグが開始されたときのみステータス バーにデバッグを表示する", "showInStatusBar": "デバッグのステータス バーが表示されるタイミングを制御", - "openDebug": "デバッグ ビューレットを開くか、デバッグ セッションを開始するかを制御します。", + "openDebug": "デバッグ ビューを開くか、デバッグ セッションを開始するかを制御します。", "launch": "グローバル デバッグ起動構成。ワークスペース間で共有される 'launch.json' の代わりとして使用する必要があります" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index 29a0bb6b999..039a3a0e4af 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "ライト テーマの既定値", "defaultHC": "ハイ コントラストの既定値", "JSON Validation": "JSON 検証 ({0})", + "fileMatch": "対象ファイル", + "schema": "スキーマ", "commands": "コマンド ({0})", "command name": "名前", "keyboard shortcuts": "キーボード ショートカット", diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index e1471c50bd7..66b62080027 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "手動でダウンロード", + "install vsix": "ダウンロードが終わったら、ダウンロードされた '{0}' の VSIX を手動でインストールしてください。", "installAction": "インストール", "installing": "インストールしています", + "failedToInstall": "'{0}' をインストールできませんでした。", "uninstallAction": "アンインストール", "Uninstalling": "アンインストールしています", "updateAction": "更新", "updateTo": "{0} に更新します", + "failedToUpdate": "'{0}' を更新できませんでした。", "ManageExtensionAction.uninstallingTooltip": "アンインストールしています", "enableForWorkspaceAction": "有効にする (ワークスペース)", "enableGloballyAction": "有効", @@ -58,6 +62,16 @@ "disableAllWorkspace": "このワークスペースのインストール済みの拡張機能をすべて無効にする", "enableAll": "すべての拡張機能を有効にする", "enableAllWorkspace": "このワークスペースの拡張機能をすべて有効にする", + "openExtensionsFolder": "拡張機能フォルダーを開く", + "installVSIX": "VSIX からのインストール...", + "installFromVSIX": "VSIX からインストール", + "installButton": "インストール(&&I)", + "InstallVSIXAction.success": "拡張機能が正常にインストールされました。有効にするには再読み込みしてください。", + "InstallVSIXAction.reloadNow": "今すぐ再度読み込む", + "reinstall": "拡張機能の再インストール...", + "selectExtension": "再インストールする拡張機能を選択", + "ReinstallAction.success": "拡張機能が正常に再インストールされました。", + "ReinstallAction.reloadNow": "今すぐ再度読み込む", "extensionButtonProminentBackground": "際立っているアクション拡張機能のボタンの背景色(例: インストールボタン)。", "extensionButtonProminentForeground": "際立っているアクション拡張機能のボタンの前景色(例: インストールボタン)。", "extensionButtonProminentHoverBackground": "際立っているアクション拡張機能のボタンのホバー背景色(例: インストールボタン)。" diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 757db6ad5fa..d17ed990511 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "拡張機能のプロファイル", + "restart2": "拡張機能のプロファイルには再起動が必要です。今すぐ '{0}' を再起動しますか?", "restart3": "再起動", "cancel": "キャンセル", "selectAndStartDebug": "クリックしてプロファイリングを停止します。" diff --git a/i18n/jpn/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/jpn/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index 5994c46dc78..8a2601aeca2 100644 --- a/i18n/jpn/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -7,6 +7,6 @@ "Do not edit this file. It is machine generated." ], "editor.action.webvieweditor.showFind": "検索ウィジェットにフォーカスする", - "openToolsLabel": "WebView ツール", + "openToolsLabel": "Webview 開発者ツールを開く", "refreshWebviewLabel": "WebView の再読み込み" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 1472c6ff61d..2fde4d268c7 100644 --- a/i18n/jpn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,6 +25,6 @@ "search.quickOpen.includeSymbols": "グローバル シンボル検索の結果を、Quick Open の結果ファイルに含めるように構成します。", "search.followSymlinks": "検索中にシンボリック リンクをたどるかどうかを制御します。", "search.smartCase": "すべて小文字のパターンの場合、大文字と小文字を区別しないで検索し、そうでない場合は大文字と小文字を区別して検索する", - "search.globalFindClipboard": "macOS で検索ビューレットが共有の検索クリップボードを読み取りまたは変更するかどうかを制御します", - "search.location": "検索をサイドバーの viewlet として表示するか、より水平方向の空間をとるためにパネル領域のパネルとして表示するかを制御します。" + "search.globalFindClipboard": "macOS で検索ビューが共有の検索クリップボードを読み取りまたは変更するかどうかを制御します", + "search.location": "プレビュー: 検索をサイドバーのビューとして表示するか、より水平方向の空間をとるためにパネル領域のパネルとして表示するかを制御します。次のリリースのパネル内の検索で水平レイアウトが改善され、プレビューではなくなります。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index 14669a4dd9d..1941d0b6328 100644 --- a/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,6 +11,6 @@ "terminalCursor.foreground": "ターミナルのカーソル前景色。", "terminalCursor.background": "ターミナルのカーソルの背景色。ブロックカーソルで重ねた文字の色をカスタマイズできます。", "terminal.selectionBackground": "ターミナルの選択範囲の背景色。", - "terminal.border": "複数のターミナルを区切る境界の色。デフォルトは panel.border です。", + "terminal.border": "ターミナル内の分割パネルを区切る境界線色。デフォルトは panel.border です。", "terminal.ansiColor": "ターミナルの '{0}' ANSI カラー。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json index a29524846a2..07e679a1ed8 100644 --- a/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -16,6 +16,7 @@ "64bitisavailable": "64 ビット Windows 用の {0} が利用可能になりました!詳細情報は[こちら]({1})をクリックしてください。", "updateIsReady": "新しい更新 {0} が利用可能です。", "noUpdatesAvailable": "現在入手可能な更新はありません。", + "ok": "OK", "download now": "今すぐダウンロード", "thereIsUpdateAvailable": "利用可能な更新プログラムがあります。", "installUpdate": "更新プログラムのインストール", diff --git a/i18n/jpn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/jpn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index edd7f28feda..96725800f80 100644 --- a/i18n/jpn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/jpn/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "バッジの説明。", "vscode.extension.extensionDependencies": "他の拡張機能に対する依存関係。拡張機能の識別子は常に ${publisher}.${name} です。例: vscode.csharp。", "vscode.extension.scripts.prepublish": "パッケージが VS Code 拡張機能として公開される前に実行されるスクリプト。", + "vscode.extension.scripts.uninstall": "VS コード拡張機能のフックをアンインストールします。 VS コードから拡張機能を完全にアンインストールした時に実行されるスクリプトです。スクリプトは、拡張機能をアンインストールした後に VS コードを再起動 (シャット ダウンしてから起動) したときに実行されます。Node スクリプトのみがサポートされます。", "vscode.extension.icon": "128x128 ピクセルのアイコンへのパス。" } \ No newline at end of file diff --git a/i18n/kor/extensions/bat/package.i18n.json b/i18n/kor/extensions/bat/package.i18n.json index 35229bd6699..b94caeb75e0 100644 --- a/i18n/kor/extensions/bat/package.i18n.json +++ b/i18n/kor/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Windows Bat 언어 기본", + "description": "Windows 배치 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/clojure/package.i18n.json b/i18n/kor/extensions/clojure/package.i18n.json index 35229bd6699..91c9c8703f9 100644 --- a/i18n/kor/extensions/clojure/package.i18n.json +++ b/i18n/kor/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Clojure 언어 기본", + "description": "Clojure 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/coffeescript/package.i18n.json b/i18n/kor/extensions/coffeescript/package.i18n.json index 35229bd6699..0a1dace1983 100644 --- a/i18n/kor/extensions/coffeescript/package.i18n.json +++ b/i18n/kor/extensions/coffeescript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "CoffeeScript 언어 기본", + "description": "CoffeeScript 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/configuration-editing/package.i18n.json b/i18n/kor/extensions/configuration-editing/package.i18n.json index 35229bd6699..ba5ead0bb40 100644 --- a/i18n/kor/extensions/configuration-editing/package.i18n.json +++ b/i18n/kor/extensions/configuration-editing/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "구성 편집", + "description": "설정, 시작 및 확장명 추천 파일과 같은 구성 파일에서 기능(고급 IntelliSense, 자동 수정)을 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/cpp/package.i18n.json b/i18n/kor/extensions/cpp/package.i18n.json index 35229bd6699..b7a1a80c068 100644 --- a/i18n/kor/extensions/cpp/package.i18n.json +++ b/i18n/kor/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C/C++ 언어 기본", + "description": "C/C++ 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/csharp/package.i18n.json b/i18n/kor/extensions/csharp/package.i18n.json index 35229bd6699..71f4bd5fc8c 100644 --- a/i18n/kor/extensions/csharp/package.i18n.json +++ b/i18n/kor/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C# 언어 기본", + "description": "C# 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/css/package.i18n.json b/i18n/kor/extensions/css/package.i18n.json index 6833fda84fd..43cc6cb4724 100644 --- a/i18n/kor/extensions/css/package.i18n.json +++ b/i18n/kor/extensions/css/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "CSS 언어 기능", + "description": "CSS, LESS 및 SCSS 파일에 대한 다양한 언어 지원을 제공합니다.", "css.title": "CSS", "css.lint.argumentsInColorFunction.desc": "잘못된 매개 변수 수", "css.lint.boxModel.desc": "패딩 또는 테두리를 사용하는 경우 너비 또는 높이를 사용하지 마세요.", diff --git a/i18n/kor/extensions/docker/package.i18n.json b/i18n/kor/extensions/docker/package.i18n.json index 35229bd6699..773f0ff4af7 100644 --- a/i18n/kor/extensions/docker/package.i18n.json +++ b/i18n/kor/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Docker 언어 기본", + "description": "Docker 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/emmet/package.i18n.json b/i18n/kor/extensions/emmet/package.i18n.json index 7c2f62ae857..d4ae14fedae 100644 --- a/i18n/kor/extensions/emmet/package.i18n.json +++ b/i18n/kor/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "VS Code에 대한 Emmet 지원", "command.wrapWithAbbreviation": "약어로 래핑", "command.wrapIndividualLinesWithAbbreviation": "약어로 개별 줄 래핑", "command.removeTag": "태그 제거", @@ -54,5 +55,9 @@ "emmetPreferencesFilterCommentTrigger": "콤마로 구분된 리스트의 속성은 코멘트 필터 약어로 존재해야 합니다.", "emmetPreferencesFormatNoIndentTags": "내부 들여쓰기하면 안 되는 태그 이름 배열", "emmetPreferencesFormatForceIndentTags": "항상 내부 들여쓰기를 해야 하는 태그 이름의 배열", - "emmetPreferencesAllowCompactBoolean": "true인 경우 부울 속성의 축소된 표기법이 생성됩니다." + "emmetPreferencesAllowCompactBoolean": "true인 경우 부울 속성의 축소된 표기법이 생성됩니다.", + "emmetPreferencesCssWebkitProperties": "`-`로 시작하는 Emmet 약어에서 사용될 때 'webkit' 공급업체 접두사를 가져오는 쉼표로 구분된 CSS 속성입니다. 항상 'webkit' 접두사를 사용하지 않으려면 빈 문자열로 설정합니다.", + "emmetPreferencesCssMozProperties": "`-`로 시작하는 Emmet 약어에서 사용될 때 'moz' 공급업체 접두사를 가져오는 쉼표로 구분된 CSS 속성입니다. 항상 'moz' 접두사를 사용하지 않으려면 빈 문자열로 설정합니다.", + "emmetPreferencesCssOProperties": "`-`로 시작하는 emmet 약어에서 사용할 때 'o' 공급업체 접두사를 가져오는 쉼표로 구분된 CSS 속성입니다. 항상 'o' 접두사를 사용하지 않으려면 빈 문자열로 설정합니다.", + "emmetPreferencesCssMsProperties": "`-`로 시작하는 emmet 약어에서 사용할 때 'ms' 공급업체 접두사를 가져오는 쉼표로 구분된 CSS 속성입니다. 항상 'ms' 접두사를 사용하지 않으려면 빈 문자열로 설정합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/extension-editing/package.i18n.json b/i18n/kor/extensions/extension-editing/package.i18n.json index 35229bd6699..da40974d29f 100644 --- a/i18n/kor/extensions/extension-editing/package.i18n.json +++ b/i18n/kor/extensions/extension-editing/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "패키지 파일 편집", + "description": "VS Code 확장 지점 및 package.json 파일의 lint 기능에 대해 IntelliSense를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/fsharp/package.i18n.json b/i18n/kor/extensions/fsharp/package.i18n.json index 35229bd6699..cd155f6f79b 100644 --- a/i18n/kor/extensions/fsharp/package.i18n.json +++ b/i18n/kor/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "F# 언어 기본", + "description": "F# 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/git/out/autofetch.i18n.json b/i18n/kor/extensions/git/out/autofetch.i18n.json index cadfed4c233..7f6a3198eb6 100644 --- a/i18n/kor/extensions/git/out/autofetch.i18n.json +++ b/i18n/kor/extensions/git/out/autofetch.i18n.json @@ -8,5 +8,6 @@ ], "yes": "예", "no": "아니요", - "not now": "나중에 물어보기" + "not now": "나중에 물어보기", + "suggest auto fetch": "Code에서 ['git fetch']({0})를 정기적으로 실행하도록 하시겠습니까?" } \ No newline at end of file diff --git a/i18n/kor/extensions/git/out/model.i18n.json b/i18n/kor/extensions/git/out/model.i18n.json index 2f1a201e501..47bfb877f0f 100644 --- a/i18n/kor/extensions/git/out/model.i18n.json +++ b/i18n/kor/extensions/git/out/model.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "too many submodules": "'{0}' 리포지토리에 자동으로 열리지 않는 {1}개의 하위 모듈이 있습니다. 모듈 내의 파일을 열러 각 모듈을 개별적으로 열 수는 있습니다.", "no repositories": "사용 가능한 리포지토리가 없습니다.", "pick repo": "리포지토리 선택" } \ No newline at end of file diff --git a/i18n/kor/extensions/git/package.i18n.json b/i18n/kor/extensions/git/package.i18n.json index bff6239e1e3..07838b84a85 100644 --- a/i18n/kor/extensions/git/package.i18n.json +++ b/i18n/kor/extensions/git/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Git", + "description": "Git SCM 통합", "command.clone": "복제", "command.init": "리포지토리 초기화", "command.close": "리포지토리 닫기", @@ -74,6 +75,7 @@ "config.decorations.enabled": "Git에서 색과 배지를 탐색기와 열려 있는 편집기 뷰에 적용하는지 제어합니다.", "config.promptToSaveFilesBeforeCommit": "Git가 제출(commit)하기 전에 저장되지 않은 파일을 검사할지를 제어합니다. ", "config.showInlineOpenFileAction": "Git 변경점 보기에서 파일 열기 동작 줄을 표시할지의 여부를 제어합니다.", + "config.inputValidation": "커밋 메시지 입력 유효성 검사를 언제 표시할지 제어합니다.", "config.detectSubmodules": "Git 하위 모듈을 자동으로 검색할지 여부를 제어합니다.", "colors.modified": "수정된 리소스의 색상입니다.", "colors.deleted": "삭제된 리소스의 색상입니다.", diff --git a/i18n/kor/extensions/go/package.i18n.json b/i18n/kor/extensions/go/package.i18n.json index 35229bd6699..e96af6f8c61 100644 --- a/i18n/kor/extensions/go/package.i18n.json +++ b/i18n/kor/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Go 언어 기본", + "description": "Go 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/groovy/package.i18n.json b/i18n/kor/extensions/groovy/package.i18n.json index 35229bd6699..03012fdafc8 100644 --- a/i18n/kor/extensions/groovy/package.i18n.json +++ b/i18n/kor/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Groovy 언어 기본", + "description": "Groovy 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/grunt/package.i18n.json b/i18n/kor/extensions/grunt/package.i18n.json index 992d0740032..f8895078557 100644 --- a/i18n/kor/extensions/grunt/package.i18n.json +++ b/i18n/kor/extensions/grunt/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.grunt.autoDetect": "Grunt 작업의 자동 검색을 사용할지 여부를 제어합니다. 기본값은 [켜기]입니다." + "description": "VSCode에 Grunt 기능을 추가할 확장입니다.", + "displayName": "VSCode에 대한 Grunt 지원", + "config.grunt.autoDetect": "Grunt 작업의 자동 검색을 사용할지 여부를 제어합니다. 기본값은 [켜기]입니다.", + "grunt.taskDefinition.type.description": "사용자 지정할 Grunt 작업입니다.", + "grunt.taskDefinition.file.description": "작업을 제공하는 Grunt 파일이며 생략할 수 있습니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/gulp/package.i18n.json b/i18n/kor/extensions/gulp/package.i18n.json index cbe72203c25..4203e9df9c4 100644 --- a/i18n/kor/extensions/gulp/package.i18n.json +++ b/i18n/kor/extensions/gulp/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.gulp.autoDetect": "Gulp 작업의 자동 검색을 사용할지 여부를 제어합니다. 기본값은 [켜기]입니다." + "description": "VSCode에 Gulp 기능을 추가할 확장입니다.", + "displayName": "VSCode에 대한 Gulp 지원", + "config.gulp.autoDetect": "Gulp 작업의 자동 검색을 사용할지 여부를 제어합니다. 기본값은 [켜기]입니다.", + "gulp.taskDefinition.type.description": "사용자 지정할 Gulp 작업입니다.", + "gulp.taskDefinition.file.description": "작업을 제공하는 Gulp 파일이며 생략할 수 있습니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/handlebars/package.i18n.json b/i18n/kor/extensions/handlebars/package.i18n.json index 35229bd6699..e7c46e56465 100644 --- a/i18n/kor/extensions/handlebars/package.i18n.json +++ b/i18n/kor/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Handlebars 언어 기본", + "description": "Handlebars 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/hlsl/package.i18n.json b/i18n/kor/extensions/hlsl/package.i18n.json index 35229bd6699..13e006d274d 100644 --- a/i18n/kor/extensions/hlsl/package.i18n.json +++ b/i18n/kor/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "HLSL 언어 기본", + "description": "HLSL 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/html/package.i18n.json b/i18n/kor/extensions/html/package.i18n.json index 260733d5e59..a71b4df8880 100644 --- a/i18n/kor/extensions/html/package.i18n.json +++ b/i18n/kor/extensions/html/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "HTML 언어 기능", + "description": "HTML, Razor 및 Handlebar 파일에 대한 다양한 언어 지원을 제공합니다.", "html.format.enable.desc": "기본 HTML 포맷터를 사용하거나 사용하지 않습니다.", "html.format.wrapLineLength.desc": "한 줄당 최대 문자 수입니다(0 = 사용 안 함).", "html.format.unformatted.desc": "쉼표로 분리된 태그 목록으로, 서식을 다시 지정해서는 안 됩니다. https://www.w3.org/TR/html5/dom.html#phrasing-content에 나열된 모든 태그의 기본값은 'null'로 설정됩니다.", @@ -27,5 +29,6 @@ "html.trace.server.desc": "VS Code와 HTML 언어 서버 간 통신을 추적합니다.", "html.validate.scripts": "기본 제공 HTML 언어 지원에서 포함 스크립트의 유효성을 검사하는지 여부를 구성합니다.", "html.validate.styles": "기본 제공 HTML 언어 지원에서 포함 스타일의 유효성을 검사하는지 여부를 구성합니다.", + "html.experimental.syntaxFolding": "구문 인식 접기 마커를 설정하거나 해제합니다.", "html.autoClosingTags": "HTML 태그의 자동 닫기를 사용하거나 사용하지 않습니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/ini/package.i18n.json b/i18n/kor/extensions/ini/package.i18n.json index 35229bd6699..1b035d634b2 100644 --- a/i18n/kor/extensions/ini/package.i18n.json +++ b/i18n/kor/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ini 언어 기본", + "description": "Ini 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/jake/package.i18n.json b/i18n/kor/extensions/jake/package.i18n.json index 9625aae3201..2dcfc03464b 100644 --- a/i18n/kor/extensions/jake/package.i18n.json +++ b/i18n/kor/extensions/jake/package.i18n.json @@ -6,5 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "VSCode에 대한 Jake 지원", + "jake.taskDefinition.type.description": "사용자 지정할 Jake 작업입니다.", + "jake.taskDefinition.file.description": "작업을 제공하는 Jake 파일이며 생략할 수 있습니다.", "config.jake.autoDetect": "Jake 작업에 대한 자동 검색 사용 여부를 설정합니다. 기본값은 [켜기]입니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/java/package.i18n.json b/i18n/kor/extensions/java/package.i18n.json index 35229bd6699..10a50630a00 100644 --- a/i18n/kor/extensions/java/package.i18n.json +++ b/i18n/kor/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Java 언어 기본", + "description": "Java 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/javascript/package.i18n.json b/i18n/kor/extensions/javascript/package.i18n.json index 35229bd6699..b2be2c111cb 100644 --- a/i18n/kor/extensions/javascript/package.i18n.json +++ b/i18n/kor/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JavaScript 언어 기본", + "description": "JavaScript 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/json/package.i18n.json b/i18n/kor/extensions/json/package.i18n.json index bcc11ebefb5..3adf4f967d1 100644 --- a/i18n/kor/extensions/json/package.i18n.json +++ b/i18n/kor/extensions/json/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "JSON 언어 기능", + "description": "JSON 파일에 대한 다양한 언어 지원을 제공합니다.", "json.schemas.desc": "현재 프로젝트에서 스키마를 JSON 파일에 연결", "json.schemas.url.desc": "현재 디렉터리에 있는 스키마의 URL 또는 상대 경로", "json.schemas.fileMatch.desc": "스키마에 대한 JSON 파일을 확인할 때 일치할 파일 패턴의 배열입니다.", @@ -14,5 +16,6 @@ "json.format.enable.desc": "기본 JSON 포맷터 사용/사용 안 함(다시 시작해야 함)", "json.tracing.desc": "VS Code와 JSON 언어 서버 간 통신을 추적합니다.", "json.colorDecorators.enable.desc": "색 데코레이터 사용 또는 사용 안 함", - "json.colorDecorators.enable.deprecationMessage": "`json.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다." + "json.colorDecorators.enable.deprecationMessage": "`json.colorDecorators.enable` 설정은 `editor.colorDecorators`를 위해 사용되지 않습니다.", + "json.experimental.syntaxFolding": "구문 인식 접기 마커를 설정하거나 해제합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/less/package.i18n.json b/i18n/kor/extensions/less/package.i18n.json index 35229bd6699..5b68258c408 100644 --- a/i18n/kor/extensions/less/package.i18n.json +++ b/i18n/kor/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Less 언어 기본", + "description": "Less 파일에서 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/log/package.i18n.json b/i18n/kor/extensions/log/package.i18n.json index 35229bd6699..deed4e3f434 100644 --- a/i18n/kor/extensions/log/package.i18n.json +++ b/i18n/kor/extensions/log/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "로그", + "description": "확장명이 .log인 파일에 대해 구문 강조 표시를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/lua/package.i18n.json b/i18n/kor/extensions/lua/package.i18n.json index 35229bd6699..d7f16433ac6 100644 --- a/i18n/kor/extensions/lua/package.i18n.json +++ b/i18n/kor/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Lua 언어 기본", + "description": "Lua 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/make/package.i18n.json b/i18n/kor/extensions/make/package.i18n.json index 35229bd6699..0052e6620fe 100644 --- a/i18n/kor/extensions/make/package.i18n.json +++ b/i18n/kor/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Make 언어 기본", + "description": "Make 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/markdown-basics/package.i18n.json b/i18n/kor/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..ef18fb49e64 --- /dev/null +++ b/i18n/kor/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown 언어 기본", + "description": "Markdown에 대해 코드 조각 및 구문 강조 표시를 제공합니다." +} \ No newline at end of file diff --git a/i18n/kor/extensions/markdown/out/features/preview.i18n.json b/i18n/kor/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..4bc763aedcc --- /dev/null +++ b/i18n/kor/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[미리 보기] {0}", + "previewTitle": "미리 보기 {0}" +} \ No newline at end of file diff --git a/i18n/kor/extensions/markdown/package.i18n.json b/i18n/kor/extensions/markdown/package.i18n.json index add9159d59d..83878314ebe 100644 --- a/i18n/kor/extensions/markdown/package.i18n.json +++ b/i18n/kor/extensions/markdown/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Markdown 언어 기능", + "description": "Markdown에 대한 다양한 언어 지원을 제공합니다.", "markdown.preview.breaks.desc": "마크다운 미리 보기에서 줄바꿈 렌더링 방식을 설정합니다. 'true'로 설정하면 모든 행에 대해
이(가) 생성됩니다.", "markdown.preview.linkify": "Markdown 미리 보기에서 URL 같은 텍스트를 링크로 변환을 사용하거나 사용하지 않도록 설정합니다.", "markdown.preview.doubleClickToSwitchToEditor.desc": "markdown 미리 보기에서 두 번 클릭하여 편집기로 전환합니다.", @@ -13,12 +15,18 @@ "markdown.preview.fontSize.desc": "markdown 미리 보기에서 사용되는 글꼴 크기(픽셀)를 제어합니다.", "markdown.preview.lineHeight.desc": "markdown 미리 보기에 사용되는 줄 높이를 제어합니다. 이 숫자는 글꼴 크기에 상대적입니다.", "markdown.preview.markEditorSelection.desc": "markdown 미리 보기에 현재 편집기 선택을 표시합니다.", + "markdown.preview.scrollEditorWithPreview.desc": "Markdown 미리 보기를 스크롤할 때 편집기의 보기를 업데이트합니다.", + "markdown.preview.scrollPreviewWithEditor.desc": "Markdown 편집기를 스크롤할 때 미리 보기의 보기를 업데이트합니다.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[사용되지 않음] markdown 미리 보기를 스크롤하여 편집기에서 현재 선택한 줄을 표시합니다.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "이 설정은 'markdown.preview.scrollPreviewWithEditor'로 대체되었으며 더 이상 영향을 주지 않습니다.", "markdown.preview.title": "미리 보기 열기", "markdown.previewFrontMatter.dec": "markdown 미리 보기에서 YAML 전문을 렌더링할 방법을 설정합니다. '숨기기' 기능을 사용하면 전문이 제거되고, 그러지 않으면 전문이 markdown 콘텐츠로 처리됩니다.", "markdown.previewSide.title": "측면에서 미리 보기 열기", + "markdown.showLockedPreviewToSide.title": "측면에서 잠긴 미리 보기 열기", "markdown.showSource.title": "소스 표시", "markdown.styles.dec": "markdown 미리 보기에서 사용할 CSS 스타일시트의 URL 또는 로컬 경로 목록입니다. 상대 경로는 탐색기에서 열린 폴더를 기준으로 해석됩니다. 열린 폴더가 없으면 markdown 파일의 위치를 기준으로 해석됩니다. 모든 '\\'는 '\\\\'로 써야 합니다.", "markdown.showPreviewSecuritySelector.title": "미리 보기 보안 설정 변경", "markdown.trace.desc": "Markdown 확장에 대해 디버그 로깅을 사용하도록 설정합니다.", - "markdown.refreshPreview.title": "미리 보기 새로 고침" + "markdown.preview.refresh.title": "미리 보기 새로 고침", + "markdown.preview.toggleLock.title": "미리 보기 잠금 설정/해제" } \ No newline at end of file diff --git a/i18n/kor/extensions/merge-conflict/package.i18n.json b/i18n/kor/extensions/merge-conflict/package.i18n.json index 2370f9b6f9c..985040d350c 100644 --- a/i18n/kor/extensions/merge-conflict/package.i18n.json +++ b/i18n/kor/extensions/merge-conflict/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "충돌 병합", + "description": "인라인 병합 충돌에 대한 강조 표시 및 명령입니다.", "command.category": "충돌 병합", "command.accept.all-current": "모든 현재 사항 수락", "command.accept.all-incoming": "수신 모두 수락", diff --git a/i18n/kor/extensions/npm/package.i18n.json b/i18n/kor/extensions/npm/package.i18n.json index e15fa853892..316421231ad 100644 --- a/i18n/kor/extensions/npm/package.i18n.json +++ b/i18n/kor/extensions/npm/package.i18n.json @@ -6,8 +6,13 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "npm 스크립트에 대한 작업 지원을 추가할 확장입니다.", + "displayName": "VSCode에 대한 Npm 지원", "config.npm.autoDetect": "npm 스크립트에 대한 자동 검색 여부를 설정합니다. 기본값은 [켜기]입니다.", "config.npm.runSilent": " `--silent` 옵션으로 npm 명령 실행.", "config.npm.packageManager": "스크립트를 실행하는 데 사용하는 패키지 관리자.", - "npm.parseError": "Npm 작업 검색: {0} 파일을 구문 분석하지 못했습니다." + "config.npm.exclude": "자동 스크립트 검색에서 제외할 폴더에 대한 Glob 패턴을 구성합니다.", + "npm.parseError": "Npm 작업 검색: {0} 파일을 구문 분석하지 못했습니다.", + "taskdef.script": "사용자 지정할 npm 스크립트입니다.", + "taskdef.path": "스크립트를 제공하는 package.json 파일의 폴더에 대한 경로이며 생략할 수 있습니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/objective-c/package.i18n.json b/i18n/kor/extensions/objective-c/package.i18n.json index 35229bd6699..14efc920b26 100644 --- a/i18n/kor/extensions/objective-c/package.i18n.json +++ b/i18n/kor/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Objective-C 언어 기본", + "description": "Objective-C 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/perl/package.i18n.json b/i18n/kor/extensions/perl/package.i18n.json index 35229bd6699..a03b504e172 100644 --- a/i18n/kor/extensions/perl/package.i18n.json +++ b/i18n/kor/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Perl 언어 기본", + "description": "Perl 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/php/package.i18n.json b/i18n/kor/extensions/php/package.i18n.json index ce478e07c68..c12a9f13cf2 100644 --- a/i18n/kor/extensions/php/package.i18n.json +++ b/i18n/kor/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "저장 시 또는 입력 시 Linter의 실행 여부입니다.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "PHP 유효성 검사 실행 파일을 허용하지 않음(작업\n 영역 설정으로 정의됨)" + "command.untrustValidationExecutable": "PHP 유효성 검사 실행 파일을 허용하지 않음(작업\n 영역 설정으로 정의됨)", + "displayName": "PHP 언어 기능", + "description": "PHP 파일에 대해 IntelliSense, lint 및 언어 기본을 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/powershell/package.i18n.json b/i18n/kor/extensions/powershell/package.i18n.json index 35229bd6699..1409ac14cc0 100644 --- a/i18n/kor/extensions/powershell/package.i18n.json +++ b/i18n/kor/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Powershell 언어 기본", + "description": "Powershell 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/pug/package.i18n.json b/i18n/kor/extensions/pug/package.i18n.json index 35229bd6699..84c8811d1a5 100644 --- a/i18n/kor/extensions/pug/package.i18n.json +++ b/i18n/kor/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Pug 언어 기본", + "description": "Pug 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/python/package.i18n.json b/i18n/kor/extensions/python/package.i18n.json index 35229bd6699..a79c41da463 100644 --- a/i18n/kor/extensions/python/package.i18n.json +++ b/i18n/kor/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Python 언어 기본", + "description": "Python 파일에서 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/r/package.i18n.json b/i18n/kor/extensions/r/package.i18n.json index 35229bd6699..ef3edc28ff9 100644 --- a/i18n/kor/extensions/r/package.i18n.json +++ b/i18n/kor/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "R 언어 기본", + "description": "R 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/razor/package.i18n.json b/i18n/kor/extensions/razor/package.i18n.json index 35229bd6699..1a9a5fa9eb9 100644 --- a/i18n/kor/extensions/razor/package.i18n.json +++ b/i18n/kor/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Razor 언어 기본", + "description": "Razor 파일에서 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/ruby/package.i18n.json b/i18n/kor/extensions/ruby/package.i18n.json index 35229bd6699..28bde264ce0 100644 --- a/i18n/kor/extensions/ruby/package.i18n.json +++ b/i18n/kor/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ruby 언어 기본", + "description": "Ruby 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/rust/package.i18n.json b/i18n/kor/extensions/rust/package.i18n.json index 35229bd6699..3cb992e7532 100644 --- a/i18n/kor/extensions/rust/package.i18n.json +++ b/i18n/kor/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Rust 언어 기본", + "description": "Rust 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/scss/package.i18n.json b/i18n/kor/extensions/scss/package.i18n.json index 35229bd6699..8a78efd1104 100644 --- a/i18n/kor/extensions/scss/package.i18n.json +++ b/i18n/kor/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SCSS 언어 기본", + "description": "SCSS 파일에서 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/shaderlab/package.i18n.json b/i18n/kor/extensions/shaderlab/package.i18n.json index 35229bd6699..68f64006d01 100644 --- a/i18n/kor/extensions/shaderlab/package.i18n.json +++ b/i18n/kor/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shaderlab 언어 기본", + "description": "Shaderlab 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/shellscript/package.i18n.json b/i18n/kor/extensions/shellscript/package.i18n.json index 35229bd6699..a37f353d0f0 100644 --- a/i18n/kor/extensions/shellscript/package.i18n.json +++ b/i18n/kor/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "셸 스크립트 언어 기본", + "description": "셸 스크립트 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/sql/package.i18n.json b/i18n/kor/extensions/sql/package.i18n.json index 35229bd6699..cce5044673e 100644 --- a/i18n/kor/extensions/sql/package.i18n.json +++ b/i18n/kor/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SQL 언어 기본", + "description": "SQL 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/swift/package.i18n.json b/i18n/kor/extensions/swift/package.i18n.json index 35229bd6699..0e54ebd4fe1 100644 --- a/i18n/kor/extensions/swift/package.i18n.json +++ b/i18n/kor/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Swift 언어 기본", + "description": "Swift 파일에서 코드 조각, 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-abyss/package.i18n.json b/i18n/kor/extensions/theme-abyss/package.i18n.json index 35229bd6699..057f2aebc15 100644 --- a/i18n/kor/extensions/theme-abyss/package.i18n.json +++ b/i18n/kor/extensions/theme-abyss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "심해 테마", + "description": "Visual Studio Code용 심해 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-defaults/package.i18n.json b/i18n/kor/extensions/theme-defaults/package.i18n.json index 35229bd6699..5c95bc43467 100644 --- a/i18n/kor/extensions/theme-defaults/package.i18n.json +++ b/i18n/kor/extensions/theme-defaults/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "기본 테마", + "description": "기본 밝은 테마 및 어두운 테마(Plus 및 Visual Studio)" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-kimbie-dark/package.i18n.json b/i18n/kor/extensions/theme-kimbie-dark/package.i18n.json index 35229bd6699..78c4bc42135 100644 --- a/i18n/kor/extensions/theme-kimbie-dark/package.i18n.json +++ b/i18n/kor/extensions/theme-kimbie-dark/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Kimbie 어두운 테마", + "description": "Visual Studio Code용 Kimbie 어두운 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-monokai-dimmed/package.i18n.json b/i18n/kor/extensions/theme-monokai-dimmed/package.i18n.json index 35229bd6699..62e85004bcb 100644 --- a/i18n/kor/extensions/theme-monokai-dimmed/package.i18n.json +++ b/i18n/kor/extensions/theme-monokai-dimmed/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Monokai 흐릿한 테마", + "description": "Visual Studio Code용 Monokai 흐릿한 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-monokai/package.i18n.json b/i18n/kor/extensions/theme-monokai/package.i18n.json index 35229bd6699..139771985aa 100644 --- a/i18n/kor/extensions/theme-monokai/package.i18n.json +++ b/i18n/kor/extensions/theme-monokai/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Monokai 테마", + "description": "Visual Studio Code용 Monokai 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-quietlight/package.i18n.json b/i18n/kor/extensions/theme-quietlight/package.i18n.json index 35229bd6699..fb185e0937e 100644 --- a/i18n/kor/extensions/theme-quietlight/package.i18n.json +++ b/i18n/kor/extensions/theme-quietlight/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "고요한 밝은 테마", + "description": "Visual Studio Code용 고요한 밝은 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-red/package.i18n.json b/i18n/kor/extensions/theme-red/package.i18n.json index 35229bd6699..84575aaef82 100644 --- a/i18n/kor/extensions/theme-red/package.i18n.json +++ b/i18n/kor/extensions/theme-red/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "빨간색 테마", + "description": "Visual Studio Code용 빨간색 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-seti/package.i18n.json b/i18n/kor/extensions/theme-seti/package.i18n.json index 35229bd6699..a4e61f7e692 100644 --- a/i18n/kor/extensions/theme-seti/package.i18n.json +++ b/i18n/kor/extensions/theme-seti/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Seti 파일 아이콘 테마", + "description": "Seti UI 파일 아이콘으로 만든 파일 아이콘 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-solarized-dark/package.i18n.json b/i18n/kor/extensions/theme-solarized-dark/package.i18n.json index 35229bd6699..f56c00a6e58 100644 --- a/i18n/kor/extensions/theme-solarized-dark/package.i18n.json +++ b/i18n/kor/extensions/theme-solarized-dark/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "노출 어두운 테마", + "description": "Visual Studio Code용 노출 어두운 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-solarized-light/package.i18n.json b/i18n/kor/extensions/theme-solarized-light/package.i18n.json index 35229bd6699..e00699da953 100644 --- a/i18n/kor/extensions/theme-solarized-light/package.i18n.json +++ b/i18n/kor/extensions/theme-solarized-light/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "노출 밝은 테마", + "description": "Visual Studio Code용 노출 밝은 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/theme-tomorrow-night-blue/package.i18n.json b/i18n/kor/extensions/theme-tomorrow-night-blue/package.i18n.json index 35229bd6699..c9ef329c54b 100644 --- a/i18n/kor/extensions/theme-tomorrow-night-blue/package.i18n.json +++ b/i18n/kor/extensions/theme-tomorrow-night-blue/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "내일 밤 파란색 테마", + "description": "Visual Studio Code용 내일 밤 파란색 테마" } \ No newline at end of file diff --git a/i18n/kor/extensions/typescript-basics/package.i18n.json b/i18n/kor/extensions/typescript-basics/package.i18n.json index 35229bd6699..61b1b8c55e9 100644 --- a/i18n/kor/extensions/typescript-basics/package.i18n.json +++ b/i18n/kor/extensions/typescript-basics/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "TypeScript 언어 기본 사항", + "description": "TypeScript 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/typescript/out/commands.i18n.json b/i18n/kor/extensions/typescript/out/commands.i18n.json index a0819fd7ea0..dd43847bd6e 100644 --- a/i18n/kor/extensions/typescript/out/commands.i18n.json +++ b/i18n/kor/extensions/typescript/out/commands.i18n.json @@ -9,6 +9,8 @@ "typescript.projectConfigNoWorkspace": "TypeScript 또는 JavaScript 프로젝트를 사용하려면 VS Code의 폴더를 여세요.", "typescript.projectConfigUnsupportedFile": "TypeScript 또는 JavaScript 프로젝트를 확인할 수 없습니다. 지원되지 않는 파일 형식", "typescript.projectConfigCouldNotGetInfo": "TypeScript 또는 JavaScript 프로젝트를 확인할 수 없습니다.", + "typescript.noTypeScriptProjectConfig": "파일이 TypeScript 프로젝트의 일부가 아닙니다. 자세히 알아보려면 [여기]({0})를 클릭하세요.", + "typescript.noJavaScriptProjectConfig": "파일이 JavaScript 프로젝트의 일부가 아닙니다. 자세히 알아보려면 [여기]({0})를 클릭하세요.", "typescript.configureTsconfigQuickPick": "tsconfig.json 구성", "typescript.configureJsconfigQuickPick": "jsconfig.json 구성" } \ No newline at end of file diff --git a/i18n/kor/extensions/typescript/out/utils/typingsStatus.i18n.json b/i18n/kor/extensions/typescript/out/utils/typingsStatus.i18n.json index c81332ec95c..0fad82fa51a 100644 --- a/i18n/kor/extensions/typescript/out/utils/typingsStatus.i18n.json +++ b/i18n/kor/extensions/typescript/out/utils/typingsStatus.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "installingPackages": "TypeScript IntelliSense를 향상하기 위해 데이터를 페치하는 중", + "typesInstallerInitializationFailed.title": "JavaScript 언어 기능에 대한 입력 파일을 설치할 수 없습니다. NPM이 설치되어 있는지 확인하거나 사용자 설정에서 'typescript.npm'을 구성하세요. 자세히 알아보려면 [여기]({0})를 클릭하세요.", "typesInstallerInitializationFailed.doNotCheckAgain": "다시 표시 안 함" } \ No newline at end of file diff --git a/i18n/kor/extensions/typescript/package.i18n.json b/i18n/kor/extensions/typescript/package.i18n.json index 0972a8d36bd..dd42af00286 100644 --- a/i18n/kor/extensions/typescript/package.i18n.json +++ b/i18n/kor/extensions/typescript/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "TypeScript 및 JavaScript 언어 기능", + "description": "JavaScript 및 TypeScript에 대한 다양한 언어 지원을 제공합니다.", "typescript.reloadProjects.title": "프로젝트 다시 로드", "javascript.reloadProjects.title": "프로젝트 다시 로드", "configuration.typescript": "TypeScript", @@ -53,5 +55,7 @@ "typescript.quickSuggestionsForPaths": "가져오기 경로를 입력할 때 빠른 제안을 사용하거나 사용하지 않습니다.", "typescript.locale": "TypeScript 오류를 보고하는 데 사용하는 로캘을 설정합니다. TypeScript >= 2.6.0이 필요합니다. 기본값 'null'은 TypeScript 오류에 대해 VS Code의 로캘을 사용합니다.", "javascript.implicitProjectConfig.experimentalDecorators": "프로젝트의 일부가 아닌 JavaScript 파일에 대해 'experimentalDecorators'를 사용하거나 사용하지 않도록 설정합니다. 기존 jsconfig.json 또는 tsconfig.json 파일은 이 설정을 재정의합니다. TypeScript >=2.3.1이 필요합니다.", - "typescript.autoImportSuggestions.enabled": "자동 가져오기 제안을 사용하거나 사용하지 않도록 설정합니다. TypeScript >=2.6.1이 필요합니다." + "typescript.autoImportSuggestions.enabled": "자동 가져오기 제안을 사용하거나 사용하지 않도록 설정합니다. TypeScript >=2.6.1이 필요합니다.", + "typescript.experimental.syntaxFolding": "구문 인식 접기 마커를 설정하거나 해제합니다.", + "taskDefinition.tsconfig.description": "TS 빌드를 정의하는 tsconfig 파일입니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/vb/package.i18n.json b/i18n/kor/extensions/vb/package.i18n.json index 35229bd6699..0726ad5192a 100644 --- a/i18n/kor/extensions/vb/package.i18n.json +++ b/i18n/kor/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Visual Basic 언어 기본", + "description": "Visual Basic 파일에서 코드 조각, 구문 강조 표시, 괄호 일치 및 접기를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/xml/package.i18n.json b/i18n/kor/extensions/xml/package.i18n.json index 35229bd6699..1047461f820 100644 --- a/i18n/kor/extensions/xml/package.i18n.json +++ b/i18n/kor/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "XML 언어 기본", + "description": "XML 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/extensions/yaml/package.i18n.json b/i18n/kor/extensions/yaml/package.i18n.json index 35229bd6699..573c4139d42 100644 --- a/i18n/kor/extensions/yaml/package.i18n.json +++ b/i18n/kor/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "YAML 언어 기본", + "description": "YAML 파일에서 구문 강조 표시 및 괄호 일치를 제공합니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 2d8e4964a47..f09203d420b 100644 --- a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -12,9 +12,17 @@ "open": "열기", "closed": "닫힘", "noResults": "결과 없음", + "settingsSearchIssue": "설정 검색 문제", "bugReporter": "버그 보고서", + "performanceIssue": "성능 문제", "featureRequest": "기능 요청", "stepsToReproduce": "재현 단계", + "bugDescription": "문제를 안정적으로 재현시킬 수 있는 방법을 공유해주세요. 실제 결과와 예상 결과를 포함하세요. GitHub 버전의 Markdown을 지원합니다. GitHub에서 미리 볼 때 문제를 편집하고 스크린샷을 추가할 수 있습니다.", + "performanceIssueDesciption": "이 성능 문제가 언제 발생합니까? 시작할 때 발생합니까? 특정 작업을 진행한 이후에 발생합니까? GitHub 버전의 Markdown을 지원합니다. GitHub에서 미리 볼 때 문제를 편집하고 스크린샷을 추가할 수 있습니다.", "description": "설명", + "featureRequestDescription": "보고 싶어하는 기능을 설명해주세요. GitHub 버전의 Markdown을 지원합니다. GitHub에서 미리 볼 때 문제를 편집하고 스크린샷을 추가할 수 있습니다.", + "expectedResults": "예상 결과", + "settingsSearchResultsDescription": "이 쿼리를 검색할 때 기대했던 결과의 목록을 알려주세요. GitHub 버전의 Markdown을 지원합니다. GitHub에서 미리 볼 때 문제를 편집하고 스크린샷을 추가할 수 있습니다.", + "pasteData": "너무 커서 보낼 수 없었기 때문에 필요한 데이터를 클립보드에 썼습니다. 붙여 넣으세요.", "disabledExtensions": "확장을 사용할 수 없습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 0b7e91f8916..838b50751aa 100644 --- a/i18n/kor/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/kor/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -7,15 +7,24 @@ "Do not edit this file. It is machine generated." ], "completeInEnglish": "양식을 영어로 작성해 주세요.", + "issueTypeLabel": "이것은", "issueTitleLabel": "제목", "issueTitleRequired": "제목을 입력하세요.", + "titleLengthValidation": "제목이 너무 깁니다.", "systemInfo": "내 시스템 정보", "sendData": "내 데이터 보내기", "processes": "현재 실행 중인 프로세스", "workspaceStats": "내 작업 영역 통계", "extensions": "내 확장", + "searchedExtensions": "검색된 확장", + "settingsSearchDetails": "설정 검색 세부 정보", + "tryDisablingExtensions": "확장을 사용하지 않도록 설정해도 문제 재현이 가능한가요?", "yes": "예", "no": "아니요", + "disableExtensionsLabelText": "{0} 후 문제를 재현해 보세요.", "disableExtensions": "모든 확장을 사용하지 않도록 설정하고 창 다시 로드", + "showRunningExtensionsLabelText": "확장 문제로 의심되면 {0}에서 확장에 대한 문제를 보고하세요.", + "showRunningExtensions": "모든 실행 중인 확장 보기", + "details": "상세 내용을 입력하세요.", "loadingData": "데이터 로드 중..." } \ No newline at end of file diff --git a/i18n/kor/src/vs/code/electron-main/logUploader.i18n.json b/i18n/kor/src/vs/code/electron-main/logUploader.i18n.json index 0104a460820..127ac6cacc7 100644 --- a/i18n/kor/src/vs/code/electron-main/logUploader.i18n.json +++ b/i18n/kor/src/vs/code/electron-main/logUploader.i18n.json @@ -9,6 +9,10 @@ "invalidEndpoint": "잘못된 로그 업로더 끝점", "beginUploading": "업로드 중...", "didUploadLogs": "업로드 성공. 로그 파일 ID: {0}", + "logUploadPromptHeader": "Microsoft의 VS Code 팀만 액세스할 수 있는 안전한 Microsoft 끝점에 세션 로그를 업로드하려고 합니다.", + "logUploadPromptBody": "세션 로그에 전체 경로, 파일 내용 등과 같은 개인 정보가 포함되어 있을 수 있습니다. 다음에서 세션 로그 파일을 검토하고 편집하세요. '{0}'", + "logUploadPromptBodyDetails": "계속하면 세션 로그 파일을 검토하고 수정했으며 Microsoft에서 이 파일을 사용하여 VS Code를 디버그하는 데 동의한다고 확인하게 됩니다.", + "logUploadPromptAcceptInstructions": "업로드를 계속하려면 '--upload-logs={0}'을(를) 사용하여 코드를 실행하세요.", "postError": "로그를 게시하는 동안 오류가 발생했습니다. {0}", "responseError": "로그를 게시하는 동안 오류가 발생했습니다. {0} — {1} 받음", "parseError": "응답을 구문 분석하는 동안 오류가 발생했습니다.", diff --git a/i18n/kor/src/vs/code/electron-main/menus.i18n.json b/i18n/kor/src/vs/code/electron-main/menus.i18n.json index 9f4ca8b8ff9..128f36b1108 100644 --- a/i18n/kor/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/kor/src/vs/code/electron-main/menus.i18n.json @@ -93,6 +93,7 @@ "miOpenView": "뷰 열기(&&O)...", "miToggleFullScreen": "전체 화면 설정/해제(&&F)", "miToggleZenMode": "Zen 모드 설정/해제", + "miToggleCenteredLayout": "가운데 맞춤된 레이아웃 설정/해제", "miToggleMenuBar": "메뉴 모음 설정/해제(&&B)", "miSplitEditor": "편집기 분할(&&E)", "miToggleEditorLayout": "편집기 그룹 레이아웃 설정/해제(&&L)", diff --git a/i18n/kor/src/vs/code/electron-main/window.i18n.json b/i18n/kor/src/vs/code/electron-main/window.i18n.json index 35229bd6699..ff8c3b1aedc 100644 --- a/i18n/kor/src/vs/code/electron-main/window.i18n.json +++ b/i18n/kor/src/vs/code/electron-main/window.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hiddenMenuBar": " 키를 눌러 메뉴 모음에 계속 액세스할 수 있습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json index 61a1a9f0adf..37b49551575 100644 --- a/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/kor/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -15,6 +15,7 @@ "editorWhitespaces": "편집기의 공백 문자 색입니다.", "editorIndentGuides": "편집기 들여쓰기 안내선 색입니다.", "editorLineNumbers": "편집기 줄 번호 색입니다.", + "editorActiveLineNumber": "편집기 활성 영역 줄번호 색상", "editorRuler": "편집기 눈금의 색상입니다.", "editorCodeLensForeground": "편집기 코드 렌즈의 전경색입니다.", "editorBracketMatchBackground": "일치하는 브래킷 뒤의 배경색입니다.", diff --git a/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 042b7c91d0d..76ee8e87f46 100644 --- a/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/kor/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "재정의", "cancel": "취소", "errorInstallingDependencies": "의존성 설치 중 오류가 발생했습니다. {0}", + "MarketPlaceDisabled": "Marketplace를 사용할 수 없습니다.", + "removeError": "확장을 제거하는 동안 오류가 발생했습니다. {0}. 다시 시도하기 전에 VS Code를 종료하고 다시 시작하세요.", + "Not Market place extension": "마켓플레이스 확장만 다시 설치할 수 있습니다.", "notFoundCompatible": "'{0}'을(를) 설치할 수 없습니다; VS Code '{1}'과 호환되는 버전이 없습니다.", "malicious extension": "문제가 있다고 보고되었으므로 확장을 설치할 수 없습니다.", "notFoundCompatibleDependency": "VS Code의 현재 버전 '{1}'과(와) 호환되는 종속된 확장 '{0}'을(를) 찾을 수 없으므로 설치할 수 없습니다.", diff --git a/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json index 9167adb7494..fb0ab90f546 100644 --- a/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/kor/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -79,6 +79,8 @@ "hoverBackground": "편집기 호버의 배경색.", "hoverBorder": "편집기 호버의 테두리 색입니다.", "activeLinkForeground": "활성 링크의 색입니다.", + "diffEditorInserted": "글자 배경색이 삽입되었습니다. 해당 색상은 적용된 꾸밈을 가리지 않기 위해 불투명해서는 안됩니다.", + "diffEditorRemoved": "글자 배경색이 제거되었습니다. 해당 색상은 적용된 꾸밈을 가리지 않기 위해 불투명해서는 안됩니다.", "diffEditorInsertedOutline": "삽입된 텍스트의 윤곽선 색입니다.", "diffEditorRemovedOutline": "제거된 텍스트의 윤곽선 색입니다.", "mergeCurrentHeaderBackground": "인라인 병합 충돌의 현재 헤더 배경입니다. 색상은 밑의 꾸밈을 가리지 않도록 반드시 불투명이 아니어야 합니다.", diff --git a/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index 578d1da30cc..19bb0d93623 100644 --- a/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (확장)", "defaultSource": "확장", "manageExtension": "확장 관리", "cancel": "취소", diff --git a/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 35229bd6699..4a956b0bd25 100644 --- a/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/kor/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "webview.editor.label": "webview 편집기" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json b/i18n/kor/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json index 35229bd6699..0f680b0e851 100644 --- a/i18n/kor/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json +++ b/i18n/kor/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "unknownDep": "`{1}` 확장을 활성화하지 못했습니다. 이유: 알 수 없는 종속성 `{0}`.", + "failedDep1": "`{1}` 확장을 활성화하지 못했습니다. 이유: `{0}` 종속성을 활성화하지 못했습니다.", + "failedDep2": "`{1}` 확장을 활성화하지 못했습니다. 이유: 10개를 초과하는 종속성 수준(종속성 루프일 가능성 높음).", + "activationError": "'{0}' 확장을 활성화하지 못했습니다. {1}." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json b/i18n/kor/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json index 9af8931d3e4..f176db31908 100644 --- a/i18n/kor/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "toggleCenteredLayout": "가운데 맞춤된 레이아웃 설정/해제", "view": "보기" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json index 4b5fa5acd8c..f0e2070a7f4 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json @@ -19,12 +19,14 @@ "close": "닫기", "closeOthers": "기타 항목 닫기", "closeRight": "오른쪽에 있는 항목 닫기", + "closeAllSaved": "저장된 항목 닫기", "closeAll": "모두 닫기", "keepOpen": "열린 상태 유지", "toggleInlineView": "인라인 뷰 설정/해제", "showOpenedEditors": "열려 있는 편집기 표시", "keepEditor": "편집기 유지", "closeEditorsInGroup": "그룹의 모든 편집기 닫기", + "closeSavedEditors": "그룹에서 저장된 편집기 닫기", "closeOtherEditors": "다른 편집기 닫기", "closeRightEditors": "오른쪽에 있는 편집기 닫기" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json index 35229bd6699..3df7bbf7430 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json @@ -5,5 +5,12 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "clearNotification": "알림 지우기", + "clearNotifications": "모든 알림 지우기", + "hideNotificationsCenter": "알림 숨기기", + "expandNotification": "알림 확장", + "collapseNotification": "알림 축소", + "configureNotification": "알림 구성", + "copyNotification": "텍스트 복사" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 35229bd6699..26c8431a513 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -5,5 +5,8 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "알림", + "notificationsToolbar": "알림 센터 작업", + "notificationsList": "알림 목록" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json index 35229bd6699..e8144e0f388 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "알림", + "showNotifications": "알림 표시", + "hideNotifications": "알림 숨기기", + "clearAllNotifications": "모든 알림 지우기" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 35229bd6699..ec0efad9701 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -5,5 +5,10 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hideNotifications": "알림 숨기기", + "zeroNotifications": "알림 없음", + "noNotifications": "새 알림 없음", + "oneNotification": "1개의 새 알림", + "notifications": "{0}개의 새 알림" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json index 35229bd6699..80263072f0e 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationsToast": "알림" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json index 35229bd6699..3bd2a8dc894 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationActions": "알림 작업", + "notificationSource": "소스: {0}" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/common/theme.i18n.json b/i18n/kor/src/vs/workbench/common/theme.i18n.json index 23195cc3401..b7ee5105a1a 100644 --- a/i18n/kor/src/vs/workbench/common/theme.i18n.json +++ b/i18n/kor/src/vs/workbench/common/theme.i18n.json @@ -58,5 +58,13 @@ "titleBarInactiveForeground": "창이 비활성화된 경우의 제목 표시줄 전경입니다. 이 색은 현재 macOS에서만 지원됩니다.", "titleBarActiveBackground": "창을 활성화할 때의 제목 표시줄 전경입니다. 이 색은 현재 macOS에서만 지원됩니다.", "titleBarInactiveBackground": "창이 비활성화된 경우의 제목 표시줄 배경입니다. 이 색은 현재 macOS에서만 지원됩니다.", - "titleBarBorder": "제목 막대 테두리 색입니다. 현재 이 색상은 macOS에서만 지원됩니다." + "titleBarBorder": "제목 막대 테두리 색입니다. 현재 이 색상은 macOS에서만 지원됩니다.", + "notificationCenterBorder": "알림 센터 테두리 색입니다. 알림은 창 오른쪽 맨 아래에 표시됩니다.", + "notificationToastBorder": "알림 테두리 색입니다. 알림은 창 오른쪽 맨 아래에 표시됩니다.", + "notificationsForeground": "알림 전경색입니다. 알림은 창 오른쪽 맨 아래에 표시됩니다.", + "notificationsBackground": "알림 센터 배경색입니다. 알림은 창 오른쪽 맨 아래에 표시됩니다.", + "notificationsLink": "알림 링크 전경색입니다. 알림은 창 오른쪽 맨 아래에 표시됩니다.", + "notificationCenterHeaderForeground": "알림 센터 머리글 전경색입니다. 알림은 창 오른쪽 맨 아래에 표시됩니다.", + "notificationCenterHeaderBackground": "알림 센터 머리글 배경색입니다. 알림은 창 오른쪽 맨 아래에 표시됩니다.", + "notificationsBorder": "알림 센터에서 다른 알림과 구분하는 알림 테두리 색입니다. 알림은 창 오른쪽 맨 아래에 표시됩니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/common/views.i18n.json b/i18n/kor/src/vs/workbench/common/views.i18n.json index 35229bd6699..dd937818bf9 100644 --- a/i18n/kor/src/vs/workbench/common/views.i18n.json +++ b/i18n/kor/src/vs/workbench/common/views.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "duplicateId": "ID `{0}`인 뷰가 위치 `{1}`에 이미 등록되어 있습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/kor/src/vs/workbench/electron-browser/actions.i18n.json index 89c2585d58b..2d9a4b3ee0b 100644 --- a/i18n/kor/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/kor/src/vs/workbench/electron-browser/actions.i18n.json @@ -18,6 +18,7 @@ "zoomReset": "확대/축소 다시 설정", "appPerf": "시작 성능", "reloadWindow": "창 다시 로드", + "reloadWindowWithExntesionsDisabled": "확장을 사용하지 않도록 설정하고 창 다시 로드", "switchWindowPlaceHolder": "전환할 창 선택", "current": "현재 창", "close": "창 닫기", @@ -48,5 +49,6 @@ "moveWindowTabToNewWindow": "창 탭을 새 창으로 이동", "mergeAllWindowTabs": "모든 창 병합", "toggleWindowTabsBar": "창 탭 모음 설정/해제", - "about": "{0} 정보" + "about": "{0} 정보", + "inspect context keys": "컨텍스트 키 검사" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json index 36b4d629cfe..451b959a9ea 100644 --- a/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -35,6 +35,7 @@ "panelDefaultLocation": "패널의 기본 위치를 제어합니다. 워크벤치의 아래 또는 오른쪽에 표시될 수 있습니다.", "statusBarVisibility": "워크벤치 아래쪽에서 상태 표시줄의 표시 유형을 제어합니다.", "activityBarVisibility": "워크벤치에서 작업 막대의 표시 유형을 제어합니다.", + "viewVisibility": "보기 머리글 작업의 표시 여부를 제어합니다. 보기 머리글 작업은 항상 표시할 수도 있고 보기에 포커스가 있거나 보기를 마우스로 가리킬 때만 표시할 수도 있습니다.", "fontAliasing": "워크벤치에서 글꼴 앨리어싱 방식을 제어합니다.\n- 기본: 서브 픽셀 글꼴 다듬기. 대부분의 일반 디스플레이에서 가장 선명한 글꼴 제공\n- 안티앨리어싱: 서브 픽셀이 아닌 픽셀 단위에서 글꼴 다듬기. 전반적으로 더 밝은 느낌을 줄 수 있음\n- 없음: 글꼴 다듬기 사용 안 함. 텍스트 모서리가 각지게 표시됨\n- 자동: 디스플레이의 DPI에 따라 `기본` 또는 `안티앨리어싱`을 자동으로 적용합니다.", "workbench.fontAliasing.default": "서브 픽셀 글꼴 다듬기. 대부분의 일반 디스플레이에서 가장 선명한 텍스트를 제공합니다. ", "workbench.fontAliasing.antialiased": "서브 픽셀이 아닌 픽셀 수준에서 글꼴을 다듬습니다. 전반적으로 글꼴이 더 밝게 표시됩니다.", @@ -75,6 +76,7 @@ "window.nativeTabs": "macOS Sierra 창 탭을 사용하도록 설정합니다. 변경\n 내용을 적용하려면 전체 다시 시작해야 하고, 기본 탭에서\n 사용자 지정 제목 표시줄 스타일(구성된 경우)을 비활성화합니다.", "zenModeConfigurationTitle": "Zen 모드", "zenMode.fullScreen": "Zen 모드를 켜면 워크벤치도 전체 화면 모드로 전환되는지 여부를 제어합니다.", + "zenMode.centerLayout": "Zen 모드를 켜면 레이아웃도 가운데로 맞춰지는지 여부를 제어합니다.", "zenMode.hideTabs": "Zen 모드를 켜면 워크벤치 탭도 숨길지를 제어합니다.", "zenMode.hideStatusBar": "Zen 모드를 켜면 워크벤치 하단에서 상태 표시줄도 숨길지를 제어합니다.", "zenMode.hideActivityBar": "Zen 모드를 켜면 워크벤치의 왼쪽에 있는 작업 막대도 숨길지\n 여부를 제어합니다.", diff --git a/i18n/kor/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index bda2da1af75..8a6f29b83bf 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -10,6 +10,10 @@ "functionBreakpointsNotSupported": "이 디버그 형식은 함수 중단점을 지원하지 않습니다.", "functionBreakpointPlaceholder": "중단할 함수", "functionBreakPointInputAriaLabel": "함수 중단점 입력", + "breakpointDisabledHover": "해제된 중단점", + "breakpointUnverifieddHover": "확인되지 않은 중단점", + "functionBreakpointUnsupported": "이 디버그 형식은 함수 중단점을 지원하지 않습니다.", "breakpointDirtydHover": "확인되지 않은 중단점입니다. 파일이 수정되었습니다. 디버그 세션을 다시 시작하세요.", - "conditionalBreakpointUnsupported": "이 디버그 형식에서 지원되지 않는 조건부 중단점" + "conditionalBreakpointUnsupported": "이 디버그 형식에서 지원되지 않는 조건부 중단점", + "hitBreakpointUnsupported": "이 디버그 형식은 조건부 중단점 적중을 지원하지 않습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json index 5d63b420a5a..dbd802f3d71 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "noFolderDebugConfig": "고급 디버그 구성을 수행하려면 먼저 폴더를 여세요.", + "columnBreakpoint": "열 중단점", "debug": "디버그", "addColumnBreakpoint": "열 중단점 추가" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json index 6efff46983d..54dad0bedb8 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "unable": "디버그 세션이 없는 리소스를 확인할 수 없음" + "unable": "디버그 세션이 없는 리소스를 확인할 수 없음", + "canNotResolveSource": "{0} 리소스를 확인할 수 없습니다. 디버그 확장에서 응답이 없습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index 9063bc79c2f..874247a3475 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "상태 표시줄에 디버그 항상 표시", "onFirstSessionStart": "디버그가 처음으로 시작된 후에만 상태 표시줄에 디버그 표시", "showInStatusBar": "디버그 상태 표시줄을 표시할 시기를 제어합니다.", - "openDebug": "디버깅 세션 시작 시 디버그 뷰렛을 열지 여부를 제어합니다.", + "openDebug": "디버깅 세션 시작 시에 디버그 보기를 열지 여부를 제어합니다", "launch": "전역 디버그 시작 구성입니다. 작업 영역에서 공유되는 \n 'launch.json'에 대한 대체로 사용되어야 합니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 205122173e4..53bf2dac9a8 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -14,9 +14,11 @@ "breakpointRemoved": "파일 {1}, 줄 {0}에서 중단점이 제거되었습니다.", "compoundMustHaveConfigurations": "여러 구성을 시작하려면 복합에 \"configurations\" 특성 집합이 있어야 합니다.", "noConfigurationNameInWorkspace": "작업 영역에서 시작 구성 '{0}'을(를) 찾을 수 없습니다.", + "multipleConfigurationNamesInWorkspace": "작업 영역에 시작 구성 '{0}'이(가) 여러 개 있습니다. 폴더 이름을 사용하여 구성을 한정하세요.", "noFolderWithName": "복합형 '{2}'의 구성 '{1}'에 대해 이름이 '{0}'인 폴더를 찾을 수 없습니다.", "configMissing": "'{0}' 구성이 'launch.json'에 없습니다.", "launchJsonDoesNotExist": "'launch.json'이 없습니다.", + "debugRequestNotSupported": "'{0}' 특성에는 선택한 디버그 구성에서 지원되지 않는 값 '{1}'이(가) 있습니다.", "debugRequesMissing": "선택한 디버그 구성에 특성 '{0}'이(가) 없습니다.", "debugTypeNotSupported": "구성된 디버그 형식 '{0}'은(는) 지원되지 않습니다.", "debugTypeMissing": "선택한 시작 구성에 대한 'type' 속성이 없습니다.", diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json index e8fc38478dd..79de72d3e1f 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "copyValue": "값 복사", + "copyAsExpression": "식으로 복사", "copy": "복사", "copyAll": "모두 복사", "copyStackTrace": "호출 스택 복사" diff --git a/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index d335de7a5b5..ac0d4279306 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "밝게 기본값", "defaultHC": "고대비 기본값", "JSON Validation": "JSON 유효성 검사({0})", + "fileMatch": "파일 일치", + "schema": "스키마", "commands": "명령({0})", "command name": "이름", "keyboard shortcuts": "바로 가기 키(&&K)", diff --git a/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index f0dc673516e..d1ad83723cb 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "수동으로 다운로드", + "install vsix": "다운로드하고 나면 다운로드한 '{0}'의 VSIX를 수동으로 설치하세요.", "installAction": "설치", "installing": "설치 중", + "failedToInstall": "'{0}'을(를) 설치하지 못했습니다.", "uninstallAction": "제거", "Uninstalling": "제거하는 중", "updateAction": "업데이트", "updateTo": "{0}(으)로 업데이트", + "failedToUpdate": "'{0}'을(를) 업데이트하지 못했습니다.", "ManageExtensionAction.uninstallingTooltip": "제거하는 중", "enableForWorkspaceAction": "사용(작업 영역)", "enableGloballyAction": "사용", @@ -38,6 +42,7 @@ "showInstalledExtensions": "설치된 확장 표시", "showDisabledExtensions": "사용할 수 없는 확장 표시", "clearExtensionsInput": "확장 입력 지우기", + "showBuiltInExtensions": "기본 제공 확장 표시", "showOutdatedExtensions": "만료된 확장 표시", "showPopularExtensions": "자주 사용되는 확장 표시", "showRecommendedExtensions": "권장되는 확장 표시", @@ -55,6 +60,18 @@ "malicious": "악성", "disableAll": "설치된 모든 확장 사용 안 함", "disableAllWorkspace": "이 작업 영역에 대해 설치된 모든 확장 사용 안 함", + "enableAll": "모든 확장 사용", + "enableAllWorkspace": "이 작업 영역에 대해 모든 확장 사용", + "openExtensionsFolder": "Extensions 폴더 열기", + "installVSIX": "VSIX에서 설치...", + "installFromVSIX": "VSIX에서 설치", + "installButton": "설치(&&I)", + "InstallVSIXAction.success": "확장이 설치되었습니다. 사용하도록 설정하려면 다시 로드하세요.", + "InstallVSIXAction.reloadNow": "지금 다시 로드", + "reinstall": "확장 다시 설치...", + "selectExtension": "다시 설치할 확장 선택", + "ReinstallAction.success": "확장이 설치되었습니다.", + "ReinstallAction.reloadNow": "지금 다시 로드", "extensionButtonProminentBackground": "눈에 잘 띄는 작업 확장의 단추 배경색입니다(예: 설치 단추).", "extensionButtonProminentForeground": "눈에 잘 띄는 작업 확장의 단추 전경색입니다(예: 설치 단추).", "extensionButtonProminentHoverBackground": "눈에 잘 띄는 작업 확장의 단추 배경 커서 올리기 색입니다(예: 설치 단추)." diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 6facc18b55e..6ca85821a3c 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "확장 프로파일링", + "restart2": "확장을 프로파일링하려면 다시 시작해야 합니다. 지금 '{0}'을(를) 다시 시작하시겠습니까?", "restart3": "다시 시작", "cancel": "취소", "selectAndStartDebug": "프로파일링을 중지하려면 클릭하세요." diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 8c20a9f2461..c2d64485c12 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -8,6 +8,8 @@ ], "neverShowAgain": "다시 표시 안 함", "searchMarketplace": "Marketplace 검색", + "showLanguagePackExtensions": "Marketplace에 VS Code를 '{0}' 로캘로 지역화하는 데 유용한 확장이 있습니다.", + "dynamicWorkspaceRecommendation": "이 확장은 {0} 리포지토리의 사용자들에게 인기가 있으므로 관심을 가질 만합니다.", "exeBasedRecommendation": "{0}이(가) 설치되어 있으므로 이 확장을 권장합니다.", "fileBasedRecommendation": "최근에 연 파일을 기반으로 확장이 권장됩니다.", "workspaceRecommendation": "이 확장은 현재 작업 영역 사용자가 권장합니다.", diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index b738c90cdb7..6523ae0d7b1 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -15,5 +15,6 @@ "developer": "개발자", "extensionsConfigurationTitle": "확장", "extensionsAutoUpdate": "자동으로 확장 업데이트", - "extensionsIgnoreRecommendations": "True로 설정하는 경우 확장 권장 사항에 대한 알림 표시가 중지됩니다." + "extensionsIgnoreRecommendations": "True로 설정하는 경우 확장 권장 사항에 대한 알림 표시가 중지됩니다.", + "extensionsShowRecommendationsOnlyOnDemand": "True로 설정하는 경우 사용자가 특별히 요청하는 경우가 아니면 권장 사항을 가져오거나 표시하지 않습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index d88f38093be..c764c2061a4 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,7 @@ "recommendedExtensions": "권장", "otherRecommendedExtensions": "기타 권장 사항", "workspaceRecommendedExtensions": "작업 영역 권장 사항", + "builtInExtensions": "기본 제공", "searchExtensions": "마켓플레이스에서 확장 검색", "sort by installs": "정렬 기준: 설치 수", "sort by rating": "정렬 기준: 등급", diff --git a/i18n/kor/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json index 640cb68c0f5..893db96ed71 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json @@ -10,6 +10,7 @@ "malicious": "이 확장은 문제가 있다고 보고되었습니다.", "installingMarketPlaceExtension": "Marketplace에서 확장을 설치하는 중...", "uninstallingExtension": "확장을 제거하는 중....", + "enableDependeciesConfirmation": "'{0}'을(를) 사용하도록 설정하면 종속성도 사용하도록 설정됩니다. 계속하시겠습니까?", "enable": "예", "doNotEnable": "아니요", "disableDependeciesConfirmation": "'{0}'만 사용하지 않도록 설정하시겠습니까, 아니면 종속성도 사용하지 않도록 설정하시겠습니까?", diff --git a/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json index c511ec16301..42cc77c6edf 100644 --- a/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json @@ -29,6 +29,7 @@ "compareSelected": "선택 항목 비교", "close": "닫기", "closeOthers": "기타 항목 닫기", + "closeSaved": "저장된 항목 닫기", "closeAll": "모두 닫기", "deleteFile": "영구히 삭제" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 3010674cced..3c5dd9bb459 100644 --- a/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -39,6 +39,8 @@ "importFiles": "파일 가져오기", "confirmOverwrite": "이름이 같은 파일 또는 폴더가 대상 폴더에 이미 있습니다. 덮어쓸까요?", "replaceButtonLabel": "바꾸기(&&R)", + "fileIsAncestor": "붙여 넣을 파일이 대상 폴더의 상위 항목입니다.", + "fileDeleted": "그동안 붙여 넣을 파일이 삭제되거나 이동되었습니다.", "duplicateFile": "중복", "globalCompareFile": "활성 파일을 다음과 비교...", "openFileToCompare": "첫 번째 파일을 열어서 다른 파일과 비교합니다.", diff --git a/i18n/kor/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json b/i18n/kor/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json index f921805c38a..b2bb3346a0a 100644 --- a/i18n/kor/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "userGuide": "편집기 도구 모음의 작업을 사용하여 변경 내용을 실행 취소하거나 디스크의 콘텐츠를 변경 내용으로 덮어쓰세요.", + "staleSaveError": "'{0}'을(를) 저장하지 못했습니다. 디스크의 내용이 최신 버전입니다. 버전을 디스크에 있는 버전과 비교하하세요.", "retry": "다시 시도", "discard": "삭제", "readonlySaveErrorAdmin": "'{0}' 저장 실패: 파일이 쓰기 보호되어 있습니다. 관리자로 다시 시도하려면 '관리자로 덮어쓰기'를 선택하세요.", diff --git a/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json b/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json index a69e81d9f72..f12dbce84b7 100644 --- a/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "label": "탐색기", - "canNotResolve": "작업 영역 폴더를 확인할 수 없습니다." + "canNotResolve": "작업 영역 폴더를 확인할 수 없습니다.", + "symbolicLlink": "바로 가기 링크" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index b68cddecdb8..b6d91a6d575 100644 --- a/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "파일 이름을 입력합니다. 확인하려면 Enter 키를 누르고, 취소하려면 Esc 키를 누릅니다.", + "constructedPath": "**{1}**에 {0} 만들기", "filesExplorerViewerAriaLabel": "{0}, 파일 탐색기", "dropFolders": "작업 영역에 폴더를 추가하시겠습니까?", "dropFolder": "작업 영역에 폴더를 추가하시겠습니까?", diff --git a/i18n/kor/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/kor/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index b56df35b226..e1e1b8586d5 100644 --- a/i18n/kor/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editor.action.webvieweditor.showFind": "파인드 위젯 포커스" + "editor.action.webvieweditor.showFind": "파인드 위젯 포커스", + "openToolsLabel": "Webview 개발자 도구 열기", + "refreshWebviewLabel": "Webview 다시 로드" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json b/i18n/kor/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json index d58215b61d7..3bd63de7ca6 100644 --- a/i18n/kor/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json @@ -15,6 +15,7 @@ "mainProcess": "기본", "selectProcess": "프로세스에 대한 로그 선택", "openLogFile": "로그 파일 열기...", + "setLogLevel": "로그 수준 설정...", "trace": "Trace", "debug": "디버그", "info": "정보", diff --git a/i18n/kor/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/kor/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index a796088e3a7..e80e5a7a2f1 100644 --- a/i18n/kor/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -20,6 +20,7 @@ "showSameKeybindings": "동일한 키 바인딩 표시", "copyLabel": "복사", "copyCommandLabel": "복사 명령", + "error": "키 바인딩을 편집하는 동안 '{0}' 오류가 발생했습니다. 'keybindings.json' 파일을 열고 오류를 확인하세요.", "command": "명령", "keybinding": "키 바인딩", "source": "소스", diff --git a/i18n/kor/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json b/i18n/kor/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json index 4b5c1fe8d5e..16dd8342ca1 100644 --- a/i18n/kor/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json @@ -12,6 +12,7 @@ "entryAriaLabelWithKey": "{0}, {1}, 명령", "entryAriaLabel": "{0}, 명령", "actionNotEnabled": "'{0}' 명령은 현재 컨텍스트에서 사용할 수 없습니다.", + "canNotRun": "'{0}' 명령에서 오류가 발생했습니다.", "recentlyUsed": "최근에 사용한 항목", "morecCommands": "기타 명령", "cat.title": "{0}: {1}", diff --git a/i18n/kor/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json b/i18n/kor/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json index 5c2397d8c0d..52b3cb24c35 100644 --- a/i18n/kor/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json @@ -10,6 +10,8 @@ "change": "변경 내용 {0}/{1}개", "show previous change": "이전 변경 내용 표시", "show next change": "다음 변경 내용 표시", + "move to previous change": "이전 변경 내용으로 이동", + "move to next change": "다음 변경 내용으로 이동", "editorGutterModifiedBackground": "수정된 줄의 편집기 여백 배경색입니다.", "editorGutterAddedBackground": "추가된 줄의 편집기 여백 배경색입니다.", "editorGutterDeletedBackground": "삭제된 줄의 편집기 여백 배경색입니다.", diff --git a/i18n/kor/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json index 4049e742fe8..073f844e784 100644 --- a/i18n/kor/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json @@ -12,5 +12,6 @@ "view": "보기", "scmConfigurationTitle": "SCM", "alwaysShowProviders": "소스 제어 공급자 부분을 항상 표시할지의 여부", - "diffDecorations": "편집기에서 차이점 장식을 제어합니다." + "diffDecorations": "편집기에서 차이점 장식을 제어합니다.", + "diffGutterWidth": "여백에서 차이점 장식의 너비(px)를 제어합니다(추가 및 수정됨)." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 04ac1b08ee2..40920aa65c0 100644 --- a/i18n/kor/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,5 +25,6 @@ "search.quickOpen.includeSymbols": "Quick Open에 대한 파일 결과에 전역 기호 검색 결과를 포함하도록 구성합니다.", "search.followSymlinks": "검색하는 동안 symlink를 누를지 여부를 제어합니다.", "search.smartCase": "패턴이 모두 소문자인 경우 대/소문자를 구분하지 않고 검색하고, 그렇지 않으면 대/소문자를 구분하여 검색합니다.", - "search.globalFindClipboard": "macOS에서 Search Viewlet이 공유 클립보드 찾기를 읽거나 수정해야 할지를 제어합니다." + "search.globalFindClipboard": "macOS에서 검색 보기가 공유 클립보드 찾기를 읽거나 수정해야 할지를 제어합니다.", + "search.location": "미리 보기: 검색을 사이드바의 보기로 표시할지 또는 가로 간격을 늘리기 위해 패널 영역의 패널로 표시할지를 제어합니다. 다음 릴리스의 패널에서의 검색은 가로 레이아웃이 개선되며 더 이상 미리 보기가 아닙니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index b012a1bdca8..5c6abe93d98 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -7,9 +7,12 @@ "Do not edit this file. It is machine generated." ], "ProblemPatternParser.loopProperty.notLast": "loop 속성은 마지막 줄 검사기에서만 지원됩니다.", + "ProblemPatternParser.problemPattern.kindProperty.notFirst": "문제 패턴이 잘못되었습니다. Kind 속성은 첫 번째 요소에만 지정해야 합니다.", "ProblemPatternParser.problemPattern.missingRegExp": "문제 패턴에 정규식이 없습니다.", + "ProblemPatternParser.problemPattern.missingProperty": "문제 패턴이 잘못되었습니다. 하나 이상의 파일 및 메시지를 포함해야 합니다.", "ProblemPatternParser.invalidRegexp": "오류: {0} 문자열은 유효한 정규식이 아닙니다.\n", "ProblemPatternSchema.regexp": "출력에서 오류, 경고 또는 정보를 찾는 정규식입니다.", + "ProblemPatternSchema.kind": "패턴이 위치(파일 및 줄)와 일치하는지 또는 파일하고만 일치하는지 여부입니다.", "ProblemPatternSchema.file": "파일 이름의 일치 그룹 인덱스입니다. 생략된 경우 1이 사용됩니다.", "ProblemPatternSchema.location": "문제 위치의 일치 그룹 인덱스입니다. 유효한 위치 패턴은 (line), (line,column) 및 (startLine,startColumn,endLine,endColumn)입니다. 생략하면 (line,column)이 사용됩니다.", "ProblemPatternSchema.line": "문제 줄의 일치 그룹 인덱스입니다. 기본값은 2입니다.", diff --git a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index a74e5096357..82af7f681be 100644 --- a/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -28,6 +28,8 @@ "selectProblemMatcher": "작업 출력에서 스캔할 오류 및 경고 유형을 선택", "customizeParseErrors": "현재 작성 구성에 오류가 있습니다. 작업을 사용자 지정하기 전에 오류를 수정하세요.\n", "moreThanOneBuildTask": "tasks.json에 여러 빌드 작업이 정의되어 있습니다. 첫 번째 작업을 실행합니다.\n", + "TaskSystem.activeSame.background": "'{0}' 작업이 이미 활성 상태로 백그라운드 모드에 있습니다. 종료하려면 [작업] 메뉴에서 '작업 종료...'를 사용하세요.", + "TaskSystem.activeSame.noBackground": "'{0}' 작업이 이미 활성 상태입니다. 종료하려면 [작업] 메뉴에서 '작업 종료...'를 사용하세요.", "TaskSystem.active": "이미 실행 중인 작업이 있습니다. 다른 작업을 실행하려면 먼저 이 작업을 종료하세요.", "TaskSystem.restartFailed": "{0} 작업을 종료하고 다시 시작하지 못했습니다.", "TaskService.noConfiguration": "오류: {0} 작업 검색에서는 다음 구성에 대한 작업을 제공하지 않습니다:\n{1}\n이 작업이 무시됩니다.\n", diff --git a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json index 74e005dc72c..7c4f7d11b2c 100644 --- a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json @@ -20,10 +20,13 @@ "terminal.integrated.fontFamily": "터미널의 글꼴 패밀리를 제어하며, 기본값은 editor.fontFamily의 값입니다.", "terminal.integrated.fontSize": "터미널의 글꼴 크기(픽셀)를 제어합니다.", "terminal.integrated.lineHeight": "터미널의 줄 높이를 제어합니다. 이 숫자에 터미널 글꼴 크기를 곱해 실제 줄 높이(픽셀)를 얻습니다.", + "terminal.integrated.fontWeight": "터미널 내에서 굵은 글꼴이 아닌 텍스트에 사용할 글꼴 두께입니다.", + "terminal.integrated.fontWeightBold": "터미널 내에서 굵은 글꼴 텍스트에 사용할 글꼴 두께입니다.", "terminal.integrated.cursorBlinking": "터미널 커서 깜박임 여부를 제어합니다.", "terminal.integrated.cursorStyle": "터미널 커서의 스타일을 제어합니다.", "terminal.integrated.scrollback": "터미널에서 버퍼에 유지하는 최대 줄 수를 제어합니다.", "terminal.integrated.setLocaleVariables": "로캘 변수가 터미널 시작 시 설정되는지 여부를 제어하며, 기본값은 OS X에서 true이고 기타 플랫폼에서 false입니다.", + "terminal.integrated.rightClickBehavior": "터미널이 마우스 오른쪽 단추 클릭에 대응하는 방식을 제어합니다. 가능한 값은 'default', 'copyPaste' 및 'selectWord'입니다. 'default'는 상황에 맞는 메뉴를 표시하고, 'copyPaste'는 선택 항목이 있으면 복사하고 없으면 붙여 넣으며, 'selectWord'는 커서 아래의 단어를 선택하고 상황에 맞는 메뉴를 표시합니다.", "terminal.integrated.cwd": "터미널이 시작될 명시적 시작 경로입니다. 셸 프로세스의 현재 작업 디렉터리(cwd)로 사용됩니다. 루트 디렉터리가 편리한 cwd가 아닌 경우 작업 영역 설정에서 특히 유용하게 사용할 수 있습니다.", "terminal.integrated.confirmOnExit": "끝낼 때 활성 터미널 세션이 있는지 확인할지 여부입니다.", "terminal.integrated.enableBell": "터미널 벨의 사용 여부입니다.", @@ -32,6 +35,7 @@ "terminal.integrated.env.linux": "Linux의 터미널에서 사용할 VS Code 프로세스에 추가되는 환경 변수를 포함한 개체", "terminal.integrated.env.windows": "Windows의 터미널에서 사용할 VS Code 프로세스에 추가되는 환경 변수를 포함한 개체", "terminal.integrated.showExitAlert": "종료 코드가 0이 아닌 경우 `터미널 프로세스가 종료 코드로 종료되었습니다` 경고를 표시합니다.", + "terminal.integrated.experimentalRestore": "VS Code를 시작할 때 작업 영역에 대한 터미널 세션을 자동으로 복원할지 여부를 지정합니다. 이 설정은 실험적 설정이므로 버그가 있을 수 있고 향후 변경될 수 있습니다.", "terminalCategory": "터미널", "viewCategory": "보기" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 7930de08d80..ba974a50480 100644 --- a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -14,10 +14,19 @@ "workbench.action.terminal.selectAll": "모두 선택", "workbench.action.terminal.deleteWordLeft": "왼쪽 단어 삭제", "workbench.action.terminal.deleteWordRight": "오른쪽 단어 삭제", + "workbench.action.terminal.moveToLineStart": "줄 시작으로 이동", + "workbench.action.terminal.moveToLineEnd": "줄 끝으로 이동", "workbench.action.terminal.new": "새 통합 터미널 만들기", "workbench.action.terminal.new.short": "새 터미널", "workbench.action.terminal.newWorkspacePlaceholder": "새 터미널의 현재 작업 디렉토리를 선택합니다.", "workbench.action.terminal.newInActiveWorkspace": "새 통합 터미널 만들기(활성 작업 영역에)", + "workbench.action.terminal.split": "터미널 분할", + "workbench.action.terminal.focusPreviousPane": "이전 창에 포커스", + "workbench.action.terminal.focusNextPane": "다음 창에 포커스", + "workbench.action.terminal.resizePaneLeft": "창 왼쪽 크기 조정", + "workbench.action.terminal.resizePaneRight": "창 오른쪽 크기 조정", + "workbench.action.terminal.resizePaneUp": "창 위쪽 크기 조정", + "workbench.action.terminal.resizePaneDown": "창 아래쪽 크기 조정", "workbench.action.terminal.focus": "터미널에 포커스", "workbench.action.terminal.focusNext": "다음 터미널에 포커스", "workbench.action.terminal.focusPrevious": "이전 터미널에 포커스", @@ -26,6 +35,7 @@ "workbench.action.terminal.runSelectedText": "활성 터미널에서 선택한 텍스트 실행", "workbench.action.terminal.runActiveFile": "활성 터미널에서 활성 파일 실행", "workbench.action.terminal.runActiveFile.noFile": "디스크의 파일만 터미널에서 실행할 수 있습니다.", + "workbench.action.terminal.switchTerminal": "터미널 전환", "workbench.action.terminal.scrollDown": "아래로 스크롤(줄)", "workbench.action.terminal.scrollDownPage": "아래로 스크롤(페이지)", "workbench.action.terminal.scrollToBottom": "맨 아래로 스크롤", diff --git a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index de6a8420211..d9e00ba0782 100644 --- a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,5 +11,6 @@ "terminalCursor.foreground": "터미널 커서의 전경색입니다.", "terminalCursor.background": "터미널 커서의 배경색입니다. 블록 커서와 겹친 문자의 색상을 사용자 정의할 수 있습니다.", "terminal.selectionBackground": "터미널의 선택 영역 배경색입니다.", + "terminal.border": "터미널 내의 분할 창을 구분하는 테두리의 색입니다. 기본값은 panel.border입니다.", "terminal.ansiColor": "터미널의 '{0}' ANSI 색상" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json index 44aabb20800..6092a2094ac 100644 --- a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json @@ -8,7 +8,9 @@ ], "terminal.integrated.a11yBlankLine": "빈 줄", "terminal.integrated.a11yPromptLabel": "터미널 입력", + "terminal.integrated.a11yTooMuchOutput": "발표할 출력이 너무 많음, 읽을 행으로 수동 이동", "terminal.integrated.copySelection.noSelection": "터미널에 복사할 선택 항목이 없음", "terminal.integrated.exitedWithCode": "터미널 프로세스가 종료 코드 {0}(으)로 종료되었습니다.", - "terminal.integrated.waitOnExit": "터미널을 닫으려면 아무 키나 누르세요." + "terminal.integrated.waitOnExit": "터미널을 닫으려면 아무 키나 누르세요.", + "terminal.integrated.launchFailed": "터미널 프로세스 명령 '{0}{1}'을(를) 실행하지 못했습니다(종료 코드: {2})." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index 5bdea659a8c..b95ca94304a 100644 --- a/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -9,5 +9,6 @@ "copy": "복사", "paste": "붙여넣기", "selectAll": "모두 선택", - "clear": "지우기" + "clear": "지우기", + "split": "분할" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index 1bd691fdf83..1dfa3710832 100644 --- a/i18n/kor/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "openWorkspaceSettings": "작업 영역 설정 열기", - "dontShowAgain": "다시 표시 안 함" + "dontShowAgain": "다시 표시 안 함", + "unsupportedWorkspaceSettings": "이 작업 영역에는 사용자 설정({0})에서만 지정할 수 있는 설정이 포함되어 있습니다. 자세히 알아보려면 [여기]({1})를 클릭하세요." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 021c1a7ff01..b925a01c2ad 100644 --- a/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -11,8 +11,12 @@ "releaseNotes": "릴리스 정보", "showReleaseNotes": "릴리스 정보 표시", "read the release notes": "{0} v{1}을(를) 시작합니다. 릴리스 정보를 확인하시겠습니까?", + "licenseChanged": "사용 조건이 변경되었습니다. [여기]({0})를 클릭하여 자세히 읽어보세요.", "neveragain": "다시 표시 안 함", + "64bitisavailable": "64비트 Windows용 {0}을(를) 사용할 수 있습니다. 자세히 알아보려면 [여기]({1})를 클릭하세요.", "updateIsReady": "새 {0} 업데이트를 사용할 수 있습니다.", + "noUpdatesAvailable": "현재 사용할 수 있는 업데이트가 없습니다.", + "ok": "확인", "download now": "지금 다운로드", "thereIsUpdateAvailable": "사용 가능한 업데이트가 있습니다.", "installUpdate": "업데이트 설치", diff --git a/i18n/kor/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json b/i18n/kor/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json index 8a7a105b914..c92b8c11e09 100644 --- a/i18n/kor/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json +++ b/i18n/kor/src/vs/workbench/services/actions/electron-browser/menusExtensionPoint.i18n.json @@ -22,6 +22,7 @@ "menus.editorTabContext": "편집기 탭 상황에 맞는 메뉴", "menus.debugCallstackContext": "디버그 호출 스택 상황에 맞는 메뉴", "menus.scmTitle": "소스 제어 제목 메뉴", + "menus.scmSourceControl": "소스 제어 메뉴", "menus.resourceGroupContext": "소스 제어 리소스 그룹 상황에 맞는 메뉴", "menus.resourceStateContext": "소스 제어 리소스 상태 상황에 맞는 메뉴", "view.viewTitle": "기여 조회 제목 메뉴", diff --git a/i18n/kor/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/kor/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index bed0586f43a..5a63e5bb433 100644 --- a/i18n/kor/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -16,6 +16,16 @@ "errorInvalidWorkspaceTarget": "{0}이(가) 여러 폴더 작업 영역에서 작업 영역 범위를 지원하지 않으므로 작업 영역 설정에 쓸 수 없습니다.", "errorInvalidFolderTarget": "리소스가 제공되지 않으므로 폴더 설정에 쓸 수 없습니다.", "errorNoWorkspaceOpened": "작업 영역이 열려 있지 않으므로 {0}에 쓸 수 없습니다. 먼저 작업 영역을 열고 다시 시도하세요.", + "errorInvalidTaskConfiguration": "작업 구성 파일에 쓸 수 없습니다. 파일을 열고 오류/경고를 수정한 다음 다시 시도하세요.", + "errorInvalidLaunchConfiguration": "시작 구성 파일에 쓸 수 없습니다. 파일을 열고 오류/경고를 수정한 다음 다시 시도하세요.", + "errorInvalidConfiguration": "사용자 설정에 쓸 수 없습니다. 사용자 설정을 열어 오류/경고를 수정하고 다시 시도하세요.", + "errorInvalidConfigurationWorkspace": "작업 영역 설정에 쓸 수 없습니다. 작업 영역 설정을 열어 오류/경고를 수정하고 다시 시도하세요.", + "errorInvalidConfigurationFolder": "폴더 설정에 쓸 수 없습니다. '{0}' 폴더 설정을 열어 오류/경고를 수정하고 다시 시도하세요.", + "errorTasksConfigurationFileDirty": "작업 구성 파일이 변경되어 이 파일에 쓸 수 없습니다. 먼저 파일을 저장하고 다시 시도하세요.", + "errorLaunchConfigurationFileDirty": "시작 구성 파일이 변경되어 이 파일에 쓸 수 없습니다. 먼저 파일을 저장하고 다시 시도하세요.", + "errorConfigurationFileDirty": "사용자 설정 파일이 변경되어 사용자 설정에 쓸 수 없습니다. 먼저 사용자 설정 파일을 저장하고 다시 시도하세요.", + "errorConfigurationFileDirtyWorkspace": "작업 영역 설정 파일이 변경되어 작업 영역 설정에 쓸 수 없습니다. 먼저 작업 영역 설정 파일을 저장하고 다시 시도하세요.", + "errorConfigurationFileDirtyFolder": "폴더 설정 파일이 변경되어 폴더 설정에 쓸 수 없습니다. 먼저 '{0}' 폴더 설정 파일을 저장하고 다시 시도하세요.", "userTarget": "사용자 설정", "workspaceTarget": "작업 영역 설정", "folderTarget": "폴더 설정" diff --git a/i18n/kor/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/kor/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index e0c7d88cbca..9ed508e5330 100644 --- a/i18n/kor/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/kor/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "배지 설명입니다.", "vscode.extension.extensionDependencies": "다른 확장에 대한 종속성입니다. 확장 식별자는 항상 ${publisher}.${name}입니다(예: vscode.csharp).", "vscode.extension.scripts.prepublish": "패키지가 VS Code 확장 형태로 게시되기 전에 스크립트가 실행되었습니다.", + "vscode.extension.scripts.uninstall": "VS Code 확장에 대한 후크를 제거합니다. 확장이 VS Code에서 완전히 제거될 때 즉, 확장이 제거된 후 VS Code가 다시 시작할 때(종료하고 시작) 실행되는 스크립트입니다. 노드 스크립트만 지원됩니다.", "vscode.extension.icon": "128x128 픽셀 아이콘의 경로입니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 891cf710c6e..0622ba5a8bb 100644 --- a/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -9,5 +9,8 @@ "installNet": ".NET Framework 4.5 다운로드", "neverShowAgain": "다시 표시 안 함", "netVersionError": "Microsoft .NET Framework 4.5가 필요합니다. 설치하려면 링크를 클릭하세요.", + "learnMore": "지침", + "enospcError": "{0}에 파일 핸들이 부족합니다. 지침 링크를 클릭하여 문제를 해결하세요.", + "binFailed": "'{0}'을(를) 휴지통으로 이동하지 못함", "trashFailed": "'{0}'을(를) 휴지통으로 이동하지 못함" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/kor/src/vs/workbench/services/files/node/fileService.i18n.json index d411f384a72..92d933fa231 100644 --- a/i18n/kor/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,6 +9,7 @@ "fileInvalidPath": "잘못된 파일 리소스({0})", "fileIsDirectoryError": "파일이 디렉터리입니다.", "fileNotModifiedError": "파일 수정 안 됨", + "fileTooLargeForHeapError": "파일 크기가 창 메모리 제한을 초과합니다. --max-memory=NEWSIZE 코드를 실행해 보세요.", "fileTooLargeError": "파일이 너무 커서 열 수 없음", "fileNotFoundError": "파일을 찾을 수 없습니다({0}).", "fileBinaryError": "파일이 이진인 것 같으므로 테스트로 열 수 없습니다.", diff --git a/i18n/kor/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json b/i18n/kor/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json index a4c0cc69d7f..3be329cea3b 100644 --- a/i18n/kor/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json +++ b/i18n/kor/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json @@ -6,5 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "errorKeybindingsFileDirty": "키 바인딩 구성 파일이 변경되었으므로 쓸 수 없습니다. 먼저 파일을 저장하고 다시 시도하세요.", + "parseErrors": "키 바인딩 구성 파일에 쓸 수 없습니다. 파일을 열고 오류/경고를 수정한 다음 다시 시도하세요.", + "errorInvalidConfiguration": "키 바인딩 구성 파일에 쓸 수 없습니다. 이 파일에 배열 형식이 아닌 개체가 있습니다. 파일을 열어 정리하고 다시 시도하세요.", "emptyKeybindingsHeader": "키 바인딩을 이 파일에 넣어서 기본값을 덮어씁니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json b/i18n/kor/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json index f26087bbe2e..46df36fa33f 100644 --- a/i18n/kor/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json +++ b/i18n/kor/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json @@ -9,6 +9,9 @@ "schema.token.settings": "토큰의 색 및 스타일입니다.", "schema.token.foreground": "토큰의 전경색입니다.", "schema.token.background.warning": "현재 토큰 배경색이 지원되지 않습니다.", + "schema.token.fontStyle": "규칙의 글꼴 스타일로 '기울임꼴, '굵게' 및 '밑줄' 중 하나이거나 이들의 조합입니다. 빈 문자열을 지정하면 상속된 설정이 해제됩니다.", + "schema.fontStyle.error": "글꼴 스타일은 '기울임꼴, '굵게' , '밑줄' 또는 이들의 조합이나 빈 문자열이어야 합니다.", + "schema.token.fontStyle.none": "없음(상속된 스타일 지우기)", "schema.properties.name": "규칙에 대한 설명입니다.", "schema.properties.scope": "이 규칙과 일치하는 범위 선택기입니다.", "schema.tokenColors.path": "tmTheme 파일의 경로(현재 파일의 상대 경로)입니다.", diff --git a/i18n/kor/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json b/i18n/kor/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json index afbd04e0f08..61519fa8e49 100644 --- a/i18n/kor/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json +++ b/i18n/kor/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "errorInvalidTaskConfiguration": "작업 영역 구성 파일에 쓸 수 없습니다. 파일을 열고 오류/경고를 수정한 다음 다시 시도하세요.", - "errorWorkspaceConfigurationFileDirty": "파일이 변경되어 작업 영역 구성 파일에 쓸 수 없습니다. 저장하고 다시 시도하세요." + "errorWorkspaceConfigurationFileDirty": "파일이 변경되어 작업 영역 구성 파일에 쓸 수 없습니다. 저장하고 다시 시도하세요.", + "openWorkspaceConfigurationFile": "작업 영역 구성 열기" } \ No newline at end of file diff --git a/i18n/ptb/extensions/bat/package.i18n.json b/i18n/ptb/extensions/bat/package.i18n.json index 35229bd6699..fb3b72aaee0 100644 --- a/i18n/ptb/extensions/bat/package.i18n.json +++ b/i18n/ptb/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Bat do Windows", + "description": "Fornece trechos de código, realce de sintaxe, correspondência de suporte e dobramento em arquivos de lote Windows." } \ No newline at end of file diff --git a/i18n/ptb/extensions/clojure/package.i18n.json b/i18n/ptb/extensions/clojure/package.i18n.json index 35229bd6699..978c999faf1 100644 --- a/i18n/ptb/extensions/clojure/package.i18n.json +++ b/i18n/ptb/extensions/clojure/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Clojure" } \ No newline at end of file diff --git a/i18n/ptb/extensions/coffeescript/package.i18n.json b/i18n/ptb/extensions/coffeescript/package.i18n.json index 35229bd6699..03d413fad32 100644 --- a/i18n/ptb/extensions/coffeescript/package.i18n.json +++ b/i18n/ptb/extensions/coffeescript/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem CoffeeScript" } \ No newline at end of file diff --git a/i18n/ptb/extensions/configuration-editing/package.i18n.json b/i18n/ptb/extensions/configuration-editing/package.i18n.json index 15eb6e1d88d..ff707c572bc 100644 --- a/i18n/ptb/extensions/configuration-editing/package.i18n.json +++ b/i18n/ptb/extensions/configuration-editing/package.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Edição de Configuração", - "description": "Fornece capacidades (intelli-sense avançado, auto-ajuste) em arquivos de configuração como configurações, recomendação de extensão de arquivos e execução." + "displayName": "Edição de Configuração" } \ No newline at end of file diff --git a/i18n/ptb/extensions/cpp/package.i18n.json b/i18n/ptb/extensions/cpp/package.i18n.json index 35229bd6699..0ef1e68fec5 100644 --- a/i18n/ptb/extensions/cpp/package.i18n.json +++ b/i18n/ptb/extensions/cpp/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem C/C++" } \ No newline at end of file diff --git a/i18n/ptb/extensions/csharp/package.i18n.json b/i18n/ptb/extensions/csharp/package.i18n.json index 35229bd6699..17b719d771d 100644 --- a/i18n/ptb/extensions/csharp/package.i18n.json +++ b/i18n/ptb/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem C#", + "description": "Fornece trechos de código, realce de sintaxe, correspondência de suporte e dobramento em arquivos C#." } \ No newline at end of file diff --git a/i18n/ptb/extensions/docker/package.i18n.json b/i18n/ptb/extensions/docker/package.i18n.json index 35229bd6699..7af2f8fd8f0 100644 --- a/i18n/ptb/extensions/docker/package.i18n.json +++ b/i18n/ptb/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Docker", + "description": "Fornece realce de sintaxe e correspondência de suporte em arquivos Docker." } \ No newline at end of file diff --git a/i18n/ptb/extensions/emmet/package.i18n.json b/i18n/ptb/extensions/emmet/package.i18n.json index e06749a6e07..f66c3b617c3 100644 --- a/i18n/ptb/extensions/emmet/package.i18n.json +++ b/i18n/ptb/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Suporte ao Emmet para VS Code", "command.wrapWithAbbreviation": "Envelope com a abreviatura", "command.wrapIndividualLinesWithAbbreviation": "Envelopar Linhas Individuais com Abreviatura", "command.removeTag": "Remover Tag", diff --git a/i18n/ptb/extensions/extension-editing/package.i18n.json b/i18n/ptb/extensions/extension-editing/package.i18n.json index 04a44f08244..f7701436c08 100644 --- a/i18n/ptb/extensions/extension-editing/package.i18n.json +++ b/i18n/ptb/extensions/extension-editing/package.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Edição de Arquivo de Pacote", - "description": "Fornece Intellisense para pontos de extensão do VS Code e localização de erros em pacotes de arquivos Json" + "displayName": "Edição de Arquivo de Pacote" } \ No newline at end of file diff --git a/i18n/ptb/extensions/fsharp/package.i18n.json b/i18n/ptb/extensions/fsharp/package.i18n.json index 35229bd6699..a6752d374cf 100644 --- a/i18n/ptb/extensions/fsharp/package.i18n.json +++ b/i18n/ptb/extensions/fsharp/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem F#" } \ No newline at end of file diff --git a/i18n/ptb/extensions/go/package.i18n.json b/i18n/ptb/extensions/go/package.i18n.json index 35229bd6699..3425e376a6d 100644 --- a/i18n/ptb/extensions/go/package.i18n.json +++ b/i18n/ptb/extensions/go/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Go" } \ No newline at end of file diff --git a/i18n/ptb/extensions/groovy/package.i18n.json b/i18n/ptb/extensions/groovy/package.i18n.json index 35229bd6699..875bfb0802e 100644 --- a/i18n/ptb/extensions/groovy/package.i18n.json +++ b/i18n/ptb/extensions/groovy/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Groovy" } \ No newline at end of file diff --git a/i18n/ptb/extensions/handlebars/package.i18n.json b/i18n/ptb/extensions/handlebars/package.i18n.json index 35229bd6699..7fa3a76c709 100644 --- a/i18n/ptb/extensions/handlebars/package.i18n.json +++ b/i18n/ptb/extensions/handlebars/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Handlebars" } \ No newline at end of file diff --git a/i18n/ptb/extensions/hlsl/package.i18n.json b/i18n/ptb/extensions/hlsl/package.i18n.json index 35229bd6699..4e272ff2dd7 100644 --- a/i18n/ptb/extensions/hlsl/package.i18n.json +++ b/i18n/ptb/extensions/hlsl/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem HLSL" } \ No newline at end of file diff --git a/i18n/ptb/extensions/ini/package.i18n.json b/i18n/ptb/extensions/ini/package.i18n.json index 35229bd6699..d3c9a58f2d7 100644 --- a/i18n/ptb/extensions/ini/package.i18n.json +++ b/i18n/ptb/extensions/ini/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Ini" } \ No newline at end of file diff --git a/i18n/ptb/extensions/java/package.i18n.json b/i18n/ptb/extensions/java/package.i18n.json index 35229bd6699..446ed1b1df3 100644 --- a/i18n/ptb/extensions/java/package.i18n.json +++ b/i18n/ptb/extensions/java/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Java" } \ No newline at end of file diff --git a/i18n/ptb/extensions/javascript/package.i18n.json b/i18n/ptb/extensions/javascript/package.i18n.json index 35229bd6699..455ec8a3376 100644 --- a/i18n/ptb/extensions/javascript/package.i18n.json +++ b/i18n/ptb/extensions/javascript/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem JavaScript" } \ No newline at end of file diff --git a/i18n/ptb/extensions/less/package.i18n.json b/i18n/ptb/extensions/less/package.i18n.json index 35229bd6699..498dbc3c941 100644 --- a/i18n/ptb/extensions/less/package.i18n.json +++ b/i18n/ptb/extensions/less/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Less" } \ No newline at end of file diff --git a/i18n/ptb/extensions/log/package.i18n.json b/i18n/ptb/extensions/log/package.i18n.json index 664cda9a0e0..257db2e6372 100644 --- a/i18n/ptb/extensions/log/package.i18n.json +++ b/i18n/ptb/extensions/log/package.i18n.json @@ -6,6 +6,5 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Log", - "description": "Fornece realce de sintaxe para arquivos com a extensão .log" + "displayName": "Log" } \ No newline at end of file diff --git a/i18n/ptb/extensions/lua/package.i18n.json b/i18n/ptb/extensions/lua/package.i18n.json index 35229bd6699..c1a61a7ed26 100644 --- a/i18n/ptb/extensions/lua/package.i18n.json +++ b/i18n/ptb/extensions/lua/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Lua" } \ No newline at end of file diff --git a/i18n/ptb/extensions/make/package.i18n.json b/i18n/ptb/extensions/make/package.i18n.json index 35229bd6699..9302615da23 100644 --- a/i18n/ptb/extensions/make/package.i18n.json +++ b/i18n/ptb/extensions/make/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Make" } \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown-basics/package.i18n.json b/i18n/ptb/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..35229bd6699 --- /dev/null +++ b/i18n/ptb/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,9 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ] +} \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown/out/features/preview.i18n.json b/i18n/ptb/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..c84ba98d829 --- /dev/null +++ b/i18n/ptb/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Pré-visualização] {0}", + "previewTitle": "Pré-visualização {0}" +} \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/ptb/extensions/markdown/out/features/previewContentProvider.i18n.json index 8c053f2406e..604c6ffae93 100644 --- a/i18n/ptb/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/ptb/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,6 +8,5 @@ ], "preview.securityMessage.text": "Algum conteúdo foi desativado neste documento", "preview.securityMessage.title": "Conteúdo potencialmente inseguro foi desativado na visualização de remarcação. Altere a configuração de segurança de visualização do Markdown para permitir conteúdo inseguro ou habilitar scripts", - "preview.securityMessage.label": "Conteúdo do Aviso de Segurança Desativado", - "previewTitle": "Pré-visualização {0}" + "preview.securityMessage.label": "Conteúdo do Aviso de Segurança Desativado" } \ No newline at end of file diff --git a/i18n/ptb/extensions/markdown/package.i18n.json b/i18n/ptb/extensions/markdown/package.i18n.json index 5d4a82e85e0..2d381cc3188 100644 --- a/i18n/ptb/extensions/markdown/package.i18n.json +++ b/i18n/ptb/extensions/markdown/package.i18n.json @@ -15,12 +15,13 @@ "markdown.preview.fontSize.desc": "Controla o tamanho da fonte em pixels usado na pré-visualização de markdown.", "markdown.preview.lineHeight.desc": "Controla a altura de linha usada na pré-visualização de markdown. Este número é relativo ao tamanho de fonte.", "markdown.preview.markEditorSelection.desc": "Marca a seleção atual do editor na pré-visualização de markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Quando uma pré-visualização de markdown é rolada, atualiza a exibição do editor.", + "markdown.preview.scrollPreviewWithEditor.desc": "Quando um editor de markdown é rolado, atualiza a exibição da pré-visualização.", "markdown.preview.title": "Abrir a visualização", "markdown.previewFrontMatter.dec": "Configura como o frontispicio YAML frente questão devem ser processado na pré-visualização de markdown. 'hide' remove o frontispicio. Caso contrário, o frontispicio é tratado como conteúdo de markdown.", "markdown.previewSide.title": "Abre pré-visualização ao lado", "markdown.showSource.title": "Exibir Código-Fonte", "markdown.styles.dec": "Uma lista de URLs ou caminhos locais para folhas de estilo CSS para usar na pré-visualização do markdown. Caminhos relativos são interpretados em relação à pasta aberta no explorer. Se não houver nenhuma pasta aberta, eles são interpretados em relação ao local do arquivo markdown. Todos os ' \\' precisam ser escritos como ' \\ \\ '.", "markdown.showPreviewSecuritySelector.title": "Alterar as configurações de segurança de visualização", - "markdown.trace.desc": "Habilitar log de depuração para a extensão do markdown.", - "markdown.refreshPreview.title": "Atualizar a visualização" + "markdown.trace.desc": "Habilitar log de depuração para a extensão do markdown." } \ No newline at end of file diff --git a/i18n/ptb/extensions/merge-conflict/package.i18n.json b/i18n/ptb/extensions/merge-conflict/package.i18n.json index 71f0888573b..1aa2e946156 100644 --- a/i18n/ptb/extensions/merge-conflict/package.i18n.json +++ b/i18n/ptb/extensions/merge-conflict/package.i18n.json @@ -7,7 +7,6 @@ "Do not edit this file. It is machine generated." ], "displayName": "Mesclar conflitos", - "description": "Coloração e comandos para conflitos de mesclagem em linha.", "command.category": "Conflito de Mesclagem", "command.accept.all-current": "Aceitar Todos os Atuais", "command.accept.all-incoming": "Aceitar todas entradas", diff --git a/i18n/ptb/extensions/npm/package.i18n.json b/i18n/ptb/extensions/npm/package.i18n.json index d0a37a0a04e..7eb2870be29 100644 --- a/i18n/ptb/extensions/npm/package.i18n.json +++ b/i18n/ptb/extensions/npm/package.i18n.json @@ -11,5 +11,8 @@ "config.npm.autoDetect": "Controla se a deteção automática de scripts npm está ligado ou desligado. O padrão é ligado.", "config.npm.runSilent": "Executar comandos npm com a opção '--silent'.", "config.npm.packageManager": "O Gerenciador de pacotes usado para executar scripts.", - "npm.parseError": "Deteção de tarefa NPM: falha ao analisar o arquivo {0}" + "config.npm.exclude": "Configure padrões glob para pastas que devem ser excluídos da detecção automática de script.", + "npm.parseError": "Deteção de tarefa NPM: falha ao analisar o arquivo {0}", + "taskdef.script": "O script npm para personalizar.", + "taskdef.path": "O caminho para a pasta do arquivo package.json que fornece o script. Pode ser omitido." } \ No newline at end of file diff --git a/i18n/ptb/extensions/objective-c/package.i18n.json b/i18n/ptb/extensions/objective-c/package.i18n.json index 35229bd6699..6c21271685a 100644 --- a/i18n/ptb/extensions/objective-c/package.i18n.json +++ b/i18n/ptb/extensions/objective-c/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Objective-C" } \ No newline at end of file diff --git a/i18n/ptb/extensions/perl/package.i18n.json b/i18n/ptb/extensions/perl/package.i18n.json index 35229bd6699..c45067607b6 100644 --- a/i18n/ptb/extensions/perl/package.i18n.json +++ b/i18n/ptb/extensions/perl/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Perl" } \ No newline at end of file diff --git a/i18n/ptb/extensions/php/package.i18n.json b/i18n/ptb/extensions/php/package.i18n.json index a88cd375f35..171cc8de307 100644 --- a/i18n/ptb/extensions/php/package.i18n.json +++ b/i18n/ptb/extensions/php/package.i18n.json @@ -12,5 +12,6 @@ "configuration.validate.run": "Se o linter é executado ao salvar ou ao digitar.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Desabilita a validação de executável do PHP (definida como configuração do espaço de trabalho)" + "command.untrustValidationExecutable": "Desabilita a validação de executável do PHP (definida como configuração do espaço de trabalho)", + "displayName": "Recursos da linguagem PHP" } \ No newline at end of file diff --git a/i18n/ptb/extensions/powershell/package.i18n.json b/i18n/ptb/extensions/powershell/package.i18n.json index 35229bd6699..8d1fc47c67e 100644 --- a/i18n/ptb/extensions/powershell/package.i18n.json +++ b/i18n/ptb/extensions/powershell/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Powershell" } \ No newline at end of file diff --git a/i18n/ptb/extensions/pug/package.i18n.json b/i18n/ptb/extensions/pug/package.i18n.json index 35229bd6699..9898328e3cb 100644 --- a/i18n/ptb/extensions/pug/package.i18n.json +++ b/i18n/ptb/extensions/pug/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Pug" } \ No newline at end of file diff --git a/i18n/ptb/extensions/python/package.i18n.json b/i18n/ptb/extensions/python/package.i18n.json index 35229bd6699..6f1ce258965 100644 --- a/i18n/ptb/extensions/python/package.i18n.json +++ b/i18n/ptb/extensions/python/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Python" } \ No newline at end of file diff --git a/i18n/ptb/extensions/r/package.i18n.json b/i18n/ptb/extensions/r/package.i18n.json index 35229bd6699..b8dd971968a 100644 --- a/i18n/ptb/extensions/r/package.i18n.json +++ b/i18n/ptb/extensions/r/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem R" } \ No newline at end of file diff --git a/i18n/ptb/extensions/razor/package.i18n.json b/i18n/ptb/extensions/razor/package.i18n.json index 35229bd6699..e852ddd68a9 100644 --- a/i18n/ptb/extensions/razor/package.i18n.json +++ b/i18n/ptb/extensions/razor/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Razor" } \ No newline at end of file diff --git a/i18n/ptb/extensions/ruby/package.i18n.json b/i18n/ptb/extensions/ruby/package.i18n.json index 35229bd6699..96c639a55b4 100644 --- a/i18n/ptb/extensions/ruby/package.i18n.json +++ b/i18n/ptb/extensions/ruby/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Ruby" } \ No newline at end of file diff --git a/i18n/ptb/extensions/rust/package.i18n.json b/i18n/ptb/extensions/rust/package.i18n.json index 35229bd6699..423ab816de0 100644 --- a/i18n/ptb/extensions/rust/package.i18n.json +++ b/i18n/ptb/extensions/rust/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Rust" } \ No newline at end of file diff --git a/i18n/ptb/extensions/scss/package.i18n.json b/i18n/ptb/extensions/scss/package.i18n.json index 35229bd6699..2007a85cbe3 100644 --- a/i18n/ptb/extensions/scss/package.i18n.json +++ b/i18n/ptb/extensions/scss/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem SCSS" } \ No newline at end of file diff --git a/i18n/ptb/extensions/shaderlab/package.i18n.json b/i18n/ptb/extensions/shaderlab/package.i18n.json index 35229bd6699..f7ded2dce77 100644 --- a/i18n/ptb/extensions/shaderlab/package.i18n.json +++ b/i18n/ptb/extensions/shaderlab/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Shaderlab" } \ No newline at end of file diff --git a/i18n/ptb/extensions/shellscript/package.i18n.json b/i18n/ptb/extensions/shellscript/package.i18n.json index 35229bd6699..d8764c3903c 100644 --- a/i18n/ptb/extensions/shellscript/package.i18n.json +++ b/i18n/ptb/extensions/shellscript/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Shell Script" } \ No newline at end of file diff --git a/i18n/ptb/extensions/sql/package.i18n.json b/i18n/ptb/extensions/sql/package.i18n.json index 35229bd6699..bb7822cba12 100644 --- a/i18n/ptb/extensions/sql/package.i18n.json +++ b/i18n/ptb/extensions/sql/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem SQL" } \ No newline at end of file diff --git a/i18n/ptb/extensions/swift/package.i18n.json b/i18n/ptb/extensions/swift/package.i18n.json index 35229bd6699..7ca859e9a6e 100644 --- a/i18n/ptb/extensions/swift/package.i18n.json +++ b/i18n/ptb/extensions/swift/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Swift" } \ No newline at end of file diff --git a/i18n/ptb/extensions/typescript/package.i18n.json b/i18n/ptb/extensions/typescript/package.i18n.json index 49e04fe6d36..e2a4a798904 100644 --- a/i18n/ptb/extensions/typescript/package.i18n.json +++ b/i18n/ptb/extensions/typescript/package.i18n.json @@ -56,5 +56,6 @@ "typescript.locale": "Define a localidade usada para relatar erros TypeScript. Requer TypeScript > = 2.6.0. Padrão 'null' usa a localidade do VS Code para erros TypeScript.", "javascript.implicitProjectConfig.experimentalDecorators": "Ativar/desativar 'experimentalDecorators' para arquivos JavaScript que não fazem parte de um projeto. Os arquivos existentes de jsconfig.json ou tsconfig.json substituem essa configuração. Requer TypeScript >= 2.3.1.", "typescript.autoImportSuggestions.enabled": "Ativar/desativar sugestões de importação automática. Requer TypeScript >= 2.6.1", - "typescript.experimental.syntaxFolding": "Habilita/Desabilita a sintaxe dos marcadores de pastas ativas." + "typescript.experimental.syntaxFolding": "Habilita/Desabilita a sintaxe dos marcadores de pastas ativas.", + "taskDefinition.tsconfig.description": "O arquivo tsconfig que define a compilação de TS." } \ No newline at end of file diff --git a/i18n/ptb/extensions/vb/package.i18n.json b/i18n/ptb/extensions/vb/package.i18n.json index 35229bd6699..4ce55e93689 100644 --- a/i18n/ptb/extensions/vb/package.i18n.json +++ b/i18n/ptb/extensions/vb/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem Visual Basic" } \ No newline at end of file diff --git a/i18n/ptb/extensions/xml/package.i18n.json b/i18n/ptb/extensions/xml/package.i18n.json index 35229bd6699..c021fd6f6b1 100644 --- a/i18n/ptb/extensions/xml/package.i18n.json +++ b/i18n/ptb/extensions/xml/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem XML" } \ No newline at end of file diff --git a/i18n/ptb/extensions/yaml/package.i18n.json b/i18n/ptb/extensions/yaml/package.i18n.json index 35229bd6699..8b586bfe33c 100644 --- a/i18n/ptb/extensions/yaml/package.i18n.json +++ b/i18n/ptb/extensions/yaml/package.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Noções Básicas Sobre a Linguagem YAML" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index f36166f0691..6a08afe545f 100644 --- a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -23,6 +23,6 @@ "featureRequestDescription": "Nós suportamos Markdown no padrão GitHub. Você poderá editar o seu problema e adicionar capturas de tela quando nós o pré-visualizarmos no GitHub. ", "expectedResults": "Resultado Esperado", "settingsSearchResultsDescription": "Nós suportamos Markdown no padrão GitHub. Você poderá editar o seu problema e adicionar capturas de tela quando nós o pré-visualizarmos no GitHub. ", - "urlLengthError": "Os dados excedem o limite de tamanho de {0} caracteres. O tamanho de dados é {1}.", + "pasteData": "Nós escrevemos os dados necessários em sua área de transferência porque era muito grande para ser enviado. Por favor, Cole.", "disabledExtensions": "Extensões estão desabilitadas" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 76c082510db..cfbca1eb679 100644 --- a/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/ptb/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -10,6 +10,7 @@ "issueTypeLabel": "Isso é um", "issueTitleLabel": "Título", "issueTitleRequired": "Por favor, digite um título.", + "titleLengthValidation": "O título é muito longo.", "systemInfo": "Minhas Informações do Sistema", "sendData": "Enviar meus dados", "processes": "Processos Atualmente em Execução", diff --git a/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index c8dc90b9046..3ceced97733 100644 --- a/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/ptb/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "Sobrescrever", "cancel": "Cancelar", "errorInstallingDependencies": "Erro ao instalar dependências. {0}", + "MarketPlaceDisabled": "Loja não está habilitada.", + "removeError": "Erro ao remover a extensão: {0}. por favor, Saia e Inicie o VS Code antes de tentar novamente.", + "Not Market place extension": "Somente Extensões da Loja podem ser reinstaladas", "notFoundCompatible": "Não foi possível instalar '{0}; não existe nenhuma versão compatível com o VSCode '{1}'.", "malicious extension": "Não foi possível instalar a extensão, pois foi relatada como problemática.", "notFoundCompatibleDependency": "Não foi possível instalar porque a extensão dependente '{0}' compatível com a versão atual '{1}' do VS Code não foi encontrada.", diff --git a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index 920264a92db..e6cb3550cab 100644 --- a/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,5 @@ "always": "Sempre mostrar depurar na barra de status", "onFirstSessionStart": "Mostrar depurar na barra de status somente após a depuração ser iniciada pela primeira vez", "showInStatusBar": "Controla quando a barra de status de depuração deve ser visível", - "openDebug": "Controla se o depurador viewlet deve ser aberto no início de sessão de depuração.", "launch": "Configuração global do lançamento do depurador. Deve ser usado como uma alternativa para o arquivo 'launch.json' que é compartilhado entre os espaços de trabalho" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/ptb/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index e3be5723564..ed84158ab3a 100644 --- a/i18n/ptb/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -56,6 +56,13 @@ "malicious": "Malicioso", "disableAll": "Desabilitar Todas as Extensões Instaladas", "disableAllWorkspace": "Desabilitar Todas as Extensões Instaladas para este Espaço de Trabalho", + "openExtensionsFolder": "Abrir a Pasta de Extensões", + "installVSIX": "Instalar do VSIX...", + "installFromVSIX": "Instalar a partir do VSIX", + "installButton": "&&Instalar", + "InstallVSIXAction.success": "A extensão foi instalada com sucesso. Recarregue para ativá-la.", + "InstallVSIXAction.reloadNow": "Recarregar Agora", + "ReinstallAction.reloadNow": "Recarregar Agora", "extensionButtonProminentBackground": "Cor de fundo do botão para a ações de extensão que se destacam (por exemplo, o botão de instalar).", "extensionButtonProminentForeground": "Cor de primeiro plano do botão para a ações de extensão que se destacam (por exemplo, o botão de instalar).", "extensionButtonProminentHoverBackground": "Cor de fundo ao passar o mouse sobre o botão para a ações de extensão que se destacam (por exemplo, o botão de instalar)." diff --git a/i18n/ptb/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/ptb/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index 4e670c479ee..c07b92b70e4 100644 --- a/i18n/ptb/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -7,6 +7,5 @@ "Do not edit this file. It is machine generated." ], "editor.action.webvieweditor.showFind": "Focalizar Ferramenta de Pesquisa", - "openToolsLabel": "Ferramentas Webview", "refreshWebviewLabel": "Recarregar Webviews" } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/ptb/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 1d48771fc7c..485dee67981 100644 --- a/i18n/ptb/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -24,7 +24,5 @@ "useIgnoreFiles": "Controla se utiliza arquivos .gitignore e .ignore por padrão ao fazer pesquisas de arquivos.", "search.quickOpen.includeSymbols": "Configurar para incluir resultados de uma pesquisa símbolo global nos resultados do arquivo para Abertura Rápida.", "search.followSymlinks": "Controla quando seguir symlinks ao realizar uma busca.", - "search.smartCase": "Faz pesquisas do tipo case-insensitive se o termo for totalmente minúsculo, caso contrário, faz pesquisas do tipo case-sensitive.", - "search.globalFindClipboard": "Controla se a ferramenta Pesquisa deve ler ou modificar a área de transferência de localização compartilhada no macOS", - "search.location": "Controla se a busca será visualizada como um viewlet na barra lateral ou como um painel na área de painéis para mais espaço horizontal" + "search.smartCase": "Faz pesquisas do tipo case-insensitive se o termo for totalmente minúsculo, caso contrário, faz pesquisas do tipo case-sensitive." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index 3bee219f319..a9e83e391ee 100644 --- a/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,6 +11,5 @@ "terminalCursor.foreground": "A cor de primeiro plano do cursor do terminal.", "terminalCursor.background": "A cor de fundo do cursor do terminal. Permite personalizar a cor de um personagem sobreposto por um cursor de bloco.", "terminal.selectionBackground": "A cor de fundo de seleção do terminal.", - "terminal.border": "A cor da borda que separa múltiplos terminais. É o padrão para panel.border", "terminal.ansiColor": "'{0}' cor ANSI no terminal." } \ No newline at end of file diff --git a/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json index cced62fcaad..5847a090e0c 100644 --- a/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/ptb/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -16,6 +16,7 @@ "64bitisavailable": "{0} para Windows de 64 bits está agora disponível! Clique [aqui]({0}) para maiores informações.", "updateIsReady": "Nova atualização de {0} disponível.", "noUpdatesAvailable": "Não há nenhuma atualização disponível no momento.", + "ok": "OK", "download now": "Baixar agora", "thereIsUpdateAvailable": "Há uma atualização disponível.", "installUpdate": "Instalar Atualização", diff --git a/i18n/rus/extensions/bat/package.i18n.json b/i18n/rus/extensions/bat/package.i18n.json index 35229bd6699..9ac3009d7cc 100644 --- a/i18n/rus/extensions/bat/package.i18n.json +++ b/i18n/rus/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Windows Bat", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в пакетных файлах Windows." } \ No newline at end of file diff --git a/i18n/rus/extensions/clojure/package.i18n.json b/i18n/rus/extensions/clojure/package.i18n.json index 35229bd6699..ed9a27f5f47 100644 --- a/i18n/rus/extensions/clojure/package.i18n.json +++ b/i18n/rus/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Clojure", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Clojure." } \ No newline at end of file diff --git a/i18n/rus/extensions/coffeescript/package.i18n.json b/i18n/rus/extensions/coffeescript/package.i18n.json index 35229bd6699..0155146163e 100644 --- a/i18n/rus/extensions/coffeescript/package.i18n.json +++ b/i18n/rus/extensions/coffeescript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка CoffeeScript", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах CoffeeScript." } \ No newline at end of file diff --git a/i18n/rus/extensions/configuration-editing/package.i18n.json b/i18n/rus/extensions/configuration-editing/package.i18n.json index 35229bd6699..c2659f57724 100644 --- a/i18n/rus/extensions/configuration-editing/package.i18n.json +++ b/i18n/rus/extensions/configuration-editing/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Изменение конфигурации", + "description": "Предоставляет возможности (такие как IntelliSense и автоматическое исправление) для конфигурационных файлов, таких как файлы параметров, файлы запуска и файлы рекомендаций для расширений." } \ No newline at end of file diff --git a/i18n/rus/extensions/cpp/package.i18n.json b/i18n/rus/extensions/cpp/package.i18n.json index 35229bd6699..65ad3a85384 100644 --- a/i18n/rus/extensions/cpp/package.i18n.json +++ b/i18n/rus/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка C/C++", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах C/C++." } \ No newline at end of file diff --git a/i18n/rus/extensions/csharp/package.i18n.json b/i18n/rus/extensions/csharp/package.i18n.json index 35229bd6699..b245c241737 100644 --- a/i18n/rus/extensions/csharp/package.i18n.json +++ b/i18n/rus/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка C#", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах C#." } \ No newline at end of file diff --git a/i18n/rus/extensions/css/package.i18n.json b/i18n/rus/extensions/css/package.i18n.json index 0f063fefcdd..a4d164c6122 100644 --- a/i18n/rus/extensions/css/package.i18n.json +++ b/i18n/rus/extensions/css/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Возможности языка CSS", + "description": "Предоставляет широкую поддержку языка для файлов CSS, LESS и SCSS.", "css.title": "CSS", "css.lint.argumentsInColorFunction.desc": "Недопустимое число параметров", "css.lint.boxModel.desc": "Не использовать ширину или высоту при использовании поля или границы", diff --git a/i18n/rus/extensions/docker/package.i18n.json b/i18n/rus/extensions/docker/package.i18n.json index 35229bd6699..3d96d44aac7 100644 --- a/i18n/rus/extensions/docker/package.i18n.json +++ b/i18n/rus/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Docker", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Docker." } \ No newline at end of file diff --git a/i18n/rus/extensions/emmet/package.i18n.json b/i18n/rus/extensions/emmet/package.i18n.json index 271852db3ea..b9e88e5f37b 100644 --- a/i18n/rus/extensions/emmet/package.i18n.json +++ b/i18n/rus/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Поддержка Emmet для VS Code", "command.wrapWithAbbreviation": "Перенести с сокращением", "command.wrapIndividualLinesWithAbbreviation": "Перенести отдельные строки с сокращением", "command.removeTag": "Удалить тег", @@ -54,5 +55,9 @@ "emmetPreferencesFilterCommentTrigger": "Разделителями запятыми список имен атрибутов, которые должны присутствовать в сокращении для применения фильтра комментария", "emmetPreferencesFormatNoIndentTags": "Массив имен тегов, для которых не следует использовать внутренние отступы", "emmetPreferencesFormatForceIndentTags": "Массив имен тегов, для которых всегда следует использовать внутренние отступы", - "emmetPreferencesAllowCompactBoolean": "Если этот параметр имеет значение true, формируется компактная запись логических атрибутов" + "emmetPreferencesAllowCompactBoolean": "Если этот параметр имеет значение true, формируется компактная запись логических атрибутов", + "emmetPreferencesCssWebkitProperties": "Разделенный запятыми список свойств CSS, которые получают префикс разработчика \"webkit\" при использовании в сокращениях Emmet, которые начинаются с \"-\". Чтобы префикс \"webkit\" никогда не подставлялся, установите в качестве этого параметра пустое значение.", + "emmetPreferencesCssMozProperties": "Разделенный запятыми список свойств CSS, которые получают префикс разработчика \"moz\" при использовании в сокращениях Emmet, которые начинаются с \"-\". Чтобы префикс \"moz\" никогда не подставлялся, установите в качестве этого параметра пустое значение. ", + "emmetPreferencesCssOProperties": "Разделенный запятыми список свойств CSS, которые получают префикс разработчика \"o\" при использовании в сокращениях Emmet, которые начинаются с \"-\". Чтобы префикс \"o\" никогда не подставлялся, установите в качестве этого параметра пустое значение. ", + "emmetPreferencesCssMsProperties": "Разделенный запятыми список свойств CSS, которые получают префикс разработчика \"ms\" при использовании в сокращениях Emmet, которые начинаются с \"-\". Чтобы префикс \"ms\" никогда не подставлялся, установите в качестве этого параметра пустое значение. " } \ No newline at end of file diff --git a/i18n/rus/extensions/extension-editing/package.i18n.json b/i18n/rus/extensions/extension-editing/package.i18n.json index 35229bd6699..2ba8e0cacfc 100644 --- a/i18n/rus/extensions/extension-editing/package.i18n.json +++ b/i18n/rus/extensions/extension-editing/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Изменение файла пакета", + "description": "Предоставляет IntelliSense для точек расширения VS Code и возможности жанров в файлах package.json." } \ No newline at end of file diff --git a/i18n/rus/extensions/fsharp/package.i18n.json b/i18n/rus/extensions/fsharp/package.i18n.json index 35229bd6699..b862379da28 100644 --- a/i18n/rus/extensions/fsharp/package.i18n.json +++ b/i18n/rus/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка F#", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах F#." } \ No newline at end of file diff --git a/i18n/rus/extensions/git/out/autofetch.i18n.json b/i18n/rus/extensions/git/out/autofetch.i18n.json index 39de1c5cb3f..674a3834cc1 100644 --- a/i18n/rus/extensions/git/out/autofetch.i18n.json +++ b/i18n/rus/extensions/git/out/autofetch.i18n.json @@ -8,5 +8,6 @@ ], "yes": "Да", "no": "Нет", - "not now": "Спросить меня позже" + "not now": "Спросить меня позже", + "suggest auto fetch": "Вы хотите, чтобы среда Code [периодически выполняла команду \"git fetch\"]({0})?" } \ No newline at end of file diff --git a/i18n/rus/extensions/git/out/model.i18n.json b/i18n/rus/extensions/git/out/model.i18n.json index ee6fb29cf37..bfef65f2afd 100644 --- a/i18n/rus/extensions/git/out/model.i18n.json +++ b/i18n/rus/extensions/git/out/model.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "too many submodules": "В репозитории '{0}' есть подмодули ({1}), которые не будут открыты автоматически. Вы можете открыть каждый подмодуль вручную, открыв соответствующий файл.", "no repositories": "Доступные репозитории отсутствуют", "pick repo": "Выберите репозиторий" } \ No newline at end of file diff --git a/i18n/rus/extensions/git/package.i18n.json b/i18n/rus/extensions/git/package.i18n.json index fe86d4a257c..9b69c39a76d 100644 --- a/i18n/rus/extensions/git/package.i18n.json +++ b/i18n/rus/extensions/git/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "GIT", + "description": "Интеграция SCM в Git", "command.clone": "Клонировать", "command.init": "Инициализировать репозиторий", "command.close": "Закрыть репозиторий", @@ -74,6 +75,7 @@ "config.decorations.enabled": "Управляет тем, используются ли цвета и эмблемы Git в проводнике и открытых представлениях редактора.", "config.promptToSaveFilesBeforeCommit": "Определяет, должен ли Git проверять несохраненные файлы перед фиксацией.", "config.showInlineOpenFileAction": "Определяет, должно ли отображаться интерактивное действие \"Открыть файл\" в представлении \"Изменения Git\".", + "config.inputValidation": "Определяет, следует ли проверять введенные данные в сообщении фиксации.", "config.detectSubmodules": "Определяет, следует ли автоматически определять подмодули Git.", "colors.modified": "Цвет измененных ресурсов.", "colors.deleted": "Цвет удаленных ресурсов.", diff --git a/i18n/rus/extensions/go/package.i18n.json b/i18n/rus/extensions/go/package.i18n.json index 35229bd6699..0cc4f6e091c 100644 --- a/i18n/rus/extensions/go/package.i18n.json +++ b/i18n/rus/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Go", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Go." } \ No newline at end of file diff --git a/i18n/rus/extensions/groovy/package.i18n.json b/i18n/rus/extensions/groovy/package.i18n.json index 35229bd6699..44f08597876 100644 --- a/i18n/rus/extensions/groovy/package.i18n.json +++ b/i18n/rus/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Groovy", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса и выделение парных скобок в файлах Groovy." } \ No newline at end of file diff --git a/i18n/rus/extensions/grunt/package.i18n.json b/i18n/rus/extensions/grunt/package.i18n.json index 39de165984c..2504e925152 100644 --- a/i18n/rus/extensions/grunt/package.i18n.json +++ b/i18n/rus/extensions/grunt/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.grunt.autoDetect": "Включает или отключает автоматическое определние заданий Grunt. Значение по умолчанию — \"включено\"." + "description": "Разрешение для добавления возможностей Grunt в VSCode.", + "displayName": "Поддержка Grunt для VSCode", + "config.grunt.autoDetect": "Включает или отключает автоматическое определние заданий Grunt. Значение по умолчанию — \"включено\".", + "grunt.taskDefinition.type.description": "Задача Grunt для изменения. ", + "grunt.taskDefinition.file.description": "Файл Grunt, в котором находится задача. Можно опустить." } \ No newline at end of file diff --git a/i18n/rus/extensions/gulp/package.i18n.json b/i18n/rus/extensions/gulp/package.i18n.json index e68ad17b2aa..7f722b7833a 100644 --- a/i18n/rus/extensions/gulp/package.i18n.json +++ b/i18n/rus/extensions/gulp/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "config.gulp.autoDetect": "Включает или отключает автоматическое определение заданий Gulp. Значение по умолчанию — \"включено\"." + "description": "Разрешение для добавления возможностей Gulp в VSCode.", + "displayName": "Поддержка Gulp для VSCode", + "config.gulp.autoDetect": "Включает или отключает автоматическое определение заданий Gulp. Значение по умолчанию — \"включено\".", + "gulp.taskDefinition.type.description": "Задача Gulp для изменения.", + "gulp.taskDefinition.file.description": "Файл Gulp, в котором находится задача. Можно опустить." } \ No newline at end of file diff --git a/i18n/rus/extensions/handlebars/package.i18n.json b/i18n/rus/extensions/handlebars/package.i18n.json index 35229bd6699..1662c9c5694 100644 --- a/i18n/rus/extensions/handlebars/package.i18n.json +++ b/i18n/rus/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Handlebars", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Handlebars." } \ No newline at end of file diff --git a/i18n/rus/extensions/hlsl/package.i18n.json b/i18n/rus/extensions/hlsl/package.i18n.json index 35229bd6699..ca51def45b1 100644 --- a/i18n/rus/extensions/hlsl/package.i18n.json +++ b/i18n/rus/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка HLSL", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах HLSL." } \ No newline at end of file diff --git a/i18n/rus/extensions/html/package.i18n.json b/i18n/rus/extensions/html/package.i18n.json index db24c759f42..97846bbda84 100644 --- a/i18n/rus/extensions/html/package.i18n.json +++ b/i18n/rus/extensions/html/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Возможности языка HTML", + "description": "Предоставляет широкую поддержку языка для файлов HTML, Razor и Handlebar.", "html.format.enable.desc": "Включить/отключить модуль форматирования HTML по умолчанию", "html.format.wrapLineLength.desc": "Максимальное число символов на строку (0 — отключить).", "html.format.unformatted.desc": "Список тегов, которые не следует повторно форматировать, с разделителями-запятыми. Значение \"NULL\" по умолчанию означает все теги, перечисленные на странице https://www.w3.org/TR/html5/dom.html#phrasing-content.", @@ -27,5 +29,6 @@ "html.trace.server.desc": "Отслеживает обмен данными между VS Code и языковым сервером HTML. ", "html.validate.scripts": "Определяет, будет ли встроенная поддержка языка HTML проверять внедренные сценарии.", "html.validate.styles": "Определяет, будет ли встроенная поддержка языка HTML проверять внедренные стили.", + "html.experimental.syntaxFolding": "Включает/отключает маркеры свертывания с учетом синтаксиса.", "html.autoClosingTags": "Включить или отключить автоматическое закрытие тегов HTML. " } \ No newline at end of file diff --git a/i18n/rus/extensions/ini/package.i18n.json b/i18n/rus/extensions/ini/package.i18n.json index 35229bd6699..c69b4bb1ee6 100644 --- a/i18n/rus/extensions/ini/package.i18n.json +++ b/i18n/rus/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Ini", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Ini." } \ No newline at end of file diff --git a/i18n/rus/extensions/jake/package.i18n.json b/i18n/rus/extensions/jake/package.i18n.json index 2d10ed93014..ab0adebfd19 100644 --- a/i18n/rus/extensions/jake/package.i18n.json +++ b/i18n/rus/extensions/jake/package.i18n.json @@ -6,5 +6,9 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Разрешение для добавления возможностей Jake в VSCode.", + "displayName": "Поддержка Jake для VSCode", + "jake.taskDefinition.type.description": "Задача Jake для изменения.", + "jake.taskDefinition.file.description": "Файл Jake, в котором находится задача. Можно опустить.", "config.jake.autoDetect": "Включает или отключает автоматическое определение заданий Jake. Значение по умолчанию — \"включено\"." } \ No newline at end of file diff --git a/i18n/rus/extensions/java/package.i18n.json b/i18n/rus/extensions/java/package.i18n.json index 35229bd6699..89065dbdbb7 100644 --- a/i18n/rus/extensions/java/package.i18n.json +++ b/i18n/rus/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Java", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах Java." } \ No newline at end of file diff --git a/i18n/rus/extensions/javascript/package.i18n.json b/i18n/rus/extensions/javascript/package.i18n.json index 35229bd6699..40babee160e 100644 --- a/i18n/rus/extensions/javascript/package.i18n.json +++ b/i18n/rus/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка JavaScript", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах JavaScript." } \ No newline at end of file diff --git a/i18n/rus/extensions/json/package.i18n.json b/i18n/rus/extensions/json/package.i18n.json index 95b5c0a3553..5b4b6d24cfd 100644 --- a/i18n/rus/extensions/json/package.i18n.json +++ b/i18n/rus/extensions/json/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Возможности языка JSON", + "description": "Предоставляет широкую поддержку языка для файлов JSON.", "json.schemas.desc": "Связь схем с JSON-файлами в текущем проекте", "json.schemas.url.desc": "URL-адрес схемы или относительный путь к ней в текущем каталоге", "json.schemas.fileMatch.desc": "Массив шаблонов файлов, с которым выполняется сравнение, при разрешении JSON-файлов в схемах.", @@ -14,5 +16,6 @@ "json.format.enable.desc": "Включение или отключение модуля форматирования JSON по умолчанию (требуется перезагрузка)", "json.tracing.desc": "Отслеживает связь между VS Code и языковым сервером JSON.", "json.colorDecorators.enable.desc": "Включает или отключает декораторы цвета.", - "json.colorDecorators.enable.deprecationMessage": "Параметр \"json.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\"." + "json.colorDecorators.enable.deprecationMessage": "Параметр \"json.colorDecorators.enable\" устарел. Теперь вместо него используется параметр \"editor.colorDecorators\".", + "json.experimental.syntaxFolding": "Включает/отключает маркеры свертывания с учетом синтаксиса." } \ No newline at end of file diff --git a/i18n/rus/extensions/less/package.i18n.json b/i18n/rus/extensions/less/package.i18n.json index 35229bd6699..eac08cd4a1e 100644 --- a/i18n/rus/extensions/less/package.i18n.json +++ b/i18n/rus/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Less", + "description": "Предоставляет подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах Less." } \ No newline at end of file diff --git a/i18n/rus/extensions/log/package.i18n.json b/i18n/rus/extensions/log/package.i18n.json index cbdc1884d9e..ec12c8a5b37 100644 --- a/i18n/rus/extensions/log/package.i18n.json +++ b/i18n/rus/extensions/log/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "description": "Предоставляет подсветку синтаксиса для файлов с расширением .log" + "displayName": "Журнал", + "description": "Предоставляет подсветку синтаксиса для файлов с расширением .log." } \ No newline at end of file diff --git a/i18n/rus/extensions/lua/package.i18n.json b/i18n/rus/extensions/lua/package.i18n.json index 35229bd6699..780caae1742 100644 --- a/i18n/rus/extensions/lua/package.i18n.json +++ b/i18n/rus/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Lua", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Lua." } \ No newline at end of file diff --git a/i18n/rus/extensions/make/package.i18n.json b/i18n/rus/extensions/make/package.i18n.json index 35229bd6699..bc2f2b27d4a 100644 --- a/i18n/rus/extensions/make/package.i18n.json +++ b/i18n/rus/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Make", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах Make." } \ No newline at end of file diff --git a/i18n/rus/extensions/markdown-basics/package.i18n.json b/i18n/rus/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..d41fad11200 --- /dev/null +++ b/i18n/rus/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Основы языка Markdown", + "description": "Предоставляет фрагменты кода и подсветку синтаксиса для файлов Markdown." +} \ No newline at end of file diff --git a/i18n/rus/extensions/markdown/out/features/preview.i18n.json b/i18n/rus/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..b3ffeb70b7a --- /dev/null +++ b/i18n/rus/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Предварительный просмотр] {0}", + "previewTitle": "Предварительный просмотр {0}" +} \ No newline at end of file diff --git a/i18n/rus/extensions/markdown/package.i18n.json b/i18n/rus/extensions/markdown/package.i18n.json index 5d1d4107abe..0c205858212 100644 --- a/i18n/rus/extensions/markdown/package.i18n.json +++ b/i18n/rus/extensions/markdown/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Возможности языка Markdown", + "description": "Предоставляет широкую поддержку языка для Markdown.", "markdown.preview.breaks.desc": "Определяет, как переносы строк отображаются в области предварительного просмотра файла Markdown. Если установить этот параметр в значение 'true',
будут создаваться для каждой новой строки.", "markdown.preview.linkify": "Включить или отключить преобразование текста в URL для предварительного просмотра Markdown.", "markdown.preview.doubleClickToSwitchToEditor.desc": "Двойной щелчок в области предварительного просмотра Markdown в редакторе.", @@ -13,12 +15,18 @@ "markdown.preview.fontSize.desc": "Определяет размер шрифта (в пикселях), используемый в области предварительного просмотра файла Markdown.", "markdown.preview.lineHeight.desc": "Определяет высоту строки, используемую в области предварительного просмотра файла Markdown. Это значение задается относительно размера шрифта.", "markdown.preview.markEditorSelection.desc": "Выделение выбранного в текущем редакторе в предпросмотре Markdown.", + "markdown.preview.scrollEditorWithPreview.desc": "Обновить представление редактора при прокрутке предварительного просмотра Markdown.", + "markdown.preview.scrollPreviewWithEditor.desc": "Обновить представление предварительного просмотра при прокрутке редактора Markdown.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Устаревшая функция] Прокрутка предварительного просмотра Markdown до выбранной строки в редакторе.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Этот параметр был заменен на 'markdown.preview.scrollPreviewWithEditor' и больше не используется.", "markdown.preview.title": "Открыть область предварительного просмотра", "markdown.previewFrontMatter.dec": "Определяет обработку титульных листов YAML в области предварительного просмотра файла Markdown. Значение \"скрыть\" удаляет титульные листы. В противном случае титульные листы обрабатываются как содержимое файла Markdown.", "markdown.previewSide.title": "Открыть область предварительного просмотра сбоку", + "markdown.showLockedPreviewToSide.title": "Открыть заблокированную область предварительного просмотра сбоку", "markdown.showSource.title": "Показать источник", "markdown.styles.dec": "Список URL-адресов или локальных путей к таблицам стилей CSS, используемых из области предварительного просмотра файла Markdown. Относительные пути интерпретируются относительно папки, открытой в проводнике. Если папка не открыта, они интерпретируются относительно расположения файла Markdown. Все символы '\\' должны записываться в виде '\\\\'.", "markdown.showPreviewSecuritySelector.title": "Изменить параметры безопасности для предварительного просмотра", "markdown.trace.desc": "Включить ведение журнала отладки для расширения Markdown.", - "markdown.refreshPreview.title": "Обновить предварительный просмотр" + "markdown.preview.refresh.title": "Обновить область предварительного просмотра", + "markdown.preview.toggleLock.title": "Включить/отключить блокировку области предварительного просмотра" } \ No newline at end of file diff --git a/i18n/rus/extensions/merge-conflict/package.i18n.json b/i18n/rus/extensions/merge-conflict/package.i18n.json index bd6f7189d8c..617fa5e579f 100644 --- a/i18n/rus/extensions/merge-conflict/package.i18n.json +++ b/i18n/rus/extensions/merge-conflict/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Объединить конфликт", + "description": "Выделение и команды для внутренних конфликтов слияния.", "command.category": "Объединить конфликт", "command.accept.all-current": "Принять все текущие", "command.accept.all-incoming": "Принять все входящие", diff --git a/i18n/rus/extensions/npm/package.i18n.json b/i18n/rus/extensions/npm/package.i18n.json index ab3d34d7f5f..1d335e1d832 100644 --- a/i18n/rus/extensions/npm/package.i18n.json +++ b/i18n/rus/extensions/npm/package.i18n.json @@ -6,8 +6,13 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Расширение для добавления поддержки задач в скрипты npm.", + "displayName": "Поддержка Npm для VSCode", "config.npm.autoDetect": "Включает или отключает автоматическое определение сценариев npm. Значение по умолчанию — \"включено\".", "config.npm.runSilent": "Запускать команды npm с параметром '--silent'.", "config.npm.packageManager": "Диспетчер пакетов, используемый для запуска сценариев.", - "npm.parseError": "Определение задач npm: не удалось проанализировать файл {0}" + "config.npm.exclude": "Настройте стандартные маски для папок, которые должны быть обработаны с помощью автоматического определения сценария.", + "npm.parseError": "Определение задач npm: не удалось проанализировать файл {0}", + "taskdef.script": "Скрипт npm для изменения.", + "taskdef.path": "Путь к папке с файлом package.json, который содержит сценарий. Можно опустить." } \ No newline at end of file diff --git a/i18n/rus/extensions/objective-c/package.i18n.json b/i18n/rus/extensions/objective-c/package.i18n.json index 35229bd6699..a000c1340b4 100644 --- a/i18n/rus/extensions/objective-c/package.i18n.json +++ b/i18n/rus/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Objective-C", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Objective-C." } \ No newline at end of file diff --git a/i18n/rus/extensions/perl/package.i18n.json b/i18n/rus/extensions/perl/package.i18n.json index 35229bd6699..6760f0734fa 100644 --- a/i18n/rus/extensions/perl/package.i18n.json +++ b/i18n/rus/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Perl", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Perl." } \ No newline at end of file diff --git a/i18n/rus/extensions/php/package.i18n.json b/i18n/rus/extensions/php/package.i18n.json index e520e862551..c35bde05b3a 100644 --- a/i18n/rus/extensions/php/package.i18n.json +++ b/i18n/rus/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Запускается ли анализатор кода при сохранении или при печати.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "Запретить исполняемый файл проверки PHP (определяется как параметр рабочей области)" + "command.untrustValidationExecutable": "Запретить исполняемый файл проверки PHP (определяется как параметр рабочей области)", + "displayName": "Функции языка PHP", + "description": "Предоставляет IntelliSense, функции жанров и основные функции языка для файлов PHP." } \ No newline at end of file diff --git a/i18n/rus/extensions/powershell/package.i18n.json b/i18n/rus/extensions/powershell/package.i18n.json index 35229bd6699..ec529ae6dbc 100644 --- a/i18n/rus/extensions/powershell/package.i18n.json +++ b/i18n/rus/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка PowerShell", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах PowerShell." } \ No newline at end of file diff --git a/i18n/rus/extensions/pug/package.i18n.json b/i18n/rus/extensions/pug/package.i18n.json index 35229bd6699..99c7c505fe2 100644 --- a/i18n/rus/extensions/pug/package.i18n.json +++ b/i18n/rus/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Pug", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Pug." } \ No newline at end of file diff --git a/i18n/rus/extensions/python/package.i18n.json b/i18n/rus/extensions/python/package.i18n.json index 35229bd6699..0f6eed5d902 100644 --- a/i18n/rus/extensions/python/package.i18n.json +++ b/i18n/rus/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Python", + "description": "Предоставляет подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах Python." } \ No newline at end of file diff --git a/i18n/rus/extensions/r/package.i18n.json b/i18n/rus/extensions/r/package.i18n.json index 35229bd6699..5c028bcb4b5 100644 --- a/i18n/rus/extensions/r/package.i18n.json +++ b/i18n/rus/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка R", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах R." } \ No newline at end of file diff --git a/i18n/rus/extensions/razor/package.i18n.json b/i18n/rus/extensions/razor/package.i18n.json index 35229bd6699..5da19e87799 100644 --- a/i18n/rus/extensions/razor/package.i18n.json +++ b/i18n/rus/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Razor", + "description": "Предоставляет подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах Razor." } \ No newline at end of file diff --git a/i18n/rus/extensions/ruby/package.i18n.json b/i18n/rus/extensions/ruby/package.i18n.json index 35229bd6699..8d0f7630e69 100644 --- a/i18n/rus/extensions/ruby/package.i18n.json +++ b/i18n/rus/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Ruby", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Ruby." } \ No newline at end of file diff --git a/i18n/rus/extensions/rust/package.i18n.json b/i18n/rus/extensions/rust/package.i18n.json index 35229bd6699..ac434a47c56 100644 --- a/i18n/rus/extensions/rust/package.i18n.json +++ b/i18n/rus/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Rust", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Rust." } \ No newline at end of file diff --git a/i18n/rus/extensions/scss/package.i18n.json b/i18n/rus/extensions/scss/package.i18n.json index 35229bd6699..fba9306f6a8 100644 --- a/i18n/rus/extensions/scss/package.i18n.json +++ b/i18n/rus/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка SCSS", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах SCSS." } \ No newline at end of file diff --git a/i18n/rus/extensions/shaderlab/package.i18n.json b/i18n/rus/extensions/shaderlab/package.i18n.json index 35229bd6699..3d8d0675660 100644 --- a/i18n/rus/extensions/shaderlab/package.i18n.json +++ b/i18n/rus/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Shaderlab", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах Shaderlab." } \ No newline at end of file diff --git a/i18n/rus/extensions/shellscript/package.i18n.json b/i18n/rus/extensions/shellscript/package.i18n.json index 35229bd6699..7953de535b9 100644 --- a/i18n/rus/extensions/shellscript/package.i18n.json +++ b/i18n/rus/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка сценариев оболочки", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах сценариев оболочки." } \ No newline at end of file diff --git a/i18n/rus/extensions/sql/package.i18n.json b/i18n/rus/extensions/sql/package.i18n.json index 35229bd6699..69c1ea6424b 100644 --- a/i18n/rus/extensions/sql/package.i18n.json +++ b/i18n/rus/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка SQL", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах SQL." } \ No newline at end of file diff --git a/i18n/rus/extensions/swift/package.i18n.json b/i18n/rus/extensions/swift/package.i18n.json index 35229bd6699..3e90fe04638 100644 --- a/i18n/rus/extensions/swift/package.i18n.json +++ b/i18n/rus/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Swift", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса и выделение парных скобок в файлах Swift." } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-abyss/package.i18n.json b/i18n/rus/extensions/theme-abyss/package.i18n.json index 35229bd6699..bfe7b7b115b 100644 --- a/i18n/rus/extensions/theme-abyss/package.i18n.json +++ b/i18n/rus/extensions/theme-abyss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Тема хаоса", + "description": "Тема хаоса для Visual Studio Code" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-defaults/package.i18n.json b/i18n/rus/extensions/theme-defaults/package.i18n.json index 35229bd6699..399920c9425 100644 --- a/i18n/rus/extensions/theme-defaults/package.i18n.json +++ b/i18n/rus/extensions/theme-defaults/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Темы по умолчанию", + "description": "Темная и светлая темы по умолчанию (Plus и Visual Studio)" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-kimbie-dark/package.i18n.json b/i18n/rus/extensions/theme-kimbie-dark/package.i18n.json index 35229bd6699..de8e9f3c9db 100644 --- a/i18n/rus/extensions/theme-kimbie-dark/package.i18n.json +++ b/i18n/rus/extensions/theme-kimbie-dark/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Темная тема Kimbie", + "description": "Темная тема Kimbie для Visual Studio Code" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-monokai-dimmed/package.i18n.json b/i18n/rus/extensions/theme-monokai-dimmed/package.i18n.json index 35229bd6699..d715d2db947 100644 --- a/i18n/rus/extensions/theme-monokai-dimmed/package.i18n.json +++ b/i18n/rus/extensions/theme-monokai-dimmed/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Тема Monokai с уменьшенной яркостью", + "description": "Тема Monokai с уменьшенной яркостью для Visual Studio Code" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-monokai/package.i18n.json b/i18n/rus/extensions/theme-monokai/package.i18n.json index 35229bd6699..90569446473 100644 --- a/i18n/rus/extensions/theme-monokai/package.i18n.json +++ b/i18n/rus/extensions/theme-monokai/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Тема Monokai", + "description": "Тема Monokai для Visual Studio Code" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-quietlight/package.i18n.json b/i18n/rus/extensions/theme-quietlight/package.i18n.json index 35229bd6699..d4961dad77f 100644 --- a/i18n/rus/extensions/theme-quietlight/package.i18n.json +++ b/i18n/rus/extensions/theme-quietlight/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Тихая светлая тема", + "description": "Тихая светлая тема для Visual Studio Code" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-red/package.i18n.json b/i18n/rus/extensions/theme-red/package.i18n.json index 35229bd6699..1b7c422e636 100644 --- a/i18n/rus/extensions/theme-red/package.i18n.json +++ b/i18n/rus/extensions/theme-red/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Красная тема", + "description": "Красная тема для Visual Studio Code" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-seti/package.i18n.json b/i18n/rus/extensions/theme-seti/package.i18n.json index 35229bd6699..7a527f9864f 100644 --- a/i18n/rus/extensions/theme-seti/package.i18n.json +++ b/i18n/rus/extensions/theme-seti/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Тема значков файлов Seti", + "description": "Тема значков файлов на основе значков файлов пользовательского интерфейса Seti" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-solarized-dark/package.i18n.json b/i18n/rus/extensions/theme-solarized-dark/package.i18n.json index 35229bd6699..cbdc9c9ecc2 100644 --- a/i18n/rus/extensions/theme-solarized-dark/package.i18n.json +++ b/i18n/rus/extensions/theme-solarized-dark/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Солнечная темная тема", + "description": "Солнечная темная тема для Visual Studio Code" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-solarized-light/package.i18n.json b/i18n/rus/extensions/theme-solarized-light/package.i18n.json index 35229bd6699..140d1521148 100644 --- a/i18n/rus/extensions/theme-solarized-light/package.i18n.json +++ b/i18n/rus/extensions/theme-solarized-light/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Солнечная светлая тема", + "description": "Солнечная светлая тема для Visual Studio Code" } \ No newline at end of file diff --git a/i18n/rus/extensions/theme-tomorrow-night-blue/package.i18n.json b/i18n/rus/extensions/theme-tomorrow-night-blue/package.i18n.json index 35229bd6699..a34cd6fdc8c 100644 --- a/i18n/rus/extensions/theme-tomorrow-night-blue/package.i18n.json +++ b/i18n/rus/extensions/theme-tomorrow-night-blue/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Синяя вечерняя тема", + "description": "Синяя вечерняя тема для Visual Studio Code" } \ No newline at end of file diff --git a/i18n/rus/extensions/typescript-basics/package.i18n.json b/i18n/rus/extensions/typescript-basics/package.i18n.json index 35229bd6699..9723a8eba00 100644 --- a/i18n/rus/extensions/typescript-basics/package.i18n.json +++ b/i18n/rus/extensions/typescript-basics/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка TypeScript", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах TypeScript." } \ No newline at end of file diff --git a/i18n/rus/extensions/typescript/out/commands.i18n.json b/i18n/rus/extensions/typescript/out/commands.i18n.json index c51fa9d0d07..c2ebfd19241 100644 --- a/i18n/rus/extensions/typescript/out/commands.i18n.json +++ b/i18n/rus/extensions/typescript/out/commands.i18n.json @@ -9,6 +9,8 @@ "typescript.projectConfigNoWorkspace": "Откройте папку в VS Code, чтобы использовать проект JavaScript или TypeScript.", "typescript.projectConfigUnsupportedFile": "Не удалось определить проект TypeScript или JavaScript. Неподдерживаемый тип файла", "typescript.projectConfigCouldNotGetInfo": "Не удалось определить проект TypeScript или JavaScript.", + "typescript.noTypeScriptProjectConfig": "Файл не является частью проекта TypeScript. Дополнительные сведения см. [здесь]({0}).", + "typescript.noJavaScriptProjectConfig": "Файл не является частью проекта JavaScript. Дополнительные сведения см. [здесь]({0}).", "typescript.configureTsconfigQuickPick": "Настроить tsconfig.json", "typescript.configureJsconfigQuickPick": "Настроить jsconfig.json" } \ No newline at end of file diff --git a/i18n/rus/extensions/typescript/out/utils/typingsStatus.i18n.json b/i18n/rus/extensions/typescript/out/utils/typingsStatus.i18n.json index b8171e1e4d8..f5ffd76a57b 100644 --- a/i18n/rus/extensions/typescript/out/utils/typingsStatus.i18n.json +++ b/i18n/rus/extensions/typescript/out/utils/typingsStatus.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "installingPackages": "Получение данных для повышения эффективности IntelliSense TypeScript", + "typesInstallerInitializationFailed.title": "Не удалось установить файлы типизации для языка JavaScript. Убедитесь, что NPM установлен или укажите путь к файлу 'typescript.npm' в параметрах среды пользователя. Дополнительные сведения см. [здесь]({0}).", "typesInstallerInitializationFailed.doNotCheckAgain": "Больше не показывать" } \ No newline at end of file diff --git a/i18n/rus/extensions/typescript/package.i18n.json b/i18n/rus/extensions/typescript/package.i18n.json index c1f69a8c8c5..f85ab4719ef 100644 --- a/i18n/rus/extensions/typescript/package.i18n.json +++ b/i18n/rus/extensions/typescript/package.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "displayName": "Возможности языков TypeScript и JavaScript", + "description": "Предоставляет широкую поддержку языка для JavaScript и TypeScript.", "typescript.reloadProjects.title": "Перезагрузить проект", "javascript.reloadProjects.title": "Перезагрузить проект", "configuration.typescript": "TypeScript", @@ -53,5 +55,7 @@ "typescript.quickSuggestionsForPaths": "Включить/отключить краткие предложения при вводе пути импорта.", "typescript.locale": "Устанавливает языковой стандарт, используемый для сообщений об ошибках TypeScript. Требуется TypeScript 2.6.0 или более поздней версии. Значение по умолчанию — 'null'. При указании значения null для сообщений об ошибках TypeScript используется языковой стандарт VS Code.", "javascript.implicitProjectConfig.experimentalDecorators": "Включает/отключает параметр 'experimentalDecorators' для файлов JavaScript, которые не являются частью проекта. Этот параметр может переопределяться в файле jsconfig.json или tsconfig.json. Требуется TypeScript 2.3.1 или более поздней версии.", - "typescript.autoImportSuggestions.enabled": "Включить/отключить предложения автоматического импорта. Требуется TypeScript 2.6.1 или более поздней версии" + "typescript.autoImportSuggestions.enabled": "Включить/отключить предложения автоматического импорта. Требуется TypeScript 2.6.1 или более поздней версии", + "typescript.experimental.syntaxFolding": "Включает/отключает маркеры свертывания с учетом синтаксиса.", + "taskDefinition.tsconfig.description": "Файл tsconfig, который определяет сборку TS." } \ No newline at end of file diff --git a/i18n/rus/extensions/vb/package.i18n.json b/i18n/rus/extensions/vb/package.i18n.json index 35229bd6699..a0a6cd9091c 100644 --- a/i18n/rus/extensions/vb/package.i18n.json +++ b/i18n/rus/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка Visual Basic", + "description": "Предоставляет фрагменты кода, подсветку синтаксиса, выделение парных скобок и сворачивание кода в файлах Visual Basic." } \ No newline at end of file diff --git a/i18n/rus/extensions/xml/package.i18n.json b/i18n/rus/extensions/xml/package.i18n.json index 35229bd6699..698a8b81274 100644 --- a/i18n/rus/extensions/xml/package.i18n.json +++ b/i18n/rus/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка XML", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах XML." } \ No newline at end of file diff --git a/i18n/rus/extensions/yaml/package.i18n.json b/i18n/rus/extensions/yaml/package.i18n.json index 35229bd6699..2ffd27b8c6a 100644 --- a/i18n/rus/extensions/yaml/package.i18n.json +++ b/i18n/rus/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Основы языка YAML", + "description": "Предоставляет подсветку синтаксиса и выделение парных скобок в файлах YAML." } \ No newline at end of file diff --git a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index 13e20c0b6a4..2c957229e71 100644 --- a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -7,10 +7,22 @@ "Do not edit this file. It is machine generated." ], "previewOnGitHub": "Предварительный просмотр в GitHub", + "loadingData": "Загрузка данных...", "similarIssues": "Похожие проблемы", "open": "Открыть", + "closed": "Закрыто", "noResults": "Результаты не найдены", + "settingsSearchIssue": "Проблема с параметрами поиска", + "bugReporter": "Отчет об ошибках", + "performanceIssue": "Проблема с производительностью", + "featureRequest": "Запрос функции", "stepsToReproduce": "Действия для воспроизведения проблемы", + "bugDescription": "Опишите действия для точного воспроизведения проблемы. Включите фактические и ожидаемые результаты. Поддерживается разметка Markdown в стиле GitHub. Вы можете отредактировать текст проблемы и добавить снимки экрана при просмотре проблемы в GitHub.", + "performanceIssueDesciption": "Когда возникла эта проблема с производительностью? Происходит ли она при запуске или после указанной серии действий? Поддерживается разметка Markdown в стиле GitHub. Вы можете отредактировать текст проблемы и добавить снимки экрана при просмотре проблемы в GitHub.", "description": "Описание", + "featureRequestDescription": "Опишите функцию, которую хотели бы увидеть. Поддерживается разметка Markdown в стиле GitHub. Вы можете отредактировать текст проблемы и добавить снимки экрана при просмотре проблемы в GitHub.", + "expectedResults": "Ожидаемые результаты", + "settingsSearchResultsDescription": "Укажите результаты, которые должны быть получены для этого поискового запроса. Поддерживается разметка Markdown в стиле GitHub. Вы можете отредактировать текст проблемы и добавить снимки экрана при просмотре проблемы в GitHub.", + "pasteData": "Мы скопировали необходимые данные в буфер обмена, так как у них был слишком большой размер для отправки. Вставьте эти данные.", "disabledExtensions": "Расширения отключены" } \ No newline at end of file diff --git a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 381b3333725..6954a9f7442 100644 --- a/i18n/rus/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/rus/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -7,15 +7,24 @@ "Do not edit this file. It is machine generated." ], "completeInEnglish": "Заполните форму на английском языке.", + "issueTypeLabel": "Это", "issueTitleLabel": "Название", "issueTitleRequired": "Введите название.", + "titleLengthValidation": "Название слишком длинное.", "systemInfo": "Информация о системе", "sendData": "Отправить мои данные", "processes": "Запущенные процессы", "workspaceStats": "Статистика моей рабочей области", "extensions": "Мои расширения", + "searchedExtensions": "Расширения, для которых выполнялся поиск", + "settingsSearchDetails": "Сведения о параметрах поиска", + "tryDisablingExtensions": "Сохраняется ли проблема после отключения расширений?", "yes": "Да", "no": "Нет", + "disableExtensionsLabelText": "Попробуйте воспроизвести проблему после {0}.", "disableExtensions": "отключение всех расширений и перезагрузка окна", + "showRunningExtensionsLabelText": "Если вы подозреваете, что проблема связана с расширениями, сообщите о проблеме с расширением с помощью {0}.", + "showRunningExtensions": "просмотр всех запущенных расширений", + "details": "Укажите сведения.", "loadingData": "Загрузка данных..." } \ No newline at end of file diff --git a/i18n/rus/src/vs/code/electron-main/logUploader.i18n.json b/i18n/rus/src/vs/code/electron-main/logUploader.i18n.json index cf64bb01c92..34e056e905a 100644 --- a/i18n/rus/src/vs/code/electron-main/logUploader.i18n.json +++ b/i18n/rus/src/vs/code/electron-main/logUploader.i18n.json @@ -9,6 +9,10 @@ "invalidEndpoint": "Недопустимая конечная точка средства отправки журнала", "beginUploading": "Отправка...", "didUploadLogs": "Отправка успешно завершена! Идентификатор файла журнала: {0}", + "logUploadPromptHeader": "Вы собираетесь отправить журналы сеанса в защищенную конечную точку Майкрософт, доступ к которой есть только у участников команды VS Code из Майкрософт.", + "logUploadPromptBody": "Журналы сеансов могут содержать личную информацию, например, полные пути и содержимое файлов. Просмотрите файлы журналов и удалите из них личную информацию здесь: '{0}'", + "logUploadPromptBodyDetails": "Нажимая кнопку \"Продолжить\", вы подтверждаете, что просмотрели файлы журналов сеанса, удалили из них личную информацию и соглашаетесь с тем, что Майкрософт будет использовать эти файлы для отладки VS Code.", + "logUploadPromptAcceptInstructions": "Чтобы продолжить отправку, запустите код с параметром \"--upload-logs={0}\"", "postError": "Ошибка размещения журналов: {0}", "responseError": "Ошибка размещения журналов. Получено {0} — {1}", "parseError": "Ошибка разбора ответа", diff --git a/i18n/rus/src/vs/code/electron-main/menus.i18n.json b/i18n/rus/src/vs/code/electron-main/menus.i18n.json index 70772a661f9..eadf56cd717 100644 --- a/i18n/rus/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/rus/src/vs/code/electron-main/menus.i18n.json @@ -93,6 +93,7 @@ "miOpenView": "&&Открыть представление...", "miToggleFullScreen": "Включить/выключить полно&&экранный режим", "miToggleZenMode": "Включить/отключить режим \"Дзен\"", + "miToggleCenteredLayout": "Включить/отключить расположение по центру", "miToggleMenuBar": "Показать/скрыть строку &&меню", "miSplitEditor": "Разделить &&редактор", "miToggleEditorLayout": "Переключить &&структуру группы редакторов", diff --git a/i18n/rus/src/vs/code/electron-main/window.i18n.json b/i18n/rus/src/vs/code/electron-main/window.i18n.json index 35229bd6699..c8ded116278 100644 --- a/i18n/rus/src/vs/code/electron-main/window.i18n.json +++ b/i18n/rus/src/vs/code/electron-main/window.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hiddenMenuBar": "Вы по-прежнему можете получить доступ к строке меню, нажав клавишу ALT." } \ No newline at end of file diff --git a/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json b/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json index ed9048727f0..4e38fa1d925 100644 --- a/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json +++ b/i18n/rus/src/vs/editor/common/view/editorColorRegistry.i18n.json @@ -15,6 +15,7 @@ "editorWhitespaces": "Цвет пробелов в редакторе.", "editorIndentGuides": "Цвет направляющих для отступов редактора.", "editorLineNumbers": "Цвет номеров строк редактора.", + "editorActiveLineNumber": "Цвет номера активной строки редактора", "editorRuler": "Цвет линейки редактора.", "editorCodeLensForeground": "Цвет переднего плана элемента CodeLens в редакторе", "editorBracketMatchBackground": "Цвет фона парных скобок", diff --git a/i18n/rus/src/vs/editor/contrib/format/formatActions.i18n.json b/i18n/rus/src/vs/editor/contrib/format/formatActions.i18n.json index e76e0535f5b..f857a184f65 100644 --- a/i18n/rus/src/vs/editor/contrib/format/formatActions.i18n.json +++ b/i18n/rus/src/vs/editor/contrib/format/formatActions.i18n.json @@ -10,6 +10,7 @@ "hintn1": "Внесены правки форматирования ({0}) в строке {1}.", "hint1n": "Внесена одна правка форматирования между строками {0} и {1}.", "hintnn": "Внесены правки форматирования ({0}) между строками {1} и {2}.", + "no.provider": "Модуль форматирования для файлов '{0}' не установлен.", "formatDocument.label": "Форматировать документ", "formatSelection.label": "Форматировать выбранный фрагмент" } \ No newline at end of file diff --git a/i18n/rus/src/vs/editor/contrib/links/links.i18n.json b/i18n/rus/src/vs/editor/contrib/links/links.i18n.json index 1adf7466994..bee775b604d 100644 --- a/i18n/rus/src/vs/editor/contrib/links/links.i18n.json +++ b/i18n/rus/src/vs/editor/contrib/links/links.i18n.json @@ -12,5 +12,7 @@ "links.command": "Для выполнения команды щелкните ее, удерживая нажатой клавишу CTRL", "links.navigate.al": "Щелкните с нажатой клавишей ALT, чтобы перейти по ссылке.", "links.command.al": "Для выполнения команды щелкните ее, удерживая нажатой клавишу ALT", + "invalid.url": "Не удалось открыть ссылку, так как она имеет неправильный формат: {0}", + "missing.url": "Не удалось открыть ссылку, у нее отсутствует целевой объект.", "label": "Открыть ссылку" } \ No newline at end of file diff --git a/i18n/rus/src/vs/editor/contrib/rename/rename.i18n.json b/i18n/rus/src/vs/editor/contrib/rename/rename.i18n.json index 12343859b2a..b471b2afdb3 100644 --- a/i18n/rus/src/vs/editor/contrib/rename/rename.i18n.json +++ b/i18n/rus/src/vs/editor/contrib/rename/rename.i18n.json @@ -8,5 +8,6 @@ ], "no result": "Результаты отсутствуют.", "aria": "«{0}» успешно переименован в «{1}». Сводка: {2}", + "rename.failed": "Не удалось выполнить переименование.", "rename.label": "Переименовать символ" } \ No newline at end of file diff --git a/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json b/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json index ca92cdb0d12..1d513afb117 100644 --- a/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json +++ b/i18n/rus/src/vs/editor/contrib/wordHighlighter/wordHighlighter.i18n.json @@ -8,6 +8,8 @@ ], "wordHighlight": "Фон символа при доступе для чтения, например при чтении переменной. Цвет должен быть прозрачным чтобы не перекрывать основных знаков отличия.", "wordHighlightStrong": "Фон символа при доступе для записи, например при записи переменной. Цвет должен быть прозрачным чтобы не перекрывать основных знаков отличия.", + "wordHighlightBorder": "Цвет границы символа при доступе на чтение, например, при считывании переменной.", + "wordHighlightStrongBorder": "Цвет границы символа при доступе на запись, например, при записи переменной. ", "overviewRulerWordHighlightForeground": "Цвет метки линейки в окне просмотра для выделений символов.", "overviewRulerWordHighlightStrongForeground": "Цвет метки линейки в окне просмотра для выделений символов, доступных для записи. ", "wordHighlight.next.label": "Перейти к следующему выделению символов", diff --git a/i18n/rus/src/vs/platform/environment/node/argv.i18n.json b/i18n/rus/src/vs/platform/environment/node/argv.i18n.json index 75e85a8667e..60e5e887ae4 100644 --- a/i18n/rus/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/rus/src/vs/platform/environment/node/argv.i18n.json @@ -33,6 +33,7 @@ "inspect-brk-extensions": "Разрешить отладку и профилирование расширений, когда узел расширения приостановлен после запуска. Проверьте URI подключения для инструментов разработчика. ", "disableGPU": "Отключить аппаратное ускорение GPU.", "uploadLogs": "Отправляет журналы из текущего сеанса в защищенную конечную точку.", + "maxMemory": "Максимальный размер памяти для окна (в МБ).", "usage": "Использование", "options": "параметры", "paths": "пути", diff --git a/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 5d6e27da236..2d37e3e2376 100644 --- a/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/rus/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "Переопределить", "cancel": "Отмена", "errorInstallingDependencies": "Ошибка при установке зависимостей. {0}", + "MarketPlaceDisabled": "Marketplace не включен", + "removeError": "Ошибка при удалении расширения: {0}. Закройте и снова откройте VS Code, затем повторите попытку.", + "Not Market place extension": "Повторно устанавливать можно только расширения из Marketplace", "notFoundCompatible": "Невозможно установить '{0}'; нет версии, совместимой с VS Code '{1}'.", "malicious extension": "Не удается установить расширение, так как оно помечено как проблемное.", "notFoundCompatibleDependency": "Не удается выполнить установку, так как не найдено зависимое расширение '{0}', совместимое с текущей версией VS Code '{1}'. ", diff --git a/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json index fe7f1b27573..7e411db1da2 100644 --- a/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/rus/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -34,6 +34,7 @@ "inputValidationErrorBackground": "Фоновый цвет проверки ввода для уровня серьезности \"Ошибка\".", "inputValidationErrorBorder": "Цвет границы проверки ввода для уровня серьезности \"Ошибка\".", "dropdownBackground": "Фон раскрывающегося списка.", + "dropdownListBackground": "Цвет фона раскрывающегося списка.", "dropdownForeground": "Передний план раскрывающегося списка.", "dropdownBorder": "Граница раскрывающегося списка.", "listFocusBackground": "Фоновый цвет находящегося в фокусе элемента List/Tree, когда элемент List/Tree активен. На активном элементе List/Tree есть фокус клавиатуры, на неактивном — нет.", @@ -67,13 +68,19 @@ "editorSelectionForeground": "Цвет выделенного текста в режиме высокого контраста.", "editorInactiveSelection": "Цвет выбора в не активном редакторе. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия.", "editorSelectionHighlight": "Цвет регионов с тем же содержимым, что и в выделении. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия.", + "editorSelectionHighlightBorder": "Цвет границы регионов с тем же содержимым, что и в выделении.", "editorFindMatch": "Цвет текущего поиска совпадений.", "findMatchHighlight": "Цвет для других результатов поиска. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия.", "findRangeHighlight": "Выделите диапазон для ограничения поиска. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия.", + "editorFindMatchBorder": "Цвет границы текущего результата поиска.", + "findMatchHighlightBorder": "Цвет границы других результатов поиска.", + "findRangeHighlightBorder": "Цвет границы диапазона для ограничения поиска. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия.", "hoverHighlight": "Выделение под словом, для которого показано наведение. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия.", "hoverBackground": "Цвет фона при наведении указателя на редактор.", "hoverBorder": "Цвет границ при наведении указателя на редактор.", "activeLinkForeground": "Цвет активных ссылок.", + "diffEditorInserted": "Цвет фона для вставленного текста. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия.", + "diffEditorRemoved": "Цвет фона для удаленного текста. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия. ", "diffEditorInsertedOutline": "Цвет контура для добавленных строк.", "diffEditorRemovedOutline": "Цвет контура для удаленных строк.", "mergeCurrentHeaderBackground": "Фон текущего заголовка при конфликтах встроеного слияния. Цвет должен быть прозрачным, чтобы не перекрывать основные знаки отличия.", diff --git a/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index f711b6e66f2..280ed50cb8c 100644 --- a/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (расширение)", "defaultSource": "Расширение", "manageExtension": "Управление расширениями", "cancel": "Отмена", diff --git a/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 35229bd6699..79967c51d9e 100644 --- a/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/rus/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "webview.editor.label": "Редактор веб-представления" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json b/i18n/rus/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json index 35229bd6699..bb59edd906f 100644 --- a/i18n/rus/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json +++ b/i18n/rus/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "unknownDep": "Не удалось активировать расширение \"{1}\". Причина: неизвестная зависимость \"{0}\".", + "failedDep1": "Не удалось активировать расширение \"{1}\". Причина: не удалось активировать зависимость \"{0}\".", + "failedDep2": "Не удалось активировать расширение \"{0}\". Причина: более 10 уровней зависимостей (вероятна циклическая зависимость).", + "activationError": "Не удалось активировать расширение '{0}': {1}." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json b/i18n/rus/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json index d1fe96cfafb..f16af4babd6 100644 --- a/i18n/rus/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "toggleCenteredLayout": "Включить/отключить расположение по центру", "view": "Просмотр" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json index 232d501de18..0dbd953e79a 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json @@ -19,12 +19,14 @@ "close": "Закрыть", "closeOthers": "Закрыть другие", "closeRight": "Закрыть справа", + "closeAllSaved": "Закрыть сохраненные", "closeAll": "Закрыть все", "keepOpen": "Оставить открытым", "toggleInlineView": "Переключить интерактивное представление", "showOpenedEditors": "Показать открытые редакторы", "keepEditor": "Сохранить редактор", "closeEditorsInGroup": "Закрыть все редакторы в группе", + "closeSavedEditors": "Закрыть сохраненные редакторы в группе", "closeOtherEditors": "Закрыть другие редакторы", "closeRightEditors": "Закрыть редакторы справа" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json index 35229bd6699..12259aa7123 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json @@ -5,5 +5,12 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "clearNotification": "Очистить уведомления", + "clearNotifications": "Очистить все уведомления", + "hideNotificationsCenter": "Скрыть уведомления", + "expandNotification": "Развернуть уведомление", + "collapseNotification": "Свернуть уведомление", + "configureNotification": "Настроить уведомление", + "copyNotification": "Копировать текст" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 35229bd6699..a5d906fdd98 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -5,5 +5,8 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "Уведомления", + "notificationsToolbar": "Действия центра уведомлений", + "notificationsList": "Список уведомлений" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json index 35229bd6699..7ec63b9c7fe 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "Уведомления", + "showNotifications": "Показать уведомления", + "hideNotifications": "Скрыть уведомления", + "clearAllNotifications": "Очистить все уведомления" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 35229bd6699..e2a1f25b4cc 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -5,5 +5,10 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hideNotifications": "Скрыть уведомления", + "zeroNotifications": "Уведомления отсутствуют", + "noNotifications": "Новые уведомления отсутствуют", + "oneNotification": "1 новое уведомление", + "notifications": "Новые уведомления: {0}" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json index 35229bd6699..af97b5dc012 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationsToast": "Всплывающее уведомление" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json index 35229bd6699..2d7637d0a5e 100644 --- a/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json +++ b/i18n/rus/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationActions": "Действия уведомления", + "notificationSource": "Источник: {0}" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/common/theme.i18n.json b/i18n/rus/src/vs/workbench/common/theme.i18n.json index b97a3ba5fa3..9c4246b34d2 100644 --- a/i18n/rus/src/vs/workbench/common/theme.i18n.json +++ b/i18n/rus/src/vs/workbench/common/theme.i18n.json @@ -58,5 +58,13 @@ "titleBarInactiveForeground": "Передний план панели заголовка, если окно неактивно. Обратите внимание, что этот цвет сейчас поддерживается только в macOS.", "titleBarActiveBackground": "Фон панели заголовка, если окно активно. Обратите внимание, что этот цвет сейчас поддерживается только в macOS.", "titleBarInactiveBackground": "Фон панели заголовка, если окно неактивно. Обратите внимание, что этот цвет сейчас поддерживается только в macOS.", - "titleBarBorder": "Цвет границы панели заголовка. Обратите внимание, что этот цвет сейчас поддерживается только в macOS." + "titleBarBorder": "Цвет границы панели заголовка. Обратите внимание, что этот цвет сейчас поддерживается только в macOS.", + "notificationCenterBorder": "Цвет границы центра уведомлений. Уведомления появляются в нижней правой части окна. ", + "notificationToastBorder": "Цвет границы всплывающего уведомления. Уведомления появляются в нижней правой части окна.", + "notificationsForeground": "Цвет переднего плана уведомления. Уведомления появляются в нижней правой части окна.", + "notificationsBackground": "Цвет фона всплывающего уведомления. Уведомления появляются в нижней правой части окна.", + "notificationsLink": "Цвет переднего плана для ссылок в уведомлении. Уведомления появляются в нижней правой части окна.", + "notificationCenterHeaderForeground": "Цвет переднего плана заголовка в центре уведомлений. Уведомления появляются в нижней правой части окна. ", + "notificationCenterHeaderBackground": "Цвет фона заголовка в центре уведомлений. Уведомления появляются в нижней правой части окна. ", + "notificationsBorder": "Цвет границы уведомления, которая отделяет это уведомление от других в центре уведомлений. Уведомления появляются в нижней правой части окна. " } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/common/views.i18n.json b/i18n/rus/src/vs/workbench/common/views.i18n.json index 35229bd6699..69f15ecbcb8 100644 --- a/i18n/rus/src/vs/workbench/common/views.i18n.json +++ b/i18n/rus/src/vs/workbench/common/views.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "duplicateId": "Представление с идентификатором '{0}' уже зарегистрировано в расположении '{1}'" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/rus/src/vs/workbench/electron-browser/actions.i18n.json index ca8ede0697d..ca68ead3778 100644 --- a/i18n/rus/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/rus/src/vs/workbench/electron-browser/actions.i18n.json @@ -18,6 +18,7 @@ "zoomReset": "Сбросить масштаб", "appPerf": "Производительность запуска", "reloadWindow": "Перезагрузить окно", + "reloadWindowWithExntesionsDisabled": "Перезагрузить окно с отключенными расширениями", "switchWindowPlaceHolder": "Выберите окно, в которое нужно переключиться", "current": "Текущее окно", "close": "Закрыть окно", @@ -48,5 +49,6 @@ "moveWindowTabToNewWindow": "Переместить вкладку окна в новое окно", "mergeAllWindowTabs": "Объединить все окна", "toggleWindowTabsBar": "Переключить панель вкладок окна", - "about": "О программе {0}" + "about": "О программе {0}", + "inspect context keys": "Проверить ключи контекста" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json index 5923fdd0e6e..cf76b9c9591 100644 --- a/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -35,6 +35,7 @@ "panelDefaultLocation": "Определяет расположение панели по умолчанию. Она может находиться снизу или справа от рабочего места.", "statusBarVisibility": "Управляет видимостью строки состояния в нижней части рабочего места.", "activityBarVisibility": "Управляет видимостью панели действий на рабочем месте.", + "viewVisibility": "Управляет видимостью действий в заголовке представления. Действия в заголовке представления могут быть видимы всегда или видимы только тогда, когда представление получает фокус или на него наводится курсор мыши.", "fontAliasing": "Управляет методом сглаживания шрифтов в рабочей области.\n- default: субпиксельное сглаживание шрифтов; позволит добиться максимальной четкости текста на большинстве дисплеев за исключением Retina\n- antialiased: сглаживание шрифтов на уровне пикселей, в отличие от субпиксельного сглаживания; позволит сделать шрифт более светлым в целом\n- none: сглаживание шрифтов отключено; текст будет отображаться с неровными острыми краями\n- auto: автоматически применяется режим \"default\" или \"antialiased\" в зависимости от разрешения дисплея (количество точек на дюйм).", "workbench.fontAliasing.default": "Субпиксельное сглаживание шрифтов; позволит добиться максимальной четкости текста на большинстве дисплеев за исключением Retina.", "workbench.fontAliasing.antialiased": "Сглаживание шрифтов на уровне пикселей, в отличие от субпиксельного сглаживания. Может сделать шрифт светлее в целом.", @@ -75,6 +76,7 @@ "window.nativeTabs": "Включает вкладки окна macOS Sierra. Обратите внимание, что для применения этих изменений потребуется полная перезагрузка, и что для всех внутренних вкладок будет отключен пользовательский стиль заголовка, если он был настроен.", "zenModeConfigurationTitle": "Режим Zen", "zenMode.fullScreen": "Определяет, будет ли переключение в режим Zen переключать рабочее пространство в полноэкранный режим.", + "zenMode.centerLayout": "Определяет, будет ли также выполняться выравнивание по центру при включении режима Zen.", "zenMode.hideTabs": "Определяет, будет ли включение режима Zen также скрывать вкладки рабочего места.", "zenMode.hideStatusBar": "Определяет, будет ли включение режима Zen также скрывать строку состояния в нижней части рабочего места.", "zenMode.hideActivityBar": "Определяет, будет ли при включении режима Zen скрыта панель действий в левой части рабочей области.", diff --git a/i18n/rus/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index b757d518924..3a211dd7bc4 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -10,6 +10,10 @@ "functionBreakpointsNotSupported": "Точки останова функций не поддерживаются в этом типе отладки", "functionBreakpointPlaceholder": "Функция, в которой производится останов", "functionBreakPointInputAriaLabel": "Введите точку останова в функции", + "breakpointDisabledHover": "Отключенная точка останова", + "breakpointUnverifieddHover": "Непроверенная точка останова", + "functionBreakpointUnsupported": "Точки останова функций не поддерживаются в этом типе отладки", "breakpointDirtydHover": "Непроверенная точка останова. Файл был изменен, перезапустите сеанс отладки.", - "conditionalBreakpointUnsupported": "Условные точки останова не поддерживаются этим типом отладки" + "conditionalBreakpointUnsupported": "Условные точки останова не поддерживаются этим типом отладки", + "hitBreakpointUnsupported": "Останавливаться на условных точках останова, которые не поддерживаются этим типом отладки" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json index f0dd8ff74ad..bffb5741d8f 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "noFolderDebugConfig": "Перед расширенной настройкой отладки откройте папку.", + "columnBreakpoint": "Точка останова столбца", "debug": "Отладка", "addColumnBreakpoint": "Добавить точку останова столбца" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json index f97029fe810..5fcfb55be67 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "unable": "Не удается разрешить ресурс без сеанса отладки." + "unable": "Не удается разрешить ресурс без сеанса отладки.", + "canNotResolveSource": "Не удалось разрешить ресурс {0}, расширение отладки не отвечает." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index 3551514113a..210c4a89787 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "Всегда отображать отладку в строке состояния", "onFirstSessionStart": "Отображать отладку в строке состояния только после первого запуска отладки", "showInStatusBar": "Определяет видимость для строки состояния отладки", - "openDebug": "Определяет, следует ли открыть окно просмотра отладки в начале сеанса отладки.", + "openDebug": "Определяет, следует ли открыть представление отладки в начале сеанса отладки.", "launch": "Глобальная конфигурация запуска отладки. Должна использоваться в качестве альтернативы для конфигурации \"launch.json\", которая является общей для рабочих пространств" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index c65b07d5bd4..fb28b2912a1 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -14,9 +14,11 @@ "breakpointRemoved": "Удалена точка останова: строка {0}, файл {1}", "compoundMustHaveConfigurations": "Для составного элемента должен быть задан атрибут configurations для запуска нескольких конфигураций.", "noConfigurationNameInWorkspace": "Не удалось найти конфигурацию запуска \"{0}\" в рабочей области.", + "multipleConfigurationNamesInWorkspace": "В рабочей области есть несколько конфигураций запуска \"{0}\". Используйте имя папки для определения конфигурации.", "noFolderWithName": "Не удается найти папку с именем '{0}' для конфигурации '{1}' в составном объекте '{2}'.", "configMissing": "Конфигурация \"{0}\" отсутствует в launch.json.", "launchJsonDoesNotExist": "Файл \"launch.json\" не существует.", + "debugRequestNotSupported": "Атрибут '{0}' имеет неподдерживаемое значение '{1}' в выбранной конфигурации отладки.", "debugRequesMissing": "В выбранной конфигурации отладки отсутствует атрибут '{0}'.", "debugTypeNotSupported": "Настроенный тип отладки \"{0}\" не поддерживается.", "debugTypeMissing": "Отсутствует свойство \"type\" для выбранной конфигурации запуска.", diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json index 87a109ab4d4..f9ca08db354 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "copyValue": "Копировать значение", + "copyAsExpression": "Копировать как выражение", "copy": "Копировать", "copyAll": "Копировать все", "copyStackTrace": "Копировать стек вызовов" diff --git a/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index 0ea1cf52237..80214fe3339 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "Светлая по умолчанию", "defaultHC": "С высоким контрастом по умолчанию", "JSON Validation": "Проверка JSON ({0})", + "fileMatch": "Сопоставление файла", + "schema": "Схема", "commands": "Команды ({0})", "command name": "Имя", "keyboard shortcuts": "Сочетания клавиш", diff --git a/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index edb64b65401..af8481a7c6b 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "Скачать вручную", + "install vsix": "После скачивания установите загруженный VSIX '{0}' вручную.", "installAction": "Установить", "installing": "Идет установка", + "failedToInstall": "Не удалось установить \"{0}\".", "uninstallAction": "Удаление", "Uninstalling": "Идет удаление", "updateAction": "Обновить", "updateTo": "Обновить до {0}", + "failedToUpdate": "Не удалось обновить \"{0}\".", "ManageExtensionAction.uninstallingTooltip": "Идет удаление", "enableForWorkspaceAction": "Включить (рабочая область)", "enableGloballyAction": "Включить", @@ -38,6 +42,7 @@ "showInstalledExtensions": "Показать установленные расширения", "showDisabledExtensions": "Показать отключенные расширения", "clearExtensionsInput": "Очистить входные данные расширений", + "showBuiltInExtensions": "Показать встроенные расширения", "showOutdatedExtensions": "Показать устаревшие расширения", "showPopularExtensions": "Показать популярные расширения", "showRecommendedExtensions": "Показать рекомендуемые расширения", @@ -55,6 +60,18 @@ "malicious": "Вредоносный", "disableAll": "Отключить все установленные расширения", "disableAllWorkspace": "Отключить все установленные расширения для этой рабочей области", + "enableAll": "Включить все расширения", + "enableAllWorkspace": "Включить все расширения для этой рабочей области", + "openExtensionsFolder": "Открыть папку расширений", + "installVSIX": "Установка из VSIX...", + "installFromVSIX": "Установить из VSIX", + "installButton": "&&Установить", + "InstallVSIXAction.success": "Расширение успешно установлено. Для его включения требуется перезапуск.", + "InstallVSIXAction.reloadNow": "Перезагрузить", + "reinstall": "Переустановить расширение...", + "selectExtension": "Выберите расширение для повторной установки", + "ReinstallAction.success": "Повторная установка расширения успешно выполнена.", + "ReinstallAction.reloadNow": "Перезагрузить", "extensionButtonProminentBackground": "Цвет фона кнопок, соответствующих основным действиям расширения (например, кнопка \"Установить\").", "extensionButtonProminentForeground": "Цвет переднего плана кнопок, соответствующих основным действиям расширения (например, кнопка \"Установить\").", "extensionButtonProminentHoverBackground": "Цвет фона кнопок, соответствующих основным действиям расширения, при наведении мыши (например, кнопка \"Установить\")." diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 1b0d17caa47..6ecb81772e0 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "Расширения профиля", + "restart2": "Для профилирования расширений требуется перезапуск. Вы действительно хотите перезапустить \"{0}\" сейчас?", "restart3": "Перезапустить", "cancel": "Отмена", "selectAndStartDebug": "Щелкните здесь, чтобы остановить профилирование." diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index 1a77178244f..885c2235791 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -8,6 +8,8 @@ ], "neverShowAgain": "Больше не показывать", "searchMarketplace": "Поиск в Marketplace", + "showLanguagePackExtensions": "В Marketplace есть расширения, которые помогут локализовать VS Code на язык \"{0}\"", + "dynamicWorkspaceRecommendation": "Это расширение может вас заинтересовать, потому что оно популярно среди пользователей репозитория {0}.", "exeBasedRecommendation": "Рекомендуется использовать это расширение, так как установлено {0}.", "fileBasedRecommendation": "Рекомендуется использовать это расширение (на основе недавно открытых файлов).", "workspaceRecommendation": "Это расширение рекомендуется пользователями текущей рабочей области.", diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 869daead6b2..1afe3284b6e 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -15,5 +15,6 @@ "developer": "Разработчик", "extensionsConfigurationTitle": "Расширения", "extensionsAutoUpdate": "Автоматически обновлять расширения", - "extensionsIgnoreRecommendations": "Если этот параметр установлен в значение true, оповещения о рекомендациях по расширениям перестанут отображаться." + "extensionsIgnoreRecommendations": "Если этот параметр установлен в значение true, оповещения о рекомендациях по расширениям перестанут отображаться.", + "extensionsShowRecommendationsOnlyOnDemand": "Если этот параметр установлен в true, рекомендации не будут извлекаться или отображаться до тех пор, пока пользователь не откроет их явно." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index fc2676c541b..a5a34da17d1 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,7 @@ "recommendedExtensions": "Рекомендуемое", "otherRecommendedExtensions": "Другие рекомендации", "workspaceRecommendedExtensions": "Рекомендации рабочей области", + "builtInExtensions": "Встроенный", "searchExtensions": "Поиск расширений в Marketplace", "sort by installs": "Сортировать по: числу установок", "sort by rating": "Сортировать по: рейтинг", diff --git a/i18n/rus/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json index 854d944c727..8bdeff6f3d9 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json @@ -10,6 +10,7 @@ "malicious": "Это расширение помечено как проблемное.", "installingMarketPlaceExtension": "Установка расширения из Marketplace...", "uninstallingExtension": "Удаление расширения...", + "enableDependeciesConfirmation": "При включении \"{0}\" также будут включены его зависимости. Вы действительно хотите продолжить?", "enable": "Да", "doNotEnable": "Нет", "disableDependeciesConfirmation": "Отключить только \"{0}\" или вместе с зависимостями?", diff --git a/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json index 11ac7a0bb14..54559890c50 100644 --- a/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json @@ -29,6 +29,7 @@ "compareSelected": "Сравнить выбранное", "close": "Закрыть", "closeOthers": "Закрыть другие", + "closeSaved": "Закрыть сохраненное", "closeAll": "Закрыть все", "deleteFile": "Удалить навсегда" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 920de1dbb72..6be9e343706 100644 --- a/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -39,6 +39,8 @@ "importFiles": "Импорт файлов", "confirmOverwrite": "Файл или папка с таким именем уже существует в конечной папке. Заменить их?", "replaceButtonLabel": "Заменить", + "fileIsAncestor": "Файл для вставки является предком папки назначения", + "fileDeleted": "Файл для вставки был удален или перемещен в другое место", "duplicateFile": "Дублировать", "globalCompareFile": "Сравнить активный файл с...", "openFileToCompare": "Чтобы сравнить файл с другим файлом, сначала откройте его.", diff --git a/i18n/rus/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json b/i18n/rus/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json index d690f82758f..2c555771b4a 100644 --- a/i18n/rus/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "userGuide": "Используйте команды на панели инструментов редактора, чтобы отменить изменения или перезаписать содержимое на диске.", + "staleSaveError": "Не удалось сохранить \"{0}\": содержимое на диске было изменено. Сравните свою версию с версией на диске.", "retry": "Повторить попытку", "discard": "Отмена", "readonlySaveErrorAdmin": "Не удалось сохранить \"{0}\": файл защищен от записи. Чтобы повторить попытку с правами администратора, выберите \"Перезаписать с правами администратора\".", diff --git a/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json b/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json index 4a0d0e08a6f..4cdbf97ba12 100644 --- a/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "label": "Проводник", - "canNotResolve": "Не удается разрешить папку рабочей области" + "canNotResolve": "Не удается разрешить папку рабочей области", + "symbolicLlink": "Символическая ссылка" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index 42c4426c51c..4d9d86ce6f1 100644 --- a/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Введите имя файла. Нажмите клавишу ВВОД, чтобы подтвердить введенные данные, или ESCAPE для отмены.", + "constructedPath": "Создать {0} в **{1}**", "filesExplorerViewerAriaLabel": "{0}, Проводник", "dropFolders": "Вы хотите действительно добавить папки в эту рабочую область?", "dropFolder": "Вы хотите действительно добавить папку в эту рабочую область?", diff --git a/i18n/rus/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/rus/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index b0fac7dc1a6..02cc2d82d38 100644 --- a/i18n/rus/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editor.action.webvieweditor.showFind": "Выделить мини-приложение поиска" + "editor.action.webvieweditor.showFind": "Выделить мини-приложение поиска", + "openToolsLabel": "Открыть инструменты разработчика веб-представлений", + "refreshWebviewLabel": "Перезагрузить веб-представления" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json index e6984a4fa52..430f371b699 100644 --- a/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/localizations/browser/localizations.contribution.i18n.json @@ -11,6 +11,7 @@ "vscode.extension.contributes.localizations.languageId": "Идентификатор языка, на который будут переведены отображаемые строки.", "vscode.extension.contributes.localizations.languageName": "Название языка на английском языке.", "vscode.extension.contributes.localizations.languageNameLocalized": "Название языка на предоставленном языке.", + "vscode.extension.contributes.localizations.translations": "Список переводов, связанных с языком.", "vscode.extension.contributes.localizations.translations.id": "Идентификатор VS Code или расширения, для которого предоставляется этот перевод. Идентификатор VS Code всегда имеет формат \"vscode\", а идентификатор расширения должен иметь формат \"publisherId.extensionName\".", "vscode.extension.contributes.localizations.translations.id.pattern": "Идентификатор должен иметь формат \"vscode\" или \"publisherId.extensionName\" для перевода VS Code или расширения соответственно.", "vscode.extension.contributes.localizations.translations.path": "Относительный путь к файлу, содержащему переводы для языка." diff --git a/i18n/rus/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json b/i18n/rus/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json index b210532dbef..0e35df99244 100644 --- a/i18n/rus/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json @@ -15,6 +15,7 @@ "mainProcess": "Главный", "selectProcess": "Выберите журнал для обработки", "openLogFile": "Открыть лог", + "setLogLevel": "Установите уровень ведения журнала...", "trace": "Трассировка", "debug": "Отладка", "info": "Сведения", diff --git a/i18n/rus/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/rus/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 32bb015871d..1199d8b1427 100644 --- a/i18n/rus/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -20,6 +20,7 @@ "showSameKeybindings": "Показывать одинаковые настраиваемые сочетания клавиш", "copyLabel": "Копировать", "copyCommandLabel": "Команда копирования", + "error": "При изменении сочетания клавиш произошла ошибка \"{0}\". Откройте файл \"keybindings.json\" и проверьте его на наличие ошибок.", "command": "Команда", "keybinding": "Настраиваемое сочетание клавиш", "source": "Источник", diff --git a/i18n/rus/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json b/i18n/rus/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json index 01d04b8bbc9..cc5b834693b 100644 --- a/i18n/rus/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json @@ -12,6 +12,7 @@ "entryAriaLabelWithKey": "{0}, {1}, команды", "entryAriaLabel": "{0}, команды", "actionNotEnabled": "Команда {0} не разрешена в текущем контексте.", + "canNotRun": "При выполнении команды \"{0}\" произошла ошибка.", "recentlyUsed": "недавно использованные", "morecCommands": "другие команды", "cat.title": "{0}: {1}", diff --git a/i18n/rus/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json b/i18n/rus/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json index e45c444db0d..ea48fd0d000 100644 --- a/i18n/rus/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json @@ -10,6 +10,8 @@ "change": "{0} из {1} изменения", "show previous change": "Показать предыдущее изменение", "show next change": "Показать следующее изменение", + "move to previous change": "Перейти к предыдущему изменению", + "move to next change": "Перейти к следующему изменению", "editorGutterModifiedBackground": "Цвет фона полей редактора для измененных строк.", "editorGutterAddedBackground": "Цвет фона полей редактора для добавленных строк.", "editorGutterDeletedBackground": "Цвет фона полей редактора для удаленных строк.", diff --git a/i18n/rus/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json index 9f5ad1adbbb..39961b3a4e8 100644 --- a/i18n/rus/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json @@ -12,5 +12,6 @@ "view": "Просмотреть", "scmConfigurationTitle": "SCM", "alwaysShowProviders": "Всегда отображать хранилище исходного кода", - "diffDecorations": "Управляет декораторами diff в редакторе." + "diffDecorations": "Управляет декораторами diff в редакторе.", + "diffGutterWidth": "Управляет шириной (в пикселах) декораторов diff в поле (добавление и изменение)." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json index df6070cfb8c..b197ab3521e 100644 --- a/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -30,6 +30,7 @@ "removeAll.occurrences.files.confirmation.message": "Заменить вхождения ({0}) на \"{2}\" в следующем числе файлов: {1}?", "replaceAll.occurrences.files.confirmation.message": "Заменить вхождения ({0}) в следующем числе файлов: {1}?", "treeAriaLabel": "Результаты поиска", + "searchPathNotFoundError": "Путь поиска не найден: {0}", "searchMaxResultsWarning": "Результирующий набор включает только подмножество всех соответствий. Чтобы уменьшить число результатов, сузьте условия поиска.", "searchCanceled": "Поиск был отменен до того, как были найдены какие-либо результаты — ", "noResultsIncludesExcludes": "Не найдено результатов в \"{0}\", исключая \"{1}\", — ", diff --git a/i18n/rus/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index c6c7c3a1e7f..f4733a91f5a 100644 --- a/i18n/rus/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,5 +25,6 @@ "search.quickOpen.includeSymbols": "Настройте для включения результатов поиска глобальных символов в файлы по запросу для Quick Open.", "search.followSymlinks": "Определяет, нужно ли следовать символическим ссылкам при поиске.", "search.smartCase": "Выполняет поиск без учета регистра, если шаблон состоит только из букв нижнего регистра; в противном случае выполняет поиск с учетом регистра", - "search.globalFindClipboard": "Определяет, должно ли мини-приложение поиска считывать или изменять общий буфер обмена поиска в macOS" + "search.globalFindClipboard": "Определяет, должно ли представление поиска считывать или изменять общий буфер обмена поиска в macOS", + "search.location": "Предварительная версия: управляет тем, будет ли панель поиска отображаться в виде представления в боковой колонке или в виде панели в области панели для освобождения пространства по горизонтали. В следующем выпуске горизонтальное расположение поиска в панели будет улучшено, и этот параметр больше не будет находиться в предварительной версии." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json b/i18n/rus/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json index 68b2f4a49ee..ccc1b54893d 100644 --- a/i18n/rus/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/tasks/common/problemMatcher.i18n.json @@ -7,9 +7,13 @@ "Do not edit this file. It is machine generated." ], "ProblemPatternParser.loopProperty.notLast": "Свойство loop поддерживается только в сопоставителе последней строки.", + "ProblemPatternParser.problemPattern.kindProperty.notFirst": "Шаблон проблемы является недопустимым. Свойство kind должно быть указано только для первого элемента.", "ProblemPatternParser.problemPattern.missingRegExp": "В шаблоне проблем отсутствует регулярное выражение.", + "ProblemPatternParser.problemPattern.missingProperty": "Шаблон проблемы является недопустимым. Он должен включать файл и сообщение.", + "ProblemPatternParser.problemPattern.missingLocation": "Шаблон проблемы является недопустимым. Он должен иметь тип \"file\" или группу соответствия строки или расположения.", "ProblemPatternParser.invalidRegexp": "Ошибка: строка {0} не является допустимым регулярным выражением.\n", "ProblemPatternSchema.regexp": "Регулярное выражение для поиска ошибки, предупреждения или информации в выходных данных.", + "ProblemPatternSchema.kind": "соответствует ли шаблон расположению (файл и строка) или только файлу.", "ProblemPatternSchema.file": "Индекс группы сопоставления для имени файла. Если он не указан, используется значение 1.", "ProblemPatternSchema.location": "Индекс группы сопоставления для расположения проблемы. Допустимые шаблоны расположения: (строка), (строка,столбец) и (начальная_строка,начальный_столбец,конечная_строка,конечный_столбец). Если индекс не указан, предполагается шаблон (строка,столбец).", "ProblemPatternSchema.line": "Индекс группы сопоставления для строки проблемы. Значение по умолчанию — 2.", diff --git a/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 6ac5b4ce535..8cccd04ba00 100644 --- a/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -28,6 +28,8 @@ "selectProblemMatcher": "Выберите, на какие ошибки и предупреждения следует проверять выходные данные задачи", "customizeParseErrors": "В конфигурации текущей задачи есть ошибки. Исправьте ошибки перед изменением задачи.", "moreThanOneBuildTask": "В файле tasks.json определено несколько задач сборки. Выполняется первая задача.\n", + "TaskSystem.activeSame.background": "Задача '{0}' уже активна и находится в фоновом режиме. Чтобы завершить задачу, выберите \"Завершить задачу\" в меню \"Задачи\".", + "TaskSystem.activeSame.noBackground": "Задача '{0}' уже активна. Чтобы завершить задачу, выберите \"Завершить задачу\" из меню \"Задачи\".", "TaskSystem.active": "Уже выполняется задача. Завершите ее, прежде чем выполнять другую задачу.", "TaskSystem.restartFailed": "Не удалось завершить и перезапустить задачу {0}", "TaskService.noConfiguration": "Ошибка: в определении задачи {0} не выявлена задача для следующей конфигурации:\n{1}\nЗадача будет проигнорирована.\n", @@ -44,6 +46,7 @@ "recentlyUsed": "недавно использованные задачи", "configured": "настроенные задачи", "detected": "обнаруженные задачи", + "TaskService.ignoredFolder": "Следующие папки рабочей области будут проигнорированы, так как в них используется версия задач 0.1.0: {0}", "TaskService.notAgain": "Больше не показывать", "TaskService.pickRunTask": "Выберите задачу для запуска", "TaslService.noEntryToRun": "Задача для запуска не найдена. Настройте задачи...", diff --git a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json index ea9e10c90b4..d655f6f3a72 100644 --- a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json @@ -20,10 +20,13 @@ "terminal.integrated.fontFamily": "Определяет семейство шрифтов терминала, значение по умолчанию — editor.fontFamily.", "terminal.integrated.fontSize": "Определяет размер шрифта (в пикселях) для терминала.", "terminal.integrated.lineHeight": "Определяет высоту строки терминала; это число умножается на размер шрифта терминала, что дает фактическую высоту строки в пикселях.", + "terminal.integrated.fontWeight": "Размер шрифта в терминале для нежирного текста.", + "terminal.integrated.fontWeightBold": "Размер шрифта в терминале для полужирного текста. ", "terminal.integrated.cursorBlinking": "Управляет миганием курсора терминала.", "terminal.integrated.cursorStyle": "Определяет стиль курсора терминала.", "terminal.integrated.scrollback": "Определяет предельное число строк в буфере терминала.", "terminal.integrated.setLocaleVariables": "Управляет заданием переменных при запуске терминала, значение по умолчанию: \"True\" для OS X и \"False\" для других платформ.", + "terminal.integrated.rightClickBehavior": "Управляет тем, как терминал реагирует на щелчок правой кнопкой мыши. Возможные значения: 'default', 'copyPaste' и 'selectWord'. При выборе варианта 'default' будет показано контекстное меню, при выборе варианта 'copyPaste' выделенный текст будет скопирован, а при отсутствии выделенного текста - вставлен, при выборе варианта 'selectWord' будет выбрано слово, над которым находится курсор, и показано контекстное меню.", "terminal.integrated.cwd": "Путь явного запуска, по которому будет запущен терминал. Используется в качестве текущего рабочего каталога (cwd) для процесса оболочки. Это может быть особенно удобно в параметрах рабочей области, если корневой каталог не является подходящим каталогом cwd.", "terminal.integrated.confirmOnExit": "Указывает, следует ли при выходе выводить подтверждение об имеющихся активных сеансах терминала.", "terminal.integrated.enableBell": "Определяет, включен ли \"звонок\" терминала.", @@ -32,6 +35,7 @@ "terminal.integrated.env.linux": "Объект с переменными среды, которые будут добавлены к процессу VS Code для использования в терминале Linux ", "terminal.integrated.env.windows": "Объект с переменными среды, которые будут добавлены к процессу VS Code для использования в терминале Windows", "terminal.integrated.showExitAlert": "Отображать предупреждение \"Процесс терминала завершен с кодом выхода\", если код выхода не равен нулю.", + "terminal.integrated.experimentalRestore": "Восстанавливать ли сеансы терминала для рабочей области автоматически при запуске VS Code. Это экспериментальный параметр; он может приводить к ошибкам и может быть изменен в будущем.", "terminalCategory": "Терминал", "viewCategory": "Просмотреть" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index 89fbe3e7861..17bf9786dc4 100644 --- a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -14,10 +14,19 @@ "workbench.action.terminal.selectAll": "Выбрать все", "workbench.action.terminal.deleteWordLeft": "Удалить слово слева", "workbench.action.terminal.deleteWordRight": "Удалить слово справа", + "workbench.action.terminal.moveToLineStart": "Перейти к началу строки", + "workbench.action.terminal.moveToLineEnd": "Перейти к концу строки", "workbench.action.terminal.new": "Создание нового интегрированного терминала", "workbench.action.terminal.new.short": "Новый терминал", "workbench.action.terminal.newWorkspacePlaceholder": "Выбрать текущий рабочий каталог для нового терминала", "workbench.action.terminal.newInActiveWorkspace": "Создать новый интегрированный терминал (в активной рабочей области)", + "workbench.action.terminal.split": "Разделить терминал", + "workbench.action.terminal.focusPreviousPane": "Перейти на предыдущую область", + "workbench.action.terminal.focusNextPane": "Перейти на следующую область", + "workbench.action.terminal.resizePaneLeft": "Изменить размер области слева", + "workbench.action.terminal.resizePaneRight": "Изменить размер области справа", + "workbench.action.terminal.resizePaneUp": "Изменить размер области вверху", + "workbench.action.terminal.resizePaneDown": "Изменить размер области внизу", "workbench.action.terminal.focus": "Фокус на терминале", "workbench.action.terminal.focusNext": "Фокус на следующем терминале", "workbench.action.terminal.focusPrevious": "Фокус на предыдущем терминале", @@ -26,6 +35,7 @@ "workbench.action.terminal.runSelectedText": "Запуск выбранного текста в активном терминале", "workbench.action.terminal.runActiveFile": "Запуск активного файла в активном терминале", "workbench.action.terminal.runActiveFile.noFile": "Только файлы на диске можно запустить в терминале", + "workbench.action.terminal.switchTerminal": "Переключить терминал", "workbench.action.terminal.scrollDown": "Прокрутить вниз (построчно)", "workbench.action.terminal.scrollDownPage": "Прокрутить вниз (на страницу)", "workbench.action.terminal.scrollToBottom": "Прокрутить до нижней границы", diff --git a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index 5d87c842d72..aca12bf1061 100644 --- a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,5 +11,6 @@ "terminalCursor.foreground": "Цвет переднего плана курсора терминала.", "terminalCursor.background": "Цвет фона курсора терминала. Позволяет выбрать цвет символа, который перекрывается блочным курсором.", "terminal.selectionBackground": "Цвет фона выделения терминала.", + "terminal.border": "Цвет границы, которая отделяет области в терминале. По умолчанию используется panel.border.", "terminal.ansiColor": "Цвет ANSI \"{0}\" в терминале." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json index d7bb123b0df..86dafb69b0f 100644 --- a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json @@ -8,7 +8,9 @@ ], "terminal.integrated.a11yBlankLine": "Пустая строка", "terminal.integrated.a11yPromptLabel": "Ввод терминала", + "terminal.integrated.a11yTooMuchOutput": "Объем выходных данных слишком велик для создания оповещения; проверьте строки вручную", "terminal.integrated.copySelection.noSelection": "В терминале отсутствует выделенный текст для копирования", "terminal.integrated.exitedWithCode": "Процесс терминала завершен с кодом выхода: {0}", - "terminal.integrated.waitOnExit": "Нажмите любую клавишу, чтобы закрыть терминал." + "terminal.integrated.waitOnExit": "Нажмите любую клавишу, чтобы закрыть терминал.", + "terminal.integrated.launchFailed": "Не удалось запустить команду процесса терминала \"{0}{1}\" (код выхода: {2})" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index b783131395a..21822900dfd 100644 --- a/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -9,5 +9,6 @@ "copy": "Копировать", "paste": "Вставить", "selectAll": "Выбрать все", - "clear": "Очистить" + "clear": "Очистить", + "split": "Разделить" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index c9b54e643f5..a9d5c44acd5 100644 --- a/i18n/rus/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "openWorkspaceSettings": "Открыть параметры рабочей области", - "dontShowAgain": "Больше не показывать" + "dontShowAgain": "Больше не показывать", + "unsupportedWorkspaceSettings": "Эта рабочая область содержит параметры, которые можно задать только в параметрах пользователя. ({0}) Дополнительные сведения см. [здесь]({1})." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json index 9582d9255b2..d80a8d53e52 100644 --- a/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -11,8 +11,12 @@ "releaseNotes": "Заметки о выпуске", "showReleaseNotes": "Показать заметки о выпуске", "read the release notes": "Вас приветствует {0} v{1}! Вы хотите прочитать заметки о выпуске?", + "licenseChanged": "Наши условия лицензии изменились. Чтобы ознакомиться с ними, щелкните [здесь]({0}).", "neveragain": "Больше не показывать", + "64bitisavailable": "{0} для 64-разрядной версии Windows теперь доступен! Дополнительные сведения см. [здесь]({1}).", "updateIsReady": "Доступно новое обновление {0}.", + "noUpdatesAvailable": "Доступные обновления отсутствуют.", + "ok": "ОК", "download now": "Скачать сейчас", "thereIsUpdateAvailable": "Доступно обновление.", "installUpdate": "Установить обновление", diff --git a/i18n/rus/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/rus/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index a9a63802981..e4d71e0dc54 100644 --- a/i18n/rus/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/rus/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -16,6 +16,16 @@ "errorInvalidWorkspaceTarget": "Не удается изменить параметры рабочей области, так как {0} не поддерживает рабочие области в в рабочей области из нескольких папок.", "errorInvalidFolderTarget": "Не удается изменить параметры папок, так как ресурс не указан.", "errorNoWorkspaceOpened": "Не удается записать в {0}, так как не открыта ни одна рабочая область. Откройте рабочую область и повторите попытку.", + "errorInvalidTaskConfiguration": "Не удается записать файл конфигурации задач. Откройте файл, исправьте ошибки и предупреждения и повторите попытку.", + "errorInvalidLaunchConfiguration": "Не удается записать файл конфигурации запуска. Откройте файл, исправьте ошибки и предупреждения и повторите попытку.", + "errorInvalidConfiguration": "Не удается выполнить запись в файл параметров пользователя. Откройте параметры пользователя, исправьте ошибки и предупреждения и повторите попытку. ", + "errorInvalidConfigurationWorkspace": "Не удается выполнить запись в файл параметров рабочей области. Откройте параметры рабочей области, исправьте ошибки и предупреждения и повторите попытку. ", + "errorInvalidConfigurationFolder": "Не удается записать параметры папки. Откройте параметры папки '{0}', исправьте ошибки и предупреждения и повторите попытку. ", + "errorTasksConfigurationFileDirty": "Не удается записать файл конфигурации задач, так как файл был изменен. Сохраните файл и повторите попытку.", + "errorLaunchConfigurationFileDirty": "Не удается записать файл конфигурации запуска, так как файл был изменен. Сохраните файл и повторите попытку.", + "errorConfigurationFileDirty": "Не удается записать параметры пользователя, так как файл был изменен. Сохраните файл параметров пользователя и повторите попытку.", + "errorConfigurationFileDirtyWorkspace": "Не удается записать параметры рабочей области, так как файл был изменен. Сохраните файл параметров рабочей области и повторите попытку. ", + "errorConfigurationFileDirtyFolder": "Не удается записать параметры папки, так как файл был изменен. Сохраните файл параметров папки '{0}' и повторите попытку.", "userTarget": "Параметры пользователя", "workspaceTarget": "Параметры рабочей области", "folderTarget": "Параметры папок" diff --git a/i18n/rus/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/rus/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index 8d9d6a48ce3..e54214e4027 100644 --- a/i18n/rus/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/rus/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "Описание эмблемы.", "vscode.extension.extensionDependencies": "Зависимости от других расширений. Идентификатор расширения — всегда ${publisher}.${name}. Например: vscode.csharp.", "vscode.extension.scripts.prepublish": "Скрипт, выполняемый перед публикацией пакета в качестве расширения VS Code.", + "vscode.extension.scripts.uninstall": "Удалить обработчик для расширения VS Code. Скрипт, который выполняется после полного удаления расширения из VS Code, когда VS Code перезапускается (выключается и запускается) после удаления расширения. Поддерживаются только скрипты Node.", "vscode.extension.icon": "Путь к значку размером 128 x 128 пикселей." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 4093385ee52..bd6cb49d41e 100644 --- a/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/rus/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -9,5 +9,8 @@ "installNet": "Скачать .NET Framework 4.5", "neverShowAgain": "Больше не показывать", "netVersionError": "Требуется платформа Microsoft .NET Framework 4.5. Нажмите ссылку, чтобы установить ее.", + "learnMore": "Инструкции", + "enospcError": "В {0} закончились дескрипторы файлов. Для решения проблемы воспользуйтесь ссылкой на инструкции.", + "binFailed": "Не удалось переместить \"{0}\" в корзину", "trashFailed": "Не удалось переместить \"{0}\" в корзину." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/rus/src/vs/workbench/services/files/node/fileService.i18n.json index 10de0847f46..041ccc58fa5 100644 --- a/i18n/rus/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/rus/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,6 +9,7 @@ "fileInvalidPath": "Недопустимый ресурс файла ({0})", "fileIsDirectoryError": "Файл является каталогом", "fileNotModifiedError": "undefined", + "fileTooLargeForHeapError": "Размер файла превышает объем памяти окна, попробуйте выполнить код с параметром --max-memory=новый_объем_памяти", "fileTooLargeError": "Не удается открыть файл, так как он имеет слишком большой размер", "fileNotFoundError": "Файл не найден ({0})", "fileBinaryError": "Похоже, файл является двоичным, и его нельзя открыть как текстовый.", diff --git a/i18n/rus/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json b/i18n/rus/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json index 95a41ac3a1d..a5b5df9f70c 100644 --- a/i18n/rus/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json +++ b/i18n/rus/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json @@ -6,5 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "errorKeybindingsFileDirty": "Не удается записать файл конфигурации сочетаний клавиш, так как файл был изменен. Сохраните файл и повторите попытку.", + "parseErrors": "Не удается записать файл конфигурации сочетаний клавиш. Откройте файл, исправьте ошибки и предупреждения и повторите попытку.", + "errorInvalidConfiguration": "Не удалось записать файл конфигурации сочетаний клавиш. Этот файл содержит объект, тип которого отличен от Array. Откройте файл, удалите этот объект и повторите попытку.", "emptyKeybindingsHeader": "Поместите настраиваемые сочетания клавиш в этот файл, чтобы перезаписать клавиши по умолчанию." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json b/i18n/rus/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json index de14cc0084d..52a5a5e9b5c 100644 --- a/i18n/rus/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json +++ b/i18n/rus/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json @@ -9,6 +9,9 @@ "schema.token.settings": "Цвета и стили для маркера.", "schema.token.foreground": "Цвет переднего плана для маркера.", "schema.token.background.warning": "Цвет фона маркера сейчас не поддерживается.", + "schema.token.fontStyle": "Стиль шрифта для правила: 'italic', 'bold', 'underline' или их сочетание. Если указана пустая строка, то унаследованные настройки отменяются.", + "schema.fontStyle.error": "Стиль шрифта может иметь значения 'italic', 'bold' и 'underline', сочетание этих свойств или содержать пустую строку.", + "schema.token.fontStyle.none": "Нет (очистить унаследованный стиль)", "schema.properties.name": "Описание правила.", "schema.properties.scope": "Переключатель области, для которой проверяется это правило.", "schema.tokenColors.path": "Путь к файлу tmTheme (относительно текущего файла).", diff --git a/i18n/rus/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json b/i18n/rus/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json index 6a0caa4e26a..680471e1ac0 100644 --- a/i18n/rus/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json +++ b/i18n/rus/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "errorInvalidTaskConfiguration": "Не удается записать файл конфигурации рабочей области. Откройте файл, исправьте ошибки и предупреждения и повторите попытку.", - "errorWorkspaceConfigurationFileDirty": "Не удается записать файл конфигурации рабочей области, так как файл был изменен. Сохраните файл и повторите попытку." + "errorWorkspaceConfigurationFileDirty": "Не удается записать файл конфигурации рабочей области, так как файл был изменен. Сохраните файл и повторите попытку.", + "openWorkspaceConfigurationFile": "Открыть конфигурацию рабочей области" } \ No newline at end of file diff --git a/i18n/trk/extensions/bat/package.i18n.json b/i18n/trk/extensions/bat/package.i18n.json index 35229bd6699..6bf2c73d4dd 100644 --- a/i18n/trk/extensions/bat/package.i18n.json +++ b/i18n/trk/extensions/bat/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Windows Bat Dil Temelleri", + "description": "Windows batch dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/clojure/package.i18n.json b/i18n/trk/extensions/clojure/package.i18n.json index 35229bd6699..2572ac70fb3 100644 --- a/i18n/trk/extensions/clojure/package.i18n.json +++ b/i18n/trk/extensions/clojure/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Clojure Dil Temelleri", + "description": "Clojure dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/coffeescript/package.i18n.json b/i18n/trk/extensions/coffeescript/package.i18n.json index 35229bd6699..e0e25085df9 100644 --- a/i18n/trk/extensions/coffeescript/package.i18n.json +++ b/i18n/trk/extensions/coffeescript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "CoffeeScript Dil Temelleri", + "description": "CoffeeScript dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/configuration-editing/package.i18n.json b/i18n/trk/extensions/configuration-editing/package.i18n.json index b62c78b846c..3cd37f51aad 100644 --- a/i18n/trk/extensions/configuration-editing/package.i18n.json +++ b/i18n/trk/extensions/configuration-editing/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Yapılandırma Düzenleme", - "description": "Ayarlar, başlatma, önerilen eklenti dosyaları gibi yapılandırma dosyalarında gelişmiş kod tamamlama (intelli-sense), otomatik düzeltme gibi yetenekler sağlar" + "description": "Ayarlar, başlatma, önerilen eklenti dosyaları gibi yapılandırma dosyalarında gelişmiş kod tamamlama (IntelliSense), otomatik düzeltme gibi yetenekler sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/cpp/package.i18n.json b/i18n/trk/extensions/cpp/package.i18n.json index 35229bd6699..5cc9d44b99d 100644 --- a/i18n/trk/extensions/cpp/package.i18n.json +++ b/i18n/trk/extensions/cpp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C/C++ Dil Temelleri", + "description": "C/C++ dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/csharp/package.i18n.json b/i18n/trk/extensions/csharp/package.i18n.json index 35229bd6699..5cc0540a102 100644 --- a/i18n/trk/extensions/csharp/package.i18n.json +++ b/i18n/trk/extensions/csharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "C# Dil Temelleri", + "description": "C# dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/css/package.i18n.json b/i18n/trk/extensions/css/package.i18n.json index fdcabcf4ece..16d27b93d73 100644 --- a/i18n/trk/extensions/css/package.i18n.json +++ b/i18n/trk/extensions/css/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "CSS Dili Özellikleri", + "description": "CSS, LESS, SCSS dosyaları için zengin dil desteği sağlar.", "css.title": "CSS", "css.lint.argumentsInColorFunction.desc": "Geçersiz sayıda parametre", "css.lint.boxModel.desc": "Doldurma veya kenarlık kullanırken genişlik veya yükseklik kullanmayın", diff --git a/i18n/trk/extensions/docker/package.i18n.json b/i18n/trk/extensions/docker/package.i18n.json index 35229bd6699..c1d50a16c53 100644 --- a/i18n/trk/extensions/docker/package.i18n.json +++ b/i18n/trk/extensions/docker/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Docker Dil Temelleri", + "description": "Docker dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/emmet/package.i18n.json b/i18n/trk/extensions/emmet/package.i18n.json index 3ff640e7d9d..f11753f3076 100644 --- a/i18n/trk/extensions/emmet/package.i18n.json +++ b/i18n/trk/extensions/emmet/package.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "VS Code için Emmet desteği", "command.wrapWithAbbreviation": "Kısaltma ile Sarmala", "command.wrapIndividualLinesWithAbbreviation": "Her Bir Satırı Kısaltma ile Sarmala", "command.removeTag": "Etiketi Kaldır", diff --git a/i18n/trk/extensions/extension-editing/package.i18n.json b/i18n/trk/extensions/extension-editing/package.i18n.json index 8d007203b30..5a79e5fc185 100644 --- a/i18n/trk/extensions/extension-editing/package.i18n.json +++ b/i18n/trk/extensions/extension-editing/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Paket Dosyası Düzenleme" + "displayName": "Paket Dosyası Düzenleme", + "description": "package.json dosyalarında VS Code eklenti noktaları için gelişmiş kod tamamlama(IntelliSense) ve doğrulama yetenekleri sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/fsharp/package.i18n.json b/i18n/trk/extensions/fsharp/package.i18n.json index 35229bd6699..a8bda6cee3e 100644 --- a/i18n/trk/extensions/fsharp/package.i18n.json +++ b/i18n/trk/extensions/fsharp/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "F# Dil Temelleri", + "description": "F# dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/go/package.i18n.json b/i18n/trk/extensions/go/package.i18n.json index 35229bd6699..2343407bc9e 100644 --- a/i18n/trk/extensions/go/package.i18n.json +++ b/i18n/trk/extensions/go/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Go Dil Temelleri", + "description": "Go dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/groovy/package.i18n.json b/i18n/trk/extensions/groovy/package.i18n.json index 35229bd6699..76d58aa3cc5 100644 --- a/i18n/trk/extensions/groovy/package.i18n.json +++ b/i18n/trk/extensions/groovy/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Groovy Dil Temelleri", + "description": "Groovy dosyaları için kod parçacıkları, söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/handlebars/package.i18n.json b/i18n/trk/extensions/handlebars/package.i18n.json index 35229bd6699..a682e230854 100644 --- a/i18n/trk/extensions/handlebars/package.i18n.json +++ b/i18n/trk/extensions/handlebars/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Handlebars Dil Temelleri", + "description": "Handlebars dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/hlsl/package.i18n.json b/i18n/trk/extensions/hlsl/package.i18n.json index 35229bd6699..c0f8cb84f31 100644 --- a/i18n/trk/extensions/hlsl/package.i18n.json +++ b/i18n/trk/extensions/hlsl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "HLSL Dil Temelleri", + "description": "HLSL dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/html/package.i18n.json b/i18n/trk/extensions/html/package.i18n.json index 00e0da3830a..6cae077d9f9 100644 --- a/i18n/trk/extensions/html/package.i18n.json +++ b/i18n/trk/extensions/html/package.i18n.json @@ -29,5 +29,6 @@ "html.trace.server.desc": "VS Code ve HTML dil sunucusu arasındaki iletişimi izler.", "html.validate.scripts": "Yerleşik HTML dili desteğinin HTML5 gömülü betikleri doğrulayıp doğrulamayacağını yapılandırır.", "html.validate.styles": "Yerleşik HTML dili desteğinin HTML5 gömülü stilleri doğrulayıp doğrulamayacağını yapılandırır.", + "html.experimental.syntaxFolding": "Sözdimine duyarlı katlama işaretleyicilerini etkinleştirin/devre dışı bırakın.", "html.autoClosingTags": "HTML etiketlerinin otomatik kapatılmasını etkinleştirin/devre dışı bırakın" } \ No newline at end of file diff --git a/i18n/trk/extensions/ini/package.i18n.json b/i18n/trk/extensions/ini/package.i18n.json index 35229bd6699..8713ec61257 100644 --- a/i18n/trk/extensions/ini/package.i18n.json +++ b/i18n/trk/extensions/ini/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ini Dil Temelleri", + "description": "Ini dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/java/package.i18n.json b/i18n/trk/extensions/java/package.i18n.json index 35229bd6699..567ade67dd6 100644 --- a/i18n/trk/extensions/java/package.i18n.json +++ b/i18n/trk/extensions/java/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Java Dil Temelleri", + "description": "Java dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/javascript/package.i18n.json b/i18n/trk/extensions/javascript/package.i18n.json index 35229bd6699..4c96222a248 100644 --- a/i18n/trk/extensions/javascript/package.i18n.json +++ b/i18n/trk/extensions/javascript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "JavaScript Dil Temelleri", + "description": "JavaScript dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/less/package.i18n.json b/i18n/trk/extensions/less/package.i18n.json index 35229bd6699..a97348b7a7b 100644 --- a/i18n/trk/extensions/less/package.i18n.json +++ b/i18n/trk/extensions/less/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Less Dil Temelleri", + "description": "Less dosyaları için söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/log/package.i18n.json b/i18n/trk/extensions/log/package.i18n.json index 9fc9909b78f..bbb9f4811b7 100644 --- a/i18n/trk/extensions/log/package.i18n.json +++ b/i18n/trk/extensions/log/package.i18n.json @@ -7,5 +7,5 @@ "Do not edit this file. It is machine generated." ], "displayName": "Günlük", - "description": "Uzantısı .log olan dosyalarda Sözdizimi vurgulama özelliği sağlar" + "description": ".log uzantılı dosyalar için söz dizimi vurgulama özelliği sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/lua/package.i18n.json b/i18n/trk/extensions/lua/package.i18n.json index 35229bd6699..7ae08a135c8 100644 --- a/i18n/trk/extensions/lua/package.i18n.json +++ b/i18n/trk/extensions/lua/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Lua Dil Temelleri", + "description": "Lua dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/make/package.i18n.json b/i18n/trk/extensions/make/package.i18n.json index 35229bd6699..3d9a608fb39 100644 --- a/i18n/trk/extensions/make/package.i18n.json +++ b/i18n/trk/extensions/make/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Make Dil Temelleri", + "description": "Make dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/markdown-basics/package.i18n.json b/i18n/trk/extensions/markdown-basics/package.i18n.json new file mode 100644 index 00000000000..c24d4dc7691 --- /dev/null +++ b/i18n/trk/extensions/markdown-basics/package.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "displayName": "Markdown Dil Temelleri", + "description": "Markdown için kod parçacıkları ve söz dizimi vurgulama sağlar." +} \ No newline at end of file diff --git a/i18n/trk/extensions/markdown/out/features/preview.i18n.json b/i18n/trk/extensions/markdown/out/features/preview.i18n.json new file mode 100644 index 00000000000..3a5b0eca0e2 --- /dev/null +++ b/i18n/trk/extensions/markdown/out/features/preview.i18n.json @@ -0,0 +1,11 @@ +{ + "": [ + "--------------------------------------------------------------------------------------------", + "Copyright (c) Microsoft Corporation. All rights reserved.", + "Licensed under the MIT License. See License.txt in the project root for license information.", + "--------------------------------------------------------------------------------------------", + "Do not edit this file. It is machine generated." + ], + "lockedPreviewTitle": "[Önizleme] {0}", + "previewTitle": "{0} Önizlemesi" +} \ No newline at end of file diff --git a/i18n/trk/extensions/markdown/out/features/previewContentProvider.i18n.json b/i18n/trk/extensions/markdown/out/features/previewContentProvider.i18n.json index 2e0a7ba51d9..76db8cd58cf 100644 --- a/i18n/trk/extensions/markdown/out/features/previewContentProvider.i18n.json +++ b/i18n/trk/extensions/markdown/out/features/previewContentProvider.i18n.json @@ -8,7 +8,5 @@ ], "preview.securityMessage.text": "Bu belgedeki bazı içerikler devre dışı bırakıldı", "preview.securityMessage.title": "Markdown önizlemesinde potansiyel olarak tehlikeli veya güvenli olmayan içerik devre dışı bırakıldı. Güvenli olmayan içeriğe izin vermek veya betikleri etkinleştirmek için Markdown önizleme güvenlik ayarını değiştirin", - "preview.securityMessage.label": "İçerik Devre Dışı Güvenlik Uyarısı", - "pinnedPreviewTitle": "[Önizleme] {0}", - "previewTitle": "{0} Önizlemesi" + "preview.securityMessage.label": "İçerik Devre Dışı Güvenlik Uyarısı" } \ No newline at end of file diff --git a/i18n/trk/extensions/markdown/package.i18n.json b/i18n/trk/extensions/markdown/package.i18n.json index f1c31bd1f95..c7a539dac45 100644 --- a/i18n/trk/extensions/markdown/package.i18n.json +++ b/i18n/trk/extensions/markdown/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Markdown Dili Özellikleri", + "description": "Markdown için zengin dil desteği sağlar.", "markdown.preview.breaks.desc": "Markdown önizlemesinde satır sonlarının nasıl gösterileceğini ayarlar. 'true' olarak ayarlamak, her yeni satırda bir
oluşturur.", "markdown.preview.linkify": "Markdown önizlemesinde URL benzeri metinlerin bağlantıya çevrilmesini etkinleştir veya devre dışı bırak.", "markdown.preview.doubleClickToSwitchToEditor.desc": "Düzenleyiciye geçiş yapmak için Markdown önizlemesine çift tıklayın.", @@ -16,12 +17,16 @@ "markdown.preview.markEditorSelection.desc": "Markdown önizlemesinde geçerli düzenleyici seçimini işaretle.", "markdown.preview.scrollEditorWithPreview.desc": "Markdown önizlemesi kaydırıldığında, düzenleyicinin görünümünü güncelle.", "markdown.preview.scrollPreviewWithEditor.desc": "Markdown düzenleyicisi kaydırıldığında, önizlemenin görünümünü güncelle.", + "markdown.preview.scrollPreviewWithEditorSelection.desc": "[Kullanım Dışı] Düzenleyicide seçili satırın görünmesi için Markdown önizlemesini kaydırır.", + "markdown.preview.scrollPreviewWithEditorSelection.deprecationMessage": "Bu ayar 'markdown.preview.scrollPreviewWithEditor' ile değiştirildi ve artık hiçbir etkisi bulunmamaktadır.", "markdown.preview.title": "Önizlemeyi Aç", "markdown.previewFrontMatter.dec": "YAML ön maddesinin Markdown önizlemesinde nasıl gösterilmesi gerektiğini ayarlar. 'hide' ön maddeyi kaldırır. Diğer türlü; ön madde, Markdown içeriği olarak sayılır.", "markdown.previewSide.title": "Önizlemeyi Yana Aç", + "markdown.showLockedPreviewToSide.title": "Kilitlenmiş Önizlemeyi Yana Aç", "markdown.showSource.title": "Kaynağı Göster", "markdown.styles.dec": "Markdown önizlemesinde kullanılmak üzere CSS stil dosyalarını işaret eden bir URL'ler veya yerel yollar listesi. Göreli yollar, gezginde açılan klasöre göreli olarak yorumlanır.", "markdown.showPreviewSecuritySelector.title": "Önizleme Güvenlik Ayarlarını Değiştir", "markdown.trace.desc": "Markdown eklentisi için hata ayıklama günlüğünü etkinleştir.", - "markdown.refreshPreview.title": "Önizlemeyi Yenile" + "markdown.preview.refresh.title": "Önizlemeyi Yenile", + "markdown.preview.toggleLock.title": "Önizleme Kilitlemeyi Aç/Kapat" } \ No newline at end of file diff --git a/i18n/trk/extensions/merge-conflict/package.i18n.json b/i18n/trk/extensions/merge-conflict/package.i18n.json index 32843beb737..e3eba21dddf 100644 --- a/i18n/trk/extensions/merge-conflict/package.i18n.json +++ b/i18n/trk/extensions/merge-conflict/package.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "displayName": "Birleştirme Çakışması", + "description": "Satır içi birleştirme çakışmaları için vurgulama ve komutlar.", "command.category": "Birleştirme Çakışması", "command.accept.all-current": "Mevcut Olan Tümünü Kabul Et", "command.accept.all-incoming": "Gelen Tümünü Kabul Et", diff --git a/i18n/trk/extensions/npm/package.i18n.json b/i18n/trk/extensions/npm/package.i18n.json index cc7602ffc90..12bf174d1ff 100644 --- a/i18n/trk/extensions/npm/package.i18n.json +++ b/i18n/trk/extensions/npm/package.i18n.json @@ -6,9 +6,13 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "description": "Npm betikleri için görev desteği sağlayacak eklenti.", "displayName": "VSCode için npm desteği", "config.npm.autoDetect": "Npm betiklerinin otomatik olarak algılanıp algılanmayacağını denetler. Varsayılan olarak açıktır.", "config.npm.runSilent": "npm komutlarını `--silent`(sessiz) seçeneğiyle çalıştır.", "config.npm.packageManager": "Betikleri çalıştırmada kullanılacak paket yöneticisi.", - "npm.parseError": "Npm görev algılama: {0} dosyası ayrıştırılamadı" + "config.npm.exclude": "Otomatik betik algılamadan hariç tutulacak klasörler için glob desenlerini yapılandırın.", + "npm.parseError": "Npm görev algılama: {0} dosyası ayrıştırılamadı", + "taskdef.script": "Özelleştirilecek npm betiği.", + "taskdef.path": "Betiği sağlayan package.json dosyasını içeren klasör yolu. Atlanabilir." } \ No newline at end of file diff --git a/i18n/trk/extensions/objective-c/package.i18n.json b/i18n/trk/extensions/objective-c/package.i18n.json index 35229bd6699..7ddc4caced5 100644 --- a/i18n/trk/extensions/objective-c/package.i18n.json +++ b/i18n/trk/extensions/objective-c/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Objective-C Dil Temelleri", + "description": "Objective-C dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/perl/package.i18n.json b/i18n/trk/extensions/perl/package.i18n.json index 35229bd6699..d3149bf6562 100644 --- a/i18n/trk/extensions/perl/package.i18n.json +++ b/i18n/trk/extensions/perl/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Perl Dil Temelleri", + "description": "Perl dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/php/package.i18n.json b/i18n/trk/extensions/php/package.i18n.json index b854e4679a7..dbcdfc169f6 100644 --- a/i18n/trk/extensions/php/package.i18n.json +++ b/i18n/trk/extensions/php/package.i18n.json @@ -12,5 +12,7 @@ "configuration.validate.run": "Doğrulayıcının kayıt esnasında mı tuşlama esnasında mı çalışacağı.", "configuration.title": "PHP", "commands.categroy.php": "PHP", - "command.untrustValidationExecutable": "PHP doğrulama yürütülebilir dosyasına izin verme (çalışma alanı ayarı olarak tanımlanır)" + "command.untrustValidationExecutable": "PHP doğrulama yürütülebilir dosyasına izin verme (çalışma alanı ayarı olarak tanımlanır)", + "displayName": "PHP Dil Özellikleri", + "description": "PHP dosyaları için gelişmiş kod tamamlama(IntelliSense), doğrulama ve dil temelleri sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/powershell/package.i18n.json b/i18n/trk/extensions/powershell/package.i18n.json index 35229bd6699..fcfc93a438b 100644 --- a/i18n/trk/extensions/powershell/package.i18n.json +++ b/i18n/trk/extensions/powershell/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Powershell Dil Temelleri", + "description": "Powershell dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/pug/package.i18n.json b/i18n/trk/extensions/pug/package.i18n.json index 35229bd6699..3f2416760bc 100644 --- a/i18n/trk/extensions/pug/package.i18n.json +++ b/i18n/trk/extensions/pug/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Pug Dil Temelleri", + "description": "Pug dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/python/package.i18n.json b/i18n/trk/extensions/python/package.i18n.json index 35229bd6699..cbe9b3cc295 100644 --- a/i18n/trk/extensions/python/package.i18n.json +++ b/i18n/trk/extensions/python/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Python Dil Temelleri", + "description": "Python dosyaları için söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/r/package.i18n.json b/i18n/trk/extensions/r/package.i18n.json index 35229bd6699..c1873b042a0 100644 --- a/i18n/trk/extensions/r/package.i18n.json +++ b/i18n/trk/extensions/r/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "R Dil Temelleri", + "description": "R dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/razor/package.i18n.json b/i18n/trk/extensions/razor/package.i18n.json index 35229bd6699..b97a89a157f 100644 --- a/i18n/trk/extensions/razor/package.i18n.json +++ b/i18n/trk/extensions/razor/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Razor Dil Temelleri", + "description": "Razor dosyaları için söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/ruby/package.i18n.json b/i18n/trk/extensions/ruby/package.i18n.json index 35229bd6699..22cf0a8bc53 100644 --- a/i18n/trk/extensions/ruby/package.i18n.json +++ b/i18n/trk/extensions/ruby/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Ruby Dil Temelleri", + "description": "Ruby dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/rust/package.i18n.json b/i18n/trk/extensions/rust/package.i18n.json index 35229bd6699..0d9b2ff22f9 100644 --- a/i18n/trk/extensions/rust/package.i18n.json +++ b/i18n/trk/extensions/rust/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Rust Dil Temelleri", + "description": "Rust dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/scss/package.i18n.json b/i18n/trk/extensions/scss/package.i18n.json index 35229bd6699..588851aae27 100644 --- a/i18n/trk/extensions/scss/package.i18n.json +++ b/i18n/trk/extensions/scss/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SCSS Dil Temelleri", + "description": "SCSS dosyaları için söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/shaderlab/package.i18n.json b/i18n/trk/extensions/shaderlab/package.i18n.json index 35229bd6699..678227c86e9 100644 --- a/i18n/trk/extensions/shaderlab/package.i18n.json +++ b/i18n/trk/extensions/shaderlab/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shaderlab Dil Temelleri", + "description": "Shaderlab dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/shellscript/package.i18n.json b/i18n/trk/extensions/shellscript/package.i18n.json index 35229bd6699..58c5cdc5f3c 100644 --- a/i18n/trk/extensions/shellscript/package.i18n.json +++ b/i18n/trk/extensions/shellscript/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Shell Script Dil Temelleri", + "description": "Shell Script dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/sql/package.i18n.json b/i18n/trk/extensions/sql/package.i18n.json index 35229bd6699..788ab43c24d 100644 --- a/i18n/trk/extensions/sql/package.i18n.json +++ b/i18n/trk/extensions/sql/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "SQL Dil Temelleri", + "description": "SQL dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/swift/package.i18n.json b/i18n/trk/extensions/swift/package.i18n.json index 35229bd6699..1969cabe2b8 100644 --- a/i18n/trk/extensions/swift/package.i18n.json +++ b/i18n/trk/extensions/swift/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Swift Dil Temelleri", + "description": "Swift dosyaları için kod parçacıkları, söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-abyss/package.i18n.json b/i18n/trk/extensions/theme-abyss/package.i18n.json index 78c20299242..c3cde68785a 100644 --- a/i18n/trk/extensions/theme-abyss/package.i18n.json +++ b/i18n/trk/extensions/theme-abyss/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Abyss Teması" + "displayName": "Abyss Teması", + "description": "Visual Studio Code için Abyss teması" } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-defaults/package.i18n.json b/i18n/trk/extensions/theme-defaults/package.i18n.json index 73bc7efe710..52dcb980e12 100644 --- a/i18n/trk/extensions/theme-defaults/package.i18n.json +++ b/i18n/trk/extensions/theme-defaults/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Varsayılan Temalar" + "displayName": "Varsayılan Temalar", + "description": "Varsayılan açık ve koyu temalar (Plus ve Visual Studio)" } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-kimbie-dark/package.i18n.json b/i18n/trk/extensions/theme-kimbie-dark/package.i18n.json index 44e4fda8301..f729474095e 100644 --- a/i18n/trk/extensions/theme-kimbie-dark/package.i18n.json +++ b/i18n/trk/extensions/theme-kimbie-dark/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Kimbie Dark Teması" + "displayName": "Kimbie Dark Teması", + "description": "Visual Studio Code için Kimbie Dark teması" } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-monokai/package.i18n.json b/i18n/trk/extensions/theme-monokai/package.i18n.json index 5553dcf880c..95c8cb28561 100644 --- a/i18n/trk/extensions/theme-monokai/package.i18n.json +++ b/i18n/trk/extensions/theme-monokai/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Monokai Teması" + "displayName": "Monokai Teması", + "description": "Visual Studio Code için Monokai teması" } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-quietlight/package.i18n.json b/i18n/trk/extensions/theme-quietlight/package.i18n.json index f5f4f98706a..441909f8c6c 100644 --- a/i18n/trk/extensions/theme-quietlight/package.i18n.json +++ b/i18n/trk/extensions/theme-quietlight/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Quiet Light Teması" + "displayName": "Quiet Light Teması", + "description": "Visual Studio Code için Quiet Light teması" } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-red/package.i18n.json b/i18n/trk/extensions/theme-red/package.i18n.json index 35229bd6699..de0f11ce126 100644 --- a/i18n/trk/extensions/theme-red/package.i18n.json +++ b/i18n/trk/extensions/theme-red/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Red Teması", + "description": "Visual Studio Code için Red teması" } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-seti/package.i18n.json b/i18n/trk/extensions/theme-seti/package.i18n.json index 980e18b0d70..21b0389fcc7 100644 --- a/i18n/trk/extensions/theme-seti/package.i18n.json +++ b/i18n/trk/extensions/theme-seti/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Seti Dosya Simgesi Teması" + "displayName": "Seti Dosya Simgesi Teması", + "description": "Seti UI dosya simgelerinden yapılmış bir dosya simge teması" } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-solarized-dark/package.i18n.json b/i18n/trk/extensions/theme-solarized-dark/package.i18n.json index 5513a3fd64e..4a991dba9de 100644 --- a/i18n/trk/extensions/theme-solarized-dark/package.i18n.json +++ b/i18n/trk/extensions/theme-solarized-dark/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Solarized Dark Teması" + "displayName": "Solarized Dark Teması", + "description": "Visual Studio Code için Solarized Dark teması" } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-solarized-light/package.i18n.json b/i18n/trk/extensions/theme-solarized-light/package.i18n.json index f960f773b02..dc7cd9342ed 100644 --- a/i18n/trk/extensions/theme-solarized-light/package.i18n.json +++ b/i18n/trk/extensions/theme-solarized-light/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Solarized Light Teması" + "displayName": "Solarized Light Teması", + "description": "Visual Studio Code için Solarized Light teması" } \ No newline at end of file diff --git a/i18n/trk/extensions/theme-tomorrow-night-blue/package.i18n.json b/i18n/trk/extensions/theme-tomorrow-night-blue/package.i18n.json index afafbe882c8..918f89ab378 100644 --- a/i18n/trk/extensions/theme-tomorrow-night-blue/package.i18n.json +++ b/i18n/trk/extensions/theme-tomorrow-night-blue/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "Tomorrow Night Blue Teması" + "displayName": "Tomorrow Night Blue Teması", + "description": "Visual Studio Code için Tomorrow Night Blue teması" } \ No newline at end of file diff --git a/i18n/trk/extensions/typescript-basics/package.i18n.json b/i18n/trk/extensions/typescript-basics/package.i18n.json index 97567e1a32f..bc6e9285885 100644 --- a/i18n/trk/extensions/typescript-basics/package.i18n.json +++ b/i18n/trk/extensions/typescript-basics/package.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "displayName": "TypeScript Dil Temelleri" + "displayName": "TypeScript Dil Temelleri", + "description": "TypeScript dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/typescript/package.i18n.json b/i18n/trk/extensions/typescript/package.i18n.json index cf4ed8887c2..58f0a5a249c 100644 --- a/i18n/trk/extensions/typescript/package.i18n.json +++ b/i18n/trk/extensions/typescript/package.i18n.json @@ -56,5 +56,6 @@ "typescript.locale": "TypeScript hatalarını bildirirken kullanılarak dili(bölgeyi) ayarlar. TypeScript >= 2.6.0 gerektirir. 'null' varsayılanı, TypeScript hataları için VS Code'un dil(bölge) ayarlarını kullanır.", "javascript.implicitProjectConfig.experimentalDecorators": "Bir projenin parçası olmayan JavaScript dosyaları için deneysel dekoratörler ('experimentalDecorators') özelliğini etkinleştir veya devre dışı bırak. Mevcut jsconfig.json veya tsconfig.json dosyaları bu ayarı geçersiz kılar. TypeScript >= 2.3.1 gerektirir.", "typescript.autoImportSuggestions.enabled": "Otomatik içe aktarım önerilerini etkinleştir/devre dışı bırak. TypeScript >= 2.6.1 gerektirir.", - "typescript.experimental.syntaxFolding": "Sözdizimi duyarlı katlama işaretçilerini etkinleştirin/devre dışı bırakın." + "typescript.experimental.syntaxFolding": "Sözdizimi duyarlı katlama işaretçilerini etkinleştirin/devre dışı bırakın.", + "taskDefinition.tsconfig.description": "TS derlemesini tanımlayan tsconfig dosyası." } \ No newline at end of file diff --git a/i18n/trk/extensions/vb/package.i18n.json b/i18n/trk/extensions/vb/package.i18n.json index 35229bd6699..6129c6cf9bf 100644 --- a/i18n/trk/extensions/vb/package.i18n.json +++ b/i18n/trk/extensions/vb/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "Visual Basic Dil Temelleri", + "description": "Visual Basic dosyaları için kod parçacıkları, söz dizimi vurgulama, ayraç eşleştirme ve katlama sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/xml/package.i18n.json b/i18n/trk/extensions/xml/package.i18n.json index 35229bd6699..753147c11b1 100644 --- a/i18n/trk/extensions/xml/package.i18n.json +++ b/i18n/trk/extensions/xml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "XML Dil Temelleri", + "description": "XML dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/extensions/yaml/package.i18n.json b/i18n/trk/extensions/yaml/package.i18n.json index 35229bd6699..4aa6fd72d2a 100644 --- a/i18n/trk/extensions/yaml/package.i18n.json +++ b/i18n/trk/extensions/yaml/package.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "displayName": "YAML Dil Temelleri", + "description": "YAML dosyaları için söz dizimi vurgulama ve ayraç eşleştirme sağlar." } \ No newline at end of file diff --git a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json index c49abbf15bf..9a43ba50fdf 100644 --- a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json +++ b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterMain.i18n.json @@ -7,13 +7,22 @@ "Do not edit this file. It is machine generated." ], "previewOnGitHub": "GitHub'da Önizle", + "loadingData": "Veri yükleniyor...", "similarIssues": "Benzer sorunlar", "open": "Aç", + "closed": "Kapalı", "noResults": "Sonuç bulunamadı", + "settingsSearchIssue": "Ayar Arama Sorunu", "bugReporter": "Hata Raporu", "performanceIssue": "Performans Sorunu", "featureRequest": "Özellik İsteği", "stepsToReproduce": "Yeniden oluşturma adımları", + "bugDescription": "Sorunu güvenilir şekilde yeniden oluşturmak için gerekli adımları paylaşın. Lütfen gerçekleşen ve beklenen sonuçları ekleyin. GitHub-tarzı Markdown'ı destekliyoruz. GitHub'da önizleme yaptığımızda sorununuzu düzenleyebilecek ve ekran görüntüleri ekleyebileceksiniz.", + "performanceIssueDesciption": "Bu performans sorunu ne zaman oluştu? Başlangıçta mı yoksa belirli eylemlerden sonra mı oluşuyor? GitHub-tarzı Markdown'ı destekliyoruz. GitHub'da önizleme yaptığımızda sorununuzu düzenleyebilecek ve ekran görüntüleri ekleyebileceksiniz.", "description": "Açıklama", + "featureRequestDescription": "Lütfen görmek istediğiniz özelliği açıklayın. GitHub-tarzı Markdown'ı destekliyoruz. GitHub'da önizleme yaptığımızda sorununuzu düzenleyebilecek ve ekran görüntüleri ekleyebileceksiniz.", + "expectedResults": "Beklenen Sonuçlar", + "settingsSearchResultsDescription": "Lütfen bu sorgu ile arama yaptığınızda beklediğiniz sonuçları listeleyin. GitHub-tarzı Markdown'ı destekliyoruz. GitHub'da önizleme yaptığımızda sorununuzu düzenleyebilecek ve ekran görüntüleri ekleyebileceksiniz.", + "pasteData": "İhtiyaç duyulan veri gönderilemeyecek kadar büyük olduğu için, bu veriyi panonuza kopyaladık. Lütfen yapıştırın.", "disabledExtensions": "Eklentiler devre dışı" } \ No newline at end of file diff --git a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json index 62bc8fce865..0045409477d 100644 --- a/i18n/trk/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json +++ b/i18n/trk/src/vs/code/electron-browser/issue/issueReporterPage.i18n.json @@ -7,16 +7,24 @@ "Do not edit this file. It is machine generated." ], "completeInEnglish": "Lütfen formu İngilizce olarak doldurunuz.", + "issueTypeLabel": "Bu bir", "issueTitleLabel": "Başlık", "issueTitleRequired": "Lütfen bir başlık girin.", + "titleLengthValidation": "Başlık çok uzun.", "systemInfo": "Sistem Bilgilerim", "sendData": "Verilerimi gönder", "processes": "Şu Anda Çalışan İşlemler", "workspaceStats": "Çalışma Alanı İstatistiklerim", "extensions": "Eklentilerim", + "searchedExtensions": "Aranan Eklentiler", + "settingsSearchDetails": "Ayar Arama Detayları", "tryDisablingExtensions": "Eklentiler devre dışı bırakıldığında sorun yeniden oluşturulabiliyor mu?", "yes": "Evet", "no": "Hayır", + "disableExtensionsLabelText": "Sorunu {0} sonrasında yeniden oluşturmaya çalışın.", "disableExtensions": "tüm eklentileri devre dışı bırakıp pencereyi yeniden yükleyin", + "showRunningExtensionsLabelText": "Bunun bir eklenti sorunu olduğundan şüpheleniyorsanız, eklentideki sorunu bildirmek için {0}.", + "showRunningExtensions": "çalışan tüm eklentileri göster", + "details": "Lütfen detayları giriniz.", "loadingData": "Veri yükleniyor..." } \ No newline at end of file diff --git a/i18n/trk/src/vs/code/electron-main/logUploader.i18n.json b/i18n/trk/src/vs/code/electron-main/logUploader.i18n.json index b1da8e09337..46016d747af 100644 --- a/i18n/trk/src/vs/code/electron-main/logUploader.i18n.json +++ b/i18n/trk/src/vs/code/electron-main/logUploader.i18n.json @@ -9,6 +9,10 @@ "invalidEndpoint": "Geçersiz günlük yükleme uçbirimi", "beginUploading": "Karşıya yükleniyor...", "didUploadLogs": "Yükleme başarılı! Günlük dosyası ID'si: {0}", + "logUploadPromptHeader": "Oturum günlüklerinizi sadece VS Code takımının Microsoft üyelerince erişilebilecek güvenli bir Microsoft uçbirimine yüklemek üzeresiniz.", + "logUploadPromptBody": "Oturum günlükleri, tam yollar ve dosya içerikleri gibi kişisel bilgiler içerebilir. Lütfen oturum günlüklerinizi şuradan inceleyin ve düzenleme yapın: '{0}'", + "logUploadPromptBodyDetails": "Devam ederek oturum günlük dosyalarınızın Microsoft tarafından VS Code'un hatalarının ayıklanmasında kullanılması için incelediğinizi ve düzenlemelerinizi yaptığınızı onaylıyorsunuz.", + "logUploadPromptAcceptInstructions": "Yüklemeye devam etmek için lütfen code'u '--upload-logs={0}' ile çalıştırın", "postError": "Günlükler gönderilirken hata oluştu: {0}", "responseError": "Günlükler gönderilirken hata oluştu: {0} alındı — {1}", "parseError": "Cevap ayrıştırılamadı", diff --git a/i18n/trk/src/vs/code/electron-main/menus.i18n.json b/i18n/trk/src/vs/code/electron-main/menus.i18n.json index 8b7375c7657..9196e669e0d 100644 --- a/i18n/trk/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/trk/src/vs/code/electron-main/menus.i18n.json @@ -93,6 +93,7 @@ "miOpenView": "&&Görünümü Aç...", "miToggleFullScreen": "Tam Ekra&&nı Aç/Kapat", "miToggleZenMode": "Zen Modunu Aç/Kapat", + "miToggleCenteredLayout": "Ortalanmış Düzeni Aç/Kapat", "miToggleMenuBar": "&&Menü Çubuğunu Gizle/Göster", "miSplitEditor": "Düzenleyiciyi &&Böl", "miToggleEditorLayout": "Dü&&zenleyici Grubu Düzenini Değiştir", diff --git a/i18n/trk/src/vs/code/electron-main/window.i18n.json b/i18n/trk/src/vs/code/electron-main/window.i18n.json index 35229bd6699..3238dacea6a 100644 --- a/i18n/trk/src/vs/code/electron-main/window.i18n.json +++ b/i18n/trk/src/vs/code/electron-main/window.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hiddenMenuBar": "Menü çubuğuna hâlâ Alt tuşuna basarak erişebilirsiniz." } \ No newline at end of file diff --git a/i18n/trk/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json b/i18n/trk/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json index 5d60bc44625..9f87cfce521 100644 --- a/i18n/trk/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json +++ b/i18n/trk/src/vs/platform/extensionManagement/node/extensionManagementService.i18n.json @@ -12,6 +12,9 @@ "override": "Geçersiz Kıl", "cancel": "İptal", "errorInstallingDependencies": "Bağımlılıklar yüklenirken hata oluştu. {0}", + "MarketPlaceDisabled": "Market etkin değil", + "removeError": "Eklenti kaldırılırken hata oluştu: {0}. Yeniden yüklemeden önce lütfen VS Code'dan çıkın ve tekrar açın.", + "Not Market place extension": "Sadece Market Eklentileri yeniden yüklenebilir", "notFoundCompatible": "'{0}' yüklenemiyor; VS Code '{1}' ile uyumlu mevcut bir sürümü yok.", "malicious extension": "Eklenti sorunlu olarak bildirildiği için yüklenemiyor.", "notFoundCompatibleDependency": "Yükleme başarısız oldu çünkü, bağımlılığı bulunan '{0}' eklentisinin uyumlu olduğu VS Code'un '{1}' sürümü bulunamadı.", diff --git a/i18n/trk/src/vs/platform/theme/common/colorRegistry.i18n.json b/i18n/trk/src/vs/platform/theme/common/colorRegistry.i18n.json index 39b98d79aef..1135da6951e 100644 --- a/i18n/trk/src/vs/platform/theme/common/colorRegistry.i18n.json +++ b/i18n/trk/src/vs/platform/theme/common/colorRegistry.i18n.json @@ -79,6 +79,8 @@ "hoverBackground": "Düzenleyici bağlantı vurgusunun arka plan rengi.", "hoverBorder": "Düzenleyici bağlantı vurgusunun kenarlık rengi.", "activeLinkForeground": "Aktif bağlantıların rengi.", + "diffEditorInserted": "Eklenmiş metin için arka plan rengi. Altta yer alan süslemeleri gizlememek için renk opak olmamalıdır.", + "diffEditorRemoved": "Kaldırılmış metin için arka plan rengi. Altta yer alan süslemeleri gizlememek için renk opak olmamalıdır.", "diffEditorInsertedOutline": "Eklenen metnin ana hat rengi.", "diffEditorRemovedOutline": "Çıkarılan metnin ana hat rengi.", "mergeCurrentHeaderBackground": "Satır içi birleştirme çakışmalarında \"mevcut olan\" üstbilgisi arka planı. Altta yer alan süslemeleri gizlememek için renk opak olmamalıdır.", diff --git a/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json index 62bb4975ad5..465bcf90b54 100644 --- a/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json +++ b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadMessageService.i18n.json @@ -6,6 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "extensionSource": "{0} (Eklenti)", "defaultSource": "Eklenti", "manageExtension": "Eklentiyi Yönet", "cancel": "İptal", diff --git a/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json index 35229bd6699..4c6d2775a03 100644 --- a/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json +++ b/i18n/trk/src/vs/workbench/api/electron-browser/mainThreadWebview.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "webview.editor.label": "web görünümü düzenleyicisi" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json b/i18n/trk/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json index 35229bd6699..be3c5de903c 100644 --- a/i18n/trk/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json +++ b/i18n/trk/src/vs/workbench/api/node/extHostExtensionActivator.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "unknownDep": "'{1}' eklentisi etkinleştirilemedi. Neden: bilinmeyen bağımlılık '{0}'.", + "failedDep1": "'{1}' eklentisi etkinleştirilemedi. Neden: bağımlılık '{0}' etkinleştirilemedi.", + "failedDep2": "'{0}' eklentisi etkinleştirilemedi. Neden: 10'dan fazla bağımlılık düzeyi (büyük olasılıkla bağımlılık döngüsü).", + "activationError": "'{0}' eklentisi etkinleştirilemedi: {1}." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json b/i18n/trk/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json index fed5a431308..c4e35172967 100644 --- a/i18n/trk/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/actions/toggleCenteredLayout.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "toggleCenteredLayout": "Ortalanmış Düzeni Aç/Kapat", "view": "Görüntüle" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json index e74d6339b56..00ae5c22030 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/editor/editor.contribution.i18n.json @@ -19,12 +19,14 @@ "close": "Kapat", "closeOthers": "Diğerlerini Kapat", "closeRight": "Sağdakileri Kapat", + "closeAllSaved": "Kaydedilenleri Kapat", "closeAll": "Tümünü Kapat", "keepOpen": "Açık Tut", "toggleInlineView": "Satır İçi Görünümü Aç/Kapat", "showOpenedEditors": "Açık Düzenleyicileri Göster", "keepEditor": "Düzenleyiciyi Tut", "closeEditorsInGroup": "Gruptaki Tüm Düzenleyicileri Kapat", + "closeSavedEditors": "Gruptaki Kaydedilmiş Düzenleyicileri Kapat", "closeOtherEditors": "Diğer Düzenleyicileri Kapat", "closeRightEditors": "Düzenleyicinin Sağındakileri Kapat" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json index 35229bd6699..705cd56a0bc 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsActions.i18n.json @@ -5,5 +5,12 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "clearNotification": "Bildirimi Temizle", + "clearNotifications": "Tüm Bildirimleri Temizle", + "hideNotificationsCenter": "Bildirimleri Gizle", + "expandNotification": "Bildirimi Genişlet", + "collapseNotification": "Bildirimi Daralt", + "configureNotification": "Bildirimi Yapılandır", + "copyNotification": "Metni Kopyala" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json index 35229bd6699..320cb9f421d 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCenter.i18n.json @@ -5,5 +5,8 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "Bildirimler", + "notificationsToolbar": "Bildirim Merkezi Eylemleri", + "notificationsList": "Bildirim Listesi" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json index 35229bd6699..05d19266308 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsCommands.i18n.json @@ -5,5 +5,9 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notifications": "Bildirimler", + "showNotifications": "Bildirimleri Göster", + "hideNotifications": "Bildirimleri Gizle", + "clearAllNotifications": "Tüm Bildirimleri Temizle" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json index 35229bd6699..7add4db416e 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsStatus.i18n.json @@ -5,5 +5,10 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "hideNotifications": "Bildirimleri Gizle", + "zeroNotifications": "Bildirim Yok", + "noNotifications": "Yeni Bildirim Yok", + "oneNotification": "1 Yeni Bildirim", + "notifications": "{0} Yeni Bildirim" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json index 35229bd6699..3a0f8735d68 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsToasts.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationsToast": "Bildirim Kutusu" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json index 35229bd6699..887069497f3 100644 --- a/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json +++ b/i18n/trk/src/vs/workbench/browser/parts/notifications/notificationsViewer.i18n.json @@ -5,5 +5,7 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "notificationActions": "Bildirim Eylemleri", + "notificationSource": "Kaynak: {0}" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/common/theme.i18n.json b/i18n/trk/src/vs/workbench/common/theme.i18n.json index 95fbb405883..760791b1fb8 100644 --- a/i18n/trk/src/vs/workbench/common/theme.i18n.json +++ b/i18n/trk/src/vs/workbench/common/theme.i18n.json @@ -58,5 +58,13 @@ "titleBarInactiveForeground": "Pencere pasifken başlık çubuğu ön planı. Bu rengin sadece macOS'da destekleneceğini unutmayın.", "titleBarActiveBackground": "Pencere aktifken başlık çubuğu arka planı. Bu rengin sadece macOS'da destekleneceğini unutmayın.", "titleBarInactiveBackground": "Pencere pasifken başlık çubuğu arka planı. Bu rengin sadece macOS'da destekleneceğini unutmayın.", - "titleBarBorder": "Başlık çubuğu kenarlık rengi. Bu rengin sadece macOS'da destekleneceğini unutmayın." + "titleBarBorder": "Başlık çubuğu kenarlık rengi. Bu rengin sadece macOS'da destekleneceğini unutmayın.", + "notificationCenterBorder": "Bildirim merkezi kenarlık rengi. Bildirimler pencerenin sağ alt kısmından kayarak içeri girer.", + "notificationToastBorder": "Bildirim kutusu kenarlık rengi. Bildirimler pencerenin sağ alt kısmından kayarak içeri girer.", + "notificationsForeground": "Bildirim ön plan rengi. Bildirimler pencerenin sağ alt kısmından kayarak içeri girer.", + "notificationsBackground": "Bildirim arka plan rengi. Bildirimler pencerenin sağ alt kısmından kayarak içeri girer.", + "notificationsLink": "Bildirim linkleri ön plan rengi. Bildirimler pencerenin sağ alt kısmından kayarak içeri girer.", + "notificationCenterHeaderForeground": "Bildirim merkezi üstbilgi ön plan rengi. Bildirimler pencerenin sağ alt kısmından kayarak içeri girer.", + "notificationCenterHeaderBackground": "Bildirim merkezi üstbilgi arka plan rengi. Bildirimler pencerenin sağ alt kısmından kayarak içeri girer.", + "notificationsBorder": "Bildirim merkezinde bildirimleri diğer bildirimlerden ayıracak kenarlık rengi. Bildirimler pencerenin sağ alt kısmından kayarak içeri girer." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/common/views.i18n.json b/i18n/trk/src/vs/workbench/common/views.i18n.json index 35229bd6699..08f2962090b 100644 --- a/i18n/trk/src/vs/workbench/common/views.i18n.json +++ b/i18n/trk/src/vs/workbench/common/views.i18n.json @@ -5,5 +5,6 @@ "Licensed under the MIT License. See License.txt in the project root for license information.", "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." - ] + ], + "duplicateId": "'{0}' kimliğine sahip bir görünüm '{1}' konumunda zaten kayıtlı" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/electron-browser/actions.i18n.json b/i18n/trk/src/vs/workbench/electron-browser/actions.i18n.json index 45dc78fea68..62ba73ec28b 100644 --- a/i18n/trk/src/vs/workbench/electron-browser/actions.i18n.json +++ b/i18n/trk/src/vs/workbench/electron-browser/actions.i18n.json @@ -18,6 +18,7 @@ "zoomReset": "Yakınlaştırmayı Sıfırla", "appPerf": "Başlangıç Performansı", "reloadWindow": "Pencereyi Yeniden Yükle", + "reloadWindowWithExntesionsDisabled": "Pencereyi Eklentiler Devre Dışı Olarak Yeniden Başlat", "switchWindowPlaceHolder": "Geçilecek pencereyi seçin", "current": "Geçerli Pencere", "close": "Pencereyi Kapat", @@ -48,5 +49,6 @@ "moveWindowTabToNewWindow": "Pencere Sekmesini Yeni Pencereye Taşı", "mergeAllWindowTabs": "Tüm Pencereleri Birleştir", "toggleWindowTabsBar": "Pencere Sekmeleri Çubuğunu Gizle/Göster", - "about": "{0} Hakkında" + "about": "{0} Hakkında", + "inspect context keys": "Bağlam Anahtarlarını Denetle" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json b/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json index 6bdd102db6e..c69d16c0b90 100644 --- a/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/electron-browser/main.contribution.i18n.json @@ -35,6 +35,7 @@ "panelDefaultLocation": "Panelin varsayılan konumunu denetler. Çalışma ekranının ya altında ya da sağında gösterilebilir.", "statusBarVisibility": "Çalışma ekranının altındaki durum çubuğunun görünürlüğünü denetler.", "activityBarVisibility": "Çalışma ekranındaki etkinlik çubuğunun görünürlüğünü denetler.", + "viewVisibility": "Görünüm üstbilgi eylemlerinin görünürlüğünü denetler. Görünüm üstbilgi eylemleri ya her zaman görünür ya da sadece o görünüme odaklanıldığında veya fareyle üzerine gelindiğinde görünebilir.", "fontAliasing": "Çalışma ekranındaki yazı tipi yumuşatma yöntemini denetler.\n- default: Alt-piksel yazı tipi yumuşatma. Bu, çoğu retina olmayan ekranda en keskin metni verir\n- antialiased: Alt-pikselin tersine, pikselin seviyesine göre yazı tipini yumuşat. Yazı tipinin genel olarak daha açık görünmesini sağlayabilir\n- none: Yazı tipi yumuşatmayı devre dışı bırakır. Metin pürüzlü keskin kenarlarla gösterilir.\n- auto: Ekranların DPI'ına göre otomatik olarak `default` veya`antialiased`ı uygular.", "workbench.fontAliasing.default": "Alt-piksel yazı tipi yumuşatma. Bu, çoğu retina olmayan ekranda en keskin metni verir.", "workbench.fontAliasing.antialiased": "Alt-pikselin tersine, pikselin seviyesine göre yazı tipini yumuşat. Yazı tipinin genel olarak daha açık görünmesini sağlayabilir.", @@ -75,6 +76,7 @@ "window.nativeTabs": "macOS Sierra pencere sekmelerini etkinleştirir. Değişikliklerin uygulanması için tam yeniden başlatma gerekeceğini ve yerel sekmelerin, eğer yapılandırılmışsa özel başlık çubuğu stilini devre dışı bıracağını unutmayın.", "zenModeConfigurationTitle": "Zen Modu", "zenMode.fullScreen": "Zen Moduna geçmenin ayrıca çalışma ekranını tam ekran moduna geçirip geçirmeyeceğini denetler.", + "zenMode.centerLayout": "Zen Modu'nun aktif edilmesinin düzeni ortalayıp ortalamayacağını denetler.", "zenMode.hideTabs": "Zen Moduna geçmenin ayrıca çalışma ekranı sekmelerini gizleyip gizlemeyeceğini denetler.", "zenMode.hideStatusBar": "Zen Moduna geçmenin ayrıca çalışma ekranının altındaki durum çubuğunu gizleyip gizlemeyeceğini denetler.", "zenMode.hideActivityBar": "Zen Moduna geçmenin ayrıca çalışma ekranının solundaki etkinlik çubuğunu gizleyip gizlemeyeceğini denetler.", diff --git a/i18n/trk/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json index 6f729c44540..7be66e01426 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/browser/breakpointsView.i18n.json @@ -10,6 +10,10 @@ "functionBreakpointsNotSupported": "Fonksiyon kesme noktaları bu hata ayıklama türü tarafından desteklenmiyor", "functionBreakpointPlaceholder": "Mola verilecek fonksiyon", "functionBreakPointInputAriaLabel": "Fonksiyon kesme noktasını girin", + "breakpointDisabledHover": "Devre dışı bırakılmış kesme noktası", + "breakpointUnverifieddHover": "Doğrulanmamış kesme noktası", + "functionBreakpointUnsupported": "Fonksiyon kesme noktaları bu hata ayıklama türü tarafından desteklenmiyor", "breakpointDirtydHover": "Doğrulanmamış Kesme Noktası Dosya düzenlendi, lütfen hata ayıklama oturumunu yeniden başlatın.", - "conditionalBreakpointUnsupported": "Koşullu kesme noktaları bu hata ayıklama türü tarafından desteklenmiyor" + "conditionalBreakpointUnsupported": "Koşullu kesme noktaları bu hata ayıklama türü tarafından desteklenmiyor", + "hitBreakpointUnsupported": "Koşullu kesme noktalarına isabet etme bu hata ayıklama türü tarafından desteklenmiyor" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json index 9a0a5f4eacc..193b6038cb4 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/browser/debugCommands.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "noFolderDebugConfig": "Gelişmiş hata ayıklama yapılandırması yapmak için lütfen ilk olarak bir klasör açın.", + "columnBreakpoint": "Sütun Kesme Noktası", "debug": "Hata Ayıklama", "addColumnBreakpoint": "Sütun Kesme Noktası Ekle" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json index db7e77d66a8..febccb3860d 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/browser/debugContentProvider.i18n.json @@ -6,5 +6,6 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "unable": "Hata ayıklama oturumu olmadan kaynak çözümlenemiyor" + "unable": "Hata ayıklama oturumu olmadan kaynak çözümlenemiyor", + "canNotResolveSource": "{0} kaynağı çözümlenemedi, hata ayıklama eklentisi yanıt vermedi." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json index c177d5df060..4c75dbda268 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debug.contribution.i18n.json @@ -26,6 +26,6 @@ "always": "Hata ayıklamayı durum çubuğunda her zaman göster", "onFirstSessionStart": "Hata ayıklamayı sadece ilk kez başladıktan sonra durum çubuğunda göster", "showInStatusBar": "Hata ayıklama durum çubuğunun ne zaman görünür olacağını denetler", - "openDebug": "Hata ayıklama viewlet'ının, hata ayıklama oturumu başlangıcında açılıp açılmayacağını denetler.", + "openDebug": "Hata ayıklama görünümünün, hata ayıklama oturumu başlangıcında açılıp açılmayacağını denetler.", "launch": "Global hata ayıklama başlatma yapılandırması. Çalışma alanlarında paylaşılan 'launch.json'a alternatif olarak kullanılmalıdır" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index 4cd24fc3499..af1679c27ae 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -14,9 +14,11 @@ "breakpointRemoved": "Kesme noktası kaldırıldı, {0}. satır, {1} dosyası", "compoundMustHaveConfigurations": "Bileşik, birden çok yapılandırmayı başlatmak için \"configurations\" özniteliği bulundurmalıdır.", "noConfigurationNameInWorkspace": "Çalışma alanında '{0}' başlatma yapılandırması bulunamadı.", + "multipleConfigurationNamesInWorkspace": "Çalışma alanında birden fazla '{0}' başlatma yapılandırması var. Yapılandırmayı belirtmek için klasör adını kullanın.", "noFolderWithName": "'{2}' bileşiğindeki '{1}' yapılandırması için '{0}' adlı klasör bulunamadı.", "configMissing": "'launch.json' dosyasında '{0}' yapılandırması eksik.", "launchJsonDoesNotExist": "'launch.json' mevcut değil.", + "debugRequestNotSupported": "Seçilen hata ayıklama yapılandırılmasındaki '{0}' özniteliği desteklenmeyen '{1}' değeri içeriyor.", "debugRequesMissing": "'{0}' özniteliği seçilen hata ayıklama yapılandırılmasında eksik.", "debugTypeNotSupported": "Yapılandırılan hata ayıklama türü '{0}', desteklenmiyor.", "debugTypeMissing": "Seçilen başlatma yapılandırması için 'type' özelliği eksik.", diff --git a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json index cdf7a070bcf..3e237227946 100644 --- a/i18n/trk/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/debug/electron-browser/electronDebugActions.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "copyValue": "Değeri Kopyala", + "copyAsExpression": "İfade Olarak Kopyala", "copy": "Kopyala", "copyAll": "Tümünü Kopyala", "copyStackTrace": "Çağrı Yığınını Kopyala" diff --git a/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json index dea89ce93a0..e72bf637256 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionEditor.i18n.json @@ -46,6 +46,8 @@ "defaultLight": "Açık Varsayılan", "defaultHC": "Yüksek Karşıtlık Varsayılan", "JSON Validation": "JSON Doğrulama ({0})", + "fileMatch": "Dosya Eşleşmesi", + "schema": "Şema", "commands": "Komutlar ({0})", "command name": "Adı", "keyboard shortcuts": "Klavye Kısayolları", diff --git a/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index e7aaf5f6ff5..ed1393cf726 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -6,12 +6,16 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "download": "Manuel Olarak İndir", + "install vsix": "İndirildiğinde lütfen '{0}' ögesinin indirilen VSIX dosyasını manuel olarak yükleyin.", "installAction": "Yükle", "installing": "Yükleniyor", + "failedToInstall": "'{0}' yüklenemedi.", "uninstallAction": "Kaldır", "Uninstalling": "Kaldırılıyor", "updateAction": "Güncelle", "updateTo": "{0} sürümüne güncelle", + "failedToUpdate": "'{0}' güncellenemedi.", "ManageExtensionAction.uninstallingTooltip": "Kaldırılıyor", "enableForWorkspaceAction": "Etkinleştir (Çalışma Alanı)", "enableGloballyAction": "Etkinleştir", @@ -38,6 +42,7 @@ "showInstalledExtensions": "Yüklenen Eklentileri Göster", "showDisabledExtensions": "Devre Dışı Bırakılan Eklentileri Göster", "clearExtensionsInput": "Eklenti Girdisini Temizle", + "showBuiltInExtensions": "Yerleşik Eklentileri Göster", "showOutdatedExtensions": "Eski Eklentileri Göster", "showPopularExtensions": "Popüler Eklentileri Göster", "showRecommendedExtensions": "Tavsiye Edilen Eklentileri Göster", @@ -55,6 +60,18 @@ "malicious": "Kötü amaçlı", "disableAll": "Yüklü Tüm Eklentileri Devre Dışı Bırak", "disableAllWorkspace": "Bu Çalışma Alanı için Yüklü Tüm Eklentileri Devre Dışı Bırak", + "enableAll": "Tüm Eklentileri Etkinleştir", + "enableAllWorkspace": "Bu Çalışma Alanı için Tüm Eklentileri Etkinleştir", + "openExtensionsFolder": "Eklentiler Klasörünü Aç", + "installVSIX": "VSIX'ten yükle...", + "installFromVSIX": "VSIX'den Yükle", + "installButton": "&&Yükle", + "InstallVSIXAction.success": "Eklenti başarıyla yüklendi. Etkinleştirmek için pencereyi yeniden yükleyin.", + "InstallVSIXAction.reloadNow": "Şimdi Yeniden Yükle", + "reinstall": "Eklentiyi Yeniden Yükle...", + "selectExtension": "Yeniden Yüklenecek Eklentiyi Seçin", + "ReinstallAction.success": "Eklenti başarıyla yeniden yüklendi.", + "ReinstallAction.reloadNow": "Şimdi Yeniden Yükle", "extensionButtonProminentBackground": "Dikkat çeken eklenti eylemleri için buton arka plan rengi (ör. yükle butonu)", "extensionButtonProminentForeground": "Dikkat çeken eklenti eylemleri için buton ön plan rengi (ör. yükle butonu)", "extensionButtonProminentHoverBackground": "Dikkat çeken eklenti eylemleri için buton bağlantı vurgusu arka plan rengi (ör. yükle butonu)" diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json index 4d48823a9c7..31455f2520d 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionProfileService.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "restart1": "Eklentileri Ayrımla", + "restart2": "Eklentileri ayrımlamak için yeniden başlatma gereklidir. '{0}'u yeniden başlatmak istiyor musunuz?", "restart3": "Yeniden Başlat", "cancel": "İptal", "selectAndStartDebug": "Ayrımlamayı durdurmak için tıklayın." diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json index fd0ad46cea9..f497a3c8bb1 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.i18n.json @@ -8,6 +8,8 @@ ], "neverShowAgain": "Tekrar Gösterme", "searchMarketplace": "Marketi Ara", + "showLanguagePackExtensions": "Markette VS Code'un '{0}' diline çevrilmesine yardımcı olabilecek eklentiler bulunuyor", + "dynamicWorkspaceRecommendation": "Bu eklenti {0} deposundaki kullanıcılar arasında popüler olduğu için ilginizi çekebilir.", "exeBasedRecommendation": "Bu eklenti, sizde {0} kurulu olduğu için tavsiye ediliyor.", "fileBasedRecommendation": "Bu eklenti yakınlarda açtığınız dosyalara dayanarak tavsiye ediliyor.", "workspaceRecommendation": "Bu eklenti geçerli çalışma alanı kullanıcıları tarafından tavsiye ediliyor.", diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index fff1a21a45b..dd252153c0e 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -15,5 +15,6 @@ "developer": "Geliştirici", "extensionsConfigurationTitle": "Eklentiler", "extensionsAutoUpdate": "Eklentileri otomatik olarak güncelle", - "extensionsIgnoreRecommendations": "\"Doğru\" olarak ayarlanırsa, eklenti tavsiyeleri bildirimleri artık gösterilmez." + "extensionsIgnoreRecommendations": "\"Doğru\" olarak ayarlanırsa, eklenti tavsiyeleri bildirimleri artık gösterilmez.", + "extensionsShowRecommendationsOnlyOnDemand": "Doğru olarak ayarlanırsa, kullanıcı tarafından özel olarak istenmedikçe tavsiyeler alınmaz ve gösterilmez." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json index 8a7b64b5ad3..89dc18d2bf1 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.i18n.json @@ -12,6 +12,7 @@ "recommendedExtensions": "Tavsiye Edilen", "otherRecommendedExtensions": "Diğer Tavsiyeler", "workspaceRecommendedExtensions": "Çalışma Alanı Tavsiyeleri", + "builtInExtensions": "Yerleşik", "searchExtensions": "Markette Eklenti Ara", "sort by installs": "Sırala: Yüklenme Sayısına Göre", "sort by rating": "Sırala: Derecelendirmeye Göre", diff --git a/i18n/trk/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json b/i18n/trk/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json index 1a7aa8d959a..e8da73abc2b 100644 --- a/i18n/trk/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.i18n.json @@ -10,6 +10,7 @@ "malicious": "Bu eklentinin sorunlu olduğu bildirildi.", "installingMarketPlaceExtension": "Marketten eklenti yükleniyor...", "uninstallingExtension": "Eklenti kaldırılıyor...", + "enableDependeciesConfirmation": "'{0}' eklentisini etkinleştirdiğinizde onun bağımlılıkları da etkinleştirilir. Devam etmek istiyor musunuz?", "enable": "Evet", "doNotEnable": "Hayır", "disableDependeciesConfirmation": "Yalnızca '{0}' eklentisini mi devre dışı bırakmak istersiniz yoksa bağımlılıklarını da devre dışı bırakmak ister misiniz?", diff --git a/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json index a3475bf7462..c82aabc8a92 100644 --- a/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.i18n.json @@ -29,6 +29,7 @@ "compareSelected": "Seçilenle Karşılaştır", "close": "Kapat", "closeOthers": "Diğerlerini Kapat", + "closeSaved": "Kaydedilenleri Kapat", "closeAll": "Tümünü Kapat", "deleteFile": "Kalıcı Olarak Sil" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json b/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json index 3559272c492..be5917d3287 100644 --- a/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/files/electron-browser/fileActions.i18n.json @@ -39,6 +39,8 @@ "importFiles": "Dosya İçe Aktar", "confirmOverwrite": "Hedef klasörde aynı ada sahip bir dosya veya klasör zaten var. Değiştirmek istiyor musunuz?", "replaceButtonLabel": "&&Değiştir", + "fileIsAncestor": "Yapıştırılacak dosya hedef klasörün atalarından biridir", + "fileDeleted": "Yapıştırılacak dosya bu arada silindi veya taşındı", "duplicateFile": "Çoğalt", "globalCompareFile": "Aktif Dosyayı Karşılaştır...", "openFileToCompare": "Bir başka dosya ile karşılaştırmak için ilk olarak bir dosya açın.", diff --git a/i18n/trk/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json b/i18n/trk/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json index 921a363b49e..ba53583a6bd 100644 --- a/i18n/trk/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/files/electron-browser/saveErrorHandler.i18n.json @@ -6,6 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "userGuide": "Değişikliklerinizi geri almak veya diskteki içeriğin üzerine yazmak için düzenleyicideki araç çubuğundaki eylemleri kullanabilirsiniz.", + "staleSaveError": "'{0}' kaydedilemedi: Diskteki içerik daha yeni. Lütfen sizdeki sürüm ile disktekini karşılaştırın.", "retry": "Yeniden Dene", "discard": "At", "readonlySaveErrorAdmin": "'{0}' kaydedilemedi: Dosya yazmaya karşı korunuyor. Yönetici olarak denemek için 'Yönetici Olarak Üzerine Yaz'ı seçin.", diff --git a/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json b/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json index 1467957dbed..5c93c1866ca 100644 --- a/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerDecorationsProvider.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "label": "Gezgin", - "canNotResolve": "Çalışma alanı klasörü çözümlenemiyor" + "canNotResolve": "Çalışma alanı klasörü çözümlenemiyor", + "symbolicLlink": "Sembolik Link" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json b/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json index 0f152512cf0..cc968719081 100644 --- a/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.i18n.json @@ -7,6 +7,7 @@ "Do not edit this file. It is machine generated." ], "fileInputAriaLabel": "Dosya adı girin. Onaylamak için Enter'a, iptal etmek için Escape tuşuna basın.", + "constructedPath": "**{1}** içinde {0} oluştur", "filesExplorerViewerAriaLabel": "{0}, Dosya Gezgini", "dropFolders": "Klasörleri çalışma alanına eklemek istiyor musunuz?", "dropFolder": "Klasörü çalışma alanına eklemek istiyor musunuz?", diff --git a/i18n/trk/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json b/i18n/trk/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json index c6dd1ea1b79..cb54b2131e6 100644 --- a/i18n/trk/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/html/browser/webviewCommands.i18n.json @@ -6,5 +6,7 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], - "editor.action.webvieweditor.showFind": "Bulma Aracına Odakla" + "editor.action.webvieweditor.showFind": "Bulma Aracına Odakla", + "openToolsLabel": "Web Görünümü Geliştirici Araçlarını Aç", + "refreshWebviewLabel": "Web Görünümlerini Yeniden Yükle" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json b/i18n/trk/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json index 8aa0346aaa1..d594b47dfcb 100644 --- a/i18n/trk/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/logs/electron-browser/logsActions.i18n.json @@ -15,6 +15,7 @@ "mainProcess": "Temel", "selectProcess": "İşlem için Günlük Seçin", "openLogFile": "Günlük Dosyasını Aç...", + "setLogLevel": "Günlük Düzeyini Ayarla...", "trace": "İzle", "debug": "Hata Ayıklama", "info": "Bilgi", diff --git a/i18n/trk/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json b/i18n/trk/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json index 15272cac9b7..1cd086b7e38 100644 --- a/i18n/trk/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/preferences/browser/keybindingsEditor.i18n.json @@ -20,6 +20,7 @@ "showSameKeybindings": "Aynı Tuş Bağlarını Göster", "copyLabel": "Kopyala", "copyCommandLabel": "Komutu Kopyala", + "error": "Tuş bağını düzenlerken '{0}' hatası. Lütfen 'keybindings.json' dosyasını açın ve hataları kontrol edin.", "command": "Command", "keybinding": "Tuş bağı", "source": "Kaynak", diff --git a/i18n/trk/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json b/i18n/trk/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json index b9d8e4271bf..ed723b554b6 100644 --- a/i18n/trk/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/quickopen/browser/commandsHandler.i18n.json @@ -12,6 +12,7 @@ "entryAriaLabelWithKey": "{0}, {1}, komutlar", "entryAriaLabel": "{0}, komutlar", "actionNotEnabled": "'{0}' komutu geçerli bağlamda etkin değil.", + "canNotRun": "'{0}' komutu hata ile sonuçlandı.", "recentlyUsed": "yakınlarda kullanıldı", "morecCommands": "diğer komutlar", "cat.title": "{0}: {1}", diff --git a/i18n/trk/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json b/i18n/trk/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json index 1caa41a3ab0..0b56ea19d5b 100644 --- a/i18n/trk/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.i18n.json @@ -10,6 +10,8 @@ "change": "{0}/{1} değişiklik", "show previous change": "Önceki Değişikliği Göster", "show next change": "Sonraki Değişikliği Göster", + "move to previous change": "Önceki Değişikliğe Git", + "move to next change": "Sonraki Değişikliğe Git", "editorGutterModifiedBackground": "Değiştirilen satırlar için düzenleyici oluğu arka plan rengi.", "editorGutterAddedBackground": "Eklenen satırlar için düzenleyici oluğu arka plan rengi.", "editorGutterDeletedBackground": "Silinen satırlar için düzenleyici oluğu arka plan rengi.", diff --git a/i18n/trk/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json index 4487758c401..486ac598226 100644 --- a/i18n/trk/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/scm/electron-browser/scm.contribution.i18n.json @@ -12,5 +12,6 @@ "view": "Görüntüle", "scmConfigurationTitle": "SCM", "alwaysShowProviders": "Kaynak Kontrolü Sağlayıcısı bölümünün her zaman gösterilip gösterilmeyeceği.", - "diffDecorations": "Düzenleyicideki farklar(diff) dekoratörlerini denetler." + "diffDecorations": "Düzenleyicideki farklar(diff) dekoratörlerini denetler.", + "diffGutterWidth": "Oluktaki farklar(diff) dekoratörlerinin (eklendi & düzenlendi) genişliğini(px) denetler." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json b/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json index 9d26d8a4591..fc38590cc30 100644 --- a/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/search/browser/searchView.i18n.json @@ -30,6 +30,7 @@ "removeAll.occurrences.files.confirmation.message": "{1} dosyadaki {0} tekralama '{2}' ile değiştirilsin mi?", "replaceAll.occurrences.files.confirmation.message": "{1} dosyadaki {0} tekrarlama değiştirilsin mi?", "treeAriaLabel": "Arama Sonuçları", + "searchPathNotFoundError": "Arama yolu bulunamadı: {0}", "searchMaxResultsWarning": "Sonuç kümesi yalnızca tüm eşleşmelerin bir alt kümesini içerir. Lütfen sonuçları daraltmak için aramanızda daha fazla ayrıntı belirtin.", "searchCanceled": "Arama, hiçbir sonuç bulunamadan iptal edildi - ", "noResultsIncludesExcludes": "'{0}' içinde '{1}' hariç tutularak sonuç bulunamadı - ", diff --git a/i18n/trk/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json index 5b8c8c6d6ea..63b497714c2 100644 --- a/i18n/trk/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/search/electron-browser/search.contribution.i18n.json @@ -25,5 +25,6 @@ "search.quickOpen.includeSymbols": "Dosya sonuçlarındaki bir global sembol aramasının sonuçlarının Hızlı Aç'a dahil edilip edilmeyeceğini yapılandırın.", "search.followSymlinks": "Arama yaparken sembolik linklerin takip edilip edilmeyeceğini denetler.", "search.smartCase": "Örüntü tamamen küçük harflerden oluşuyorsa büyük küçük harf duyarlılığı olmadan arar, diğer durumda ise büyük küçük harf duyarlılığı ile arar", - "search.globalFindClipboard": "macOS'de Arama Görünümünün paylaşılan panoyu okuyup okumamasını veya değiştirip değiştirmemesini denetler" + "search.globalFindClipboard": "macOS'de arama görünümünün paylaşılan panoyu okuyup okumamasını veya değiştirip değiştirmemesini denetler", + "search.location": "Önizleme: aramanın kenar çubuğunda bir görünüm olarak mı yoksa daha fazla yatay boşluk için panel alanında bir panel olarak mı gösterileceğini denetler. Bir sonraki sürümde paneldeki arama, geliştirilmiş yatay düzene sahip olacak ve bu bir önizleme olmaktan çıkacaktır." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 423e8e292e2..1d0ce65d0fb 100644 --- a/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -28,6 +28,8 @@ "selectProblemMatcher": "Görev çıktısında taranacak hata ve uyarı türlerini seçin", "customizeParseErrors": "Geçerli görev yapılandırmasında hatalar var. Lütfen, bir görevi özelleştirmeden önce ilk olarak hataları düzeltin.", "moreThanOneBuildTask": "tasks.json dosyasında tanımlı çok fazla derleme görevi var. İlk görev çalıştırılıyor.", + "TaskSystem.activeSame.background": "'{0}' görevi zaten aktif ve arka plan modunda. Görevi sonlandırmak için Görevler menüsünden 'Görevi Sonlandır...'ı kullanın.", + "TaskSystem.activeSame.noBackground": " '{0}' görevi zaten aktif. Görevi sonlandırmak için Görevler menüsünden 'Görevi Sonlandır...'ı kullanın. ", "TaskSystem.active": "Çalışan bir görev zaten var. Bir başkasını çalıştırmadan önce bu görevi sonlandırın.", "TaskSystem.restartFailed": "{0} görevini sonlandırma ve yeniden başlatma başarısız oldu", "TaskService.noConfiguration": "Hata: {0} görev algılaması aşağıdaki yapılandırma için bir görev eklemesi yapmıyor:\n{1}\nYapılandırma yok sayılacaktır.\n", @@ -44,6 +46,7 @@ "recentlyUsed": "yakınlarda kullanılan görevler", "configured": "yapılandırılmış görevler", "detected": "algılanan görevler", + "TaskService.ignoredFolder": "0.1.0 görev sürümünü kullandıkları için şu çalışma alanı klasörleri yok sayıldı: {0}", "TaskService.notAgain": "Tekrar Gösterme", "TaskService.pickRunTask": "Çalıştırılacak görevi seçin", "TaslService.noEntryToRun": "Çalıştırılacak hiçbir görev bulunamadı. Görevleri Yapılandır...", diff --git a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json index 70b35e3951b..25ed67b4e80 100644 --- a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.i18n.json @@ -20,10 +20,13 @@ "terminal.integrated.fontFamily": "Terminalin yazı tipi ailesini denetler; bu, varsayılan olarak editor.fontFamily'nin değeridir.", "terminal.integrated.fontSize": "Terminaldeki yazı tipi boyutunu piksel olarak denetler.", "terminal.integrated.lineHeight": "Terminalin satır yüksekliğini denetler, bu sayı gerçek satır yüksekliğini piksel olarak elde etmek için terminal yazı tipi boyutu ile çarpılır.", + "terminal.integrated.fontWeight": "Terminalde kalın olmayan metinler için kullanılacak yazı tipi kalınlığı.", + "terminal.integrated.fontWeightBold": "Terminalde kalın metinler için kullanılacak yazı tipi kalınlığı.", "terminal.integrated.cursorBlinking": "Terminaldeki imlecin yanıp sönmesini denetler.", "terminal.integrated.cursorStyle": "Terminaldeki imlecin stilini denetler.", "terminal.integrated.scrollback": "Terminalin tamponunda tuttuğu maksimum satır sayısını denetler.", "terminal.integrated.setLocaleVariables": "Terminal başlangıcında yereli içeren değişkenlerin ayarlanıp ayarlanmayacağını denetler; bu, OS X'de varsayılan olarak açıktır, diğer platformlarda kapalıdır.", + "terminal.integrated.rightClickBehavior": "Terminalin sağ tıklamaya nasıl tepki vereceğini denetler, olası değerler 'default', 'copyPaste' ve 'selectWord'dür. 'default' bağlam menüsünü gösterir, 'copyPaste' bir seçim varsa kopyalar yoksa yapıştırır, 'selectWord' imlecin altındaki sözcüğü seçer ve bağlam menüsünü gösterir.", "terminal.integrated.cwd": "Terminalin nerede başlatılacağına ait açık bir yol; bu, kabuk işlemleri için geçerli çalışma klasörü (cwd) olarak kullanılır. Bu, çalışma alanı ayarlarında kök dizini uygun bir cwd değilse özellikle yararlı olabilir.", "terminal.integrated.confirmOnExit": "Aktif terminal oturumları varken çıkışta onay istenip istenmeyeceği.", "terminal.integrated.enableBell": "Terminal zilinin etkin olup olmadığı.", @@ -32,6 +35,7 @@ "terminal.integrated.env.linux": "Linux'daki terminal tarafından kullanılacak VS Code işlemine eklenecek ortam değişkenlerini içeren nesne", "terminal.integrated.env.windows": "Windows'daki terminal tarafından kullanılacak VS Code işlemine eklenecek ortam değişkenlerini içeren nesne", "terminal.integrated.showExitAlert": "Çıkış kodu sıfır değilse `Terminal işlemi çıkış koduyla sonlandı` uyarısını göster.", + "terminal.integrated.experimentalRestore": "VS Code'u başlatırken, çalışma alanı için otomatik olarak terminal oturumlarının geri yüklenip yüklenmeyeceği. Bu deneysel bir ayardır; hatalı olabilir ve ilerleyen zamanlarda değişebilir.", "terminalCategory": "Terminal", "viewCategory": "Görüntüle" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json index f2ba7b288d1..fb23f3c189e 100644 --- a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalActions.i18n.json @@ -14,10 +14,19 @@ "workbench.action.terminal.selectAll": "Tümünü Seç", "workbench.action.terminal.deleteWordLeft": "Soldaki Sözcüğü Sil", "workbench.action.terminal.deleteWordRight": "Sağdaki Sözcüğü Sil", + "workbench.action.terminal.moveToLineStart": "Satır Başına Git", + "workbench.action.terminal.moveToLineEnd": "Satır Sonuna Git", "workbench.action.terminal.new": "Yeni Entegre Terminal Oluştur", "workbench.action.terminal.new.short": "Yeni Terminal", "workbench.action.terminal.newWorkspacePlaceholder": "Yeni terminal için geçerli çalışma dizinini seçin", "workbench.action.terminal.newInActiveWorkspace": "(Aktif Çalışma Alanında) Yeni Entegre Terminal Oluştur", + "workbench.action.terminal.split": "Terminali Böl", + "workbench.action.terminal.focusPreviousPane": "Önceki Bölmeye Odakla", + "workbench.action.terminal.focusNextPane": "Sonraki Bölmeye Odakla", + "workbench.action.terminal.resizePaneLeft": "Bölmeyi Sola Doğru Yeniden Boyutlandır", + "workbench.action.terminal.resizePaneRight": "Bölmeyi Sağa Doğru Yeniden Boyutlandır", + "workbench.action.terminal.resizePaneUp": "Bölmeyi Yukarı Doğru Yeniden Boyutlandır", + "workbench.action.terminal.resizePaneDown": "Bölmeyi Aşağı Doğru Yeniden Boyutlandır", "workbench.action.terminal.focus": "Terminale Odakla", "workbench.action.terminal.focusNext": "Sonraki Terminale Odakla", "workbench.action.terminal.focusPrevious": "Önceki Terminale Odakla", @@ -26,6 +35,7 @@ "workbench.action.terminal.runSelectedText": "Seçili Metni Aktif Terminalde Çalıştır", "workbench.action.terminal.runActiveFile": "Aktif Dosyayı Aktif Terminalde Çalıştır", "workbench.action.terminal.runActiveFile.noFile": "Sadece diskteki dosyalar terminalde çalıştırılabilir", + "workbench.action.terminal.switchTerminal": "Terminali Değiştir", "workbench.action.terminal.scrollDown": "Aşağı Kaydır (Satır)", "workbench.action.terminal.scrollDownPage": "Aşağı Kaydır (Sayfa)", "workbench.action.terminal.scrollToBottom": "En Alta Kaydır", diff --git a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json index dcee4daf5c1..9ae8066e173 100644 --- a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalColorRegistry.i18n.json @@ -11,5 +11,6 @@ "terminalCursor.foreground": "Terminal imlecinin ön plan rengi.", "terminalCursor.background": "Terminal imlecinin arka plan rengi. Bir blok imlecinin kapladığı bir karakterin rengini özelleştirmeyi sağlar.", "terminal.selectionBackground": "Terminalin seçim arkaplanı rengi.", + "terminal.border": "Terminaldeki bölmeleri ayıran kenarlığın rengi. panel.border bunun için varsayılan olarak kullanılır.", "terminal.ansiColor": "Terminalde '{0}' ANSI rengi." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json index 22571079e41..f5f8b88dc84 100644 --- a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.i18n.json @@ -8,7 +8,9 @@ ], "terminal.integrated.a11yBlankLine": "Boş satır", "terminal.integrated.a11yPromptLabel": "Terminal girdisi", + "terminal.integrated.a11yTooMuchOutput": "Gösterilecek çok fazla çıktı var, okumak için satırları manuel olarak gezin.", "terminal.integrated.copySelection.noSelection": "Terminalde kopyalanacak bir seçim bulunmuyor", "terminal.integrated.exitedWithCode": "Terminal işlemi şu çıkış koduyla sonlandı: {0}", - "terminal.integrated.waitOnExit": "Terminali kapatmak için lütfen bir tuşa basın" + "terminal.integrated.waitOnExit": "Terminali kapatmak için lütfen bir tuşa basın", + "terminal.integrated.launchFailed": "Terminal işlem komutu '{0}{1}' başlatılamadı (çıkış kodu: {2})" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json index ff039c6064b..ad9592dd9e3 100644 --- a/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.i18n.json @@ -9,5 +9,6 @@ "copy": "Kopyala", "paste": "Yapıştır", "selectAll": "Tümünü Seç", - "clear": "Temizle" + "clear": "Temizle", + "split": "Böl" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json b/i18n/trk/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json index 1d50511faaf..ecea8c0b753 100644 --- a/i18n/trk/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "openWorkspaceSettings": "Çalışma Alanı Ayarlarını Aç", - "dontShowAgain": "Tekrar Gösterme" + "dontShowAgain": "Tekrar Gösterme", + "unsupportedWorkspaceSettings": "Bu çalışma alanı sadece Kullanıcı Ayarları'nda ayarlanabilen ayarlar içeriyor. ({0}). Daha fazla bilgi almak için [buraya]({0}) tıklayın." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json b/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json index fb133df71ea..795a37034f6 100644 --- a/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json +++ b/i18n/trk/src/vs/workbench/parts/update/electron-browser/update.i18n.json @@ -11,8 +11,12 @@ "releaseNotes": "Sürüm Notları", "showReleaseNotes": "Sürüm Notlarını Göster", "read the release notes": "{0} v{1} uygulamasına hoş geldiniz! Sürüm Notları'nı okumak ister misiniz?", + "licenseChanged": "Lisans koşullarımız değişti, lütfen [buraya]({0}) tıklayarak gözden geçirin.", "neveragain": "Tekrar Gösterme", + "64bitisavailable": "64-bit Windows için {0} şu an mevcut! Daha fazla bilgi almak için [buraya]({0}) tıklayın.", "updateIsReady": "Yeni {0} güncellemesi var.", + "noUpdatesAvailable": "Şu anda mevcut herhangi bir güncelleme yok.", + "ok": "Tamam", "download now": "Şimdi İndir", "thereIsUpdateAvailable": "Bir güncelleştirme var.", "installUpdate": "Güncelleştirmeyi Yükle", diff --git a/i18n/trk/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json b/i18n/trk/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json index ee86fed4b8d..39c5172a27a 100644 --- a/i18n/trk/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json +++ b/i18n/trk/src/vs/workbench/services/configuration/node/configurationEditingService.i18n.json @@ -16,6 +16,16 @@ "errorInvalidWorkspaceTarget": "{0}, birden çok klasörlü çalışma alanında çalışma alanı kapsamını desteklemediği için Çalışma Alanı Ayarları'na yazılamıyor.", "errorInvalidFolderTarget": "Hiçbir kaynak belirtilmediği için klasör ayarlarına yazılamıyor.", "errorNoWorkspaceOpened": "Hiçbir çalışma alanı açık olmadığı için {0}'a yazılamıyor. Lütfen ilk olarak bir çalışma alanı açın ve tekrar deneyin.", + "errorInvalidTaskConfiguration": "Görev yapılandırma dosyasına yazılamıyor. Lütfen dosyadaki hata/uyarıları düzeltmek için dosyayı açın ve tekrar deneyin.", + "errorInvalidLaunchConfiguration": "Başlangıç yapılandırması dosyasına yazılamıyor. Lütfen dosyadaki hata/uyarıları düzeltmek için dosyayı açın ve tekrar deneyin.", + "errorInvalidConfiguration": "Kullanıcı ayarlarına yazılamıyor. Lütfen dosyadaki hata/uyarıları düzeltmek için kullanıcı ayarlarını açın ve tekrar deneyin.", + "errorInvalidConfigurationWorkspace": "Çalışma alanı ayarlarına yazılamıyor. Lütfen dosyadaki hata/uyarıları düzeltmek için çalışma alanı ayarlarını açın ve tekrar deneyin.", + "errorInvalidConfigurationFolder": "Klasör ayarlarına yazılamıyor. Lütfen hata/uyarılarını düzeltmek için '{0}' klasör ayarlarını açın ve tekrar deneyin. ", + "errorTasksConfigurationFileDirty": "Kaydedilmemiş değişiklikler içerdiği için görev yapılandırma dosyasına yazılamıyor. Lütfen dosyayı kaydedin ve tekrar deneyin.", + "errorLaunchConfigurationFileDirty": "Kaydedilmemiş değişiklikler içerdiği için başlangıç yapılandırması dosyasına yazılamıyor. Lütfen dosyayı kaydedin ve tekrar deneyin.", + "errorConfigurationFileDirty": "Dosya kaydedilmemiş değişiklikler içerdiği için kullanıcı ayarlarına yazılamıyor. Lütfen ilk olarak kullanıcı ayarları dosyasını kaydedin ve tekrar deneyin.", + "errorConfigurationFileDirtyWorkspace": "Dosya kaydedilmemiş değişiklikler içerdiği için çalışma alanı ayarlarına yazılamıyor. Lütfen ilk olarak çalışma alanı ayarları dosyasını kaydedin ve tekrar deneyin.", + "errorConfigurationFileDirtyFolder": "Dosya kaydedilmemiş değişiklikler içerdiği için klasör ayarlarına yazılamıyor. Lütfen ilk olarak '{0}' klasör ayarları dosyasını kaydedin ve tekrar deneyin.", "userTarget": "Kullanıcı Ayarları", "workspaceTarget": "Çalışma Alanı Ayarları", "folderTarget": "Klasör Ayarları" diff --git a/i18n/trk/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json b/i18n/trk/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json index 1a1b99ac221..cff52e071df 100644 --- a/i18n/trk/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json +++ b/i18n/trk/src/vs/workbench/services/extensions/common/extensionsRegistry.i18n.json @@ -30,5 +30,6 @@ "vscode.extension.badges.description": "Gösterge açıklaması.", "vscode.extension.extensionDependencies": "Diğer uzantılara bağımlılıklar. Bir uzantının tanımlayıcısı her zaman ${publisher}.${name} biçimindedir. Örneğin: vscode.csharp.", "vscode.extension.scripts.prepublish": "Paket, bir VS Code eklentisi olarak yayımlamadan önce çalıştırılacak betik.", + "vscode.extension.scripts.uninstall": "VS Code eklentisi için kaldırma betiği. VS Code, eklenti kaldırıldıktan sonra yeniden başlatıldığında (kapatıp açma) ve eklenti tamamen kaldırıldığında çalıştırılacak betik. Sadece Node betikleri desteklenir.", "vscode.extension.icon": "128x128 piksellik bir simgenin yolu." } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json b/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json index 3d8e27a4bbd..13fc407f066 100644 --- a/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json +++ b/i18n/trk/src/vs/workbench/services/files/electron-browser/fileService.i18n.json @@ -9,5 +9,8 @@ "installNet": ".NET Framework 4.5'i İndir", "neverShowAgain": "Tekrar Gösterme", "netVersionError": "Microsoft .NET Framework 4.5 gerekli. Yüklemek için bağlantıyı izleyin.", + "learnMore": "Talimatlar", + "enospcError": "{0} için dosya işleçleri bitiyor. Bu sorunu çözmek için lütfen yönerge bağlantısını izleyin.", + "binFailed": "'{0}' geri dönüşüm kutusuna taşınamadı", "trashFailed": "'{0}' çöpe taşınamadı" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/files/node/fileService.i18n.json b/i18n/trk/src/vs/workbench/services/files/node/fileService.i18n.json index 0032045d6c1..a9f7d643231 100644 --- a/i18n/trk/src/vs/workbench/services/files/node/fileService.i18n.json +++ b/i18n/trk/src/vs/workbench/services/files/node/fileService.i18n.json @@ -9,6 +9,7 @@ "fileInvalidPath": "Geçersiz dosya kaynağı ({0})", "fileIsDirectoryError": "Dosya bir dizindir", "fileNotModifiedError": "Dosya şu tarihten beri değiştirilmemiş:", + "fileTooLargeForHeapError": "Dosya boyutu pencere bellek sınırını aşıyor, lütfen code --max-memory=YENIBOYUT komutunu çalıştırın", "fileTooLargeError": "Dosya, açmak için çok büyük", "fileNotFoundError": "Dosya bulunamadı ({0})", "fileBinaryError": "Dosya ikili olarak görünüyor ve metin olarak açılamıyor", diff --git a/i18n/trk/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json b/i18n/trk/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json index 1ee09d2af4d..a1c3be5711a 100644 --- a/i18n/trk/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json +++ b/i18n/trk/src/vs/workbench/services/keybinding/common/keybindingEditing.i18n.json @@ -6,5 +6,8 @@ "--------------------------------------------------------------------------------------------", "Do not edit this file. It is machine generated." ], + "errorKeybindingsFileDirty": "Kaydedilmemiş değişiklikler içerdiği için tuş bağları yapılandırma dosyasına yazılamıyor. Lütfen dosyayı kaydedin ve tekrar deneyin.", + "parseErrors": "Tuş bağları yapılandırma dosyasına yazılamıyor. Lütfen dosyadaki hata/uyarıları düzeltmek için dosyayı açın ve tekrar deneyin.", + "errorInvalidConfiguration": "Tuş bağları yapılandırma dosyasına yazılamadı. Dosyada dizi olmayan bir nesne var. Temizlemek için lütfen dosyayı açın ve yeniden deneyin.", "emptyKeybindingsHeader": "Varsayılanların üzerine yazmak için tuş bağlarınızı bu dosyaya yerleştirin" } \ No newline at end of file diff --git a/i18n/trk/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json b/i18n/trk/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json index c0e8736062b..99a30f5c966 100644 --- a/i18n/trk/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json +++ b/i18n/trk/src/vs/workbench/services/themes/common/colorExtensionPoint.i18n.json @@ -13,6 +13,7 @@ "contributes.defaults.light": "Açık temaların varsayılan rengi. Ya hex biçiminde bir renk değeri (#RRGGBB[AA]) ya da varsayılanı sağlayan bir tema olarak kullanılabilir rengin tanımlayıcısı olabilir.", "contributes.defaults.dark": "Koyu temaların varsayılan rengi. Ya hex biçiminde bir renk değeri (#RRGGBB[AA]) ya da varsayılanı sağlayan bir tema olarak kullanılabilir rengin tanımlayıcısı olabilir.", "contributes.defaults.highContrast": "Yüksek karşıtlık temalarının varsayılan rengi. Ya hex biçiminde bir renk değeri (#RRGGBB[AA]) ya da varsayılanı sağlayan bir tema olarak kullanılabilir rengin tanımlayıcısı olabilir.", + "invalid.colorConfiguration": "'configuration.colors' bir dizi olmalıdır", "invalid.default.colorType": "{0}, ya hex biçiminde bir renk değeri (#RRGGBB[AA] veya #RGB[A]) ya da varsayılanı sağlayan bir tema olarak kullanılabilir rengin tanımlayıcısı olabilir.", "invalid.id": "'configuration.colors.id' tanımlanmalı ve boş olmamalıdır", "invalid.id.format": "'configuration.colors.id' sözcük[.sözcük]* şeklinde olmalıdır", diff --git a/i18n/trk/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json b/i18n/trk/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json index 50cb3689dd2..728572b9745 100644 --- a/i18n/trk/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json +++ b/i18n/trk/src/vs/workbench/services/themes/common/colorThemeSchema.i18n.json @@ -9,6 +9,9 @@ "schema.token.settings": "Belirteç renkleri ve stilleri.", "schema.token.foreground": "Belirteç ön plan rengi.", "schema.token.background.warning": "Belirteç arka plan renkleri şu anda desteklenmiyor.", + "schema.token.fontStyle": "Kuralın yazı tipi stili: 'italic', 'bold' veya 'underline' ya da bunların bir kombinasyonu. Boş dize devralınan ayarları kaldırır.", + "schema.fontStyle.error": "Yazı tipi stili ya 'italic', 'bold' veya 'underline' ya da bunların bir kombinasyonu veya boş dize olmalıdır.", + "schema.token.fontStyle.none": "Hiçbiri (devralınan stili temizle)", "schema.properties.name": "Kural açıklaması.", "schema.properties.scope": "Bu kural karşısında eşleşecek kapsam seçicisi.", "schema.tokenColors.path": "Bir tmTheme dosyasının yolu (geçerli dosyaya göreli).", diff --git a/i18n/trk/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json b/i18n/trk/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json index 5a74528578f..e05f69c833c 100644 --- a/i18n/trk/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json +++ b/i18n/trk/src/vs/workbench/services/workspace/node/workspaceEditingService.i18n.json @@ -7,5 +7,6 @@ "Do not edit this file. It is machine generated." ], "errorInvalidTaskConfiguration": "Çalışma alanı yapılandırma dosyasına yazılamıyor. Lütfen dosyadaki hata/uyarıları düzeltmek için dosyayı açın ve tekrar deneyin.", - "errorWorkspaceConfigurationFileDirty": "Kaydedilmemiş değişiklikler içerdiği için çalışma alanı yapılandırma dosyasına yazılamıyor. Lütfen dosyayı kaydedin ve tekrar deneyin." + "errorWorkspaceConfigurationFileDirty": "Kaydedilmemiş değişiklikler içerdiği için çalışma alanı yapılandırma dosyasına yazılamıyor. Lütfen dosyayı kaydedin ve tekrar deneyin.", + "openWorkspaceConfigurationFile": "Çalışma Alanı Yapılandırmasını Aç" } \ No newline at end of file From 94ffa37f0851d1914fad4095fbbcfbf07819b4bb Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 11:03:59 +0100 Subject: [PATCH 157/658] debt - add new method to dialog service to show dialogs --- .../standalone/browser/simpleServices.ts | 4 ++++ src/vs/platform/dialogs/common/choiceIpc.ts | 8 +++---- src/vs/platform/dialogs/common/dialogs.ts | 17 +++++++------ .../node/extensionManagementService.ts | 16 ++++++------- .../mainThreadMessageService.ts | 16 ++++++------- .../cli/electron-browser/cli.contribution.ts | 8 +++---- .../debug/electron-browser/debugService.ts | 6 ++--- .../node/extensionsWorkbenchService.ts | 11 +++++---- .../extensionsWorkbenchService.test.ts | 16 +++++++------ .../parts/update/electron-browser/update.ts | 9 ++++--- .../dialogs/electron-browser/dialogs.ts | 23 +++--------------- .../api/extHostMessagerService.test.ts | 24 +++++++++++-------- .../workbench/test/workbenchTestServices.ts | 8 +++++-- 13 files changed, 83 insertions(+), 83 deletions(-) diff --git a/src/vs/editor/standalone/browser/simpleServices.ts b/src/vs/editor/standalone/browser/simpleServices.ts index 3feb60de1c3..0454d044852 100644 --- a/src/vs/editor/standalone/browser/simpleServices.ts +++ b/src/vs/editor/standalone/browser/simpleServices.ts @@ -257,6 +257,10 @@ export class SimpleDialogService implements IDialogService { return TPromise.wrap(window.confirm(messageText)); } + + public show(severity: Severity, message: string, buttons: string[], cancelId?: number): TPromise { + return TPromise.as(0); + } } export class SimpleNotificationService implements INotificationService { diff --git a/src/vs/platform/dialogs/common/choiceIpc.ts b/src/vs/platform/dialogs/common/choiceIpc.ts index e5329e9643e..893cc42cfd6 100644 --- a/src/vs/platform/dialogs/common/choiceIpc.ts +++ b/src/vs/platform/dialogs/common/choiceIpc.ts @@ -20,9 +20,9 @@ export class ChoiceChannel implements IChoiceChannel { constructor( @IChoiceService private choiceService: IChoiceService) { } - call(command: string, args?: [Severity, string, string[], number, boolean]): TPromise { + call(command: string, args?: [Severity, string, string[]]): TPromise { switch (command) { - case 'choose': return this.choiceService.choose(args[0], args[1], args[2], args[3], args[4]); + case 'choose': return this.choiceService.choose(args[0], args[1], args[2]); } return TPromise.wrapError(new Error('invalid command')); } @@ -34,7 +34,7 @@ export class ChoiceChannelClient implements IChoiceService { constructor(private channel: IChoiceChannel) { } - choose(severity: Severity, message: string, options: string[], cancelId?: number, modal?: boolean): TPromise { - return this.channel.call('choose', [severity, message, options, cancelId, modal]); + choose(severity: Severity, message: string, options: string[]): TPromise { + return this.channel.call('choose', [severity, message, options]); } } \ No newline at end of file diff --git a/src/vs/platform/dialogs/common/dialogs.ts b/src/vs/platform/dialogs/common/dialogs.ts index 803d3563db0..5d517913c91 100644 --- a/src/vs/platform/dialogs/common/dialogs.ts +++ b/src/vs/platform/dialogs/common/dialogs.ts @@ -46,6 +46,15 @@ export interface IDialogService { * Ask the user for confirmation with a modal dialog. */ confirm(confirmation: IConfirmation): TPromise; + + /** + * Present a modal dialog to the user. + * + * @returns A promise with the selected choice index. If the user refused to choose, + * then a promise with index of `cancelId` option is returned. If there is no such + * option then promise with index `0` is returned. + */ + show(severity: Severity, message: string, buttons: string[], cancelId?: number): TPromise; } export const IChoiceService = createDecorator('choiceService'); @@ -75,15 +84,9 @@ export interface IChoiceService { * appear less choices appear when the `modal` option is set to `false`. In that case, * the choices prominent. * - * @param when `modal` is true, this will block the user until chooses. - * * @returns A promise with the selected choice index. The promise is cancellable * which hides the message. The promise can return an error, meaning that * the user refused to choose. - * - * When `modal` is true and user refused to choose, then promise with index of - * `Cancel` option is returned. If there is no such option then promise with - * `0` index is returned. */ - choose(severity: Severity, message: string, choices: Choice[], cancelId?: number, modal?: boolean): TPromise; + choose(severity: Severity, message: string, choices: Choice[]): TPromise; } \ No newline at end of file diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 6c1d2abb5e5..08609884b22 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -33,7 +33,7 @@ import pkg from 'vs/platform/node/package'; import { isMacintosh } from 'vs/base/common/platform'; import { ILogService } from 'vs/platform/log/common/log'; import { ExtensionsManifestCache } from 'vs/platform/extensionManagement/node/extensionsManifestCache'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import Severity from 'vs/base/common/severity'; import { ExtensionsLifecycle } from 'vs/platform/extensionManagement/node/extensionLifecycle'; import { toErrorMessage } from 'vs/base/common/errorMessage'; @@ -126,7 +126,7 @@ export class ExtensionManagementService extends Disposable implements IExtension constructor( @IEnvironmentService environmentService: IEnvironmentService, - @IChoiceService private choiceService: IChoiceService, + @IDialogService private dialogService: IDialogService, @IExtensionGalleryService private galleryService: IExtensionGalleryService, @ILogService private logService: ILogService ) { @@ -190,11 +190,11 @@ export class ExtensionManagementService extends Disposable implements IExtension const newer = installedExtensions.filter(local => areSameExtensions(extensionIdentifier, { id: getGalleryExtensionIdFromLocal(local) }) && semver.gt(local.manifest.version, manifest.version))[0]; if (newer) { const message = nls.localize('installingOutdatedExtension', "A newer version of this extension is already installed. Would you like to override this with the older version?"); - const options = [ + const buttons = [ nls.localize('override', "Override"), nls.localize('cancel', "Cancel") ]; - return this.choiceService.choose(Severity.Info, message, options, 1, true) + return this.dialogService.show(Severity.Info, message, buttons, 1) .then(value => { if (value === 0) { return this.uninstall(newer, true).then(() => true); @@ -539,13 +539,13 @@ export class ExtensionManagementService extends Disposable implements IExtension } const message = nls.localize('uninstallDependeciesConfirmation', "Would you like to uninstall '{0}' only or its dependencies also?", extension.manifest.displayName || extension.manifest.name); - const options = [ + const buttons = [ nls.localize('uninstallOnly', "Only"), nls.localize('uninstallAll', "All"), nls.localize('cancel', "Cancel") ]; this.logService.info('Requesting for confirmation to uninstall extension with dependencies', extension.identifier.id); - return this.choiceService.choose(Severity.Info, message, options, 2, true) + return this.dialogService.show(Severity.Info, message, buttons, 2) .then(value => { if (value === 0) { return this.uninstallWithDependencies(extension, [], installed); @@ -565,12 +565,12 @@ export class ExtensionManagementService extends Disposable implements IExtension } const message = nls.localize('uninstallConfirmation', "Are you sure you want to uninstall '{0}'?", extension.manifest.displayName || extension.manifest.name); - const options = [ + const buttons = [ nls.localize('ok', "OK"), nls.localize('cancel', "Cancel") ]; this.logService.info('Requesting for confirmation to uninstall extension', extension.identifier.id); - return this.choiceService.choose(Severity.Info, message, options, 1, true) + return this.dialogService.show(Severity.Info, message, buttons, 1) .then(value => { if (value === 0) { return this.uninstallWithDependencies(extension, [], installed); diff --git a/src/vs/workbench/api/electron-browser/mainThreadMessageService.ts b/src/vs/workbench/api/electron-browser/mainThreadMessageService.ts index 569ee9fb1ad..5f768179b11 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadMessageService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadMessageService.ts @@ -10,7 +10,7 @@ import { Action, IAction } from 'vs/base/common/actions'; import { MainThreadMessageServiceShape, MainContext, IExtHostContext, MainThreadMessageOptions } from '../node/extHost.protocol'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { once } from 'vs/base/common/event'; import { ICommandService } from 'vs/platform/commands/common/commands'; @@ -24,7 +24,7 @@ export class MainThreadMessageService implements MainThreadMessageServiceShape { extHostContext: IExtHostContext, @INotificationService private readonly _notificationService: INotificationService, @ICommandService private readonly _commandService: ICommandService, - @IChoiceService private readonly _choiceService: IChoiceService, + @IDialogService private readonly _dialogService: IDialogService, @IEnvironmentService private readonly _environmentService: IEnvironmentService ) { // @@ -101,7 +101,7 @@ export class MainThreadMessageService implements MainThreadMessageServiceShape { private _showModalMessage(severity: Severity, message: string, commands: { title: string; isCloseAffordance: boolean; handle: number; }[]): Thenable { let cancelId: number | undefined = void 0; - const options = commands.map((command, index) => { + const buttons = commands.map((command, index) => { if (command.isCloseAffordance === true) { cancelId = index; } @@ -110,16 +110,16 @@ export class MainThreadMessageService implements MainThreadMessageServiceShape { }); if (cancelId === void 0) { - if (options.length > 0) { - options.push(nls.localize('cancel', "Cancel")); + if (buttons.length > 0) { + buttons.push(nls.localize('cancel', "Cancel")); } else { - options.push(nls.localize('ok', "OK")); + buttons.push(nls.localize('ok', "OK")); } - cancelId = options.length - 1; + cancelId = buttons.length - 1; } - return this._choiceService.choose(severity, message, options, cancelId, true) + return this._dialogService.show(severity, message, buttons, cancelId) .then(result => result === commands.length ? undefined : commands[result].handle); } } diff --git a/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts b/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts index 65588037906..b163f2be06b 100644 --- a/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts +++ b/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts @@ -17,7 +17,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import product from 'vs/platform/node/product'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IChoiceService, Choice } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import Severity from 'vs/base/common/severity'; import { ILogService } from 'vs/platform/log/common/log'; @@ -47,7 +47,7 @@ class InstallAction extends Action { id: string, label: string, @INotificationService private notificationService: INotificationService, - @IChoiceService private choiceService: IChoiceService, + @IDialogService private dialogService: IDialogService, @ILogService private logService: ILogService ) { super(id, label); @@ -103,9 +103,9 @@ class InstallAction extends Action { private createBinFolder(): TPromise { return new TPromise((c, e) => { - const choices: Choice[] = [nls.localize('ok', "OK"), nls.localize('cancel2', "Cancel")]; + const buttons = [nls.localize('ok', "OK"), nls.localize('cancel2', "Cancel")]; - this.choiceService.choose(Severity.Info, nls.localize('warnEscalation', "Code will now prompt with 'osascript' for Administrator privileges to install the shell command."), choices, 1, true).then(choice => { + this.dialogService.show(Severity.Info, nls.localize('warnEscalation', "Code will now prompt with 'osascript' for Administrator privileges to install the shell command."), buttons, 1).then(choice => { switch (choice) { case 0 /* OK */: const command = 'osascript -e "do shell script \\"mkdir -p /usr/local/bin && chown \\" & (do shell script (\\"whoami\\")) & \\" /usr/local/bin\\" with administrator privileges"'; diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index c67c9fc6f9d..5947107e5bc 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -51,7 +51,7 @@ import { IBroadcastService, IBroadcast } from 'vs/platform/broadcast/electron-br import { IRemoteConsoleLog, parse, getFirstFrame } from 'vs/base/node/console'; import { Source } from 'vs/workbench/parts/debug/common/debugSource'; import { TaskEvent, TaskEventKind } from 'vs/workbench/parts/tasks/common/tasks'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IAction, Action } from 'vs/base/common/actions'; import { normalizeDriveLetter } from 'vs/base/common/labels'; @@ -91,7 +91,7 @@ export class DebugService implements debug.IDebugService { @IViewletService private viewletService: IViewletService, @IPanelService private panelService: IPanelService, @INotificationService private notificationService: INotificationService, - @IChoiceService private choiceService: IChoiceService, + @IDialogService private dialogService: IDialogService, @IPartService private partService: IPartService, @IWindowService private windowService: IWindowService, @IBroadcastService private broadcastService: IBroadcastService, @@ -972,7 +972,7 @@ export class DebugService implements debug.IDebugService { private showError(message: string, actions: IAction[] = []): TPromise { const configureAction = this.instantiationService.createInstance(debugactions.ConfigureAction, debugactions.ConfigureAction.ID, debugactions.ConfigureAction.LABEL); actions.push(configureAction); - return this.choiceService.choose(severity.Error, message, actions.map(a => a.label).concat(nls.localize('cancel', "Cancel")), actions.length, true).then(choice => { + return this.dialogService.show(severity.Error, message, actions.map(a => a.label).concat(nls.localize('cancel', "Cancel")), actions.length).then(choice => { if (choice < actions.length) { return actions[choice].run(); } diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index 3a5d1364c8e..9e76dd3e097 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -35,7 +35,7 @@ import { ExtensionsInput } from 'vs/workbench/parts/extensions/common/extensions import product from 'vs/platform/node/product'; import { ILogService } from 'vs/platform/log/common/log'; import { IProgressService2, ProgressLocation } from 'vs/platform/progress/common/progress'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IChoiceService, IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; interface IExtensionStateProvider { @@ -371,6 +371,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { @IConfigurationService private configurationService: IConfigurationService, @ITelemetryService private telemetryService: ITelemetryService, @INotificationService private notificationService: INotificationService, + @IDialogService private dialogService: IDialogService, @IChoiceService private choiceService: IChoiceService, @IURLService urlService: IURLService, @IExtensionEnablementService private extensionEnablementService: IExtensionEnablementService, @@ -687,11 +688,11 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { private promptForDependenciesAndEnable(extension: IExtension, dependencies: IExtension[], enablementState: EnablementState, enable: boolean): TPromise { const message = nls.localize('enableDependeciesConfirmation', "Enabling '{0}' also enables its dependencies. Would you like to continue?", extension.displayName); - const options = [ + const buttons = [ nls.localize('enable', "Yes"), nls.localize('doNotEnable', "No") ]; - return this.choiceService.choose(Severity.Info, message, options, 1, true) + return this.dialogService.show(Severity.Info, message, buttons, 1) .then(value => { if (value === 0) { return this.checkAndSetEnablement(extension, dependencies, enablementState, enable); @@ -702,12 +703,12 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { private promptForDependenciesAndDisable(extension: IExtension, dependencies: IExtension[], enablementState: EnablementState, enable: boolean): TPromise { const message = nls.localize('disableDependeciesConfirmation', "Would you like to disable '{0}' only or its dependencies also?", extension.displayName); - const options = [ + const buttons = [ nls.localize('disableOnly', "Only"), nls.localize('disableAll', "All"), nls.localize('cancel', "Cancel") ]; - return this.choiceService.choose(Severity.Info, message, options, 2, true) + return this.dialogService.show(Severity.Info, message, buttons, 2) .then(value => { if (value === 0) { return this.checkAndSetEnablement(extension, [], enablementState, enable); diff --git a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsWorkbenchService.test.ts b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsWorkbenchService.test.ts index cfb7f0a4d82..8914e11186d 100644 --- a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsWorkbenchService.test.ts +++ b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsWorkbenchService.test.ts @@ -35,7 +35,7 @@ import { ILogService, NullLogService } from 'vs/platform/log/common/log'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { IProgressService2 } from 'vs/platform/progress/common/progress'; import { ProgressService2 } from 'vs/workbench/services/progress/browser/progressService2'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IChoiceService, IDialogService } from 'vs/platform/dialogs/common/dialogs'; suite('ExtensionsWorkbenchService Test', () => { @@ -77,12 +77,14 @@ suite('ExtensionsWorkbenchService Test', () => { instantiationService.stub(IExtensionTipsService, 'getKeymapRecommendations', () => []); instantiationService.stub(IChoiceService, { choose: () => null }); + instantiationService.stub(IDialogService, { show: () => TPromise.as(0) }); }); setup(() => { instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', []); instantiationService.stubPromise(IExtensionManagementService, 'getExtensionsReport', []); instantiationService.stubPromise(IExtensionGalleryService, 'query', aPage()); + instantiationService.stub(IDialogService, { show: () => TPromise.as(0) }); instantiationService.stubPromise(IChoiceService, 'choose', 0); (instantiationService.get(IExtensionEnablementService)).reset(); }); @@ -854,7 +856,7 @@ suite('ExtensionsWorkbenchService Test', () => { .then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Enabled)) .then(() => { instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]); - instantiationService.stubPromise(IChoiceService, 'choose', 1); + instantiationService.stubPromise(IDialogService, 'show', 1); testObject = instantiationService.createInstance(ExtensionsWorkbenchService); return testObject.setEnablement(testObject.local[0], EnablementState.Disabled) @@ -909,7 +911,7 @@ suite('ExtensionsWorkbenchService Test', () => { .then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Enabled)) .then(() => { instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]); - instantiationService.stubPromise(IChoiceService, 'choose', 1); + instantiationService.stubPromise(IDialogService, 'show', 1); testObject = instantiationService.createInstance(ExtensionsWorkbenchService); return testObject.setEnablement(testObject.local[0], EnablementState.Disabled).then(() => assert.fail('Should fail'), error => assert.ok(true)); }); @@ -925,7 +927,7 @@ suite('ExtensionsWorkbenchService Test', () => { .then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Disabled)) .then(() => { instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]); - instantiationService.stubPromise(IChoiceService, 'choose', 1); + instantiationService.stubPromise(IDialogService, 'show', 1); testObject = instantiationService.createInstance(ExtensionsWorkbenchService); @@ -947,7 +949,7 @@ suite('ExtensionsWorkbenchService Test', () => { .then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Enabled)) .then(() => { instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]); - instantiationService.stubPromise(IChoiceService, 'choose', 1); + instantiationService.stubPromise(IDialogService, 'show', 1); testObject = instantiationService.createInstance(ExtensionsWorkbenchService); @@ -969,7 +971,7 @@ suite('ExtensionsWorkbenchService Test', () => { .then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Enabled)) .then(() => { instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]); - instantiationService.stubPromise(IChoiceService, 'choose', 1); + instantiationService.stubPromise(IDialogService, 'show', 1); testObject = instantiationService.createInstance(ExtensionsWorkbenchService); @@ -988,7 +990,7 @@ suite('ExtensionsWorkbenchService Test', () => { .then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Enabled)) .then(() => { instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]); - instantiationService.stubPromise(IChoiceService, 'choose', 1); + instantiationService.stubPromise(IDialogService, 'show', 1); testObject = instantiationService.createInstance(ExtensionsWorkbenchService); diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index bdea885df04..1fcf1cf7712 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -26,7 +26,7 @@ import { IUpdateService, State as UpdateState, StateType, IUpdate } from 'vs/pla import * as semver from 'semver'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { ReleaseNotesManager } from './releaseNotesEditor'; @@ -239,7 +239,7 @@ export class UpdateContribution implements IGlobalActivity { @ICommandService private commandService: ICommandService, @IInstantiationService private instantiationService: IInstantiationService, @INotificationService private notificationService: INotificationService, - @IChoiceService private choiceService: IChoiceService, + @IDialogService private dialogService: IDialogService, @IUpdateService private updateService: IUpdateService, @IWorkbenchEditorService editorService: IWorkbenchEditorService, @IActivityService private activityService: IActivityService, @@ -313,12 +313,11 @@ export class UpdateContribution implements IGlobalActivity { } private onUpdateNotAvailable(): void { - this.choiceService.choose( + this.dialogService.show( severity.Info, nls.localize('noUpdatesAvailable', "There are currently no updates available."), [nls.localize('ok', "OK")], - 0, - true + 0 ); } diff --git a/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts b/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts index c33af8bfcbe..5007c8fcd9a 100644 --- a/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts +++ b/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts @@ -93,32 +93,15 @@ export class DialogService implements IChoiceService, IDialogService { return opts; } - public choose(severity: Severity, message: string, choices: Choice[], cancelId?: number, modal: boolean = false): TPromise { - if (modal) { - return this.doChooseWithDialog(severity, message, choices, cancelId); - } - - return this.doChooseWithNotification(severity, message, choices); - } - - private doChooseWithDialog(severity: Severity, message: string, choices: Choice[], cancelId?: number): TPromise { + public show(severity: Severity, message: string, buttons: string[], cancelId?: number): TPromise { const type: 'none' | 'info' | 'error' | 'question' | 'warning' = severity === Severity.Info ? 'question' : severity === Severity.Error ? 'error' : severity === Severity.Warning ? 'warning' : 'none'; - const stringChoices: string[] = []; - choices.forEach(choice => { - if (typeof choice === 'string') { - stringChoices.push(choice); - } else { - stringChoices.push(choice.label); - } - }); - - const { options, buttonIndexMap } = this.massageMessageBoxOptions({ message, buttons: stringChoices, type, cancelId }); + const { options, buttonIndexMap } = this.massageMessageBoxOptions({ message, buttons, type, cancelId }); return this.windowService.showMessageBox(options).then(result => buttonIndexMap[result.button]); } - private doChooseWithNotification(severity: Severity, message: string, choices: Choice[]): TPromise { + public choose(severity: Severity, message: string, choices: Choice[]): TPromise { let handle: INotificationHandle; const promise = new TPromise((c, e) => { diff --git a/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts b/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts index c4e0481d82c..4f471f38864 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts @@ -8,13 +8,17 @@ import * as assert from 'assert'; import { MainThreadMessageService } from 'vs/workbench/api/electron-browser/mainThreadMessageService'; import { TPromise as Promise, TPromise } from 'vs/base/common/winjs.base'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService, INotification, NoOpNotification, INotificationHandle } from 'vs/platform/notification/common/notification'; import { ICommandService } from 'vs/platform/commands/common/commands'; -const emptyChoiceService = new class implements IChoiceService { +const emptyDialogService = new class implements IDialogService { _serviceBrand: 'choiceService'; - choose(severity, message, options, modal): never { + show(severity, message, options): never { + throw new Error('not implemented'); + } + + confirm(...opts): never { throw new Error('not implemented'); } }; @@ -73,7 +77,7 @@ suite('ExtHostMessageService', function () { let service = new MainThreadMessageService(null, new EmptyNotificationService(notification => { assert.equal(notification.actions.primary.length, 1); setImmediate(() => notification.actions.primary[0].run()); - }), emptyCommandService, emptyChoiceService, null); + }), emptyCommandService, emptyDialogService, null); return service.$showMessage(1, 'h', {}, [{ handle: 42, title: 'a thing', isCloseAffordance: true }]).then(handle => { assert.equal(handle, 42); @@ -83,14 +87,14 @@ suite('ExtHostMessageService', function () { suite('modal', () => { test('calls choice service', () => { const service = new MainThreadMessageService(null, emptyNotificationService, emptyCommandService, { - choose(severity, message, options, modal) { + show(severity, message, options) { assert.equal(severity, 1); assert.equal(message, 'h'); assert.equal(options.length, 2); assert.equal(options[1], 'Cancel'); return Promise.as(0); } - } as IChoiceService, null); + } as IDialogService, null); return service.$showMessage(1, 'h', { modal: true }, [{ handle: 42, title: 'a thing', isCloseAffordance: false }]).then(handle => { assert.equal(handle, 42); @@ -99,10 +103,10 @@ suite('ExtHostMessageService', function () { test('returns undefined when cancelled', () => { const service = new MainThreadMessageService(null, emptyNotificationService, emptyCommandService, { - choose(severity, message, options, modal) { + show(severity, message, options) { return Promise.as(1); } - } as IChoiceService, null); + } as IDialogService, null); return service.$showMessage(1, 'h', { modal: true }, [{ handle: 42, title: 'a thing', isCloseAffordance: false }]).then(handle => { assert.equal(handle, undefined); @@ -111,11 +115,11 @@ suite('ExtHostMessageService', function () { test('hides Cancel button when not needed', () => { const service = new MainThreadMessageService(null, emptyNotificationService, emptyCommandService, { - choose(severity, message, options, modal) { + show(severity, message, options) { assert.equal(options.length, 1); return Promise.as(0); } - } as IChoiceService, null); + } as IDialogService, null); return service.$showMessage(1, 'h', { modal: true }, [{ handle: 42, title: 'a thing', isCloseAffordance: true }]).then(handle => { assert.equal(handle, 42); diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index c72151054a2..d8c9721d668 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -264,8 +264,8 @@ export function workbenchInstantiationService(): IInstantiationService { instantiationService.stub(IThemeService, new TestThemeService()); instantiationService.stub(IHashService, new TestHashService()); instantiationService.stub(IChoiceService, { - choose: (severity, message, options, cancelId): TPromise => { - return TPromise.as(cancelId); + choose: (severity, message, options): TPromise => { + return TPromise.as(0); } } as IChoiceService); @@ -340,6 +340,10 @@ export class TestDialogService implements IDialogService { public confirm(confirmation: IConfirmation): Promise { return TPromise.as({ confirmed: false }); } + + public show(severity: Severity, message: string, buttons: string[], cancelId?: number): Promise { + return TPromise.as(0); + } } export class TestPartService implements IPartService { From 55ea9fe2841ccaaf6a6865ed3988270061cb238d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 11:02:53 +0100 Subject: [PATCH 158/658] fix integration tests --- .vscode/settings.json | 3 ++- extensions/html/server/src/test/formatting.test.ts | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 4593d763bea..d5e5d8c85a7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -39,5 +39,6 @@ } ], "typescript.tsdk": "node_modules/typescript/lib", - "npm.exclude": "**/extensions/**" + "npm.exclude": "**/extensions/**", + "emmet.excludeLanguages": [] } \ No newline at end of file diff --git a/extensions/html/server/src/test/formatting.test.ts b/extensions/html/server/src/test/formatting.test.ts index 331e0d719e9..b3a12175bdb 100644 --- a/extensions/html/server/src/test/formatting.test.ts +++ b/extensions/html/server/src/test/formatting.test.ts @@ -46,8 +46,8 @@ suite('HTML Embedded Formatting', () => { } function assertFormatWithFixture(fixtureName: string, expectedPath: string, options?: any, formatOptions?: FormattingOptions): void { - let input = fs.readFileSync(path.join(__dirname, 'fixtures', 'inputs', fixtureName)).toString(); - let expected = fs.readFileSync(path.join(__dirname, 'fixtures', 'expected', expectedPath)).toString(); + let input = fs.readFileSync(path.join(__dirname, 'fixtures', 'inputs', fixtureName)).toString().replace(/\r\n/mg, '\n'); + let expected = fs.readFileSync(path.join(__dirname, 'fixtures', 'expected', expectedPath)).toString().replace(/\r\n/mg, '\n'); assertFormat(input, expected, options, formatOptions, expectedPath); } From bc59b294bbd616eadeba611b94ea458dfb776b4c Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 11:44:03 +0100 Subject: [PATCH 159/658] debt - add new prompt method to notification service --- .../standalone/browser/simpleServices.ts | 6 +- .../integrity/node/integrityServiceImpl.ts | 8 +-- .../common/abstractKeybindingService.test.ts | 3 + .../notification/common/notification.ts | 37 +++++++++++- .../extensions/browser/extensionsActions.ts | 5 +- .../electron-browser/extensionTipsService.ts | 22 ++++--- .../electron-browser/extensionsActions.ts | 5 +- .../electron-browser/extensionsUtils.ts | 11 ++-- .../electron-browser/extensionsViewlet.ts | 5 +- .../node/extensionsWorkbenchService.ts | 7 +-- .../extensionsTipsService.test.ts | 10 ++-- .../extensionsWorkbenchService.test.ts | 7 ++- .../languageSurveys.contribution.ts | 13 ++-- .../electron-browser/nps.contribution.ts | 9 ++- .../electron-browser/task.contribution.ts | 7 +-- .../electron-browser/terminalConfigHelper.ts | 6 +- .../electron-browser/terminalService.ts | 7 ++- ...supportedWorkspaceSettings.contribution.ts | 11 ++-- .../page/electron-browser/welcomePage.ts | 4 +- .../node/configurationEditingService.ts | 10 ++-- .../node/configurationEditingService.test.ts | 4 +- .../electron-browser/extensionHost.ts | 4 +- .../electron-browser/extensionService.ts | 20 +++---- .../files/electron-browser/fileService.ts | 13 ++-- .../electron-browser/remoteFileService.ts | 6 +- .../common/notificationService.ts | 59 ++++++++++++++++++- .../workspace/node/workspaceEditingService.ts | 4 +- .../api/extHostMessagerService.test.ts | 8 ++- .../workbench/test/workbenchTestServices.ts | 13 ++-- 29 files changed, 204 insertions(+), 120 deletions(-) diff --git a/src/vs/editor/standalone/browser/simpleServices.ts b/src/vs/editor/standalone/browser/simpleServices.ts index 0454d044852..73396ee6d4b 100644 --- a/src/vs/editor/standalone/browser/simpleServices.ts +++ b/src/vs/editor/standalone/browser/simpleServices.ts @@ -38,7 +38,7 @@ import { ResolvedKeybindingItem } from 'vs/platform/keybinding/common/resolvedKe import { OS } from 'vs/base/common/platform'; import { IRange } from 'vs/editor/common/core/range'; import { ITextModel } from 'vs/editor/common/model'; -import { INotificationService, INotification, INotificationHandle, NoOpNotification } from 'vs/platform/notification/common/notification'; +import { INotificationService, INotification, INotificationHandle, NoOpNotification, PromptOption } from 'vs/platform/notification/common/notification'; import { IConfirmation, IConfirmationResult, IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { IPosition, Position as Pos } from 'vs/editor/common/core/position'; @@ -296,6 +296,10 @@ export class SimpleNotificationService implements INotificationService { return SimpleNotificationService.NO_OP; } + + public prompt(severity: Severity, message: string, choices: PromptOption[]): TPromise { + return TPromise.as(0); + } } export class StandaloneCommandService implements ICommandService { diff --git a/src/vs/platform/integrity/node/integrityServiceImpl.ts b/src/vs/platform/integrity/node/integrityServiceImpl.ts index f5274caa770..34fd1e44a4f 100644 --- a/src/vs/platform/integrity/node/integrityServiceImpl.ts +++ b/src/vs/platform/integrity/node/integrityServiceImpl.ts @@ -14,7 +14,7 @@ import URI from 'vs/base/common/uri'; import Severity from 'vs/base/common/severity'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; -import { IChoiceService, Choice } from 'vs/platform/dialogs/common/dialogs'; +import { INotificationService, PromptOption } from 'vs/platform/notification/common/notification'; interface IStorageData { dontShowPrompt: boolean; @@ -62,7 +62,7 @@ export class IntegrityServiceImpl implements IIntegrityService { private _isPurePromise: Thenable; constructor( - @IChoiceService private choiceService: IChoiceService, + @INotificationService private notificationService: INotificationService, @IStorageService storageService: IStorageService, @ILifecycleService private lifecycleService: ILifecycleService ) { @@ -86,9 +86,9 @@ export class IntegrityServiceImpl implements IIntegrityService { return; } - const choices: Choice[] = [nls.localize('integrity.moreInformation', "More Information"), { label: nls.localize('integrity.dontShowAgain', "Don't Show Again") }]; + const choices: PromptOption[] = [nls.localize('integrity.moreInformation', "More Information"), { label: nls.localize('integrity.dontShowAgain', "Don't Show Again") }]; - this.choiceService.choose(Severity.Warning, nls.localize('integrity.prompt', "Your {0} installation appears to be corrupt. Please reinstall.", product.nameShort), choices).then(choice => { + this.notificationService.prompt(Severity.Warning, nls.localize('integrity.prompt', "Your {0} installation appears to be corrupt. Please reinstall.", product.nameShort), choices).then(choice => { switch (choice) { case 0 /* More Information */: const uri = URI.parse(product.checksumFailMoreInfoUrl); diff --git a/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts b/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts index 81926ed06fa..6c00827eac5 100644 --- a/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts +++ b/src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts @@ -138,6 +138,9 @@ suite('AbstractKeybindingService', () => { error: (message: any) => { showMessageCalls.push({ sev: Severity.Error, message }); return new NoOpNotification(); + }, + prompt: () => { + return TPromise.as(0); } }; diff --git a/src/vs/platform/notification/common/notification.ts b/src/vs/platform/notification/common/notification.ts index 56251e78ec7..4e18964aff8 100644 --- a/src/vs/platform/notification/common/notification.ts +++ b/src/vs/platform/notification/common/notification.ts @@ -10,6 +10,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation' import { IDisposable } from 'vs/base/common/lifecycle'; import { IAction } from 'vs/base/common/actions'; import Event, { Emitter } from 'vs/base/common/event'; +import { TPromise } from 'vs/base/common/winjs.base'; export import Severity = Severity; @@ -44,7 +45,7 @@ export interface INotification { * close automatically when invoking a secondary action. * * **Note:** If your intent is to show a message with actions to the user, consider - * the `IChoiceService` or `IDialogService` instead which are optimized for + * the `INotificationService.prompt()` method instead which are optimized for * this usecase and much easier to use! */ actions?: INotificationActions; @@ -120,6 +121,27 @@ export interface INotificationHandle extends IDisposable { updateActions(actions?: INotificationActions): void; } + +/** + * Primary choices show up as buttons in the notification below the message. + */ +export type PrimaryPromptChoice = string; + +/** + * Secondary choices show up under the gear icon in the header of the notification. + */ +export interface SecondaryPromptChoice { + label: string; + + /** + * Wether to keep the notification open after the secondary choice was selected + * by the user. By default, will close the notification upon click. + */ + keepOpen?: boolean; +} + +export type PromptOption = PrimaryPromptChoice | SecondaryPromptChoice; + export interface INotificationService { _serviceBrand: any; @@ -129,8 +151,10 @@ export interface INotificationService { * can be used to control the notification afterwards. * * **Note:** If your intent is to show a message with actions to the user, consider - * the `IChoiceService` or `IDialogService` instead which are optimized for + * the `INotificationService.prompt()` method instead which are optimized for * this usecase and much easier to use! + * + * @returns a handle on the notification to e.g. hide it or update message, buttons, etc. */ notify(notification: INotification): INotificationHandle; @@ -151,6 +175,15 @@ export interface INotificationService { * method if you need more control over the notification. */ error(message: NotificationMessage | NotificationMessage[]): void; + + /** + * Shows a prompt in the notification area with the provided choices. The prompt + * is non-modal. If you want to show a modal dialog instead, use `IDialogService`. + * + * @returns a promise that will resolve to the index of the choice that was picked. + * The promise can be cancelled to hide the notification prompt. + */ + prompt(severity: Severity, message: string, choices: PromptOption[]): TPromise; } export class NoOpNotification implements INotificationHandle { diff --git a/src/vs/workbench/parts/extensions/browser/extensionsActions.ts b/src/vs/workbench/parts/extensions/browser/extensionsActions.ts index 05c57e64f98..e93363d84e9 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionsActions.ts @@ -44,7 +44,6 @@ import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; import { PICK_WORKSPACE_FOLDER_COMMAND_ID } from 'vs/workbench/browser/actions/workspaceCommands'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { IOpenerService } from 'vs/platform/opener/common/opener'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IQuickOpenService, IPickOpenEntry } from 'vs/platform/quickOpen/common/quickOpen'; @@ -1881,7 +1880,7 @@ export class InstallVSIXAction extends Action { id = InstallVSIXAction.ID, label = InstallVSIXAction.LABEL, @IExtensionsWorkbenchService private extensionsWorkbenchService: IExtensionsWorkbenchService, - @IChoiceService private choiceService: IChoiceService, + @INotificationService private notificationService: INotificationService, @IWindowService private windowsService: IWindowService ) { super(id, label, 'extension-action install-vsix', true); @@ -1899,7 +1898,7 @@ export class InstallVSIXAction extends Action { } return TPromise.join(result.map(vsix => this.extensionsWorkbenchService.install(vsix))).then(() => { - return this.choiceService.choose(Severity.Info, localize('InstallVSIXAction.success', "Successfully installed the extension. Reload to enable it."), [localize('InstallVSIXAction.reloadNow', "Reload Now")]).then(choice => { + return this.notificationService.prompt(Severity.Info, localize('InstallVSIXAction.success', "Successfully installed the extension. Reload to enable it."), [localize('InstallVSIXAction.reloadNow', "Reload Now")]).then(choice => { if (choice === 0) { return this.windowsService.reloadWindow(); } diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts index 2586ce2bed8..d0c433695a3 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts @@ -34,10 +34,9 @@ import { getHashedRemotesFromUri } from 'vs/workbench/parts/stats/node/workspace import { IRequestService } from 'vs/platform/request/node/request'; import { asJson } from 'vs/base/node/request'; import { isNumber } from 'vs/base/common/types'; -import { IChoiceService, Choice } from 'vs/platform/dialogs/common/dialogs'; import { language, LANGUAGE_DEFAULT } from 'vs/base/common/platform'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; -import { INotificationService } from 'vs/platform/notification/common/notification'; +import { INotificationService, PromptOption } from 'vs/platform/notification/common/notification'; interface IExtensionsContent { recommendations: string[]; @@ -72,7 +71,6 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe @IExtensionGalleryService private readonly _galleryService: IExtensionGalleryService, @IModelService private readonly _modelService: IModelService, @IStorageService private storageService: IStorageService, - @IChoiceService private choiceService: IChoiceService, @IExtensionManagementService private extensionsService: IExtensionManagementService, @IInstantiationService private instantiationService: IInstantiationService, @IFileService private fileService: IFileService, @@ -163,12 +161,12 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe return; } const message = localize('showLanguagePackExtensions', "The Marketplace has extensions that can help localizing VS Code to '{0}' locale", language); - const options: Choice[] = [ + const options: PromptOption[] = [ searchMarketplace, { label: choiceNever } ]; - this.choiceService.choose(Severity.Info, message, options).done(choice => { + this.notificationService.prompt(Severity.Info, message, options).done(choice => { switch (choice) { case 0 /* Search Marketplace */: /* __GDPR__ @@ -491,13 +489,13 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe const recommendationsAction = this.instantiationService.createInstance(ShowRecommendedExtensionsAction, ShowRecommendedExtensionsAction.ID, localize('showRecommendations', "Show Recommendations")); const installAction = this.instantiationService.createInstance(InstallRecommendedExtensionAction, id); - const options: Choice[] = [ + const options: PromptOption[] = [ localize('install', 'Install'), recommendationsAction.label, { label: choiceNever } ]; - this.choiceService.choose(Severity.Info, message, options).done(choice => { + this.notificationService.prompt(Severity.Info, message, options).done(choice => { switch (choice) { case 0 /* Install */: /* __GDPR__ @@ -571,12 +569,12 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe } const message = localize('showLanguageExtensions', "The Marketplace has extensions that can help with '.{0}' files", fileExtension); - const options: Choice[] = [ + const options: PromptOption[] = [ searchMarketplace, { label: choiceNever } ]; - this.choiceService.choose(Severity.Info, message, options).done(choice => { + this.notificationService.prompt(Severity.Info, message, options).done(choice => { switch (choice) { case 0 /* Search Marketplace */: /* __GDPR__ @@ -644,13 +642,13 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe const showAction = this.instantiationService.createInstance(ShowRecommendedExtensionsAction, ShowRecommendedExtensionsAction.ID, localize('showRecommendations', "Show Recommendations")); const installAllAction = this.instantiationService.createInstance(InstallWorkspaceRecommendedExtensionsAction, InstallWorkspaceRecommendedExtensionsAction.ID, localize('installAll', "Install All")); - const options: Choice[] = [ + const options: PromptOption[] = [ installAllAction.label, showAction.label, { label: choiceNever } ]; - return this.choiceService.choose(Severity.Info, message, options).done(choice => { + return this.notificationService.prompt(Severity.Info, message, options).done(choice => { switch (choice) { case 0 /* Install */: /* __GDPR__ @@ -696,7 +694,7 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe localize('no', "No") ]; - this.choiceService.choose(Severity.Info, message, options).done(choice => { + this.notificationService.prompt(Severity.Info, message, options).done(choice => { switch (choice) { case 0: // If the user ignores the current message and selects different file type return this.setIgnoreRecommendationsConfig(true); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts index bfc33fcfcac..b9c27924e0f 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts @@ -14,7 +14,6 @@ import { IFileService } from 'vs/platform/files/common/files'; import URI from 'vs/base/common/uri'; import Severity from 'vs/base/common/severity'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; import { IQuickOpenService, IPickOpenEntry } from 'vs/platform/quickOpen/common/quickOpen'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { LocalExtensionType } from 'vs/platform/extensionManagement/common/extensionManagement'; @@ -59,7 +58,7 @@ export class InstallVSIXAction extends Action { id = InstallVSIXAction.ID, label = InstallVSIXAction.LABEL, @IExtensionsWorkbenchService private extensionsWorkbenchService: IExtensionsWorkbenchService, - @IChoiceService private choiceService: IChoiceService, + @INotificationService private notificationService: INotificationService, @IWindowService private windowsService: IWindowService ) { super(id, label, 'extension-action install-vsix', true); @@ -77,7 +76,7 @@ export class InstallVSIXAction extends Action { } return TPromise.join(result.map(vsix => this.extensionsWorkbenchService.install(vsix))).then(() => { - return this.choiceService.choose(Severity.Info, localize('InstallVSIXAction.success', "Successfully installed the extension. Reload to enable it."), [localize('InstallVSIXAction.reloadNow', "Reload Now")]).then(choice => { + return this.notificationService.prompt(Severity.Info, localize('InstallVSIXAction.success', "Successfully installed the extension. Reload to enable it."), [localize('InstallVSIXAction.reloadNow', "Reload Now")]).then(choice => { if (choice === 0) { return this.windowsService.reloadWindow(); } diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.ts index 37544964229..3606cb4ba4e 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.ts @@ -20,8 +20,7 @@ import { ServicesAccessor, IInstantiationService } from 'vs/platform/instantiati import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { BetterMergeDisabledNowKey, BetterMergeId, areSameExtensions, adoptToGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { getIdAndVersionFromLocalExtensionId } from 'vs/platform/extensionManagement/node/extensionManagementUtil'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; -import { Severity } from 'vs/platform/notification/common/notification'; +import { Severity, INotificationService } from 'vs/platform/notification/common/notification'; export interface IExtensionStatus { identifier: IExtensionIdentifier; @@ -37,8 +36,8 @@ export class KeymapExtensions implements IWorkbenchContribution { @IInstantiationService private instantiationService: IInstantiationService, @IExtensionEnablementService private extensionEnablementService: IExtensionEnablementService, @IExtensionTipsService private tipsService: IExtensionTipsService, - @IChoiceService private choiceService: IChoiceService, @ILifecycleService lifecycleService: ILifecycleService, + @INotificationService private notificationService: INotificationService, @ITelemetryService private telemetryService: ITelemetryService, ) { this.disposables.push( @@ -70,7 +69,7 @@ export class KeymapExtensions implements IWorkbenchContribution { localize('yes', "Yes"), localize('no', "No") ]; - return this.choiceService.choose(Severity.Info, message, options) + return this.notificationService.prompt(Severity.Info, message, options) .then(value => { const confirmed = value === 0; const telemetryData: { [key: string]: any; } = { @@ -149,7 +148,7 @@ export class BetterMergeDisabled implements IWorkbenchContribution { constructor( @IStorageService storageService: IStorageService, - @IChoiceService choiceService: IChoiceService, + @INotificationService notificationService: INotificationService, @IExtensionService extensionService: IExtensionService, @IExtensionManagementService extensionManagementService: IExtensionManagementService, @ITelemetryService telemetryService: ITelemetryService, @@ -158,7 +157,7 @@ export class BetterMergeDisabled implements IWorkbenchContribution { if (storageService.getBoolean(BetterMergeDisabledNowKey, StorageScope.GLOBAL, false)) { storageService.remove(BetterMergeDisabledNowKey, StorageScope.GLOBAL); - choiceService.choose(Severity.Info, localize('betterMergeDisabled', "The Better Merge extension is now built-in, the installed extension was disabled and can be uninstalled."), [localize('uninstall', "Uninstall")]).then(choice => { + notificationService.prompt(Severity.Info, localize('betterMergeDisabled', "The Better Merge extension is now built-in, the installed extension was disabled and can be uninstalled."), [localize('uninstall', "Uninstall")]).then(choice => { if (choice === 0) { extensionManagementService.getInstalled(LocalExtensionType.User).then(extensions => { return Promise.all(extensions.filter(e => stripVersion(e.identifier.id) === BetterMergeId) diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts index 8295e319410..44adb6652ed 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts @@ -52,7 +52,6 @@ import { IContextMenuService } from 'vs/platform/contextview/browser/contextView import { getGalleryExtensionIdFromLocal, getMaliciousExtensionsSet } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { ILogService } from 'vs/platform/log/common/log'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { IPartService } from 'vs/workbench/services/part/common/partService'; @@ -488,7 +487,7 @@ export class MaliciousExtensionChecker implements IWorkbenchContribution { @IExtensionManagementService private extensionsManagementService: IExtensionManagementService, @IWindowService private windowService: IWindowService, @ILogService private logService: ILogService, - @IChoiceService private choiceService: IChoiceService + @INotificationService private notificationService: INotificationService ) { this.loopCheckForMaliciousExtensions(); } @@ -509,7 +508,7 @@ export class MaliciousExtensionChecker implements IWorkbenchContribution { if (maliciousExtensions.length) { return TPromise.join(maliciousExtensions.map(e => this.extensionsManagementService.uninstall(e, true).then(() => { - return this.choiceService.choose(Severity.Warning, localize('malicious warning', "We have uninstalled '{0}' which was reported to be problematic.", getGalleryExtensionIdFromLocal(e)), [localize('reloadNow', "Reload Now")]).then(choice => { + return this.notificationService.prompt(Severity.Warning, localize('malicious warning', "We have uninstalled '{0}' which was reported to be problematic.", getGalleryExtensionIdFromLocal(e)), [localize('reloadNow', "Reload Now")]).then(choice => { if (choice === 0) { return this.windowService.reloadWindow(); } diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index 9e76dd3e097..dd974eff6b0 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -35,7 +35,7 @@ import { ExtensionsInput } from 'vs/workbench/parts/extensions/common/extensions import product from 'vs/platform/node/product'; import { ILogService } from 'vs/platform/log/common/log'; import { IProgressService2, ProgressLocation } from 'vs/platform/progress/common/progress'; -import { IChoiceService, IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; interface IExtensionStateProvider { @@ -370,9 +370,8 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { @IExtensionGalleryService private galleryService: IExtensionGalleryService, @IConfigurationService private configurationService: IConfigurationService, @ITelemetryService private telemetryService: ITelemetryService, - @INotificationService private notificationService: INotificationService, @IDialogService private dialogService: IDialogService, - @IChoiceService private choiceService: IChoiceService, + @INotificationService private notificationService: INotificationService, @IURLService urlService: IURLService, @IExtensionEnablementService private extensionEnablementService: IExtensionEnablementService, @IWindowService private windowService: IWindowService, @@ -1001,7 +1000,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { const options = [ nls.localize('install', "Install") ]; - return this.choiceService.choose(Severity.Info, message, options).then(value => { + return this.notificationService.prompt(Severity.Info, message, options).then(value => { if (value === 0) { return this.install(extension); } diff --git a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts index af44cde792f..4b77d0803a2 100644 --- a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts +++ b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsTipsService.test.ts @@ -46,7 +46,6 @@ import product from 'vs/platform/node/product'; import { ITextModel } from 'vs/editor/common/model'; import { IModelService } from 'vs/editor/common/services/modelService'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; const mockExtensionGallery: IGalleryExtension[] = [ @@ -222,12 +221,15 @@ suite('ExtensionsTipsService Test', () => { instantiationService.stub(IExtensionsWorkbenchService, extensionsWorkbenchService); prompted = false; - instantiationService.stub(IChoiceService, { - choose: () => { + + class TestNotificationService2 extends TestNotificationService { + public prompt() { prompted = true; return TPromise.as(3); } - }); + } + + instantiationService.stub(INotificationService, new TestNotificationService2()); testConfigurationService.setUserConfiguration(ConfigurationKey, { ignoreRecommendations: false, showRecommendationsOnlyOnDemand: false }); instantiationService.stub(IStorageService, { get: (a, b, c) => c, getBoolean: (a, b, c) => c, store: () => { } }); diff --git a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsWorkbenchService.test.ts b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsWorkbenchService.test.ts index 8914e11186d..c74232470db 100644 --- a/src/vs/workbench/parts/extensions/test/electron-browser/extensionsWorkbenchService.test.ts +++ b/src/vs/workbench/parts/extensions/test/electron-browser/extensionsWorkbenchService.test.ts @@ -35,7 +35,8 @@ import { ILogService, NullLogService } from 'vs/platform/log/common/log'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { IProgressService2 } from 'vs/platform/progress/common/progress'; import { ProgressService2 } from 'vs/workbench/services/progress/browser/progressService2'; -import { IChoiceService, IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { INotificationService } from 'vs/platform/notification/common/notification'; suite('ExtensionsWorkbenchService Test', () => { @@ -76,7 +77,7 @@ suite('ExtensionsWorkbenchService Test', () => { instantiationService.stub(IExtensionTipsService, ExtensionTipsService); instantiationService.stub(IExtensionTipsService, 'getKeymapRecommendations', () => []); - instantiationService.stub(IChoiceService, { choose: () => null }); + instantiationService.stub(INotificationService, { prompt: () => null }); instantiationService.stub(IDialogService, { show: () => TPromise.as(0) }); }); @@ -85,7 +86,7 @@ suite('ExtensionsWorkbenchService Test', () => { instantiationService.stubPromise(IExtensionManagementService, 'getExtensionsReport', []); instantiationService.stubPromise(IExtensionGalleryService, 'query', aPage()); instantiationService.stub(IDialogService, { show: () => TPromise.as(0) }); - instantiationService.stubPromise(IChoiceService, 'choose', 0); + instantiationService.stubPromise(INotificationService, 'prompt', 0); (instantiationService.get(IExtensionEnablementService)).reset(); }); diff --git a/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.ts b/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.ts index ebd52903f20..44f166ae835 100644 --- a/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.ts +++ b/src/vs/workbench/parts/surveys/electron-browser/languageSurveys.contribution.ts @@ -17,8 +17,7 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag import pkg from 'vs/platform/node/package'; import product, { ISurveyData } from 'vs/platform/node/product'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; -import { IChoiceService, Choice } from 'vs/platform/dialogs/common/dialogs'; -import { Severity } from 'vs/platform/notification/common/notification'; +import { Severity, INotificationService, PromptOption } from 'vs/platform/notification/common/notification'; class LanguageSurvey { @@ -26,7 +25,7 @@ class LanguageSurvey { data: ISurveyData, instantiationService: IInstantiationService, storageService: IStorageService, - choiceService: IChoiceService, + notificationService: INotificationService, telemetryService: ITelemetryService, fileService: IFileService, modelService: IModelService @@ -88,8 +87,8 @@ class LanguageSurvey { // __GDPR__TODO__ Need to move away from dynamic event names as those cannot be registered statically telemetryService.publicLog(`${data.surveyId}.survey/userAsked`); - const choices: Choice[] = [nls.localize('takeShortSurvey', "Take Short Survey"), nls.localize('remindLater', "Remind Me later"), { label: nls.localize('neverAgain', "Don't Show Again") }]; - choiceService.choose(Severity.Info, nls.localize('helpUs', "Help us improve our support for {0}", data.languageId), choices).then(choice => { + const choices: PromptOption[] = [nls.localize('takeShortSurvey', "Take Short Survey"), nls.localize('remindLater', "Remind Me later"), { label: nls.localize('neverAgain', "Don't Show Again") }]; + notificationService.prompt(Severity.Info, nls.localize('helpUs', "Help us improve our support for {0}", data.languageId), choices).then(choice => { switch (choice) { case 0 /* Take Survey */: telemetryService.publicLog(`${data.surveyId}.survey/takeShortSurvey`); @@ -119,13 +118,13 @@ class LanguageSurveysContribution implements IWorkbenchContribution { constructor( @IInstantiationService instantiationService: IInstantiationService, @IStorageService storageService: IStorageService, - @IChoiceService choiceService: IChoiceService, + @INotificationService notificationService: INotificationService, @ITelemetryService telemetryService: ITelemetryService, @IFileService fileService: IFileService, @IModelService modelService: IModelService ) { product.surveys.filter(surveyData => surveyData.surveyId && surveyData.editCount && surveyData.languageId && surveyData.surveyUrl && surveyData.userProbability).map(surveyData => - new LanguageSurvey(surveyData, instantiationService, storageService, choiceService, telemetryService, fileService, modelService)); + new LanguageSurvey(surveyData, instantiationService, storageService, notificationService, telemetryService, fileService, modelService)); } } diff --git a/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.ts b/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.ts index 698016ef6d4..26a3cc3b48f 100644 --- a/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.ts +++ b/src/vs/workbench/parts/surveys/electron-browser/nps.contribution.ts @@ -15,8 +15,7 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag import pkg from 'vs/platform/node/package'; import product from 'vs/platform/node/product'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; -import { IChoiceService, Choice } from 'vs/platform/dialogs/common/dialogs'; -import { Severity } from 'vs/platform/notification/common/notification'; +import { Severity, INotificationService, PromptOption } from 'vs/platform/notification/common/notification'; const PROBABILITY = 0.15; const SESSION_COUNT_KEY = 'nps/sessionCount'; @@ -29,7 +28,7 @@ class NPSContribution implements IWorkbenchContribution { constructor( @IInstantiationService instantiationService: IInstantiationService, @IStorageService storageService: IStorageService, - @IChoiceService choiceService: IChoiceService, + @INotificationService notificationService: INotificationService, @ITelemetryService telemetryService: ITelemetryService ) { const skipVersion = storageService.get(SKIP_VERSION_KEY, StorageScope.GLOBAL, ''); @@ -63,8 +62,8 @@ class NPSContribution implements IWorkbenchContribution { return; } - const choices: Choice[] = [nls.localize('takeSurvey', "Take Survey"), nls.localize('remindLater', "Remind Me later"), { label: nls.localize('neverAgain', "Don't Show Again") }]; - choiceService.choose(Severity.Info, nls.localize('surveyQuestion', "Do you mind taking a quick feedback survey?"), choices).then(choice => { + const choices: PromptOption[] = [nls.localize('takeSurvey', "Take Survey"), nls.localize('remindLater', "Remind Me later"), { label: nls.localize('neverAgain', "Don't Show Again") }]; + notificationService.prompt(Severity.Info, nls.localize('surveyQuestion', "Do you mind taking a quick feedback survey?"), choices).then(choice => { switch (choice) { case 0 /* Take Survey */: telemetryService.getTelemetryInfo().then(info => { diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index c2acd6caf5a..278b41bec89 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -46,7 +46,7 @@ import { IProgressService2, IProgressOptions, ProgressLocation } from 'vs/platfo import { IOpenerService } from 'vs/platform/opener/common/opener'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IDialogService, IChoiceService, IConfirmationResult } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService, IConfirmationResult } from 'vs/platform/dialogs/common/dialogs'; import { IModelService } from 'vs/editor/common/services/modelService'; @@ -472,8 +472,7 @@ class TaskService implements ITaskService { @IOpenerService private openerService: IOpenerService, @IWindowService private readonly _windowService: IWindowService, @IDialogService private dialogService: IDialogService, - @INotificationService private notificationService: INotificationService, - @IChoiceService private choiceService: IChoiceService + @INotificationService private notificationService: INotificationService ) { this._configHasErrors = false; this._workspaceTasksPromise = undefined; @@ -491,7 +490,7 @@ class TaskService implements ITaskService { let folderSetup = this.computeWorkspaceFolderSetup(); if (this.executionEngine !== folderSetup[2]) { if (this._taskSystem && this._taskSystem.getActiveTasks().length > 0) { - this.choiceService.choose(Severity.Info, nls.localize( + this.notificationService.prompt(Severity.Info, nls.localize( 'TaskSystem.noHotSwap', 'Changing the task execution engine with an active task running requires to reload the Window' ), [nls.localize('reloadWindow', "Reload Window")]).then(choice => { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts index 0fd4de9e7a4..314511a4e90 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts @@ -13,8 +13,8 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag import { ITerminalConfiguration, ITerminalConfigHelper, ITerminalFont, IShellLaunchConfig, IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY, TERMINAL_CONFIG_SECTION } from 'vs/workbench/parts/terminal/common/terminal'; import Severity from 'vs/base/common/severity'; import { isFedora } from 'vs/workbench/parts/terminal/electron-browser/terminal'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; import { Terminal as XTermTerminal } from 'vscode-xterm'; +import { INotificationService } from 'vs/platform/notification/common/notification'; const DEFAULT_LINE_HEIGHT = 1.0; @@ -35,7 +35,7 @@ export class TerminalConfigHelper implements ITerminalConfigHelper { public constructor( @IConfigurationService private readonly _configurationService: IConfigurationService, @IWorkspaceConfigurationService private readonly _workspaceConfigurationService: IWorkspaceConfigurationService, - @IChoiceService private readonly _choiceService: IChoiceService, + @INotificationService private readonly _notificationService: INotificationService, @IStorageService private readonly _storageService: IStorageService ) { this._updateConfig(); @@ -165,7 +165,7 @@ export class TerminalConfigHelper implements ITerminalConfigHelper { } const message = nls.localize('terminal.integrated.allowWorkspaceShell', "Do you allow {0} (defined as a workspace setting) to be launched in the terminal?", changeString); const options = [nls.localize('allow', "Allow"), nls.localize('disallow', "Disallow")]; - this._choiceService.choose(Severity.Info, message, options).then(choice => { + this._notificationService.prompt(Severity.Info, message, options).then(choice => { switch (choice) { case 0: /* Allow */ this._storageService.store(IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY, true, StorageScope.WORKSPACE); diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index 3994f5ccb26..814bf288b17 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -22,7 +22,8 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag import { getTerminalDefaultShellWindows } from 'vs/workbench/parts/terminal/electron-browser/terminal'; import { TerminalPanel } from 'vs/workbench/parts/terminal/electron-browser/terminalPanel'; import { TerminalTab } from 'vs/workbench/parts/terminal/electron-browser/terminalTab'; -import { IChoiceService, IDialogService, Choice } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService, Choice } from 'vs/platform/dialogs/common/dialogs'; +import { INotificationService } from 'vs/platform/notification/common/notification'; export class TerminalService extends AbstractTerminalService implements ITerminalService { private _configHelper: TerminalConfigHelper; @@ -42,7 +43,7 @@ export class TerminalService extends AbstractTerminalService implements ITermina @IConfigurationService private readonly _configurationService: IConfigurationService, @IInstantiationService private readonly _instantiationService: IInstantiationService, @IQuickOpenService private readonly _quickOpenService: IQuickOpenService, - @IChoiceService private readonly _choiceService: IChoiceService, + @INotificationService private readonly _notificationService: INotificationService, @IDialogService private readonly _dialogService: IDialogService ) { super(contextKeyService, panelService, partService, lifecycleService, storageService); @@ -128,7 +129,7 @@ export class TerminalService extends AbstractTerminalService implements ITermina const message = nls.localize('terminal.integrated.chooseWindowsShellInfo', "You can change the default terminal shell by selecting the customize button."); const options: Choice[] = [nls.localize('customize', "Customize"), { label: nls.localize('never again', "Don't Show Again") }]; - this._choiceService.choose(Severity.Info, message, options).then(choice => { + this._notificationService.prompt(Severity.Info, message, options).then(choice => { switch (choice) { case 0 /* Customize */: this.selectDefaultWindowsShell().then(shell => { diff --git a/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.ts b/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.ts index d3edbef785c..3550191127d 100644 --- a/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.ts +++ b/src/vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution.ts @@ -14,8 +14,7 @@ import { IPreferencesService } from 'vs/workbench/parts/preferences/common/prefe import { IWorkspaceConfigurationService } from 'vs/workbench/services/configuration/common/configuration'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { IChoiceService, Choice } from 'vs/platform/dialogs/common/dialogs'; -import { Severity } from 'vs/platform/notification/common/notification'; +import { Severity, INotificationService, PromptOption } from 'vs/platform/notification/common/notification'; class UnsupportedWorkspaceSettingsContribution implements IWorkbenchContribution { @@ -28,8 +27,8 @@ class UnsupportedWorkspaceSettingsContribution implements IWorkbenchContribution @IWorkspaceContextService workspaceContextService: IWorkspaceContextService, @IWorkspaceConfigurationService private workspaceConfigurationService: IWorkspaceConfigurationService, @IPreferencesService private preferencesService: IPreferencesService, - @IChoiceService private choiceService: IChoiceService, - @IStorageService private storageService: IStorageService + @IStorageService private storageService: IStorageService, + @INotificationService private notificationService: INotificationService ) { lifecycleService.onShutdown(this.dispose, this); this.toDispose.push(this.workspaceConfigurationService.onDidChangeConfiguration(e => this.checkWorkspaceSettings())); @@ -61,8 +60,8 @@ class UnsupportedWorkspaceSettingsContribution implements IWorkbenchContribution } private showWarning(unsupportedKeys: string[]): void { - const choices: Choice[] = [nls.localize('openWorkspaceSettings', 'Open Workspace Settings'), { label: nls.localize('dontShowAgain', 'Don\'t Show Again') }]; - this.choiceService.choose(Severity.Warning, nls.localize('unsupportedWorkspaceSettings', 'This Workspace contains settings that can only be set in User Settings ({0}). Click [here]({1}) to learn more.', unsupportedKeys.join(', '), 'https://go.microsoft.com/fwlink/?linkid=839878'), choices).then(choice => { + const choices: PromptOption[] = [nls.localize('openWorkspaceSettings', 'Open Workspace Settings'), { label: nls.localize('dontShowAgain', 'Don\'t Show Again') }]; + this.notificationService.prompt(Severity.Warning, nls.localize('unsupportedWorkspaceSettings', 'This Workspace contains settings that can only be set in User Settings ({0}). Click [here]({1}) to learn more.', unsupportedKeys.join(', '), 'https://go.microsoft.com/fwlink/?linkid=839878'), choices).then(choice => { switch (choice) { case 0 /* Open Workspace Settings */: this.rememberWarningWasShown(); diff --git a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts index 79c5dc579b4..290a2b95ac3 100644 --- a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts +++ b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts @@ -39,7 +39,6 @@ import { IWorkspaceIdentifier, getWorkspaceLabel, ISingleFolderWorkspaceIdentifi import { IEditorInputFactory, EditorInput } from 'vs/workbench/common/editor'; import { getIdAndVersionFromLocalExtensionId } from 'vs/platform/extensionManagement/node/extensionManagementUtil'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; used(); @@ -227,7 +226,6 @@ class WelcomePage { @IConfigurationService private configurationService: IConfigurationService, @IEnvironmentService private environmentService: IEnvironmentService, @INotificationService private notificationService: INotificationService, - @IChoiceService private choiceService: IChoiceService, @IExtensionEnablementService private extensionEnablementService: IExtensionEnablementService, @IExtensionGalleryService private extensionGalleryService: IExtensionGalleryService, @IExtensionManagementService private extensionManagementService: IExtensionManagementService, @@ -429,7 +427,7 @@ class WelcomePage { }); }); - this.choiceService.choose(Severity.Info, strings.reloadAfterInstall.replace('{0}', extensionSuggestion.name), [localize('ok', "OK"), localize('details', "Details")]).then(choice => { + this.notificationService.prompt(Severity.Info, strings.reloadAfterInstall.replace('{0}', extensionSuggestion.name), [localize('ok', "OK"), localize('details', "Details")]).then(choice => { switch (choice) { case 0 /* OK */: const messageDelay = TPromise.timeout(300); diff --git a/src/vs/workbench/services/configuration/node/configurationEditingService.ts b/src/vs/workbench/services/configuration/node/configurationEditingService.ts index b81c48bc42e..edcd13dd67d 100644 --- a/src/vs/workbench/services/configuration/node/configurationEditingService.ts +++ b/src/vs/workbench/services/configuration/node/configurationEditingService.ts @@ -30,7 +30,6 @@ import { OVERRIDE_PROPERTY_PATTERN, IConfigurationRegistry, Extensions as Config import { ICommandService } from 'vs/platform/commands/common/commands'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { ITextModel } from 'vs/editor/common/model'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; export enum ConfigurationEditingErrorCode { @@ -127,7 +126,6 @@ export class ConfigurationEditingService { @IFileService private fileService: IFileService, @ITextModelService private textModelResolverService: ITextModelService, @ITextFileService private textFileService: ITextFileService, - @IChoiceService private choiceService: IChoiceService, @INotificationService private notificationService: INotificationService, @ICommandService private commandService: ICommandService, @IWorkbenchEditorService private editorService: IWorkbenchEditorService @@ -194,14 +192,14 @@ export class ConfigurationEditingService { : operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY ? nls.localize('openLaunchConfiguration', "Open Launch Configuration") : null; if (openStandAloneConfigurationActionLabel) { - this.choiceService.choose(Severity.Error, error.message, [openStandAloneConfigurationActionLabel]) + this.notificationService.prompt(Severity.Error, error.message, [openStandAloneConfigurationActionLabel]) .then(option => { if (option === 0) { this.openFile(operation.resource); } }); } else { - this.choiceService.choose(Severity.Error, error.message, [nls.localize('open', "Open Settings")]) + this.notificationService.prompt(Severity.Error, error.message, [nls.localize('open', "Open Settings")]) .then(option => { if (option === 0) { this.openSettings(operation); @@ -215,7 +213,7 @@ export class ConfigurationEditingService { : operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY ? nls.localize('openLaunchConfiguration', "Open Launch Configuration") : null; if (openStandAloneConfigurationActionLabel) { - this.choiceService.choose(Severity.Error, error.message, [nls.localize('saveAndRetry', "Save and Retry"), openStandAloneConfigurationActionLabel]) + this.notificationService.prompt(Severity.Error, error.message, [nls.localize('saveAndRetry', "Save and Retry"), openStandAloneConfigurationActionLabel]) .then(option => { switch (option) { case 0 /* Save & Retry */: @@ -228,7 +226,7 @@ export class ConfigurationEditingService { } }); } else { - this.choiceService.choose(Severity.Error, error.message, [nls.localize('saveAndRetry', "Save and Retry"), nls.localize('open', "Open Settings")]) + this.notificationService.prompt(Severity.Error, error.message, [nls.localize('saveAndRetry', "Save and Retry"), nls.localize('open', "Open Settings")]) .then(option => { switch (option) { case 0 /* Save and Retry */: diff --git a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts index 032c4a8770b..0bd35b5d87a 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts +++ b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts @@ -34,7 +34,7 @@ import { TextModelResolverService } from 'vs/workbench/services/textmodelResolve import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { IWindowConfiguration } from 'vs/platform/windows/common/windows'; import { mkdirp } from 'vs/base/node/pfs'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { INotificationService } from 'vs/platform/notification/common/notification'; class SettingsTestEnvironmentService extends EnvironmentService { @@ -176,7 +176,7 @@ suite('ConfigurationEditingService', () => { test('do not notify error', () => { instantiationService.stub(ITextFileService, 'isDirty', true); const target = sinon.stub(); - instantiationService.stubPromise(IChoiceService, 'choose', target); + instantiationService.stubPromise(INotificationService, 'prompt', target); return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'configurationEditing.service.testSetting', value: 'value' }, { donotNotifyError: true }) .then(() => assert.fail('Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.'), (error: ConfigurationEditingError) => { diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts index f905e0d7361..5d2170bd704 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts @@ -36,7 +36,6 @@ import { IRemoteConsoleLog, log, parse } from 'vs/base/node/console'; import { getScopes } from 'vs/platform/configuration/common/configurationRegistry'; import { ILogService } from 'vs/platform/log/common/log'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; export class ExtensionHostProcessWorker { @@ -73,7 +72,6 @@ export class ExtensionHostProcessWorker { @IWorkspaceConfigurationService private readonly _configurationService: IWorkspaceConfigurationService, @ITelemetryService private readonly _telemetryService: ITelemetryService, @ICrashReporterService private readonly _crashReporterService: ICrashReporterService, - @IChoiceService private readonly _choiceService: IChoiceService, @ILogService private readonly _logService: ILogService ) { // handle extension host lifecycle a bit special when we know we are developing an extension that runs inside @@ -238,7 +236,7 @@ export class ExtensionHostProcessWorker { ? nls.localize('extensionHostProcess.startupFailDebug', "Extension host did not start in 10 seconds, it might be stopped on the first line and needs a debugger to continue.") : nls.localize('extensionHostProcess.startupFail', "Extension host did not start in 10 seconds, that might be a problem."); - this._choiceService.choose(Severity.Warning, msg, [nls.localize('reloadWindow', "Reload Window")]).then(choice => { + this._notificationService.prompt(Severity.Warning, msg, [nls.localize('reloadWindow', "Reload Window")]).then(choice => { if (choice === 0) { this._windowService.reloadWindow(); } diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index 9939086f025..65530a4cd49 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -41,7 +41,6 @@ import product from 'vs/platform/node/product'; import * as strings from 'vs/base/common/strings'; import { RPCProtocol } from 'vs/workbench/services/extensions/node/rpcProtocol'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; let _SystemExtensionsRoot: string = null; function getSystemExtensionsRoot(): string { @@ -144,7 +143,6 @@ export class ExtensionService extends Disposable implements IExtensionService { constructor( @IInstantiationService private readonly _instantiationService: IInstantiationService, @INotificationService private readonly _notificationService: INotificationService, - @IChoiceService private readonly _choiceService: IChoiceService, @IEnvironmentService private readonly _environmentService: IEnvironmentService, @ITelemetryService private readonly _telemetryService: ITelemetryService, @IExtensionEnablementService private readonly _extensionEnablementService: IExtensionEnablementService, @@ -280,7 +278,7 @@ export class ExtensionService extends Disposable implements IExtensionService { message = nls.localize('extensionHostProcess.unresponsiveCrash', "Extension host terminated because it was not responsive."); } - this._choiceService.choose(Severity.Error, message, [nls.localize('devTools', "Developer Tools"), nls.localize('restart', "Restart Extension Host")]).then(choice => { + this._notificationService.prompt(Severity.Error, message, [nls.localize('devTools', "Developer Tools"), nls.localize('restart', "Restart Extension Host")]).then(choice => { switch (choice) { case 0 /* Open Dev Tools */: this._windowService.openDevTools(); @@ -455,7 +453,7 @@ export class ExtensionService extends Disposable implements IExtensionService { this._logOrShowMessage(severity, this._isDev ? messageWithSource2(source, message) : message); }); - return ExtensionService._scanInstalledExtensions(this._windowService, this._choiceService, this._environmentService, log) + return ExtensionService._scanInstalledExtensions(this._windowService, this._notificationService, this._environmentService, log) .then(({ system, user, development }) => { return this._extensionEnablementService.getDisabledExtensions() .then(disabledExtensions => { @@ -547,7 +545,7 @@ export class ExtensionService extends Disposable implements IExtensionService { } } - private static async _validateExtensionsCache(windowService: IWindowService, choiceService: IChoiceService, environmentService: IEnvironmentService, cacheKey: string, input: ExtensionScannerInput): TPromise { + private static async _validateExtensionsCache(windowService: IWindowService, notificationService: INotificationService, environmentService: IEnvironmentService, cacheKey: string, input: ExtensionScannerInput): TPromise { const cacheFolder = path.join(environmentService.userDataPath, MANIFEST_CACHE_FOLDER); const cacheFile = path.join(cacheFolder, cacheKey); @@ -572,7 +570,7 @@ export class ExtensionService extends Disposable implements IExtensionService { console.error(err); } - choiceService.choose(Severity.Error, nls.localize('extensionCache.invalid', "Extensions have been modified on disk. Please reload the window."), [nls.localize('reloadWindow', "Reload Window")]).then(choice => { + notificationService.prompt(Severity.Error, nls.localize('extensionCache.invalid', "Extensions have been modified on disk. Please reload the window."), [nls.localize('reloadWindow', "Reload Window")]).then(choice => { if (choice === 0) { windowService.reloadWindow(); } @@ -610,7 +608,7 @@ export class ExtensionService extends Disposable implements IExtensionService { } } - private static async _scanExtensionsWithCache(windowService: IWindowService, choiceService: IChoiceService, environmentService: IEnvironmentService, cacheKey: string, input: ExtensionScannerInput, log: ILog): TPromise { + private static async _scanExtensionsWithCache(windowService: IWindowService, notificationService: INotificationService, environmentService: IEnvironmentService, cacheKey: string, input: ExtensionScannerInput, log: ILog): TPromise { if (input.devMode) { // Do not cache when running out of sources... return ExtensionScanner.scanExtensions(input, log); @@ -628,7 +626,7 @@ export class ExtensionService extends Disposable implements IExtensionService { // Validate the cache asynchronously after 5s setTimeout(async () => { try { - await this._validateExtensionsCache(windowService, choiceService, environmentService, cacheKey, input); + await this._validateExtensionsCache(windowService, notificationService, environmentService, cacheKey, input); } catch (err) { errors.onUnexpectedError(err); } @@ -650,7 +648,7 @@ export class ExtensionService extends Disposable implements IExtensionService { return result; } - private static _scanInstalledExtensions(windowService: IWindowService, choiceService: IChoiceService, environmentService: IEnvironmentService, log: ILog): TPromise<{ system: IExtensionDescription[], user: IExtensionDescription[], development: IExtensionDescription[] }> { + private static _scanInstalledExtensions(windowService: IWindowService, notificationService: INotificationService, environmentService: IEnvironmentService, log: ILog): TPromise<{ system: IExtensionDescription[], user: IExtensionDescription[], development: IExtensionDescription[] }> { const translationConfig: TPromise = platform.translationsConfigFile ? pfs.readFile(platform.translationsConfigFile, 'utf8').then((content) => { @@ -672,7 +670,7 @@ export class ExtensionService extends Disposable implements IExtensionService { const builtinExtensions = this._scanExtensionsWithCache( windowService, - choiceService, + notificationService, environmentService, BUILTIN_MANIFEST_CACHE_FILE, new ExtensionScannerInput(version, commit, locale, devMode, getSystemExtensionsRoot(), true, translations), @@ -726,7 +724,7 @@ export class ExtensionService extends Disposable implements IExtensionService { ? TPromise.as([]) : this._scanExtensionsWithCache( windowService, - choiceService, + notificationService, environmentService, USER_MANIFEST_CACHE_FILE, new ExtensionScannerInput(version, commit, locale, devMode, environmentService.extensionsPath, false, translations), diff --git a/src/vs/workbench/services/files/electron-browser/fileService.ts b/src/vs/workbench/services/files/electron-browser/fileService.ts index 8704b7f68f2..6c09819220b 100644 --- a/src/vs/workbench/services/files/electron-browser/fileService.ts +++ b/src/vs/workbench/services/files/electron-browser/fileService.ts @@ -24,8 +24,7 @@ import { ITextResourceConfigurationService } from 'vs/editor/common/services/res import { isMacintosh, isWindows } from 'vs/base/common/platform'; import product from 'vs/platform/node/product'; import { Schemas } from 'vs/base/common/network'; -import { Severity } from 'vs/platform/notification/common/notification'; -import { IChoiceService, Choice } from 'vs/platform/dialogs/common/dialogs'; +import { Severity, INotificationService, PromptOption } from 'vs/platform/notification/common/notification'; export class FileService implements IFileService { @@ -50,7 +49,7 @@ export class FileService implements IFileService { @IWorkspaceContextService private contextService: IWorkspaceContextService, @IEnvironmentService private environmentService: IEnvironmentService, @ILifecycleService private lifecycleService: ILifecycleService, - @IChoiceService private choiceService: IChoiceService, + @INotificationService private notificationService: INotificationService, @IStorageService private storageService: IStorageService, @ITextResourceConfigurationService textResourceConfigurationService: ITextResourceConfigurationService ) { @@ -109,8 +108,8 @@ export class FileService implements IFileService { // Detect if we run < .NET Framework 4.5 (TODO@ben remove with new watcher impl) if (msg.indexOf(FileService.NET_VERSION_ERROR) >= 0 && !this.storageService.getBoolean(FileService.NET_VERSION_ERROR_IGNORE_KEY, StorageScope.WORKSPACE)) { - const choices: Choice[] = [nls.localize('installNet', "Download .NET Framework 4.5"), { label: nls.localize('neverShowAgain', "Don't Show Again") }]; - this.choiceService.choose(Severity.Warning, nls.localize('netVersionError', "The Microsoft .NET Framework 4.5 is required. Please follow the link to install it."), choices).then(choice => { + const choices: PromptOption[] = [nls.localize('installNet', "Download .NET Framework 4.5"), { label: nls.localize('neverShowAgain', "Don't Show Again") }]; + this.notificationService.prompt(Severity.Warning, nls.localize('netVersionError', "The Microsoft .NET Framework 4.5 is required. Please follow the link to install it."), choices).then(choice => { switch (choice) { case 0 /* Read More */: window.open('https://go.microsoft.com/fwlink/?LinkId=786533'); @@ -124,8 +123,8 @@ export class FileService implements IFileService { // Detect if we run into ENOSPC issues if (msg.indexOf(FileService.ENOSPC_ERROR) >= 0 && !this.storageService.getBoolean(FileService.ENOSPC_ERROR_IGNORE_KEY, StorageScope.WORKSPACE)) { - const choices: Choice[] = [nls.localize('learnMore', "Instructions"), { label: nls.localize('neverShowAgain', "Don't Show Again") }]; - this.choiceService.choose(Severity.Warning, nls.localize('enospcError', "{0} is running out of file handles. Please follow the instructions link to resolve this issue.", product.nameLong), choices).then(choice => { + const choices: PromptOption[] = [nls.localize('learnMore', "Instructions"), { label: nls.localize('neverShowAgain', "Don't Show Again") }]; + this.notificationService.prompt(Severity.Warning, nls.localize('enospcError', "{0} is running out of file handles. Please follow the instructions link to resolve this issue.", product.nameLong), choices).then(choice => { switch (choice) { case 0 /* Read More */: window.open('https://go.microsoft.com/fwlink/?linkid=867693'); diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 01fef549f4d..d93f0a80eda 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -25,7 +25,7 @@ import { IExtensionService } from 'vs/workbench/services/extensions/common/exten import { maxBufferLen, detectMimeAndEncodingFromBuffer } from 'vs/base/node/mime'; import { MIME_BINARY } from 'vs/base/common/mime'; import { localize } from 'vs/nls'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { INotificationService } from 'vs/platform/notification/common/notification'; function toIFileStat(provider: IFileSystemProvider, tuple: [URI, IStat], recurse?: (tuple: [URI, IStat]) => boolean): TPromise { const [resource, stat] = tuple; @@ -86,7 +86,7 @@ export class RemoteFileService extends FileService { @IWorkspaceContextService contextService: IWorkspaceContextService, @IEnvironmentService environmentService: IEnvironmentService, @ILifecycleService lifecycleService: ILifecycleService, - @IChoiceService choiceService: IChoiceService, + @INotificationService notificationService: INotificationService, @ITextResourceConfigurationService textResourceConfigurationService: ITextResourceConfigurationService, ) { super( @@ -94,7 +94,7 @@ export class RemoteFileService extends FileService { contextService, environmentService, lifecycleService, - choiceService, + notificationService, _storageService, textResourceConfigurationService, ); diff --git a/src/vs/workbench/services/notification/common/notificationService.ts b/src/vs/workbench/services/notification/common/notificationService.ts index 3781071048f..920eb822543 100644 --- a/src/vs/workbench/services/notification/common/notificationService.ts +++ b/src/vs/workbench/services/notification/common/notificationService.ts @@ -5,9 +5,12 @@ 'use strict'; -import { INotificationService, INotification, INotificationHandle, Severity, NotificationMessage } from 'vs/platform/notification/common/notification'; +import { INotificationService, INotification, INotificationHandle, Severity, NotificationMessage, PromptOption, INotificationActions } from 'vs/platform/notification/common/notification'; import { INotificationsModel, NotificationsModel } from 'vs/workbench/common/notifications'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { Action } from 'vs/base/common/actions'; +import { once } from 'vs/base/common/event'; export class NotificationService implements INotificationService { @@ -62,6 +65,60 @@ export class NotificationService implements INotificationService { return this.model.notify(notification); } + public prompt(severity: Severity, message: string, choices: PromptOption[]): TPromise { + let handle: INotificationHandle; + + const promise = new TPromise((c, e) => { + + // Complete promise with index of action that was picked + const callback = (index: number, closeNotification: boolean) => () => { + c(index); + + if (closeNotification) { + handle.dispose(); + } + + return TPromise.as(void 0); + }; + + // Convert choices into primary/secondary actions + const actions: INotificationActions = { + primary: [], + secondary: [] + }; + + choices.forEach((choice, index) => { + let isPrimary = true; + let label: string; + let closeNotification = false; + + if (typeof choice === 'string') { + label = choice; + } else { + isPrimary = false; + label = choice.label; + closeNotification = !choice.keepOpen; + } + + const action = new Action(`workbench.dialog.choice.${index}`, label, null, true, callback(index, closeNotification)); + if (isPrimary) { + actions.primary.push(action); + } else { + actions.secondary.push(action); + } + }); + + // Show notification with actions + handle = this.notify({ severity, message, actions }); + + // Cancel promise when notification gets disposed + once(handle.onDidDispose)(() => promise.cancel()); + + }, () => handle.dispose()); + + return promise; + } + public dispose(): void { this.toDispose = dispose(this.toDispose); } diff --git a/src/vs/workbench/services/workspace/node/workspaceEditingService.ts b/src/vs/workbench/services/workspace/node/workspaceEditingService.ts index 9b758c0c981..f5acaa9c5ba 100644 --- a/src/vs/workbench/services/workspace/node/workspaceEditingService.ts +++ b/src/vs/workbench/services/workspace/node/workspaceEditingService.ts @@ -27,7 +27,6 @@ import { ICommandService } from 'vs/platform/commands/common/commands'; import { distinct } from 'vs/base/common/arrays'; import { isLinux } from 'vs/base/common/platform'; import { isEqual } from 'vs/base/common/resources'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; export class WorkspaceEditingService implements IWorkspaceEditingService { @@ -42,7 +41,6 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { @IStorageService private storageService: IStorageService, @IExtensionService private extensionService: IExtensionService, @IBackupFileService private backupFileService: IBackupFileService, - @IChoiceService private choiceService: IChoiceService, @INotificationService private notificationService: INotificationService, @ICommandService private commandService: ICommandService ) { @@ -176,7 +174,7 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { } private askToOpenWorkspaceConfigurationFile(message: string): TPromise { - return this.choiceService.choose(Severity.Error, message, [nls.localize('openWorkspaceConfigurationFile', "Open Workspace Configuration")]) + return this.notificationService.prompt(Severity.Error, message, [nls.localize('openWorkspaceConfigurationFile', "Open Workspace Configuration")]) .then(option => { if (option === 0) { this.commandService.executeCommand('workbench.action.openWorkspaceConfigFile'); diff --git a/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts b/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts index 4f471f38864..e6695eb7d85 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts @@ -9,7 +9,7 @@ import * as assert from 'assert'; import { MainThreadMessageService } from 'vs/workbench/api/electron-browser/mainThreadMessageService'; import { TPromise as Promise, TPromise } from 'vs/base/common/winjs.base'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; -import { INotificationService, INotification, NoOpNotification, INotificationHandle } from 'vs/platform/notification/common/notification'; +import { INotificationService, INotification, NoOpNotification, INotificationHandle, PromptOption, Severity } from 'vs/platform/notification/common/notification'; import { ICommandService } from 'vs/platform/commands/common/commands'; const emptyDialogService = new class implements IDialogService { @@ -45,6 +45,9 @@ const emptyNotificationService = new class implements INotificationService { error(...args: any[]): never { throw new Error('not implemented'); } + prompt(severity: Severity, message: string, choices: PromptOption[]): TPromise { + throw new Error('not implemented'); + } }; class EmptyNotificationService implements INotificationService { @@ -68,6 +71,9 @@ class EmptyNotificationService implements INotificationService { error(message: any): void { throw new Error('Method not implemented.'); } + prompt(severity: Severity, message: string, choices: PromptOption[]): Promise { + throw new Error('Method not implemented.'); + } } suite('ExtHostMessageService', function () { diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index d8c9721d668..9fadf06875b 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -62,8 +62,8 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKeybindingService'; import { ITextBufferFactory, DefaultEndOfLine, EndOfLinePreference } from 'vs/editor/common/model'; import { Range } from 'vs/editor/common/core/range'; -import { IChoiceService, IConfirmation, IConfirmationResult, IDialogService } from 'vs/platform/dialogs/common/dialogs'; -import { INotificationService, INotificationHandle, INotification, NoOpNotification } from 'vs/platform/notification/common/notification'; +import { IConfirmation, IConfirmationResult, IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { INotificationService, INotificationHandle, INotification, NoOpNotification, PromptOption } from 'vs/platform/notification/common/notification'; export function createFileInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput { return instantiationService.createInstance(FileEditorInput, resource, void 0); @@ -263,11 +263,6 @@ export function workbenchInstantiationService(): IInstantiationService { instantiationService.stub(IEnvironmentService, TestEnvironmentService); instantiationService.stub(IThemeService, new TestThemeService()); instantiationService.stub(IHashService, new TestHashService()); - instantiationService.stub(IChoiceService, { - choose: (severity, message, options): TPromise => { - return TPromise.as(0); - } - } as IChoiceService); return instantiationService; } @@ -331,6 +326,10 @@ export class TestNotificationService implements INotificationService { public notify(notification: INotification): INotificationHandle { return TestNotificationService.NO_OP; } + + public prompt(severity: Severity, message: string, choices: PromptOption[]): TPromise { + return TPromise.as(0); + } } export class TestDialogService implements IDialogService { From b7bf4273b29b0e16c5206a8efdc569d6ec223247 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 11:46:57 +0100 Subject: [PATCH 160/658] improve test reports --- build/tfs/darwin/build.yml | 2 +- build/tfs/linux/build.yml | 2 +- build/tfs/win32/build.yml | 3 +-- test/electron/index.js | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 5039b20d9ce..300a4e93583 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -23,6 +23,6 @@ steps: name: build - script: | - ./scripts/test.sh --build --reporter dot + ./scripts/test.sh --build --reporter list ./scripts/test-integration.sh name: test diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index ef8eaf73441..71a96fd2329 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -33,5 +33,5 @@ steps: name: build - script: | - DISPLAY=:10 ./scripts/test.sh --build --reporter dot + DISPLAY=:10 ./scripts/test.sh --build --reporter list name: test diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 4e5cc955737..1ef37f0d673 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -22,7 +22,6 @@ steps: name: build - powershell: | - node --version - .\scripts\test.bat + .\scripts\test.bat --build --reporter list .\scripts\test-integration.bat name: test diff --git a/test/electron/index.js b/test/electron/index.js index 21cbefa9eba..c778f1e9117 100644 --- a/test/electron/index.js +++ b/test/electron/index.js @@ -17,7 +17,7 @@ const optimist = require('optimist') .describe('build', 'run with build output (out-build)').boolean('build') .describe('coverage', 'generate coverage report').boolean('coverage') .describe('debug', 'open dev tools, keep window open, reuse app data').string('debug') - .describe('reporter', 'the mocha reporter').string('reporter').default('reporter', process.platform === 'win32' ? 'dot' : 'spec') + .describe('reporter', 'the mocha reporter').string('reporter').default('reporter', process.platform === 'win32' ? 'list' : 'spec') .describe('help', 'show the help').alias('help', 'h'); const argv = optimist.argv; @@ -113,7 +113,7 @@ app.on('ready', () => { Reporter = require(reporterPath); } catch (err) { console.warn(`could not load reporter: ${argv.reporter}`); - Reporter = process.platform === 'win32' ? mocha.reporters.Dot : mocha.reporters.Spec; + Reporter = process.platform === 'win32' ? mocha.reporters.List : mocha.reporters.Spec; } const runner = new IPCRunner(); From c9cf13b7231e22aa9c7b634c89bd15597002a204 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 12:22:31 +0100 Subject: [PATCH 161/658] back to dot tests --- build/tfs/darwin/build.yml | 2 +- build/tfs/linux/build.yml | 2 +- build/tfs/win32/build.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 300a4e93583..5039b20d9ce 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -23,6 +23,6 @@ steps: name: build - script: | - ./scripts/test.sh --build --reporter list + ./scripts/test.sh --build --reporter dot ./scripts/test-integration.sh name: test diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 71a96fd2329..ef8eaf73441 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -33,5 +33,5 @@ steps: name: build - script: | - DISPLAY=:10 ./scripts/test.sh --build --reporter list + DISPLAY=:10 ./scripts/test.sh --build --reporter dot name: test diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 1ef37f0d673..79c5d6127d9 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -22,6 +22,6 @@ steps: name: build - powershell: | - .\scripts\test.bat --build --reporter list + .\scripts\test.bat --build --reporter dot .\scripts\test-integration.bat name: test From 9fa1442003a3abe053b19e07f43c200a786757c1 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 12:23:40 +0100 Subject: [PATCH 162/658] debt - remove choice service in favour of dialog service --- .../sharedProcess/sharedProcessMain.ts | 10 +-- src/vs/code/electron-main/main.ts | 6 +- src/vs/code/node/cliProcessMain.ts | 6 +- src/vs/platform/dialogs/common/choiceIpc.ts | 40 --------- src/vs/platform/dialogs/common/dialogIpc.ts | 46 ++++++++++ src/vs/platform/dialogs/common/dialogs.ts | 47 ++++------- .../node/{choiceCli.ts => dialogService.ts} | 15 +++- src/vs/workbench/electron-browser/shell.ts | 12 ++- .../files/electron-browser/fileActions.ts | 3 +- .../electron-browser/views/explorerViewer.ts | 3 +- .../electron-browser/terminalService.ts | 6 +- .../{dialogs.ts => dialogService.ts} | 84 +------------------ .../electron-browser/textFileService.ts | 2 +- .../api/extHostMessagerService.test.ts | 4 +- 14 files changed, 102 insertions(+), 182 deletions(-) delete mode 100644 src/vs/platform/dialogs/common/choiceIpc.ts create mode 100644 src/vs/platform/dialogs/common/dialogIpc.ts rename src/vs/platform/dialogs/node/{choiceCli.ts => dialogService.ts} (73%) rename src/vs/workbench/services/dialogs/electron-browser/{dialogs.ts => dialogService.ts} (63%) diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts index 91e4a7b0ea5..8e94210a280 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts @@ -41,8 +41,8 @@ import { LogLevelSetterChannelClient, FollowerLogService } from 'vs/platform/log import { LocalizationsService } from 'vs/platform/localizations/node/localizations'; import { ILocalizationsService } from 'vs/platform/localizations/common/localizations'; import { LocalizationsChannel } from 'vs/platform/localizations/common/localizationsIpc'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; -import { ChoiceChannelClient } from 'vs/platform/dialogs/common/choiceIpc'; +import { DialogChannelClient } from 'vs/platform/dialogs/common/dialogIpc'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; export interface ISharedProcessConfiguration { readonly machineId: string; @@ -102,13 +102,13 @@ function main(server: Server, initData: ISharedProcessInitData, configuration: I services.set(IWindowsService, windowsService); const activeWindowManager = new ActiveWindowManager(windowsService); - const choiceChannel = server.getChannel('choice', { + const dialogChannel = server.getChannel('dialog', { route: () => { - logService.info('Routing choice request to the client', activeWindowManager.activeClientId); + logService.info('Routing dialog request to the client', activeWindowManager.activeClientId); return activeWindowManager.activeClientId; } }); - services.set(IChoiceService, new ChoiceChannelClient(choiceChannel)); + services.set(IDialogService, new DialogChannelClient(dialogChannel)); const instantiationService = new InstantiationService(services); diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index 3ea85cd48ee..0819b7b05db 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -48,8 +48,8 @@ import { printDiagnostics } from 'vs/code/electron-main/diagnostics'; import { BufferLogService } from 'vs/platform/log/common/bufferLog'; import { uploadLogs } from 'vs/code/electron-main/logUploader'; import { setUnexpectedErrorHandler } from 'vs/base/common/errors'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; -import { ChoiceCliService } from 'vs/platform/dialogs/node/choiceCli'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { DialogCLIService } from 'vs/platform/dialogs/node/dialogService'; function createServices(args: ParsedArgs, bufferLogService: BufferLogService): IInstantiationService { const services = new ServiceCollection(); @@ -73,7 +73,7 @@ function createServices(args: ParsedArgs, bufferLogService: BufferLogService): I services.set(IRequestService, new SyncDescriptor(RequestService)); services.set(IURLService, new SyncDescriptor(URLService, args['open-url'] ? args._urls : [])); services.set(IBackupMainService, new SyncDescriptor(BackupMainService)); - services.set(IChoiceService, new SyncDescriptor(ChoiceCliService)); + services.set(IDialogService, new SyncDescriptor(DialogCLIService)); return new InstantiationService(services, true); } diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 6fd9ddcafd9..15b454dd0f3 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -36,8 +36,8 @@ import { StateService } from 'vs/platform/state/node/stateService'; import { createSpdLogService } from 'vs/platform/log/node/spdlogService'; import { ILogService, getLogLevel } from 'vs/platform/log/common/log'; import { isPromiseCanceledError } from 'vs/base/common/errors'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; -import { ChoiceCliService } from 'vs/platform/dialogs/node/choiceCli'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { DialogCLIService } from 'vs/platform/dialogs/node/dialogService'; const notFound = (id: string) => localize('notFound', "Extension '{0}' not found.", id); const notInstalled = (id: string) => localize('notInstalled', "Extension '{0}' is not installed.", id); @@ -219,7 +219,7 @@ export function main(argv: ParsedArgs): TPromise { services.set(IRequestService, new SyncDescriptor(RequestService)); services.set(IExtensionManagementService, new SyncDescriptor(ExtensionManagementService)); services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryService)); - services.set(IChoiceService, new SyncDescriptor(ChoiceCliService)); + services.set(IDialogService, new SyncDescriptor(DialogCLIService)); if (isBuilt && !extensionDevelopmentPath && !envService.args['disable-telemetry'] && product.enableTelemetry) { const appenders: AppInsightsAppender[] = []; diff --git a/src/vs/platform/dialogs/common/choiceIpc.ts b/src/vs/platform/dialogs/common/choiceIpc.ts deleted file mode 100644 index 893cc42cfd6..00000000000 --- a/src/vs/platform/dialogs/common/choiceIpc.ts +++ /dev/null @@ -1,40 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -'use strict'; - -import { TPromise } from 'vs/base/common/winjs.base'; -import { IChannel } from 'vs/base/parts/ipc/common/ipc'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; -import Severity from 'vs/base/common/severity'; - -export interface IChoiceChannel extends IChannel { - call(command: 'choose'): TPromise; - call(command: string, arg?: any): TPromise; -} - -export class ChoiceChannel implements IChoiceChannel { - - constructor( @IChoiceService private choiceService: IChoiceService) { - } - - call(command: string, args?: [Severity, string, string[]]): TPromise { - switch (command) { - case 'choose': return this.choiceService.choose(args[0], args[1], args[2]); - } - return TPromise.wrapError(new Error('invalid command')); - } -} - -export class ChoiceChannelClient implements IChoiceService { - - _serviceBrand: any; - - constructor(private channel: IChoiceChannel) { } - - choose(severity: Severity, message: string, options: string[]): TPromise { - return this.channel.call('choose', [severity, message, options]); - } -} \ No newline at end of file diff --git a/src/vs/platform/dialogs/common/dialogIpc.ts b/src/vs/platform/dialogs/common/dialogIpc.ts new file mode 100644 index 00000000000..2f49e44bf26 --- /dev/null +++ b/src/vs/platform/dialogs/common/dialogIpc.ts @@ -0,0 +1,46 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import { TPromise } from 'vs/base/common/winjs.base'; +import { IChannel } from 'vs/base/parts/ipc/common/ipc'; +import { IDialogService, IConfirmation, IConfirmationResult } from 'vs/platform/dialogs/common/dialogs'; +import Severity from 'vs/base/common/severity'; + +export interface IDialogChannel extends IChannel { + call(command: 'show'): TPromise; + call(command: 'confirm'): TPromise; + call(command: string, arg?: any): TPromise; +} + +export class DialogChannel implements IDialogChannel { + + constructor( @IDialogService private dialogService: IDialogService) { + } + + call(command: string, args?: any[]): TPromise { + switch (command) { + case 'show': return this.dialogService.show(args[0], args[1], args[2]); + case 'confirm': return this.dialogService.confirm(args[0]); + } + return TPromise.wrapError(new Error('invalid command')); + } +} + +export class DialogChannelClient implements IDialogService { + + _serviceBrand: any; + + constructor(private channel: IDialogChannel) { } + + show(severity: Severity, message: string, options: string[]): TPromise { + return this.channel.call('show', [severity, message, options]); + } + + confirm(confirmation: IConfirmation): TPromise { + return this.channel.call('confirm', [confirmation]); + } +} \ No newline at end of file diff --git a/src/vs/platform/dialogs/common/dialogs.ts b/src/vs/platform/dialogs/common/dialogs.ts index 5d517913c91..d674784cc38 100644 --- a/src/vs/platform/dialogs/common/dialogs.ts +++ b/src/vs/platform/dialogs/common/dialogs.ts @@ -7,6 +7,9 @@ import { TPromise } from 'vs/base/common/winjs.base'; import Severity from 'vs/base/common/severity'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; +import URI from 'vs/base/common/uri'; +import { basename } from 'vs/base/common/paths'; +import { localize } from 'vs/nls'; export interface IConfirmation { title?: string; @@ -57,36 +60,20 @@ export interface IDialogService { show(severity: Severity, message: string, buttons: string[], cancelId?: number): TPromise; } -export const IChoiceService = createDecorator('choiceService'); +const MAX_CONFIRM_FILES = 10; +export function getConfirmMessage(start: string, resourcesToConfirm: URI[]): string { + const message = [start]; + message.push(''); + message.push(...resourcesToConfirm.slice(0, MAX_CONFIRM_FILES).map(r => basename(r.fsPath))); -/** - * The choices to present to the user. The `ISecondaryChoice` hint allows to control where - * choices appear when the `modal` option is set to `false`. In that case, the choices - * are presented as part of a notification and secondary choices will appear less - * prominent. - */ -export interface SecondaryChoice { - label: string; - keepOpen?: boolean; -} -export type PrimaryChoice = string; -export type Choice = PrimaryChoice | SecondaryChoice; + if (resourcesToConfirm.length > MAX_CONFIRM_FILES) { + if (resourcesToConfirm.length - MAX_CONFIRM_FILES === 1) { + message.push(localize('moreFile', "...1 additional file not shown")); + } else { + message.push(localize('moreFiles', "...{0} additional files not shown", resourcesToConfirm.length - MAX_CONFIRM_FILES)); + } + } -export interface IChoiceService { - - _serviceBrand: any; - - /** - * Prompt the user for a choice between multiple choices. - * - * @param choices the choices to present to the user. The `isSecondary` hint allows - * to control where are presented as part of a notification and secondary choices will - * appear less choices appear when the `modal` option is set to `false`. In that case, - * the choices prominent. - * - * @returns A promise with the selected choice index. The promise is cancellable - * which hides the message. The promise can return an error, meaning that - * the user refused to choose. - */ - choose(severity: Severity, message: string, choices: Choice[]): TPromise; + message.push(''); + return message.join('\n'); } \ No newline at end of file diff --git a/src/vs/platform/dialogs/node/choiceCli.ts b/src/vs/platform/dialogs/node/dialogService.ts similarity index 73% rename from src/vs/platform/dialogs/node/choiceCli.ts rename to src/vs/platform/dialogs/node/dialogService.ts index 09123c2ab06..3c6b9db9e9a 100644 --- a/src/vs/platform/dialogs/node/choiceCli.ts +++ b/src/vs/platform/dialogs/node/dialogService.ts @@ -5,14 +5,15 @@ import * as readline from 'readline'; import { TPromise } from 'vs/base/common/winjs.base'; -import { IChoiceService } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService, IConfirmation, IConfirmationResult } from 'vs/platform/dialogs/common/dialogs'; import Severity from 'vs/base/common/severity'; +import { localize } from 'vs/nls'; -export class ChoiceCliService implements IChoiceService { +export class DialogCLIService implements IDialogService { _serviceBrand: any; - choose(severity: Severity, message: string, options: string[]): TPromise { + show(severity: Severity, message: string, options: string[]): TPromise { const promise = new TPromise((c, e) => { const rl = readline.createInterface({ input: process.stdin, @@ -55,4 +56,12 @@ export class ChoiceCliService implements IChoiceService { } return -1; } + + confirm(confirmation: IConfirmation): TPromise { + return this.show(Severity.Info, confirmation.message, [confirmation.primaryButton, confirmation.secondaryButton || localize('no', "No")]).then(index => { + return { + confirmed: index === 0 + } as IConfirmationResult; + }); + } } \ No newline at end of file diff --git a/src/vs/workbench/electron-browser/shell.ts b/src/vs/workbench/electron-browser/shell.ts index 90f799ed4f9..1b0fdcf5dc1 100644 --- a/src/vs/workbench/electron-browser/shell.ts +++ b/src/vs/workbench/electron-browser/shell.ts @@ -93,9 +93,9 @@ import { IWorkbenchIssueService } from 'vs/workbench/services/issue/common/issue import { WorkbenchIssueService } from 'vs/workbench/services/issue/electron-browser/workbenchIssueService'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { NotificationService } from 'vs/workbench/services/notification/common/notificationService'; -import { ChoiceChannel } from 'vs/platform/dialogs/common/choiceIpc'; -import { IChoiceService, IDialogService } from 'vs/platform/dialogs/common/dialogs'; -import { DialogService } from 'vs/workbench/services/dialogs/electron-browser/dialogs'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { DialogService } from 'vs/workbench/services/dialogs/electron-browser/dialogService'; +import { DialogChannel } from 'vs/platform/dialogs/common/dialogIpc'; /** * Services that we require for the Shell @@ -363,7 +363,7 @@ export class WorkbenchShell { .then(() => connectNet(this.environmentService.sharedIPCHandle, `window:${this.configuration.windowId}`)); sharedProcess - .done(client => client.registerChannel('choice', instantiationService.createInstance(ChoiceChannel))); + .done(client => client.registerChannel('dialog', instantiationService.createInstance(DialogChannel))); // Warm up font cache information before building up too many dom elements restoreFontInfo(this.storageService); @@ -407,9 +407,7 @@ export class WorkbenchShell { } serviceCollection.set(ICrashReporterService, crashReporterService); - const dialog = instantiationService.createInstance(DialogService); - serviceCollection.set(IChoiceService, dialog); - serviceCollection.set(IDialogService, dialog); + serviceCollection.set(IDialogService, instantiationService.createInstance(DialogService)); const lifecycleService = instantiationService.createInstance(LifecycleService); this.toUnbind.push(lifecycleService.onShutdown(reason => this.dispose(reason))); diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.ts index e3e74a240b8..387ce46c016 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.ts @@ -51,8 +51,7 @@ import { IListService, ListWidget } from 'vs/platform/list/browser/listService'; import { RawContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { distinctParents, basenameOrAuthority } from 'vs/base/common/resources'; import { Schemas } from 'vs/base/common/network'; -import { IDialogService, IConfirmationResult, IConfirmation } from 'vs/platform/dialogs/common/dialogs'; -import { getConfirmMessage } from 'vs/workbench/services/dialogs/electron-browser/dialogs'; +import { IDialogService, IConfirmationResult, IConfirmation, getConfirmMessage } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; export interface IEditableData { diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 863c07840f6..75e7120f0a0 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -58,8 +58,7 @@ import { DataTransfers } from 'vs/base/browser/dnd'; import { Schemas } from 'vs/base/common/network'; import { IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { rtrim } from 'vs/base/common/strings'; -import { IDialogService, IConfirmationResult, IConfirmation } from 'vs/platform/dialogs/common/dialogs'; -import { getConfirmMessage } from 'vs/workbench/services/dialogs/electron-browser/dialogs'; +import { IDialogService, IConfirmationResult, IConfirmation, getConfirmMessage } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; export class FileDataSource implements IDataSource { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts index 814bf288b17..54e34c38cb4 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalService.ts @@ -22,8 +22,8 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag import { getTerminalDefaultShellWindows } from 'vs/workbench/parts/terminal/electron-browser/terminal'; import { TerminalPanel } from 'vs/workbench/parts/terminal/electron-browser/terminalPanel'; import { TerminalTab } from 'vs/workbench/parts/terminal/electron-browser/terminalTab'; -import { IDialogService, Choice } from 'vs/platform/dialogs/common/dialogs'; -import { INotificationService } from 'vs/platform/notification/common/notification'; +import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { INotificationService, PromptOption } from 'vs/platform/notification/common/notification'; export class TerminalService extends AbstractTerminalService implements ITerminalService { private _configHelper: TerminalConfigHelper; @@ -128,7 +128,7 @@ export class TerminalService extends AbstractTerminalService implements ITermina } const message = nls.localize('terminal.integrated.chooseWindowsShellInfo', "You can change the default terminal shell by selecting the customize button."); - const options: Choice[] = [nls.localize('customize', "Customize"), { label: nls.localize('never again', "Don't Show Again") }]; + const options: PromptOption[] = [nls.localize('customize', "Customize"), { label: nls.localize('never again', "Don't Show Again") }]; this._notificationService.prompt(Severity.Info, message, options).then(choice => { switch (choice) { case 0 /* Customize */: diff --git a/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts b/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts similarity index 63% rename from src/vs/workbench/services/dialogs/electron-browser/dialogs.ts rename to src/vs/workbench/services/dialogs/electron-browser/dialogService.ts index 5007c8fcd9a..543d9552b0f 100644 --- a/src/vs/workbench/services/dialogs/electron-browser/dialogs.ts +++ b/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts @@ -10,14 +10,9 @@ import product from 'vs/platform/node/product'; import { TPromise } from 'vs/base/common/winjs.base'; import Severity from 'vs/base/common/severity'; import { isLinux, isMacintosh } from 'vs/base/common/platform'; -import { Action } from 'vs/base/common/actions'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; -import { IDialogService, IChoiceService, IConfirmation, IConfirmationResult, Choice } from 'vs/platform/dialogs/common/dialogs'; -import { INotificationService, INotificationHandle, INotificationActions } from 'vs/platform/notification/common/notification'; -import { once } from 'vs/base/common/event'; -import URI from 'vs/base/common/uri'; -import { basename } from 'vs/base/common/paths'; +import { IDialogService, IConfirmation, IConfirmationResult } from 'vs/platform/dialogs/common/dialogs'; interface IMassagedMessageBoxOptions { @@ -34,13 +29,12 @@ interface IMassagedMessageBoxOptions { buttonIndexMap: number[]; } -export class DialogService implements IChoiceService, IDialogService { +export class DialogService implements IDialogService { public _serviceBrand: any; constructor( - @IWindowService private windowService: IWindowService, - @INotificationService private notificationService: INotificationService + @IWindowService private windowService: IWindowService ) { } @@ -101,60 +95,6 @@ export class DialogService implements IChoiceService, IDialogService { return this.windowService.showMessageBox(options).then(result => buttonIndexMap[result.button]); } - public choose(severity: Severity, message: string, choices: Choice[]): TPromise { - let handle: INotificationHandle; - - const promise = new TPromise((c, e) => { - - // Complete promise with index of action that was picked - const callback = (index: number, closeNotification: boolean) => () => { - c(index); - - if (closeNotification) { - handle.dispose(); - } - - return TPromise.as(void 0); - }; - - // Convert choices into primary/secondary actions - const actions: INotificationActions = { - primary: [], - secondary: [] - }; - - choices.forEach((choice, index) => { - let isPrimary = true; - let label: string; - let closeNotification = false; - - if (typeof choice === 'string') { - label = choice; - } else { - isPrimary = false; - label = choice.label; - closeNotification = !choice.keepOpen; - } - - const action = new Action(`workbench.dialog.choice.${index}`, label, null, true, callback(index, closeNotification)); - if (isPrimary) { - actions.primary.push(action); - } else { - actions.secondary.push(action); - } - }); - - // Show notification with actions - handle = this.notificationService.notify({ severity, message, actions }); - - // Cancel promise when notification gets disposed - once(handle.onDidDispose)(() => promise.cancel()); - - }, () => handle.dispose()); - - return promise; - } - private massageMessageBoxOptions(options: Electron.MessageBoxOptions): IMassagedMessageBoxOptions { let buttonIndexMap = options.buttons.map((button, index) => index); @@ -197,22 +137,4 @@ export class DialogService implements IChoiceService, IDialogService { return { options, buttonIndexMap }; } -} - -const MAX_CONFIRM_FILES = 10; -export function getConfirmMessage(start: string, resourcesToConfirm: URI[]): string { - const message = [start]; - message.push(''); - message.push(...resourcesToConfirm.slice(0, MAX_CONFIRM_FILES).map(r => basename(r.fsPath))); - - if (resourcesToConfirm.length > MAX_CONFIRM_FILES) { - if (resourcesToConfirm.length - MAX_CONFIRM_FILES === 1) { - message.push(nls.localize('moreFile', "...1 additional file not shown")); - } else { - message.push(nls.localize('moreFiles', "...{0} additional files not shown", resourcesToConfirm.length - MAX_CONFIRM_FILES)); - } - } - - message.push(''); - return message.join('\n'); } \ No newline at end of file diff --git a/src/vs/workbench/services/textfile/electron-browser/textFileService.ts b/src/vs/workbench/services/textfile/electron-browser/textFileService.ts index 219d075fe7e..3097d9c83cc 100644 --- a/src/vs/workbench/services/textfile/electron-browser/textFileService.ts +++ b/src/vs/workbench/services/textfile/electron-browser/textFileService.ts @@ -30,8 +30,8 @@ import { IHistoryService } from 'vs/workbench/services/history/common/history'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IModelService } from 'vs/editor/common/services/modelService'; -import { getConfirmMessage } from 'vs/workbench/services/dialogs/electron-browser/dialogs'; import { INotificationService } from 'vs/platform/notification/common/notification'; +import { getConfirmMessage } from 'vs/platform/dialogs/common/dialogs'; export class TextFileService extends AbstractTextFileService { diff --git a/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts b/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts index e6695eb7d85..48cf6cd7585 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts @@ -13,7 +13,7 @@ import { INotificationService, INotification, NoOpNotification, INotificationHan import { ICommandService } from 'vs/platform/commands/common/commands'; const emptyDialogService = new class implements IDialogService { - _serviceBrand: 'choiceService'; + _serviceBrand: 'dialogService'; show(severity, message, options): never { throw new Error('not implemented'); } @@ -91,7 +91,7 @@ suite('ExtHostMessageService', function () { }); suite('modal', () => { - test('calls choice service', () => { + test('calls dialog service', () => { const service = new MainThreadMessageService(null, emptyNotificationService, emptyCommandService, { show(severity, message, options) { assert.equal(severity, 1); From 0e8e8a2abe548fead6a4b948ac9371a9c81806d9 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 12:29:49 +0100 Subject: [PATCH 163/658] builds --- build/tfs/darwin/build.yml | 2 +- build/tfs/linux/build.yml | 2 +- build/tfs/win32/build.yml | 2 +- .../test/electron-main/workspacesMainService.test.ts | 10 ++++++++-- .../test/node/configurationService.test.ts | 10 ++++++++-- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 5039b20d9ce..a1d41a6e39f 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -23,6 +23,6 @@ steps: name: build - script: | - ./scripts/test.sh --build --reporter dot + ./scripts/test.sh --build --reporter spec ./scripts/test-integration.sh name: test diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index ef8eaf73441..5b9d2f4d4e5 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -33,5 +33,5 @@ steps: name: build - script: | - DISPLAY=:10 ./scripts/test.sh --build --reporter dot + DISPLAY=:10 ./scripts/test.sh --build --reporter spec name: test diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 79c5d6127d9..397b5be2470 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -22,6 +22,6 @@ steps: name: build - powershell: | - .\scripts\test.bat --build --reporter dot + .\scripts\test.bat --build --reporter spec .\scripts\test-integration.bat name: test diff --git a/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts b/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts index 3e6ecdc785e..1c9ea95f938 100644 --- a/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts +++ b/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts @@ -361,7 +361,10 @@ suite('WorkspacesMainService', () => { }); }); - test('deleteUntitledWorkspaceSync (untitled)', done => { + test('deleteUntitledWorkspaceSync (untitled)', function (done) { + // seems to be slow + this.timeout(10000); + return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { assert.ok(fs.existsSync(workspace.configPath)); @@ -373,7 +376,10 @@ suite('WorkspacesMainService', () => { }); }); - test('deleteUntitledWorkspaceSync (saved)', done => { + test('deleteUntitledWorkspaceSync (saved)', function (done) { + // seems to be slow + this.timeout(10000); + return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { const workspaceConfigPath = path.join(os.tmpdir(), `myworkspace.${Date.now()}.${WORKSPACE_EXTENSION}`); diff --git a/src/vs/workbench/services/configuration/test/node/configurationService.test.ts b/src/vs/workbench/services/configuration/test/node/configurationService.test.ts index bf72634738b..b77c411b6d4 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationService.test.ts +++ b/src/vs/workbench/services/configuration/test/node/configurationService.test.ts @@ -192,7 +192,10 @@ suite('WorkspaceContextService - Workspace', () => { }); }); - test('add folders (at specific index)', () => { + test('add folders (at specific index)', function () { + // seems to be slow + this.timeout(10000); + const workspaceDir = path.dirname(testObject.getWorkspace().folders[0].uri.fsPath); return testObject.addFolders([{ uri: URI.file(path.join(workspaceDir, 'd')) }, { uri: URI.file(path.join(workspaceDir, 'c')) }], 0) .then(() => { @@ -206,7 +209,10 @@ suite('WorkspaceContextService - Workspace', () => { }); }); - test('add folders (at specific wrong index)', () => { + test('add folders (at specific wrong index)', function () { + // seems to be slow + this.timeout(10000); + const workspaceDir = path.dirname(testObject.getWorkspace().folders[0].uri.fsPath); return testObject.addFolders([{ uri: URI.file(path.join(workspaceDir, 'd')) }, { uri: URI.file(path.join(workspaceDir, 'c')) }], 10) .then(() => { From 59510ed5a433b21c6501bff1a50dcc1eaadfa4dc Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 7 Mar 2018 12:37:20 +0100 Subject: [PATCH 164/658] Fix tests --- .../test/node/configurationEditingService.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts index 0bd35b5d87a..777f1c1b149 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts +++ b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts @@ -35,6 +35,8 @@ import { TestConfigurationService } from 'vs/platform/configuration/test/common/ import { IWindowConfiguration } from 'vs/platform/windows/common/windows'; import { mkdirp } from 'vs/base/node/pfs'; import { INotificationService } from 'vs/platform/notification/common/notification'; +import { ICommandService } from 'vs/platform/commands/common/commands'; +import { CommandService } from 'vs/workbench/services/commands/common/commandService'; class SettingsTestEnvironmentService extends EnvironmentService { @@ -105,6 +107,7 @@ suite('ConfigurationEditingService', () => { instantiationService.stub(IFileService, new FileService(workspaceService, TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), { disableWatcher: true })); instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService)); instantiationService.stub(ITextModelService, instantiationService.createInstance(TextModelResolverService)); + instantiationService.stub(ICommandService, CommandService); testObject = instantiationService.createInstance(ConfigurationEditingService); }); } @@ -176,7 +179,7 @@ suite('ConfigurationEditingService', () => { test('do not notify error', () => { instantiationService.stub(ITextFileService, 'isDirty', true); const target = sinon.stub(); - instantiationService.stubPromise(INotificationService, 'prompt', target); + instantiationService.stub(INotificationService, { prompt: target, _serviceBrand: null, notify: null, error: null, info: null, warn: null }); return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'configurationEditing.service.testSetting', value: 'value' }, { donotNotifyError: true }) .then(() => assert.fail('Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.'), (error: ConfigurationEditingError) => { From 8d0228f52bfb1f9d1eac5e0759e2760ecab549b2 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 14:26:21 +0100 Subject: [PATCH 165/658] jsdoc :lipstick: --- src/vs/code/electron-main/main.ts | 4 ++-- src/vs/code/node/cliProcessMain.ts | 4 ++-- src/vs/platform/dialogs/common/dialogs.ts | 6 ++++++ src/vs/platform/dialogs/node/dialogService.ts | 2 +- src/vs/platform/notification/common/notification.ts | 5 +++++ .../services/notification/common/notificationService.ts | 2 +- 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index 0819b7b05db..a79ce728385 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -49,7 +49,7 @@ import { BufferLogService } from 'vs/platform/log/common/bufferLog'; import { uploadLogs } from 'vs/code/electron-main/logUploader'; import { setUnexpectedErrorHandler } from 'vs/base/common/errors'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; -import { DialogCLIService } from 'vs/platform/dialogs/node/dialogService'; +import { CommandLineDialogService } from 'vs/platform/dialogs/node/dialogService'; function createServices(args: ParsedArgs, bufferLogService: BufferLogService): IInstantiationService { const services = new ServiceCollection(); @@ -73,7 +73,7 @@ function createServices(args: ParsedArgs, bufferLogService: BufferLogService): I services.set(IRequestService, new SyncDescriptor(RequestService)); services.set(IURLService, new SyncDescriptor(URLService, args['open-url'] ? args._urls : [])); services.set(IBackupMainService, new SyncDescriptor(BackupMainService)); - services.set(IDialogService, new SyncDescriptor(DialogCLIService)); + services.set(IDialogService, new SyncDescriptor(CommandLineDialogService)); return new InstantiationService(services, true); } diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 15b454dd0f3..942f0024cd7 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -37,7 +37,7 @@ import { createSpdLogService } from 'vs/platform/log/node/spdlogService'; import { ILogService, getLogLevel } from 'vs/platform/log/common/log'; import { isPromiseCanceledError } from 'vs/base/common/errors'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; -import { DialogCLIService } from 'vs/platform/dialogs/node/dialogService'; +import { CommandLineDialogService } from 'vs/platform/dialogs/node/dialogService'; const notFound = (id: string) => localize('notFound', "Extension '{0}' not found.", id); const notInstalled = (id: string) => localize('notInstalled', "Extension '{0}' is not installed.", id); @@ -219,7 +219,7 @@ export function main(argv: ParsedArgs): TPromise { services.set(IRequestService, new SyncDescriptor(RequestService)); services.set(IExtensionManagementService, new SyncDescriptor(ExtensionManagementService)); services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryService)); - services.set(IDialogService, new SyncDescriptor(DialogCLIService)); + services.set(IDialogService, new SyncDescriptor(CommandLineDialogService)); if (isBuilt && !extensionDevelopmentPath && !envService.args['disable-telemetry'] && product.enableTelemetry) { const appenders: AppInsightsAppender[] = []; diff --git a/src/vs/platform/dialogs/common/dialogs.ts b/src/vs/platform/dialogs/common/dialogs.ts index d674784cc38..b83e0aa857f 100644 --- a/src/vs/platform/dialogs/common/dialogs.ts +++ b/src/vs/platform/dialogs/common/dialogs.ts @@ -41,6 +41,12 @@ export interface IConfirmationResult { export const IDialogService = createDecorator('dialogService'); +/** + * A service to bring up modal dialogs. + * + * Note: use the `INotificationService.prompt()` method for a non-modal way to ask + * the user for input. + */ export interface IDialogService { _serviceBrand: any; diff --git a/src/vs/platform/dialogs/node/dialogService.ts b/src/vs/platform/dialogs/node/dialogService.ts index 3c6b9db9e9a..2820d2db0fe 100644 --- a/src/vs/platform/dialogs/node/dialogService.ts +++ b/src/vs/platform/dialogs/node/dialogService.ts @@ -9,7 +9,7 @@ import { IDialogService, IConfirmation, IConfirmationResult } from 'vs/platform/ import Severity from 'vs/base/common/severity'; import { localize } from 'vs/nls'; -export class DialogCLIService implements IDialogService { +export class CommandLineDialogService implements IDialogService { _serviceBrand: any; diff --git a/src/vs/platform/notification/common/notification.ts b/src/vs/platform/notification/common/notification.ts index 4e18964aff8..8dda89e35da 100644 --- a/src/vs/platform/notification/common/notification.ts +++ b/src/vs/platform/notification/common/notification.ts @@ -142,6 +142,11 @@ export interface SecondaryPromptChoice { export type PromptOption = PrimaryPromptChoice | SecondaryPromptChoice; +/** + * A service to bring up notifications and non-modal prompts. + * + * Note: use the `IDialogService` for a modal way to ask the user for input. + */ export interface INotificationService { _serviceBrand: any; diff --git a/src/vs/workbench/services/notification/common/notificationService.ts b/src/vs/workbench/services/notification/common/notificationService.ts index 920eb822543..e250b6879f6 100644 --- a/src/vs/workbench/services/notification/common/notificationService.ts +++ b/src/vs/workbench/services/notification/common/notificationService.ts @@ -68,7 +68,7 @@ export class NotificationService implements INotificationService { public prompt(severity: Severity, message: string, choices: PromptOption[]): TPromise { let handle: INotificationHandle; - const promise = new TPromise((c, e) => { + const promise = new TPromise(c => { // Complete promise with index of action that was picked const callback = (index: number, closeNotification: boolean) => () => { From 684af0064b3c34f9b6bfae1664ae2c239a468865 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 14:58:07 +0100 Subject: [PATCH 166/658] debt - use dialog service over bare windows service --- .../standalone/browser/simpleServices.ts | 4 +- src/vs/platform/dialogs/common/dialogs.ts | 7 ++- .../node/extensionManagementService.ts | 6 +- .../mainThreadMessageService.ts | 2 +- .../cli/electron-browser/cli.contribution.ts | 2 +- .../debug/electron-browser/debugService.ts | 2 +- .../node/extensionsWorkbenchService.ts | 4 +- .../parts/update/electron-browser/update.ts | 3 +- .../dialogs/electron-browser/dialogService.ts | 12 +++- .../electron-browser/textFileService.ts | 56 +++++++------------ .../api/extHostMessagerService.test.ts | 14 ++--- .../workbench/test/workbenchTestServices.ts | 4 +- 12 files changed, 55 insertions(+), 61 deletions(-) diff --git a/src/vs/editor/standalone/browser/simpleServices.ts b/src/vs/editor/standalone/browser/simpleServices.ts index 73396ee6d4b..cd28bc5c120 100644 --- a/src/vs/editor/standalone/browser/simpleServices.ts +++ b/src/vs/editor/standalone/browser/simpleServices.ts @@ -39,7 +39,7 @@ import { OS } from 'vs/base/common/platform'; import { IRange } from 'vs/editor/common/core/range'; import { ITextModel } from 'vs/editor/common/model'; import { INotificationService, INotification, INotificationHandle, NoOpNotification, PromptOption } from 'vs/platform/notification/common/notification'; -import { IConfirmation, IConfirmationResult, IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { IConfirmation, IConfirmationResult, IDialogService, IDialogOptions } from 'vs/platform/dialogs/common/dialogs'; import { IPosition, Position as Pos } from 'vs/editor/common/core/position'; export class SimpleEditor implements IEditor { @@ -258,7 +258,7 @@ export class SimpleDialogService implements IDialogService { return TPromise.wrap(window.confirm(messageText)); } - public show(severity: Severity, message: string, buttons: string[], cancelId?: number): TPromise { + public show(severity: Severity, message: string, buttons: string[], options?: IDialogOptions): TPromise { return TPromise.as(0); } } diff --git a/src/vs/platform/dialogs/common/dialogs.ts b/src/vs/platform/dialogs/common/dialogs.ts index b83e0aa857f..f5b0f0f5462 100644 --- a/src/vs/platform/dialogs/common/dialogs.ts +++ b/src/vs/platform/dialogs/common/dialogs.ts @@ -41,6 +41,11 @@ export interface IConfirmationResult { export const IDialogService = createDecorator('dialogService'); +export interface IDialogOptions { + cancelId?: number; + detail?: string; +} + /** * A service to bring up modal dialogs. * @@ -63,7 +68,7 @@ export interface IDialogService { * then a promise with index of `cancelId` option is returned. If there is no such * option then promise with index `0` is returned. */ - show(severity: Severity, message: string, buttons: string[], cancelId?: number): TPromise; + show(severity: Severity, message: string, buttons: string[], options?: IDialogOptions): TPromise; } const MAX_CONFIRM_FILES = 10; diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 08609884b22..9f3df878827 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -194,7 +194,7 @@ export class ExtensionManagementService extends Disposable implements IExtension nls.localize('override', "Override"), nls.localize('cancel', "Cancel") ]; - return this.dialogService.show(Severity.Info, message, buttons, 1) + return this.dialogService.show(Severity.Info, message, buttons, { cancelId: 1 }) .then(value => { if (value === 0) { return this.uninstall(newer, true).then(() => true); @@ -545,7 +545,7 @@ export class ExtensionManagementService extends Disposable implements IExtension nls.localize('cancel', "Cancel") ]; this.logService.info('Requesting for confirmation to uninstall extension with dependencies', extension.identifier.id); - return this.dialogService.show(Severity.Info, message, buttons, 2) + return this.dialogService.show(Severity.Info, message, buttons, { cancelId: 2 }) .then(value => { if (value === 0) { return this.uninstallWithDependencies(extension, [], installed); @@ -570,7 +570,7 @@ export class ExtensionManagementService extends Disposable implements IExtension nls.localize('cancel', "Cancel") ]; this.logService.info('Requesting for confirmation to uninstall extension', extension.identifier.id); - return this.dialogService.show(Severity.Info, message, buttons, 1) + return this.dialogService.show(Severity.Info, message, buttons, { cancelId: 1 }) .then(value => { if (value === 0) { return this.uninstallWithDependencies(extension, [], installed); diff --git a/src/vs/workbench/api/electron-browser/mainThreadMessageService.ts b/src/vs/workbench/api/electron-browser/mainThreadMessageService.ts index 5f768179b11..d53c42223b1 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadMessageService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadMessageService.ts @@ -119,7 +119,7 @@ export class MainThreadMessageService implements MainThreadMessageServiceShape { cancelId = buttons.length - 1; } - return this._dialogService.show(severity, message, buttons, cancelId) + return this._dialogService.show(severity, message, buttons, { cancelId }) .then(result => result === commands.length ? undefined : commands[result].handle); } } diff --git a/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts b/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts index b163f2be06b..5e754fb953d 100644 --- a/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts +++ b/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts @@ -105,7 +105,7 @@ class InstallAction extends Action { return new TPromise((c, e) => { const buttons = [nls.localize('ok', "OK"), nls.localize('cancel2', "Cancel")]; - this.dialogService.show(Severity.Info, nls.localize('warnEscalation', "Code will now prompt with 'osascript' for Administrator privileges to install the shell command."), buttons, 1).then(choice => { + this.dialogService.show(Severity.Info, nls.localize('warnEscalation', "Code will now prompt with 'osascript' for Administrator privileges to install the shell command."), buttons, { cancelId: 1 }).then(choice => { switch (choice) { case 0 /* OK */: const command = 'osascript -e "do shell script \\"mkdir -p /usr/local/bin && chown \\" & (do shell script (\\"whoami\\")) & \\" /usr/local/bin\\" with administrator privileges"'; diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index ee153e3d058..b7f3f4f5a98 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -986,7 +986,7 @@ export class DebugService implements debug.IDebugService { private showError(message: string, actions: IAction[] = []): TPromise { const configureAction = this.instantiationService.createInstance(debugactions.ConfigureAction, debugactions.ConfigureAction.ID, debugactions.ConfigureAction.LABEL); actions.push(configureAction); - return this.dialogService.show(severity.Error, message, actions.map(a => a.label).concat(nls.localize('cancel', "Cancel")), actions.length).then(choice => { + return this.dialogService.show(severity.Error, message, actions.map(a => a.label).concat(nls.localize('cancel', "Cancel")), { cancelId: actions.length }).then(choice => { if (choice < actions.length) { return actions[choice].run(); } diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index dd974eff6b0..4aaf31b9398 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -691,7 +691,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { nls.localize('enable', "Yes"), nls.localize('doNotEnable', "No") ]; - return this.dialogService.show(Severity.Info, message, buttons, 1) + return this.dialogService.show(Severity.Info, message, buttons, { cancelId: 1 }) .then(value => { if (value === 0) { return this.checkAndSetEnablement(extension, dependencies, enablementState, enable); @@ -707,7 +707,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { nls.localize('disableAll', "All"), nls.localize('cancel', "Cancel") ]; - return this.dialogService.show(Severity.Info, message, buttons, 2) + return this.dialogService.show(Severity.Info, message, buttons, { cancelId: 2 }) .then(value => { if (value === 0) { return this.checkAndSetEnablement(extension, [], enablementState, enable); diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index 1fcf1cf7712..721ad9d65ce 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -316,8 +316,7 @@ export class UpdateContribution implements IGlobalActivity { this.dialogService.show( severity.Info, nls.localize('noUpdatesAvailable', "There are currently no updates available."), - [nls.localize('ok', "OK")], - 0 + [nls.localize('ok', "OK")] ); } diff --git a/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts b/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts index 543d9552b0f..24bb25cf2e6 100644 --- a/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts +++ b/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts @@ -12,7 +12,7 @@ import Severity from 'vs/base/common/severity'; import { isLinux, isMacintosh } from 'vs/base/common/platform'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; -import { IDialogService, IConfirmation, IConfirmationResult } from 'vs/platform/dialogs/common/dialogs'; +import { IDialogService, IConfirmation, IConfirmationResult, IDialogOptions } from 'vs/platform/dialogs/common/dialogs'; interface IMassagedMessageBoxOptions { @@ -87,10 +87,16 @@ export class DialogService implements IDialogService { return opts; } - public show(severity: Severity, message: string, buttons: string[], cancelId?: number): TPromise { + public show(severity: Severity, message: string, buttons: string[], dialogOptions?: IDialogOptions): TPromise { const type: 'none' | 'info' | 'error' | 'question' | 'warning' = severity === Severity.Info ? 'question' : severity === Severity.Error ? 'error' : severity === Severity.Warning ? 'warning' : 'none'; - const { options, buttonIndexMap } = this.massageMessageBoxOptions({ message, buttons, type, cancelId }); + const { options, buttonIndexMap } = this.massageMessageBoxOptions({ + message, + buttons, + type, + cancelId: dialogOptions ? dialogOptions.cancelId : void 0, + detail: dialogOptions ? dialogOptions.detail : void 0 + }); return this.windowService.showMessageBox(options).then(result => buttonIndexMap[result.button]); } diff --git a/src/vs/workbench/services/textfile/electron-browser/textFileService.ts b/src/vs/workbench/services/textfile/electron-browser/textFileService.ts index 3097d9c83cc..48a49d178e7 100644 --- a/src/vs/workbench/services/textfile/electron-browser/textFileService.ts +++ b/src/vs/workbench/services/textfile/electron-browser/textFileService.ts @@ -9,7 +9,7 @@ import nls = require('vs/nls'); import { TPromise } from 'vs/base/common/winjs.base'; import paths = require('vs/base/common/paths'); import strings = require('vs/base/common/strings'); -import { isWindows, isLinux } from 'vs/base/common/platform'; +import { isWindows } from 'vs/base/common/platform'; import URI from 'vs/base/common/uri'; import { ConfirmResult } from 'vs/workbench/common/editor'; import { TextFileService as AbstractTextFileService } from 'vs/workbench/services/textfile/common/textFileService'; @@ -21,7 +21,6 @@ import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IModeService } from 'vs/editor/common/services/modeService'; import { createTextBufferFactoryFromStream } from 'vs/editor/common/model/textModel'; -import product from 'vs/platform/node/product'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; @@ -31,7 +30,8 @@ import { mnemonicButtonLabel } from 'vs/base/common/labels'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IModelService } from 'vs/editor/common/services/modelService'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { getConfirmMessage } from 'vs/platform/dialogs/common/dialogs'; +import { getConfirmMessage, IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { Severity } from 'vs/editor/common/standalone/standaloneBase'; export class TextFileService extends AbstractTextFileService { @@ -50,7 +50,8 @@ export class TextFileService extends AbstractTextFileService { @IBackupFileService backupFileService: IBackupFileService, @IWindowsService windowsService: IWindowsService, @IHistoryService historyService: IHistoryService, - @IContextKeyService contextKeyService: IContextKeyService + @IContextKeyService contextKeyService: IContextKeyService, + @IDialogService private dialogService: IDialogService ) { super(lifecycleService, contextService, configurationService, fileService, untitledEditorService, instantiationService, notificationService, environmentService, backupFileService, windowsService, historyService, contextKeyService, modelService); } @@ -84,39 +85,22 @@ export class TextFileService extends AbstractTextFileService { const message = resourcesToConfirm.length === 1 ? nls.localize('saveChangesMessage', "Do you want to save the changes you made to {0}?", paths.basename(resourcesToConfirm[0].fsPath)) : getConfirmMessage(nls.localize('saveChangesMessages', "Do you want to save the changes to the following {0} files?", resourcesToConfirm.length), resourcesToConfirm); - // Button order - // Windows: Save | Don't Save | Cancel - // Mac: Save | Cancel | Don't Save - // Linux: Don't Save | Cancel | Save + const buttons: string[] = [ + resourcesToConfirm.length > 1 ? mnemonicButtonLabel(nls.localize({ key: 'saveAll', comment: ['&& denotes a mnemonic'] }, "&&Save All")) : mnemonicButtonLabel(nls.localize({ key: 'save', comment: ['&& denotes a mnemonic'] }, "&&Save")), + mnemonicButtonLabel(nls.localize({ key: 'dontSave', comment: ['&& denotes a mnemonic'] }, "Do&&n't Save")), + nls.localize('cancel', "Cancel") + ]; - const save = { label: resourcesToConfirm.length > 1 ? mnemonicButtonLabel(nls.localize({ key: 'saveAll', comment: ['&& denotes a mnemonic'] }, "&&Save All")) : mnemonicButtonLabel(nls.localize({ key: 'save', comment: ['&& denotes a mnemonic'] }, "&&Save")), result: ConfirmResult.SAVE }; - const dontSave = { label: mnemonicButtonLabel(nls.localize({ key: 'dontSave', comment: ['&& denotes a mnemonic'] }, "Do&&n't Save")), result: ConfirmResult.DONT_SAVE }; - const cancel = { label: nls.localize('cancel', "Cancel"), result: ConfirmResult.CANCEL }; - - const buttons: { label: string; result: ConfirmResult; }[] = []; - if (isWindows) { - buttons.push(save, dontSave, cancel); - } else if (isLinux) { - buttons.push(dontSave, cancel, save); - } else { - buttons.push(save, cancel, dontSave); - } - - const opts: Electron.MessageBoxOptions = { - title: product.nameLong, - message, - type: 'warning', - detail: nls.localize('saveChangesDetail', "Your changes will be lost if you don't save them."), - buttons: buttons.map(b => b.label), - noLink: true, - cancelId: buttons.indexOf(cancel) - }; - - if (isLinux) { - opts.defaultId = 2; - } - - return this.windowService.showMessageBox(opts).then(result => buttons[result.button].result); + return this.dialogService.show(Severity.Warning, message, buttons, { + cancelId: 2, + detail: nls.localize('saveChangesDetail', "Your changes will be lost if you don't save them.") + }).then(index => { + switch (index) { + case 0: return ConfirmResult.SAVE; + case 1: return ConfirmResult.DONT_SAVE; + default: return ConfirmResult.CANCEL; + } + }); } public promptForPath(defaultPath: string): TPromise { diff --git a/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts b/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts index 48cf6cd7585..a7711e888f6 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostMessagerService.test.ts @@ -14,7 +14,7 @@ import { ICommandService } from 'vs/platform/commands/common/commands'; const emptyDialogService = new class implements IDialogService { _serviceBrand: 'dialogService'; - show(severity, message, options): never { + show(severity, message, buttons): never { throw new Error('not implemented'); } @@ -93,11 +93,11 @@ suite('ExtHostMessageService', function () { suite('modal', () => { test('calls dialog service', () => { const service = new MainThreadMessageService(null, emptyNotificationService, emptyCommandService, { - show(severity, message, options) { + show(severity, message, buttons) { assert.equal(severity, 1); assert.equal(message, 'h'); - assert.equal(options.length, 2); - assert.equal(options[1], 'Cancel'); + assert.equal(buttons.length, 2); + assert.equal(buttons[1], 'Cancel'); return Promise.as(0); } } as IDialogService, null); @@ -109,7 +109,7 @@ suite('ExtHostMessageService', function () { test('returns undefined when cancelled', () => { const service = new MainThreadMessageService(null, emptyNotificationService, emptyCommandService, { - show(severity, message, options) { + show(severity, message, buttons) { return Promise.as(1); } } as IDialogService, null); @@ -121,8 +121,8 @@ suite('ExtHostMessageService', function () { test('hides Cancel button when not needed', () => { const service = new MainThreadMessageService(null, emptyNotificationService, emptyCommandService, { - show(severity, message, options) { - assert.equal(options.length, 1); + show(severity, message, buttons) { + assert.equal(buttons.length, 1); return Promise.as(0); } } as IDialogService, null); diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 9fadf06875b..ca255a106e1 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -62,7 +62,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKeybindingService'; import { ITextBufferFactory, DefaultEndOfLine, EndOfLinePreference } from 'vs/editor/common/model'; import { Range } from 'vs/editor/common/core/range'; -import { IConfirmation, IConfirmationResult, IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { IConfirmation, IConfirmationResult, IDialogService, IDialogOptions } from 'vs/platform/dialogs/common/dialogs'; import { INotificationService, INotificationHandle, INotification, NoOpNotification, PromptOption } from 'vs/platform/notification/common/notification'; export function createFileInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput { @@ -340,7 +340,7 @@ export class TestDialogService implements IDialogService { return TPromise.as({ confirmed: false }); } - public show(severity: Severity, message: string, buttons: string[], cancelId?: number): Promise { + public show(severity: Severity, message: string, buttons: string[], options?: IDialogOptions): Promise { return TPromise.as(0); } } From 5c3588a133448232ba401aebe88542ba590db818 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 15:08:15 +0100 Subject: [PATCH 167/658] fixes #45182 --- .../editor/contrib/parameterHints/parameterHintsWidget.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts b/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts index 63a7eeb60b7..9534bd76dc7 100644 --- a/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts +++ b/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts @@ -507,8 +507,11 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable { dispose(): void { this.disposables = dispose(this.disposables); this.renderDisposeables = dispose(this.renderDisposeables); - this.model.dispose(); - this.model = null; + + if (this.model) { + this.model.dispose(); + this.model = null; + } } } From 2454b3448208b40c2b70be68ef57e8677f1b6457 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 15:15:13 +0100 Subject: [PATCH 168/658] fixes #45181 --- src/vs/base/browser/ui/list/listWidget.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index 040362bf372..b4232c778dd 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -737,7 +737,7 @@ class PipelineRenderer implements IRenderer { let i = 0; for (const renderer of this.renderers) { - renderer.disposeTemplate(templateData[i]); + renderer.disposeTemplate(templateData[i++]); } } } From 02b94d2fca38431ae3bfdc077ab01c1f4e10e06c Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 15:18:05 +0100 Subject: [PATCH 169/658] windows yaml build --- build/tfs/win32/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 397b5be2470..d4b19181234 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -1,7 +1,5 @@ variables: - ELECTRON_RUN_AS_NODE: 1 VSCODE_BUILD_VERBOSE: true - APPVEYOR: true System.Debug: true steps: From 0c484f748386cd30dea085b18442a455c55a2b0f Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 15:28:23 +0100 Subject: [PATCH 170/658] tfs: continuous build --- build/tfs/build.yml | 76 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 build/tfs/build.yml diff --git a/build/tfs/build.yml b/build/tfs/build.yml new file mode 100644 index 00000000000..5228935c104 --- /dev/null +++ b/build/tfs/build.yml @@ -0,0 +1,76 @@ +variables: + VSCODE_BUILD_VERBOSE: true + System.Debug: true + +phases: +- phase: Windows + - task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + + - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + + - powershell: | + yarn + .\node_modules\.bin\gulp electron + .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit + npm run compile + name: build + + - powershell: | + .\scripts\test.bat --build --reporter spec + .\scripts\test-integration.bat + name: test + +- phase: Linux + - script: | + apt-get update + apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 dbus xvfb + cp build/tfs/linux/x64/xvfb.init /etc/init.d/xvfb + chmod +x /etc/init.d/xvfb + update-rc.d xvfb defaults + ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon + service xvfb start + service dbus start + - task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + - script: | + yarn + npm run gulp -- electron-x64 + - script: | + npm run gulp -- hygiene + ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit + npm run gulp -- vscode-linux-x64-min + name: build + - script: | + DISPLAY=:10 ./scripts/test.sh --build --reporter spec + name: test + +- phase: macOS + queue: Hosted macOS Preview + steps: + + - task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + - script: | + yarn + npm run gulp -- electron-x64 + - script: | + npm run gulp -- hygiene + ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit + npm run gulp -- vscode-darwin-min + name: build + - script: | + ./scripts/test.sh --build --reporter spec + ./scripts/test-integration.sh + name: test From 8744ddae2a8eef244cd790ec324fa0523ae2aabc Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 15:30:53 +0100 Subject: [PATCH 171/658] fix continuous build --- build/tfs/build.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index 5228935c104..b3359d9c7c7 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -1,9 +1,11 @@ -variables: - VSCODE_BUILD_VERBOSE: true - System.Debug: true - phases: - phase: Windows + queue: Hosted VS2017 + variables: + VSCODE_BUILD_VERBOSE: true + System.Debug: true + + steps: - task: NodeTool@0 inputs: versionSpec: "8.9.1" @@ -25,6 +27,12 @@ phases: name: test - phase: Linux + queue: Hosted Linux Preview + variables: + VSCODE_BUILD_VERBOSE: true + System.Debug: true + + steps: - script: | apt-get update apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 dbus xvfb @@ -54,6 +62,9 @@ phases: - phase: macOS queue: Hosted macOS Preview + variables: + VSCODE_BUILD_VERBOSE: true + System.Debug: true steps: - task: NodeTool@0 From 8a6ca6dd122d15b9321d0eddc9dbd962c3bacdd5 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 15:32:10 +0100 Subject: [PATCH 172/658] :lipstick: --- .../services/textfile/electron-browser/textFileService.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/services/textfile/electron-browser/textFileService.ts b/src/vs/workbench/services/textfile/electron-browser/textFileService.ts index 48a49d178e7..b3dff4ebecc 100644 --- a/src/vs/workbench/services/textfile/electron-browser/textFileService.ts +++ b/src/vs/workbench/services/textfile/electron-browser/textFileService.ts @@ -26,7 +26,6 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; import { IWindowsService, IWindowService } from 'vs/platform/windows/common/windows'; import { IHistoryService } from 'vs/workbench/services/history/common/history'; -import { mnemonicButtonLabel } from 'vs/base/common/labels'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IModelService } from 'vs/editor/common/services/modelService'; import { INotificationService } from 'vs/platform/notification/common/notification'; @@ -86,8 +85,8 @@ export class TextFileService extends AbstractTextFileService { : getConfirmMessage(nls.localize('saveChangesMessages', "Do you want to save the changes to the following {0} files?", resourcesToConfirm.length), resourcesToConfirm); const buttons: string[] = [ - resourcesToConfirm.length > 1 ? mnemonicButtonLabel(nls.localize({ key: 'saveAll', comment: ['&& denotes a mnemonic'] }, "&&Save All")) : mnemonicButtonLabel(nls.localize({ key: 'save', comment: ['&& denotes a mnemonic'] }, "&&Save")), - mnemonicButtonLabel(nls.localize({ key: 'dontSave', comment: ['&& denotes a mnemonic'] }, "Do&&n't Save")), + resourcesToConfirm.length > 1 ? nls.localize({ key: 'saveAll', comment: ['&& denotes a mnemonic'] }, "&&Save All") : nls.localize({ key: 'save', comment: ['&& denotes a mnemonic'] }, "&&Save"), + nls.localize({ key: 'dontSave', comment: ['&& denotes a mnemonic'] }, "Do&&n't Save"), nls.localize('cancel', "Cancel") ]; From efda2abf542b5c18f3fafe230cc00e0b4b0cec4d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 15:44:42 +0100 Subject: [PATCH 173/658] fixes #44715 --- extensions/git/src/commands.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 2284e266bf7..f35b73486fb 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -5,7 +5,7 @@ 'use strict'; -import { Uri, commands, Disposable, window, workspace, QuickPickItem, OutputChannel, Range, WorkspaceEdit, Position, LineChange, SourceControlResourceState, TextDocumentShowOptions, ViewColumn, ProgressLocation, TextEditor, CancellationTokenSource, StatusBarAlignment } from 'vscode'; +import { Uri, commands, Disposable, window, workspace, QuickPickItem, OutputChannel, Range, WorkspaceEdit, Position, LineChange, SourceControlResourceState, TextDocumentShowOptions, ViewColumn, ProgressLocation, TextEditor, CancellationTokenSource, StatusBarAlignment, MessageOptions } from 'vscode'; import { Ref, RefType, Git, GitErrorCodes, Branch } from './git'; import { Repository, Resource, Status, CommitOptions, ResourceGroupType } from './repository'; import { Model } from './model'; @@ -1635,6 +1635,10 @@ export class CommandCenter { this.telemetryReporter.sendTelemetryEvent('git.command', { command: id }); return result.catch(async err => { + const options: MessageOptions = { + modal: err.gitErrorCode === GitErrorCodes.DirtyWorkTree + }; + let message: string; switch (err.gitErrorCode) { @@ -1664,9 +1668,11 @@ export class CommandCenter { return; } + options.modal = true; + const outputChannel = this.outputChannel as OutputChannel; const openOutputChannelChoice = localize('open git log', "Open Git Log"); - const choice = await window.showErrorMessage(message, openOutputChannelChoice); + const choice = await window.showErrorMessage(message, options, openOutputChannelChoice); if (choice === openOutputChannelChoice) { outputChannel.show(); From 6efe6a9a1e429bac35f968dffac343b6304310f2 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 15:50:46 +0100 Subject: [PATCH 174/658] builds --- build/tfs/build.yml | 9 ++++----- build/tfs/win32/build.yml | 2 ++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index b3359d9c7c7..1c66a369128 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -4,26 +4,25 @@ phases: variables: VSCODE_BUILD_VERBOSE: true System.Debug: true + ELECTRON_RUN_AS_NODE: 1 + APPVEYOR: true steps: - task: NodeTool@0 inputs: versionSpec: "8.9.1" - - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 inputs: versionSpec: "1.3.2" - - powershell: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build - - powershell: | .\scripts\test.bat --build --reporter spec - .\scripts\test-integration.bat + # .\scripts\test-integration.bat name: test - phase: Linux @@ -83,5 +82,5 @@ phases: name: build - script: | ./scripts/test.sh --build --reporter spec - ./scripts/test-integration.sh + # ./scripts/test-integration.sh name: test diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index d4b19181234..78b2656a457 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -1,6 +1,8 @@ variables: VSCODE_BUILD_VERBOSE: true System.Debug: true + ELECTRON_RUN_AS_NODE: 1 + APPVEYOR: true steps: From 9389389e429454f9ad41d061269a65def73188d1 Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Wed, 7 Mar 2018 16:12:19 +0100 Subject: [PATCH 175/658] add correct bp location; fixes #44433 --- src/vs/workbench/api/node/extHostDebugService.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/api/node/extHostDebugService.ts b/src/vs/workbench/api/node/extHostDebugService.ts index 8e837928e5f..d26585513fb 100644 --- a/src/vs/workbench/api/node/extHostDebugService.ts +++ b/src/vs/workbench/api/node/extHostDebugService.ts @@ -140,17 +140,18 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape { for (const bpd of delta.changed) { let bp = this._breakpoints.get(bpd.id); if (bp) { - if (bpd.type === 'function') { + if (bp instanceof FunctionBreakpoint && bpd.type === 'function') { const fbp = bp; fbp.enabled = bpd.enabled; fbp.condition = bpd.condition; fbp.hitCondition = bpd.hitCondition; fbp.functionName = bpd.functionName; - } else { + } else if (bp instanceof SourceBreakpoint && bpd.type === 'source') { const sbp = bp; sbp.enabled = bpd.enabled; sbp.condition = bpd.condition; sbp.hitCondition = bpd.hitCondition; + sbp.location = new Location(URI.revive(bpd.uri), new Position(bpd.line, bpd.character)); } c.push(bp); } From 94d13ca114b69cc36d970a80f51c5b5a77e8c0b6 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 16:26:44 +0100 Subject: [PATCH 176/658] skip powershell --- build/tfs/win32/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 78b2656a457..0b9f7d41cb5 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -14,14 +14,14 @@ steps: inputs: versionSpec: "1.3.2" -- powershell: | +- script: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build -- powershell: | +- script: | .\scripts\test.bat --build --reporter spec .\scripts\test-integration.bat name: test From 864173a40fe38a805cbed21d04c776d45dcc55dd Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 16:35:24 +0100 Subject: [PATCH 177/658] fix windows build --- build/tfs/build.yml | 4 ++-- build/tfs/win32/build.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index 1c66a369128..3226d1b4e01 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -14,13 +14,13 @@ phases: - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 inputs: versionSpec: "1.3.2" - - powershell: | + - script: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build - - powershell: | + - script: | .\scripts\test.bat --build --reporter spec # .\scripts\test-integration.bat name: test diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 0b9f7d41cb5..ecfad6d3efd 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -23,5 +23,5 @@ steps: - script: | .\scripts\test.bat --build --reporter spec - .\scripts\test-integration.bat + # .\scripts\test-integration.bat name: test From 83842ecdb772b1da770c1ae2b845910d09b92ca5 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 16:53:38 +0100 Subject: [PATCH 178/658] build --- build/tfs/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index 3226d1b4e01..fcfddbf248b 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -21,7 +21,7 @@ phases: npm run compile name: build - script: | - .\scripts\test.bat --build --reporter spec + .\scripts\test.bat # .\scripts\test-integration.bat name: test @@ -56,7 +56,7 @@ phases: npm run gulp -- vscode-linux-x64-min name: build - script: | - DISPLAY=:10 ./scripts/test.sh --build --reporter spec + DISPLAY=:10 ./scripts/test.sh name: test - phase: macOS @@ -81,6 +81,6 @@ phases: npm run gulp -- vscode-darwin-min name: build - script: | - ./scripts/test.sh --build --reporter spec + ./scripts/test.sh # ./scripts/test-integration.sh name: test From 75323bfff4d49dd74e92c7ebefc1aa00303003eb Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 17:02:09 +0100 Subject: [PATCH 179/658] remove comment --- build/tfs/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index fcfddbf248b..2a7f00cc37b 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -22,7 +22,6 @@ phases: name: build - script: | .\scripts\test.bat - # .\scripts\test-integration.bat name: test - phase: Linux @@ -82,5 +81,4 @@ phases: name: build - script: | ./scripts/test.sh - # ./scripts/test-integration.sh name: test From 0b8721d1e53e092b62c76b617e91cc01e708b259 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 18:02:40 +0100 Subject: [PATCH 180/658] win tfs --- build/tfs/build.yml | 4 ++-- build/tfs/win32/build.yml | 23 ++++++++++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index 2a7f00cc37b..85c4e3a0059 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -52,7 +52,7 @@ phases: - script: | npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit - npm run gulp -- vscode-linux-x64-min + npm run compile name: build - script: | DISPLAY=:10 ./scripts/test.sh @@ -77,7 +77,7 @@ phases: - script: | npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit - npm run gulp -- vscode-darwin-min + npm run compile name: build - script: | ./scripts/test.sh diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index ecfad6d3efd..26dd3671fec 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -1,11 +1,19 @@ variables: - VSCODE_BUILD_VERBOSE: true - System.Debug: true ELECTRON_RUN_AS_NODE: 1 + VSCODE_BUILD_VERBOSE: true APPVEYOR: true + System.Debug: true steps: +- powershell: | + Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } + +- script: | + git config --global core.autocrlf false + git config --global core.safescrlf true + git checkout -f master + - task: NodeTool@0 inputs: versionSpec: "8.9.1" @@ -14,14 +22,15 @@ steps: inputs: versionSpec: "1.3.2" -- script: | +- powershell: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build -- script: | - .\scripts\test.bat --build --reporter spec - # .\scripts\test-integration.bat - name: test +- powershell: | + node --version + .\scripts\test.bat + .\scripts\test-integration.bat + name: test \ No newline at end of file From b949c1c37917d9d4608860abdc5deef114e92755 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 18:16:42 +0100 Subject: [PATCH 181/658] windows build --- build/tfs/win32/build.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 26dd3671fec..71613ec7420 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -6,14 +6,6 @@ variables: steps: -- powershell: | - Get-ChildItem -Recurse -Exclude .git | ForEach-Object { Remove-Item -Recurse -Path $_.FullName -Force } - -- script: | - git config --global core.autocrlf false - git config --global core.safescrlf true - git checkout -f master - - task: NodeTool@0 inputs: versionSpec: "8.9.1" From 134cbec22f81d5558909040491286d72b547bee6 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 7 Mar 2018 09:44:37 -0800 Subject: [PATCH 182/658] Force a scroll bar refresh when the terminal is visible Fixes #45134 --- .../parts/terminal/electron-browser/terminalInstance.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 5e81a88576a..6250b31d176 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -253,6 +253,14 @@ export class TerminalInstance implements ITerminalInstance { // The panel is minimized if (!this._isVisible) { return TerminalInstance._lastKnownDimensions; + } else { + // Trigger scroll event manually so that the viewport's scroll area is synced. This + // needs to happen otherwise its scrollTop value is invalid when the panel is toggled as + // it gets removed and then added back to the DOM (resetting scrollTop to 0). + // Upstream issue: https://github.com/sourcelair/xterm.js/issues/291 + if (this._xterm) { + this._xterm.emit('scroll', this._xterm.buffer.ydisp); + } } if (!this._wrapperElement) { From ed399fafa14e15df2e3b162efb2cd11d752923f6 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 18:50:37 +0100 Subject: [PATCH 183/658] hmmm --- build/tfs/win32/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 71613ec7420..9c49670bbaf 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -22,7 +22,6 @@ steps: name: build - powershell: | - node --version .\scripts\test.bat .\scripts\test-integration.bat name: test \ No newline at end of file From ca680c9199b3081450b01bb6a1be20b85e740127 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 7 Mar 2018 19:00:42 +0100 Subject: [PATCH 184/658] debt - fix dialog button massaging --- src/vs/platform/dialogs/node/dialogService.ts | 2 +- .../dialogs/electron-browser/dialogService.ts | 46 +++++++++---------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/vs/platform/dialogs/node/dialogService.ts b/src/vs/platform/dialogs/node/dialogService.ts index 2820d2db0fe..b1896b82a8f 100644 --- a/src/vs/platform/dialogs/node/dialogService.ts +++ b/src/vs/platform/dialogs/node/dialogService.ts @@ -58,7 +58,7 @@ export class CommandLineDialogService implements IDialogService { } confirm(confirmation: IConfirmation): TPromise { - return this.show(Severity.Info, confirmation.message, [confirmation.primaryButton, confirmation.secondaryButton || localize('no', "No")]).then(index => { + return this.show(Severity.Info, confirmation.message, [confirmation.primaryButton, confirmation.secondaryButton || localize('cancel', "Cancel")]).then(index => { return { confirmed: index === 0 } as IConfirmationResult; diff --git a/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts b/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts index 24bb25cf2e6..633bfa6e462 100644 --- a/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts +++ b/src/vs/workbench/services/dialogs/electron-browser/dialogService.ts @@ -9,7 +9,7 @@ import nls = require('vs/nls'); import product from 'vs/platform/node/product'; import { TPromise } from 'vs/base/common/winjs.base'; import Severity from 'vs/base/common/severity'; -import { isLinux, isMacintosh } from 'vs/base/common/platform'; +import { isLinux, isWindows } from 'vs/base/common/platform'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; import { IDialogService, IConfirmation, IConfirmationResult, IDialogOptions } from 'vs/platform/dialogs/common/dialogs'; @@ -67,7 +67,6 @@ export class DialogService implements IDialogService { title: confirmation.title, message: confirmation.message, buttons, - defaultId: 0, cancelId: 1 }; @@ -88,12 +87,10 @@ export class DialogService implements IDialogService { } public show(severity: Severity, message: string, buttons: string[], dialogOptions?: IDialogOptions): TPromise { - const type: 'none' | 'info' | 'error' | 'question' | 'warning' = severity === Severity.Info ? 'question' : severity === Severity.Error ? 'error' : severity === Severity.Warning ? 'warning' : 'none'; - const { options, buttonIndexMap } = this.massageMessageBoxOptions({ message, buttons, - type, + type: (severity === Severity.Info) ? 'question' : (severity === Severity.Error) ? 'error' : (severity === Severity.Warning) ? 'warning' : 'none', cancelId: dialogOptions ? dialogOptions.cancelId : void 0, detail: dialogOptions ? dialogOptions.detail : void 0 }); @@ -103,41 +100,42 @@ export class DialogService implements IDialogService { private massageMessageBoxOptions(options: Electron.MessageBoxOptions): IMassagedMessageBoxOptions { let buttonIndexMap = options.buttons.map((button, index) => index); - - options.buttons = options.buttons.map(button => mnemonicButtonLabel(button)); + let buttons = options.buttons.map(button => mnemonicButtonLabel(button)); + let cancelId = options.cancelId; // Linux: order of buttons is reverse // macOS: also reverse, but the OS handles this for us! if (isLinux) { - options.buttons = options.buttons.reverse(); + buttons = buttons.reverse(); buttonIndexMap = buttonIndexMap.reverse(); } - // Default Button - if (options.defaultId !== void 0) { - options.defaultId = buttonIndexMap[options.defaultId]; - } else if (isLinux) { - options.defaultId = buttonIndexMap[0]; - } + // Default Button (always first one) + options.defaultId = buttonIndexMap[0]; // Cancel Button - if (options.cancelId !== void 0) { + if (typeof cancelId === 'number') { - // macOS: the cancel button should always be to the left of the primary action + // Ensure the cancelId is the correct one from our mapping + cancelId = buttonIndexMap[cancelId]; + + // macOS/Linux: the cancel button should always be to the left of the primary action // if we see more than 2 buttons, move the cancel one to the left of the primary - if (isMacintosh && options.buttons.length > 2 && options.cancelId !== 1) { - const cancelButton = options.buttons[options.cancelId]; - options.buttons.splice(options.cancelId, 1); - options.buttons.splice(1, 0, cancelButton); + if (!isWindows && buttons.length > 2 && cancelId !== 1) { + const cancelButton = buttons[cancelId]; + buttons.splice(cancelId, 1); + buttons.splice(1, 0, cancelButton); - const cancelButtonIndex = buttonIndexMap[options.cancelId]; - buttonIndexMap.splice(cancelButtonIndex, 1); + const cancelButtonIndex = buttonIndexMap[cancelId]; + buttonIndexMap.splice(cancelId, 1); buttonIndexMap.splice(1, 0, cancelButtonIndex); - } - options.cancelId = buttonIndexMap[options.cancelId]; + cancelId = 1; + } } + options.buttons = buttons; + options.cancelId = cancelId; options.noLink = true; options.title = options.title || product.nameLong; From b6fe85977f285f9250c0515c9e50ca3dc9ac8f87 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 19:12:46 +0100 Subject: [PATCH 185/658] what the --- build/tfs/win32/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 9c49670bbaf..12f739b7033 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -23,5 +23,4 @@ steps: - powershell: | .\scripts\test.bat - .\scripts\test-integration.bat name: test \ No newline at end of file From ce3f88605d947c4313dc3c8815b36751209afab1 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 19:13:32 +0100 Subject: [PATCH 186/658] i don't even --- build/tfs/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index 85c4e3a0059..65619531305 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -14,13 +14,13 @@ phases: - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 inputs: versionSpec: "1.3.2" - - script: | + - powershell: | yarn .\node_modules\.bin\gulp electron .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build - - script: | + - powershell: | .\scripts\test.bat name: test From 081b93e1c095a1dbeb330be5a38e7bed6f0c6e4b Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 19:32:18 +0100 Subject: [PATCH 187/658] run hygiene in windows too --- build/tfs/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index 65619531305..e41601be587 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -17,6 +17,7 @@ phases: - powershell: | yarn .\node_modules\.bin\gulp electron + npm run gulp -- hygiene .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit npm run compile name: build From af4b815b43d65aad20971bc0b459ba29b7e63853 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 19:33:20 +0100 Subject: [PATCH 188/658] add integration --- build/tfs/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index e41601be587..061c31d2c5c 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -23,6 +23,7 @@ phases: name: build - powershell: | .\scripts\test.bat + .\scripts\test-integration.bat name: test - phase: Linux @@ -57,6 +58,7 @@ phases: name: build - script: | DISPLAY=:10 ./scripts/test.sh + DISPLAY=:10 ./scripts/test-integration.sh name: test - phase: macOS @@ -82,4 +84,5 @@ phases: name: build - script: | ./scripts/test.sh + ./scripts/test-integration.sh name: test From 8a4e893f250a95c4c657275650f1cd895346956c Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 19:57:37 +0100 Subject: [PATCH 189/658] nope this don't work --- build/tfs/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index 061c31d2c5c..5dd19e9cdce 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -58,7 +58,7 @@ phases: name: build - script: | DISPLAY=:10 ./scripts/test.sh - DISPLAY=:10 ./scripts/test-integration.sh + # DISPLAY=:10 ./scripts/test-integration.sh name: test - phase: macOS From f22d11d49011e058240b1e2718c350758d52698b Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 7 Mar 2018 11:08:48 -0800 Subject: [PATCH 190/658] Use fork of nsfw with linux symlink fix Fixes #36307 --- build/gulpfile.vscode.js | 2 +- package.json | 2 +- src/typings/{nsfw.d.ts => vscode-nsfw.d.ts} | 2 +- .../node/watcher/nsfw/nsfwWatcherService.ts | 2 +- yarn.lock | 34 +++++++++++-------- 5 files changed, 23 insertions(+), 19 deletions(-) rename src/typings/{nsfw.d.ts => vscode-nsfw.d.ts} (96%) diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index c5b8ae58e26..403d4faad4c 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -307,7 +307,7 @@ function packageTask(platform, arch, opts) { .pipe(util.cleanNodeModule('gc-signals', ['binding.gyp', 'build/**', 'src/**', 'deps/**'], ['**/*.node', 'src/index.js'])) .pipe(util.cleanNodeModule('keytar', ['binding.gyp', 'build/**', 'src/**', 'script/**', 'node_modules/**'], ['**/*.node'])) .pipe(util.cleanNodeModule('node-pty', ['binding.gyp', 'build/**', 'src/**', 'tools/**'], ['build/Release/*.exe', 'build/Release/*.dll', 'build/Release/*.node'])) - .pipe(util.cleanNodeModule('nsfw', ['binding.gyp', 'build/**', 'src/**', 'openpa/**', 'includes/**'], ['**/*.node', '**/*.a'])) + .pipe(util.cleanNodeModule('vscode-nsfw', ['binding.gyp', 'build/**', 'src/**', 'openpa/**', 'includes/**'], ['**/*.node', '**/*.a'])) .pipe(util.cleanNodeModule('vsda', ['binding.gyp', 'README.md', 'build/**', '*.bat', '*.sh', '*.cpp', '*.h'], ['build/Release/vsda.node'])) .pipe(createAsar(path.join(process.cwd(), 'node_modules'), ['**/*.node', '**/vscode-ripgrep/bin/*', '**/node-pty/build/Release/*'], 'app/node_modules.asar')); diff --git a/package.json b/package.json index 1f5f1dabe23..8dd2860eeb4 100644 --- a/package.json +++ b/package.json @@ -37,13 +37,13 @@ "native-keymap": "1.2.5", "native-watchdog": "0.3.0", "node-pty": "0.7.4", - "nsfw": "1.0.16", "semver": "4.3.6", "spdlog": "0.6.0", "sudo-prompt": "^8.0.0", "v8-inspect-profiler": "^0.0.7", "vscode-chokidar": "1.6.2", "vscode-debugprotocol": "1.27.0", + "vscode-nsfw": "1.0.17", "vscode-ripgrep": "0.7.1-patch.0.1", "vscode-textmate": "^3.2.0", "vscode-xterm": "3.3.0-beta2", diff --git a/src/typings/nsfw.d.ts b/src/typings/vscode-nsfw.d.ts similarity index 96% rename from src/typings/nsfw.d.ts rename to src/typings/vscode-nsfw.d.ts index d7d23f3c2b7..5f70eb30f7b 100644 --- a/src/typings/nsfw.d.ts +++ b/src/typings/vscode-nsfw.d.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -declare module 'nsfw' { +declare module 'vscode-nsfw' { interface NsfwWatcher { start(): any; stop(): any; diff --git a/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts b/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts index e874ca74002..6b85c158939 100644 --- a/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts @@ -8,7 +8,7 @@ import * as paths from 'vs/base/common/paths'; import * as path from 'path'; import * as platform from 'vs/base/common/platform'; import * as watcher from 'vs/workbench/services/files/node/watcher/common'; -import * as nsfw from 'nsfw'; +import * as nsfw from 'vscode-nsfw'; import { IWatcherService, IWatcherRequest } from 'vs/workbench/services/files/node/watcher/nsfw/watcher'; import { TPromise, ProgressCallback, TValueCallback, ErrorCallback } from 'vs/base/common/winjs.base'; import { ThrottledDelayer } from 'vs/base/common/async'; diff --git a/yarn.lock b/yarn.lock index 55eaa3c722d..cca157d5065 100644 --- a/yarn.lock +++ b/yarn.lock @@ -225,8 +225,8 @@ arrify@^1.0.0: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" asap@~2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" asar@^0.14.0: version "0.14.0" @@ -3817,9 +3817,9 @@ nan@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" -nan@^2.0.0, nan@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" +nan@^2.0.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" nan@^2.0.9, nan@^2.3.0: version "2.4.0" @@ -3829,6 +3829,10 @@ nan@^2.1.0: version "2.7.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" +nan@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" + nan@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" @@ -3933,16 +3937,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -nsfw@1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/nsfw/-/nsfw-1.0.16.tgz#78ba3e7f513b53d160c221b9018e0baf108614cc" - dependencies: - fs-extra "^0.26.5" - lodash.isinteger "^4.0.4" - lodash.isundefined "^3.0.1" - nan "^2.0.0" - promisify-node "^0.3.0" - nth-check@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" @@ -5981,6 +5975,16 @@ vscode-nls-dev@3.0.7: xml2js "^0.4.19" yargs "^10.1.1" +vscode-nsfw@1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/vscode-nsfw/-/vscode-nsfw-1.0.17.tgz#da3820f26aea3a7e95cadc54bd9e5dae3d47e474" + dependencies: + fs-extra "^0.26.5" + lodash.isinteger "^4.0.4" + lodash.isundefined "^3.0.1" + nan "^2.0.0" + promisify-node "^0.3.0" + vscode-ripgrep@0.7.1-patch.0.1: version "0.7.1-patch.0.1" resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-0.7.1-patch.0.1.tgz#f05d2f093fd7f6a9d10fb935171e72620feaf999" From a208584d6c7aae1de9b4db13adc8eb2c0632fc27 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 7 Mar 2018 12:16:48 -0800 Subject: [PATCH 191/658] Fix loading local resoruces on windows for out of workspace markdown files Make sure we parse the resource a file so we don't mess up the windows drive letter Fixes #45155 --- extensions/markdown/src/features/preview.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/markdown/src/features/preview.ts b/extensions/markdown/src/features/preview.ts index 5e7cbdbab08..def8fbb28c4 100644 --- a/extensions/markdown/src/features/preview.ts +++ b/extensions/markdown/src/features/preview.ts @@ -257,7 +257,7 @@ export class MarkdownPreview { } if (!resource.scheme || resource.scheme === 'file') { - return [vscode.Uri.parse(path.dirname(resource.fsPath))]; + return [vscode.Uri.file(path.dirname(resource.fsPath))]; } return []; From ccc8f5ab36b3d27ed81ff72d03d6ccbc53214ae4 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 7 Mar 2018 12:21:42 -0800 Subject: [PATCH 192/658] Fix markdown extension resources on windows Make sure we always treat paths as files and properly normalize drive letter Fixes #45007 --- extensions/markdown/src/markdownExtensions.ts | 2 +- .../parts/html/electron-browser/webview.ts | 32 ++++++++++++------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/extensions/markdown/src/markdownExtensions.ts b/extensions/markdown/src/markdownExtensions.ts index 6bba131e107..124fabd46ee 100644 --- a/extensions/markdown/src/markdownExtensions.ts +++ b/extensions/markdown/src/markdownExtensions.ts @@ -10,7 +10,7 @@ import { MarkdownContentProvider } from './features/previewContentProvider'; import { MarkdownEngine } from './markdownEngine'; const resolveExtensionResources = (extension: vscode.Extension, resourcePath: string): vscode.Uri => { - return vscode.Uri.parse(path.join(extension.extensionPath, resourcePath)) + return vscode.Uri.file(path.join(extension.extensionPath, resourcePath)) .with({ scheme: 'vscode-extension-resource' }); }; diff --git a/src/vs/workbench/parts/html/electron-browser/webview.ts b/src/vs/workbench/parts/html/electron-browser/webview.ts index ebeb734569b..12d90e9e39e 100644 --- a/src/vs/workbench/parts/html/electron-browser/webview.ts +++ b/src/vs/workbench/parts/html/electron-browser/webview.ts @@ -15,7 +15,7 @@ import { WebviewFindWidget } from './webviewFindWidget'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { IContextKey } from 'vs/platform/contextkey/common/contextkey'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { normalize, nativeSep } from 'vs/base/common/paths'; +import { nativeSep } from 'vs/base/common/paths'; import { startsWith } from 'vs/base/common/strings'; export interface WebviewOptions { @@ -322,16 +322,24 @@ export class Webview { return; } + const appRootUri = URI.file(this._environmentService.appRoot); + registerFileProtocol(contents, 'vscode-core-resource', () => [ - this._environmentService.appRoot - ]); - registerFileProtocol(contents, 'vscode-extension-resource', () => [ - this._environmentService.extensionsPath, - this._environmentService.appRoot, - this._environmentService.extensionDevelopmentPath + appRootUri ]); + + const extensionPaths = [ + URI.file(this._environmentService.extensionsPath), + appRootUri, + ]; + + if (this._environmentService.extensionDevelopmentPath) { + extensionPaths.push(URI.file(this._environmentService.extensionDevelopmentPath)); + } + registerFileProtocol(contents, 'vscode-extension-resource', () => extensionPaths); + registerFileProtocol(contents, 'vscode-workspace-resource', () => - (this._options.localResourceRoots || []).map(uri => uri.fsPath) + (this._options.localResourceRoots || []) ); } @@ -425,13 +433,13 @@ namespace ApiThemeClassName { function registerFileProtocol( contents: Electron.WebContents, protocol: string, - getRoots: () => string[] + getRoots: () => URI[] ) { contents.session.protocol.registerFileProtocol(protocol, (request, callback: any) => { - const requestPath = URI.parse(request.url).fsPath; + const requestPath = URI.parse(request.url).path; + const normalizedPath = URI.file(requestPath).fsPath; for (const root of getRoots()) { - const normalizedPath = normalize(requestPath, true); - if (startsWith(normalizedPath, root + nativeSep)) { + if (startsWith(normalizedPath, root.fsPath + nativeSep)) { callback({ path: normalizedPath }); return; } From 003d469d263309f6aed1105d9bc50b0b02c9567e Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 22:03:07 +0100 Subject: [PATCH 193/658] publish tests in tfs --- build/tfs/build.yml | 15 ++++++++--- package.json | 2 ++ test/electron/index.js | 57 ++++++++++++++++++++++++++++++--------- test/electron/renderer.js | 3 +++ yarn.lock | 51 +++++++++++++++++++++++++++++++++++ 5 files changed, 113 insertions(+), 15 deletions(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index 5dd19e9cdce..b1ee24717f1 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -22,9 +22,12 @@ phases: npm run compile name: build - powershell: | - .\scripts\test.bat + .\scripts\test.bat --tfs .\scripts\test-integration.bat name: test + - task: PublishTestResults@2 + inputs: + testResultsFiles: '.build\tests\unit-test-results.xml' - phase: Linux queue: Hosted Linux Preview @@ -57,9 +60,12 @@ phases: npm run compile name: build - script: | - DISPLAY=:10 ./scripts/test.sh + DISPLAY=:10 ./scripts/test.sh --tfs # DISPLAY=:10 ./scripts/test-integration.sh name: test + - task: PublishTestResults@2 + inputs: + testResultsFiles: '.build/tests/unit-test-results.xml' - phase: macOS queue: Hosted macOS Preview @@ -83,6 +89,9 @@ phases: npm run compile name: build - script: | - ./scripts/test.sh + ./scripts/test.sh --tfs ./scripts/test-integration.sh name: test + - task: PublishTestResults@2 + inputs: + testResultsFiles: '.build/tests/unit-test-results.xml' diff --git a/package.json b/package.json index 1f5f1dabe23..634a14975e6 100644 --- a/package.json +++ b/package.json @@ -101,6 +101,8 @@ "minimatch": "^2.0.10", "mkdirp": "^0.5.0", "mocha": "^2.2.5", + "mocha-junit-reporter": "^1.17.0", + "mocha-multi-reporters": "^1.1.7", "object-assign": "^4.0.1", "optimist": "0.3.5", "p-all": "^1.0.0", diff --git a/test/electron/index.js b/test/electron/index.js index c778f1e9117..953723c351f 100644 --- a/test/electron/index.js +++ b/test/electron/index.js @@ -10,6 +10,8 @@ const path = require('path'); const mocha = require('mocha'); const events = require('events'); +const defaultReporterName = process.platform === 'win32' ? 'list' : 'spec'; + const optimist = require('optimist') .describe('grep', 'only run tests matching ').alias('grep', 'g').alias('grep', 'f').string('grep') .describe('run', 'only run tests from ').string('run') @@ -17,7 +19,9 @@ const optimist = require('optimist') .describe('build', 'run with build output (out-build)').boolean('build') .describe('coverage', 'generate coverage report').boolean('coverage') .describe('debug', 'open dev tools, keep window open, reuse app data').string('debug') - .describe('reporter', 'the mocha reporter').string('reporter').default('reporter', process.platform === 'win32' ? 'list' : 'spec') + .describe('reporter', 'the mocha reporter').string('reporter').default('reporter', defaultReporterName) + .describe('reporter-options', 'the mocha reporter options').string('reporter-options').default('reporter-options', '') + .describe('tfs').boolean('tfs') .describe('help', 'show the help').alias('help', 'h'); const argv = optimist.argv; @@ -33,6 +37,9 @@ if (!argv.debug) { function deserializeSuite(suite) { return { + root: suite.root, + suites: suite.suites, + tests: suite.tests, title: suite.title, fullTitle: () => suite.fullTitle, timeout: () => suite.timeout, @@ -84,6 +91,11 @@ class IPCRunner extends events.EventEmitter { } } +function parseReporterOption(value) { + let r = /^([^=]+)=(.*)$/.exec(value); + return r ? { [r[1]]: r[2] } : {}; +} + app.on('ready', () => { const win = new BrowserWindow({ @@ -106,18 +118,39 @@ app.on('ready', () => { win.loadURL(`file://${__dirname}/renderer.html`); - const reporterPath = path.join(path.dirname(require.resolve('mocha')), 'lib', 'reporters', argv.reporter); - let Reporter; - - try { - Reporter = require(reporterPath); - } catch (err) { - console.warn(`could not load reporter: ${argv.reporter}`); - Reporter = process.platform === 'win32' ? mocha.reporters.List : mocha.reporters.Spec; - } - const runner = new IPCRunner(); - new Reporter(runner); + + if (argv.tfs) { + const Reporter = require('mocha-multi-reporters'); + const reporterOptions = { + reporterEnabled: `${defaultReporterName}, mocha-junit-reporter`, + mochaJunitReporterReporterOptions: { + mochaFile: '.build/tests/unit-test-results.xml' + } + }; + + new Reporter(runner, { reporterOptions }); + } else { + const reporterPath = path.join(path.dirname(require.resolve('mocha')), 'lib', 'reporters', argv.reporter); + let Reporter; + + try { + Reporter = require(reporterPath); + } catch (err) { + try { + Reporter = require(argv.reporter); + } catch (err) { + Reporter = process.platform === 'win32' ? mocha.reporters.List : mocha.reporters.Spec; + console.warn(`could not load reporter: ${argv.reporter}, using ${Reporter.name}`); + } + } + + let reporterOptions = argv['reporter-options']; + reporterOptions = typeof reporterOptions === 'string' ? [reporterOptions] : reporterOptions; + reporterOptions = reporterOptions.reduce((r, o) => Object.assign(r, parseReporterOption(o)), {}); + + new Reporter(runner, { reporterOptions }); + } if (!argv.debug) { ipcMain.on('all done', () => app.exit(runner.didFail ? 1 : 0)); diff --git a/test/electron/renderer.js b/test/electron/renderer.js index 8afc71c35bf..5658b244719 100644 --- a/test/electron/renderer.js +++ b/test/electron/renderer.js @@ -187,6 +187,9 @@ function loadTests(opts) { function serializeSuite(suite) { return { + root: suite.root, + suites: suite.suites.map(serializeSuite), + tests: suite.tests.map(serializeRunnable), title: suite.title, fullTitle: suite.fullTitle(), timeout: suite.timeout(), diff --git a/yarn.lock b/yarn.lock index 55eaa3c722d..d81f5361e16 100644 --- a/yarn.lock +++ b/yarn.lock @@ -607,6 +607,10 @@ chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +charenc@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + cheerio@^1.0.0-rc.1: version "1.0.0-rc.2" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" @@ -890,6 +894,10 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" +crypt@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + cryptiles@0.2.x: version "0.2.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz#ed91ff1f17ad13d3748288594f8a48a0d26f325c" @@ -1059,6 +1067,12 @@ debug@2.6.9, debug@2.X, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0: dependencies: ms "2.0.0" +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" + decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -2840,6 +2854,10 @@ is-buffer@^1.0.2: version "1.1.4" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" +is-buffer@~1.1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" @@ -3511,6 +3529,10 @@ lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@^4.16.4: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + lodash@~0.9.2: version "0.9.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-0.9.2.tgz#8f3499c5245d346d682e5b0d3b40767e09f1a92c" @@ -3607,6 +3629,14 @@ math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" +md5@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" + dependencies: + charenc "~0.0.1" + crypt "~0.0.1" + is-buffer "~1.1.1" + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -3767,6 +3797,23 @@ mksnapshot@^0.3.0: fs-extra "0.26.7" request "^2.79.0" +mocha-junit-reporter@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.17.0.tgz#2e5149ed40fc5d2e3ca71e42db5ab1fec9c6d85c" + dependencies: + debug "^2.2.0" + md5 "^2.1.0" + mkdirp "~0.5.1" + strip-ansi "^4.0.0" + xml "^1.0.0" + +mocha-multi-reporters@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/mocha-multi-reporters/-/mocha-multi-reporters-1.1.7.tgz#cc7f3f4d32f478520941d852abb64d9988587d82" + dependencies: + debug "^3.1.0" + lodash "^4.16.4" + mocha@^2.0.1, mocha@^2.2.5: version "2.5.3" resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" @@ -6098,6 +6145,10 @@ xml2js@^0.4.19: sax ">=0.6.0" xmlbuilder "~9.0.1" +xml@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + xmlbuilder@0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-0.4.3.tgz#c4614ba74e0ad196e609c9272cd9e1ddb28a8a58" From 3ca1f5843d922ca93e61f90a3a7a201aaa3fab19 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 7 Mar 2018 22:03:55 +0100 Subject: [PATCH 194/658] fix yaml --- build/tfs/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/tfs/build.yml b/build/tfs/build.yml index b1ee24717f1..0359ec3035a 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -27,7 +27,7 @@ phases: name: test - task: PublishTestResults@2 inputs: - testResultsFiles: '.build\tests\unit-test-results.xml' + testResultsFiles: '.build\tests\unit-test-results.xml' - phase: Linux queue: Hosted Linux Preview @@ -65,7 +65,7 @@ phases: name: test - task: PublishTestResults@2 inputs: - testResultsFiles: '.build/tests/unit-test-results.xml' + testResultsFiles: '.build/tests/unit-test-results.xml' - phase: macOS queue: Hosted macOS Preview @@ -94,4 +94,4 @@ phases: name: test - task: PublishTestResults@2 inputs: - testResultsFiles: '.build/tests/unit-test-results.xml' + testResultsFiles: '.build/tests/unit-test-results.xml' From 09a4bdefe435968bfcdd715c5ab4b06d74501be0 Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Wed, 7 Mar 2018 22:07:08 +0100 Subject: [PATCH 195/658] attempt to fix #45025 --- .../parts/debug/electron-browser/terminalSupport.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/terminalSupport.ts b/src/vs/workbench/parts/debug/electron-browser/terminalSupport.ts index 914a20f5984..b3677c3dd12 100644 --- a/src/vs/workbench/parts/debug/electron-browser/terminalSupport.ts +++ b/src/vs/workbench/parts/debug/electron-browser/terminalSupport.ts @@ -43,9 +43,13 @@ export class TerminalSupport { terminalService.showPanel(true); const command = this.prepareCommand(args, configurationService); - t.sendText(command, true); - return TPromise.as(void 0); + return new TPromise((resolve, error) => { + setTimeout(_ => { + t.sendText(command, true); + resolve(void 0); + }, 500); + }); } private static isBusy(t: ITerminalInstance): boolean { From 8a49211b2221de926888c29feeb8ebfe8dd1152a Mon Sep 17 00:00:00 2001 From: kieferrm Date: Wed, 7 Mar 2018 13:32:32 -0800 Subject: [PATCH 196/658] update calendar --- .github/calendar.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/calendar.yml b/.github/calendar.yml index 7deb804acb4..0decb4fb9d4 100644 --- a/.github/calendar.yml +++ b/.github/calendar.yml @@ -5,4 +5,5 @@ '2018-02-14 16:00, Europe/Zurich': 'release', # 1.20.1 '2018-02-19 16:00, Europe/Zurich': 'development', '2018-02-26 18:00, US/Pacific': 'endgame', + '2018-03-07 12:00, US/Pacific': 'release', # 1.21.0 } \ No newline at end of file From 6bcc6c04358738888cbeea793226708c4e35c1eb Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Wed, 7 Mar 2018 22:41:13 +0100 Subject: [PATCH 197/658] node-debug@1.22.1 --- build/builtInExtensions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/builtInExtensions.json b/build/builtInExtensions.json index edf3e072a5c..09994e3df68 100644 --- a/build/builtInExtensions.json +++ b/build/builtInExtensions.json @@ -1,7 +1,7 @@ [ { "name": "ms-vscode.node-debug", - "version": "1.21.8", + "version": "1.22.1", "repo": "https://github.com/Microsoft/vscode-node-debug" }, { From f2584c364d8433470d32d8dc9ac923499cb1d525 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 7 Mar 2018 22:44:34 +0100 Subject: [PATCH 198/658] Bail out from launch for unresolvable variables fixes #44411 --- build/lib/i18n.resources.json | 6 +- .../configurationResolverService.ts | 100 +++++++++++++----- 2 files changed, 79 insertions(+), 27 deletions(-) diff --git a/build/lib/i18n.resources.json b/build/lib/i18n.resources.json index fb93bbe3027..9de72cc968d 100644 --- a/build/lib/i18n.resources.json +++ b/build/lib/i18n.resources.json @@ -150,6 +150,10 @@ "name": "vs/workbench/services/configuration", "project": "vscode-workbench" }, + { + "name": "vs/workbench/services/configurationResolver", + "project": "vscode-workbench" + }, { "name": "vs/workbench/services/crashReporter", "project": "vscode-workbench" @@ -207,4 +211,4 @@ "project": "vscode-workbench" } ] -} \ No newline at end of file +} diff --git a/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts b/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts index 81c7529c9a5..b9b2269c9c9 100644 --- a/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts +++ b/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService.ts @@ -21,6 +21,7 @@ import { relative } from 'path'; import { IProcessEnvironment, isWindows } from 'vs/base/common/platform'; import { normalizeDriveLetter } from 'vs/base/common/labels'; import { Schemas } from 'vs/base/common/network'; +import { localize } from 'vs/nls'; class VariableResolver { static VARIABLE_REGEXP = /\$\{(.*?)\}/g; @@ -84,34 +85,81 @@ class VariableResolver { switch (variable) { case 'workspaceRoot': - case 'workspaceFolder': - return context ? normalizeDriveLetter(context.uri.fsPath) : match; - case 'cwd': - return context ? normalizeDriveLetter(context.uri.fsPath) : process.cwd(); - case 'workspaceRootFolderName': - case 'workspaceFolderBasename': - return context ? paths.basename(context.uri.fsPath) : match; - case 'lineNumber': - return this.getLineNumber() || match; - case 'selectedText': - return this.getSelectedText() || match; - case 'file': - return filePath || match; - case 'relativeFile': - return context ? paths.normalize(relative(context.uri.fsPath, filePath)) : filePath || match; - case 'fileDirname': - return filePath ? paths.dirname(filePath) : match; - case 'fileExtname': - return filePath ? paths.extname(filePath) : match; - case 'fileBasename': - return filePath ? paths.basename(filePath) : match; - case 'fileBasenameNoExtension': { - if (!filePath) { - return match; + case 'workspaceFolder': { + if (context) { + return normalizeDriveLetter(context.uri.fsPath); + } + if (this.workspaceContextService.getWorkspace().folders.length > 1) { + throw new Error(localize('canNotResolveWorkspaceFolderMultiRoot', "${workspaceFolder} can not be resolved in a multi folder workspace. Scope this variables using : and a folder name.")); } - const basename = paths.basename(filePath); - return basename.slice(0, basename.length - paths.extname(basename).length); + throw new Error(localize('canNotResolveWorkspaceFolder', "${workspaceFolder} can not be resolved. Please open a folder.")); + } case 'cwd': + return context ? normalizeDriveLetter(context.uri.fsPath) : process.cwd(); + case 'workspaceRootFolderName': + case 'workspaceFolderBasename': { + if (context) { + return paths.basename(context.uri.fsPath); + } + if (this.workspaceContextService.getWorkspace().folders.length > 1) { + throw new Error(localize('canNotResolveFolderBasenameMultiRoot', "${workspaceFolderBasename} can not be resolved in a multi folder workspace. Scope this variables using : and a folder name.")); + } + + throw new Error(localize('canNotResolveFolderBasename', "${workspaceFolderBasename} can not be resolved. Please open a folder.")); + } case 'lineNumber': { + const lineNumber = this.getLineNumber(); + if (lineNumber) { + return lineNumber; + } + + throw new Error(localize('canNotResolveLineNumber', "${lineNumber} can not be resolved, please open an editor.")); + } case 'selectedText': { + const selectedText = this.getSelectedText(); + if (selectedText) { + return selectedText; + } + + throw new Error(localize('canNotResolveSelectedText', "${selectedText} can not be resolved, please open an editor.")); + } case 'file': { + if (filePath) { + return filePath; + } + + throw new Error(localize('canNotResolveFile', "${file} can not be resolved, please open an editor.")); + } case 'relativeFile': { + if (context && filePath) { + return paths.normalize(relative(context.uri.fsPath, filePath)); + } + if (filePath) { + return filePath; + } + + throw new Error(localize('canNotResolveRelativeFile', "${relativeFile} can not be resolved, please open an editor.")); + } case 'fileDirname': { + if (filePath) { + return paths.dirname(filePath); + } + + throw new Error(localize('canNotResolveFileDirname', "${fileDirname} can not be resolved, please open an editor.")); + } case 'fileExtname': { + if (filePath) { + return paths.extname(filePath); + } + + throw new Error(localize('canNotResolveFileExtname', "${fileExtname} can not be resolved, please open an editor.")); + } case 'fileBasename': { + if (filePath) { + return paths.basename(filePath); + } + + throw new Error(localize('canNotResolveFileBasename', "${fileBasename} can not be resolved, please open an editor.")); + } case 'fileBasenameNoExtension': { + if (filePath) { + const basename = paths.basename(filePath); + return basename.slice(0, basename.length - paths.extname(basename).length); + } + + throw new Error(localize('canNotResolveFileBasenameNoExtension', "${fileBasenameNoExtension} can not be resolved, please open an editor.")); } case 'execPath': return this.environmentService.execPath; From f0eadf6b35c4bb102435fed96ba88dad0ed1bb32 Mon Sep 17 00:00:00 2001 From: Isidor Nikolic Date: Wed, 7 Mar 2018 22:49:58 +0100 Subject: [PATCH 199/658] Revert "Debug icon consistensy pass" --- .../parts/debug/browser/media/add-focus.svg | 2 +- .../parts/debug/browser/media/add-inverse.svg | 2 +- .../parts/debug/browser/media/add.svg | 2 +- .../media/breakpoint-conditional-dark.svg | 11 ++++++++++- ...breakpoint-conditional-disabled-inverse.svg | 1 - .../media/breakpoint-conditional-disabled.svg | 1 - ...eakpoint-conditional-unverified-inverse.svg | 1 - .../breakpoint-conditional-unverified.svg | 1 - .../browser/media/breakpoint-conditional.svg | 11 ++++++++++- .../debug/browser/media/breakpoint-dark.svg | 2 +- .../browser/media/breakpoint-disabled-dark.svg | 2 +- .../browser/media/breakpoint-disabled.svg | 2 +- .../browser/media/breakpoint-function-dark.svg | 2 +- .../breakpoint-function-disabled-dark.svg | 2 +- .../media/breakpoint-function-disabled.svg | 2 +- .../breakpoint-function-unverified-dark.svg | 2 +- .../media/breakpoint-function-unverified.svg | 2 +- .../browser/media/breakpoint-function.svg | 2 +- .../debug/browser/media/breakpoint-hint.svg | 2 +- .../media/breakpoint-log-disabled-inverse.svg | 1 - .../browser/media/breakpoint-log-disabled.svg | 1 - .../browser/media/breakpoint-log-inverse.svg | 1 - .../breakpoint-log-unverified-inverse.svg | 1 - .../media/breakpoint-log-unverified.svg | 1 - .../debug/browser/media/breakpoint-log.svg | 1 - .../media/breakpoint-unsupported-dark.svg | 18 +++++++++++++++++- .../browser/media/breakpoint-unsupported.svg | 18 +++++++++++++++++- .../media/breakpoint-unverified-dark.svg | 2 +- .../browser/media/breakpoint-unverified.svg | 2 +- .../parts/debug/browser/media/breakpoint.svg | 2 +- .../media/breakpoints-activate-inverse.svg | 2 +- .../browser/media/breakpoints-activate.svg | 2 +- .../debug/browser/media/clear-repl-inverse.svg | 2 +- .../parts/debug/browser/media/clear-repl.svg | 2 +- .../debug/browser/media/configure-inverse.svg | 2 +- .../parts/debug/browser/media/configure.svg | 2 +- .../debug/browser/media/continue-inverse.svg | 4 +++- .../parts/debug/browser/media/continue.svg | 4 +++- .../media/current-and-breakpoint-inverse.svg | 1 - .../browser/media/current-and-breakpoint.svg | 2 +- .../browser/media/current-arrow-inverse.svg | 1 - .../debug/browser/media/current-arrow.svg | 2 +- .../parts/debug/browser/media/debug-dark.svg | 2 +- .../debug/browser/media/disconnect-inverse.svg | 2 +- .../parts/debug/browser/media/disconnect.svg | 2 +- .../parts/debug/browser/media/drag.svg | 9 ++++++++- .../debug/browser/media/pause-inverse.svg | 2 +- .../parts/debug/browser/media/pause.svg | 2 +- .../debug/browser/media/remove-all-inverse.svg | 2 +- .../parts/debug/browser/media/remove-all.svg | 2 +- .../parts/debug/browser/media/remove-focus.svg | 2 +- .../debug/browser/media/remove-inverse.svg | 2 +- .../parts/debug/browser/media/remove.svg | 2 +- .../parts/debug/browser/media/repl-inverse.svg | 2 +- .../parts/debug/browser/media/repl.svg | 2 +- .../debug/browser/media/restart-inverse.svg | 2 +- .../parts/debug/browser/media/restart.svg | 2 +- .../media/stackframe-and-breakpoint-dark.svg | 2 +- .../media/stackframe-and-breakpoint.svg | 2 +- .../browser/media/stackframe-arrow-dark.svg | 2 +- .../debug/browser/media/stackframe-arrow.svg | 2 +- .../debug/browser/media/step-into-inverse.svg | 2 +- .../parts/debug/browser/media/step-into.svg | 2 +- .../debug/browser/media/step-out-inverse.svg | 2 +- .../parts/debug/browser/media/step-out.svg | 2 +- .../debug/browser/media/step-over-inverse.svg | 2 +- .../parts/debug/browser/media/step-over.svg | 2 +- .../parts/debug/browser/media/stop-inverse.svg | 2 +- .../parts/debug/browser/media/stop.svg | 2 +- 69 files changed, 118 insertions(+), 69 deletions(-) delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled-inverse.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified-inverse.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled-inverse.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-inverse.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified-inverse.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/current-and-breakpoint-inverse.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/current-arrow-inverse.svg diff --git a/src/vs/workbench/parts/debug/browser/media/add-focus.svg b/src/vs/workbench/parts/debug/browser/media/add-focus.svg index 769bd3b12bd..5e9f5851e8b 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-focus.svg @@ -1 +1 @@ -add-focus \ No newline at end of file +Layer 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg index 7d3fd77ffd6..3475c1e1963 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg @@ -1 +1 @@ -add \ No newline at end of file +Layer 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add.svg b/src/vs/workbench/parts/debug/browser/media/add.svg index 2b679663e80..bdecdb0e45b 100644 --- a/src/vs/workbench/parts/debug/browser/media/add.svg +++ b/src/vs/workbench/parts/debug/browser/media/add.svg @@ -1 +1 @@ -add \ No newline at end of file +Layer 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg index f3ac963c89f..720679e07e8 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg @@ -1 +1,10 @@ -breakpoint-conditional \ No newline at end of file + + + + + + diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled-inverse.svg deleted file mode 100644 index 0ae526f5b8e..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled-inverse.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-conditional-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg deleted file mode 100644 index ae7c86d8e51..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-conditional-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified-inverse.svg deleted file mode 100644 index 7b778685cf7..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified-inverse.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-conditional-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg deleted file mode 100644 index f4781277d91..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-conditional-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg index 455743a5669..77dd991c2b6 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg @@ -1 +1,10 @@ -breakpoint-conditional \ No newline at end of file + + + + + + diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg index 0e4f3d9335e..5ccf397efaf 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg @@ -1 +1 @@ -breakpoint \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg index ca71813cb12..bf58a18178f 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg @@ -1 +1 @@ -breakpoint-disabled \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg index b9cc51c1547..9780270357d 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg @@ -1 +1 @@ -breakpoint-disabled \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg index 1689f2b9df1..6b2651a9a39 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg @@ -1 +1 @@ -breakpoint-function \ No newline at end of file +BreakpointFunction_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg index 2fcd2fec257..fe6aaa60d76 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg @@ -1 +1 @@ -breakpoint-function-disabled \ No newline at end of file +BreakpointFunction_disabled_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg index 3b191a8229b..e45fd9cb12c 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg @@ -1 +1 @@ -breakpoint-function-disabled \ No newline at end of file +BreakpointFunction_disabled_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg index 563db01b13b..13903346b2d 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg @@ -1 +1 @@ -breakpoint-function-unverified \ No newline at end of file +BreakpointFunctionUnverified_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg index 3e01ce1345c..0af1324d785 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg @@ -1 +1 @@ -breakpoint-function-unverified \ No newline at end of file +BreakpointFunctionUnverified_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg index 2bc6454e520..6bc70465fa3 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg @@ -1 +1 @@ -breakpoint-function \ No newline at end of file +BreakpointFunction_16xMD \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg index 3efaf911de1..24f20069526 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg @@ -1 +1 @@ -breakpoint + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled-inverse.svg deleted file mode 100644 index 3d88ef0981d..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled-inverse.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-log-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg deleted file mode 100644 index f37856481f5..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-log-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-inverse.svg deleted file mode 100644 index c13d9120e9d..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-inverse.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-log \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified-inverse.svg deleted file mode 100644 index fe9dc78bc3a..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified-inverse.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-log-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg deleted file mode 100644 index b0e1624bf79..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-log-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg deleted file mode 100644 index d6094ade2e8..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-log \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg index def401ddd8f..fffcfb8cb47 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg @@ -1 +1,17 @@ -breakpoint-unsupported \ No newline at end of file + + + + + + + + + + + + + diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg index f7d377af128..cc0c89e1b74 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg @@ -1 +1,17 @@ -breakpoint-unsupported \ No newline at end of file + + + + + + + + + + + + + diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg index 11f3221ae76..4a2575a3056 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg @@ -1 +1 @@ -breakpoint-unverified \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg index 511448bae65..617e7ede7bd 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg @@ -1 +1 @@ -breakpoint-unverified \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg index e00d15a298f..7629294bcc5 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg @@ -1 +1 @@ -breakpoint \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg index 71fd2e1001e..07344800a2f 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg @@ -1 +1 @@ -breakpoints-activate \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg index 34809f9b1b6..b32b1cd6de6 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg @@ -1 +1 @@ -breakpoints-activate \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg index f6d7128f4bc..7df4455d7c3 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg @@ -1 +1 @@ -clear-repl \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg index 7867d13d754..6e4d3a1d481 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg @@ -1 +1 @@ -clear-repl \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg index bbfbd366eb9..61baaea2b8b 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg @@ -1 +1 @@ -configure \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure.svg b/src/vs/workbench/parts/debug/browser/media/configure.svg index c97bb48bdcc..3dec2ba50fd 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure.svg @@ -1 +1 @@ -configure \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg index 5abc15f219b..f82c45c1109 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg @@ -1 +1,3 @@ -continue \ No newline at end of file + +]> \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue.svg b/src/vs/workbench/parts/debug/browser/media/continue.svg index a31123607ba..33affa1a519 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue.svg @@ -1 +1,3 @@ -continue + +]> \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint-inverse.svg b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint-inverse.svg deleted file mode 100644 index ad14622f6c6..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint-inverse.svg +++ /dev/null @@ -1 +0,0 @@ -current-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg index d947abab683..7a3e6f26357 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg @@ -1 +1 @@ -current-and-breakpoint + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-arrow-inverse.svg b/src/vs/workbench/parts/debug/browser/media/current-arrow-inverse.svg deleted file mode 100644 index 1072df661d7..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/current-arrow-inverse.svg +++ /dev/null @@ -1 +0,0 @@ -current-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg index 3ea9f6b07b8..bd1ca579f13 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg @@ -1 +1 @@ -current-arrow \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg index cedddacf03e..9a969fb3589 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg @@ -1 +1 @@ -debug-dark \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg index 2d1e78b5b68..e00fd4062df 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg @@ -1 +1 @@ -disconnect \ No newline at end of file +Plan de travail 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect.svg b/src/vs/workbench/parts/debug/browser/media/disconnect.svg index b2deb2b91df..2a87ce11ef8 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect.svg @@ -1 +1 @@ -disconnect \ No newline at end of file +Plan de travail 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/drag.svg b/src/vs/workbench/parts/debug/browser/media/drag.svg index 522bf98284a..7f4145d742b 100644 --- a/src/vs/workbench/parts/debug/browser/media/drag.svg +++ b/src/vs/workbench/parts/debug/browser/media/drag.svg @@ -1 +1,8 @@ -drag \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg index 0185b23700d..7418a236159 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg @@ -1 +1 @@ -pause \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause.svg b/src/vs/workbench/parts/debug/browser/media/pause.svg index 9a4beeb7710..f8e3b859b18 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause.svg @@ -1 +1 @@ -pause \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg index 10c09869bec..74e8dd8a024 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg @@ -1 +1 @@ -remove-all \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all.svg b/src/vs/workbench/parts/debug/browser/media/remove-all.svg index a8acad64a4e..7250ff6b54e 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all.svg @@ -1 +1 @@ -remove-all \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg index e1af90b8058..865c5aaea5a 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg @@ -1 +1 @@ -remove-focus \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg index e78bb998737..751e89b3b02 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg @@ -1 +1 @@ -remove \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove.svg b/src/vs/workbench/parts/debug/browser/media/remove.svg index 31d6abd6bab..fde34404d4e 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove.svg @@ -1 +1 @@ -remove \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg index a8939860d05..f9fcfba75e2 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg @@ -1 +1 @@ -repl \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl.svg b/src/vs/workbench/parts/debug/browser/media/repl.svg index 8175eb32f94..93558e96b47 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl.svg @@ -1 +1 @@ -repl \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg index c9071eb96c6..1443bb3158b 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg @@ -1 +1 @@ -restart \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart.svg b/src/vs/workbench/parts/debug/browser/media/restart.svg index 94ebb45d0bc..3d7a499db2a 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart.svg @@ -1 +1 @@ -restart \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg index ad14622f6c6..1d6a7c3ec3d 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg @@ -1 +1 @@ -current-and-breakpoint + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg index d947abab683..2d5823561e2 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg @@ -1 +1 @@ -current-and-breakpoint + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg index 1072df661d7..f965fddd633 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg @@ -1 +1 @@ -current-arrow \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg index 3ea9f6b07b8..e39215f9a7c 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg @@ -1 +1 @@ -current-arrow \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg index 8cfab5c40b1..b7de8c5fd13 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg @@ -1 +1 @@ -step-into \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into.svg b/src/vs/workbench/parts/debug/browser/media/step-into.svg index a4beee54411..b92fb4ef806 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into.svg @@ -1 +1 @@ -step-into \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg index 045a84ff032..fc66ca1b80d 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg @@ -1 +1 @@ -step-out \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out.svg b/src/vs/workbench/parts/debug/browser/media/step-out.svg index 850aed93c2e..0fdc63f6ef9 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out.svg @@ -1 +1 @@ -step-out \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg index f3a1aa36f22..98c1026db46 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg @@ -1 +1 @@ -step-over \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over.svg b/src/vs/workbench/parts/debug/browser/media/step-over.svg index 3343de71d83..a716cbcf559 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over.svg @@ -1 +1 @@ -step-over \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg index c8e37202875..a0e6bcb42d6 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg @@ -1 +1 @@ -stop \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop.svg b/src/vs/workbench/parts/debug/browser/media/stop.svg index 57c29044b12..333812dcdaf 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop.svg @@ -1 +1 @@ -stop \ No newline at end of file + \ No newline at end of file From eb551fda39ba6a220f891719759e841853afe08f Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Wed, 7 Mar 2018 17:47:09 -0800 Subject: [PATCH 200/658] Fix #44496 - The li parent of the action item is getting 4 extra px from somewhere --- src/vs/workbench/parts/search/browser/media/searchview.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/workbench/parts/search/browser/media/searchview.css b/src/vs/workbench/parts/search/browser/media/searchview.css index ac7693e0a3f..3aebda9dbc6 100644 --- a/src/vs/workbench/parts/search/browser/media/searchview.css +++ b/src/vs/workbench/parts/search/browser/media/searchview.css @@ -53,6 +53,10 @@ margin-left: 3px; } +.search-view .search-widget .replace-container .monaco-action-bar { + height: 25px; +} + .search-view .search-widget .replace-container .monaco-action-bar .action-item .icon { background-repeat: no-repeat; width: 20px; From c790d916b329784907c4740228d41b5b8ce81296 Mon Sep 17 00:00:00 2001 From: Cherry Wang Date: Wed, 7 Mar 2018 19:38:51 -0800 Subject: [PATCH 201/658] Debug icons consistency pass and housekeeping. --- .../parts/debug/browser/media/add-focus.svg | 2 +- .../parts/debug/browser/media/add-inverse.svg | 2 +- .../parts/debug/browser/media/add.svg | 2 +- .../media/breakpoint-conditional-dark.svg | 10 ---------- .../media/breakpoint-conditional-disabled.svg | 1 + .../breakpoint-conditional-unverified.svg | 1 + .../browser/media/breakpoint-conditional.svg | 11 +--------- .../debug/browser/media/breakpoint-dark.svg | 1 - .../media/breakpoint-disabled-dark.svg | 1 - .../browser/media/breakpoint-disabled.svg | 2 +- .../media/breakpoint-function-dark.svg | 1 - .../breakpoint-function-disabled-dark.svg | 1 - .../media/breakpoint-function-disabled.svg | 2 +- .../breakpoint-function-unverified-dark.svg | 1 - .../media/breakpoint-function-unverified.svg | 2 +- .../browser/media/breakpoint-function.svg | 2 +- .../browser/media/breakpoint-log-disabled.svg | 1 + .../media/breakpoint-log-unverified.svg | 1 + .../debug/browser/media/breakpoint-log.svg | 1 + .../media/breakpoint-unsupported-dark.svg | 17 ---------------- .../browser/media/breakpoint-unsupported.svg | 18 +---------------- .../media/breakpoint-unverified-dark.svg | 1 - .../browser/media/breakpoint-unverified.svg | 2 +- .../parts/debug/browser/media/breakpoint.svg | 2 +- .../browser/media/breakpoints-activate.svg | 2 +- .../browser/media/clear-repl-inverse.svg | 2 +- .../parts/debug/browser/media/clear-repl.svg | 2 +- .../debug/browser/media/configure-inverse.svg | 2 +- .../parts/debug/browser/media/configure.svg | 2 +- .../debug/browser/media/continue-inverse.svg | 4 +--- .../parts/debug/browser/media/continue.svg | 4 +--- .../browser/media/current-and-breakpoint.svg | 2 +- .../debug/browser/media/current-arrow.svg | 2 +- .../parts/debug/browser/media/debug-dark.svg | 2 +- .../browser/media/debug.contribution.css | 20 ++++++++++--------- .../browser/media/debugActionsWidget.css | 4 ++-- .../browser/media/disconnect-inverse.svg | 2 +- .../parts/debug/browser/media/disconnect.svg | 2 +- .../parts/debug/browser/media/drag.svg | 9 +-------- .../debug/browser/media/pause-inverse.svg | 2 +- .../parts/debug/browser/media/pause.svg | 2 +- .../browser/media/remove-all-inverse.svg | 2 +- .../parts/debug/browser/media/remove-all.svg | 2 +- .../debug/browser/media/remove-focus.svg | 2 +- .../debug/browser/media/remove-inverse.svg | 2 +- .../parts/debug/browser/media/remove.svg | 2 +- .../debug/browser/media/repl-inverse.svg | 2 +- .../parts/debug/browser/media/repl.svg | 2 +- .../debug/browser/media/restart-inverse.svg | 2 +- .../parts/debug/browser/media/restart.svg | 2 +- .../media/stackframe-and-breakpoint-dark.svg | 1 - .../media/stackframe-and-breakpoint.svg | 2 +- .../browser/media/stackframe-arrow-dark.svg | 1 - .../debug/browser/media/stackframe-arrow.svg | 2 +- .../debug/browser/media/step-into-inverse.svg | 2 +- .../parts/debug/browser/media/step-into.svg | 2 +- .../debug/browser/media/step-out-inverse.svg | 2 +- .../parts/debug/browser/media/step-out.svg | 2 +- .../debug/browser/media/step-over-inverse.svg | 2 +- .../parts/debug/browser/media/step-over.svg | 2 +- .../debug/browser/media/stop-inverse.svg | 2 +- .../parts/debug/browser/media/stop.svg | 2 +- 62 files changed, 63 insertions(+), 127 deletions(-) delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg delete mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg delete mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg delete mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg diff --git a/src/vs/workbench/parts/debug/browser/media/add-focus.svg b/src/vs/workbench/parts/debug/browser/media/add-focus.svg index 5e9f5851e8b..769bd3b12bd 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-focus.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add-focus \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg index 3475c1e1963..7d3fd77ffd6 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add.svg b/src/vs/workbench/parts/debug/browser/media/add.svg index bdecdb0e45b..2b679663e80 100644 --- a/src/vs/workbench/parts/debug/browser/media/add.svg +++ b/src/vs/workbench/parts/debug/browser/media/add.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg deleted file mode 100644 index 720679e07e8..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg new file mode 100644 index 00000000000..ae7c86d8e51 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg @@ -0,0 +1 @@ +breakpoint-conditional-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg new file mode 100644 index 00000000000..f4781277d91 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg @@ -0,0 +1 @@ +breakpoint-conditional-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg index 77dd991c2b6..455743a5669 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg @@ -1,10 +1 @@ - - - - - - +breakpoint-conditional \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg deleted file mode 100644 index 5ccf397efaf..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg deleted file mode 100644 index bf58a18178f..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg index 9780270357d..b9cc51c1547 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg deleted file mode 100755 index 6b2651a9a39..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg +++ /dev/null @@ -1 +0,0 @@ -BreakpointFunction_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg deleted file mode 100755 index fe6aaa60d76..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg +++ /dev/null @@ -1 +0,0 @@ -BreakpointFunction_disabled_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg index e45fd9cb12c..3b191a8229b 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg @@ -1 +1 @@ -BreakpointFunction_disabled_16xMD +breakpoint-function-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg deleted file mode 100755 index 13903346b2d..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg +++ /dev/null @@ -1 +0,0 @@ -BreakpointFunctionUnverified_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg index 0af1324d785..3e01ce1345c 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg @@ -1 +1 @@ -BreakpointFunctionUnverified_16xMD +breakpoint-function-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg index 6bc70465fa3..2bc6454e520 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg @@ -1 +1 @@ -BreakpointFunction_16xMD \ No newline at end of file +breakpoint-function \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg new file mode 100644 index 00000000000..f37856481f5 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg @@ -0,0 +1 @@ +breakpoint-log-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg new file mode 100644 index 00000000000..b0e1624bf79 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg @@ -0,0 +1 @@ +breakpoint-log-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg new file mode 100644 index 00000000000..d6094ade2e8 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg @@ -0,0 +1 @@ +breakpoint-log \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg deleted file mode 100644 index fffcfb8cb47..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg index cc0c89e1b74..f7d377af128 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg @@ -1,17 +1 @@ - - - - - - - - - - - - - +breakpoint-unsupported \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg deleted file mode 100644 index 4a2575a3056..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg index 617e7ede7bd..511448bae65 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg index 7629294bcc5..e00d15a298f 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg index b32b1cd6de6..34809f9b1b6 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoints-activate \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg index 7df4455d7c3..f6d7128f4bc 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +clear-repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg index 6e4d3a1d481..7867d13d754 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg @@ -1 +1 @@ - \ No newline at end of file +clear-repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg index 61baaea2b8b..bbfbd366eb9 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure.svg b/src/vs/workbench/parts/debug/browser/media/configure.svg index 3dec2ba50fd..c97bb48bdcc 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg index f82c45c1109..5abc15f219b 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg @@ -1,3 +1 @@ - -]> \ No newline at end of file +continue \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue.svg b/src/vs/workbench/parts/debug/browser/media/continue.svg index 33affa1a519..99a6e9aef93 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue.svg @@ -1,3 +1 @@ - -]> \ No newline at end of file +continue \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg index 7a3e6f26357..d947abab683 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +current-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg index bd1ca579f13..3ea9f6b07b8 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg @@ -1 +1 @@ - \ No newline at end of file +current-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg index 9a969fb3589..cedddacf03e 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg @@ -1 +1 @@ - \ No newline at end of file +debug-dark \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css index db36f9d3069..2b39f7aa30d 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css +++ b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css @@ -6,6 +6,7 @@ /* Activity Bar */ .monaco-workbench > .activitybar .monaco-action-bar .action-label.debug { -webkit-mask: url('debug-dark.svg') no-repeat 50% 50%; + -webkit-mask-size: 28px; } .monaco-editor .debug-top-stack-frame-line, @@ -30,7 +31,8 @@ } .debug-breakpoint-hint { - background: url('breakpoint-hint.svg') center center no-repeat; + background: url('breakpoint.svg') center center no-repeat; + opacity: .2; } .debug-breakpoint-disabled, @@ -249,45 +251,45 @@ .vs-dark .debug-breakpoint, .hc-black .debug-breakpoint, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-column::before { - background: url('breakpoint-dark.svg') center center no-repeat; + background: url('breakpoint.svg') center center no-repeat; } .vs-dark .debug-breakpoint-conditional, .hc-black .debug-breakpoint-conditional, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-conditional-column::before { - background: url('breakpoint-conditional-dark.svg') center center no-repeat; + background: url('breakpoint-conditional.svg') center center no-repeat; } .vs-dark .debug-breakpoint-unsupported, .hc-black .debug-breakpoint-unsupported, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-unsupported-column::before { - background: url('breakpoint-unsupported-dark.svg') center center no-repeat; + background: url('breakpoint-unsupported.svg') center center no-repeat; } .vs-dark .debug-breakpoint-disabled, .hc-black .debug-breakpoint-disabled, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-disabled-column::before { - background: url('breakpoint-disabled-dark.svg') center center no-repeat; + background: url('breakpoint-disabled.svg') center center no-repeat; } .vs-dark .debug-breakpoint-unverified, .hc-black .debug-breakpoint-unverified, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-unverified-column::before { - background: url('breakpoint-unverified-dark.svg') center center no-repeat; + background: url('breakpoint-unverified.svg') center center no-repeat; } .monaco-editor.vs-dark .debug-focused-stack-frame { - background: url('stackframe-arrow-dark.svg') center center no-repeat; + background: url('stackframe-arrow.svg') center center no-repeat; } .monaco-editor.vs-dark .debug-focused-stack-frame.debug-breakpoint, .monaco-editor.vs-dark .debug-focused-stack-frame.debug-breakpoint-conditional { - background: url('stackframe-and-breakpoint-dark.svg') center center no-repeat; + background: url('stackframe-and-breakpoint.svg') center center no-repeat; } .vs-dark .debug-function-breakpoint, .hc-black .debug-function-breakpoint { - background: url('breakpoint-function-dark.svg') center center no-repeat; + background: url('breakpoint-function.svg') center center no-repeat; } .vs-dark .debug-function-breakpoint-unverified, diff --git a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css index db600ac32b9..2a5c68c992e 100644 --- a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css +++ b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css @@ -23,8 +23,8 @@ .monaco-workbench .debug-actions-widget .drag-area { cursor: -webkit-grab; - height: 32px; - width: 10px; + height: 16px; + width: 16px; background: url('drag.svg') center center no-repeat; } diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg index e00fd4062df..2d1e78b5b68 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg @@ -1 +1 @@ -Plan de travail 1 \ No newline at end of file +disconnect \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect.svg b/src/vs/workbench/parts/debug/browser/media/disconnect.svg index 2a87ce11ef8..b2deb2b91df 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect.svg @@ -1 +1 @@ -Plan de travail 1 \ No newline at end of file +disconnect \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/drag.svg b/src/vs/workbench/parts/debug/browser/media/drag.svg index 7f4145d742b..522bf98284a 100644 --- a/src/vs/workbench/parts/debug/browser/media/drag.svg +++ b/src/vs/workbench/parts/debug/browser/media/drag.svg @@ -1,8 +1 @@ - - - - - - - - \ No newline at end of file +drag \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg index 7418a236159..0185b23700d 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +pause \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause.svg b/src/vs/workbench/parts/debug/browser/media/pause.svg index f8e3b859b18..9a4beeb7710 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause.svg @@ -1 +1 @@ - \ No newline at end of file +pause \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg index 74e8dd8a024..99369626bfc 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +remove-all \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all.svg b/src/vs/workbench/parts/debug/browser/media/remove-all.svg index 7250ff6b54e..a71c2feeedc 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all.svg @@ -1 +1 @@ - \ No newline at end of file +remove-all_16x \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg index 865c5aaea5a..e1af90b8058 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg @@ -1 +1 @@ - \ No newline at end of file +remove-focus \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg index 751e89b3b02..e78bb998737 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +remove \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove.svg b/src/vs/workbench/parts/debug/browser/media/remove.svg index fde34404d4e..31d6abd6bab 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove.svg @@ -1 +1 @@ - \ No newline at end of file +remove \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg index f9fcfba75e2..a8939860d05 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl.svg b/src/vs/workbench/parts/debug/browser/media/repl.svg index 93558e96b47..8175eb32f94 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl.svg @@ -1 +1 @@ - \ No newline at end of file +repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg index 1443bb3158b..c9071eb96c6 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +restart \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart.svg b/src/vs/workbench/parts/debug/browser/media/restart.svg index 3d7a499db2a..94ebb45d0bc 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart.svg @@ -1 +1 @@ - \ No newline at end of file +restart \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg deleted file mode 100644 index 1d6a7c3ec3d..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg index 2d5823561e2..b9589d04cd8 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +stackframe-and-breakpoint \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg deleted file mode 100644 index f965fddd633..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg index e39215f9a7c..c7ab10bfa8c 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg @@ -1 +1 @@ - \ No newline at end of file +stackframe-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg index b7de8c5fd13..8cfab5c40b1 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-into \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into.svg b/src/vs/workbench/parts/debug/browser/media/step-into.svg index b92fb4ef806..a4beee54411 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into.svg @@ -1 +1 @@ - \ No newline at end of file +step-into \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg index fc66ca1b80d..045a84ff032 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-out \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out.svg b/src/vs/workbench/parts/debug/browser/media/step-out.svg index 0fdc63f6ef9..850aed93c2e 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out.svg @@ -1 +1 @@ - \ No newline at end of file +step-out \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg index 98c1026db46..f3a1aa36f22 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-over \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over.svg b/src/vs/workbench/parts/debug/browser/media/step-over.svg index a716cbcf559..3343de71d83 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over.svg @@ -1 +1 @@ - \ No newline at end of file +step-over \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg index a0e6bcb42d6..c8e37202875 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +stop \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop.svg b/src/vs/workbench/parts/debug/browser/media/stop.svg index 333812dcdaf..57c29044b12 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop.svg @@ -1 +1 @@ - \ No newline at end of file +stop \ No newline at end of file From e650bb2b510100f39b898c77c5c2c017fe8b223c Mon Sep 17 00:00:00 2001 From: Cherry Wang Date: Wed, 7 Mar 2018 19:42:20 -0800 Subject: [PATCH 202/658] Will use light theme icon file and CSS style --- src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg | 1 - .../parts/debug/browser/media/breakpoints-activate-inverse.svg | 1 - 2 files changed, 2 deletions(-) delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg deleted file mode 100644 index 24f20069526..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg deleted file mode 100644 index 07344800a2f..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From 10b5d5f203428735fb51e33c60239c039527ebc2 Mon Sep 17 00:00:00 2001 From: Cherry Wang Date: Wed, 7 Mar 2018 20:07:00 -0800 Subject: [PATCH 203/658] The red dot path was accidentally turned off by my icon script. Turning it on. --- .../parts/debug/browser/media/stackframe-and-breakpoint.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg index b9589d04cd8..56f8da3f7b2 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg @@ -1 +1 @@ -stackframe-and-breakpoint \ No newline at end of file +stackframe-and-breakpoint From 9a94f0e2182d5f645fda0a56fa45c6ea8743a1e0 Mon Sep 17 00:00:00 2001 From: Cherry Wang Date: Wed, 7 Mar 2018 20:27:10 -0800 Subject: [PATCH 204/658] Use the same gear icon as in debug area. --- src/vs/workbench/parts/update/electron-browser/media/update.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/update/electron-browser/media/update.svg b/src/vs/workbench/parts/update/electron-browser/media/update.svg index 3dec2ba50fd..c97bb48bdcc 100644 --- a/src/vs/workbench/parts/update/electron-browser/media/update.svg +++ b/src/vs/workbench/parts/update/electron-browser/media/update.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file From 8510c24e5dc1650bd24e0d971c4aa66ca82a06ff Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Sat, 3 Mar 2018 00:29:00 +0530 Subject: [PATCH 205/658] fixes tests --- .../preferences/browser/keybindingsEditor.ts | 67 ++++++++----------- .../common/keybindingsEditorModel.ts | 2 +- .../common/keybindingsEditorModel.test.ts | 17 +++-- 3 files changed, 42 insertions(+), 44 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts index c4a4b1c5527..56d16de69fc 100644 --- a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts @@ -98,7 +98,6 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor private keybindingFocusContextKey: IContextKey; private searchFocusContextKey: IContextKey; private sortByPrecedence: Checkbox; - private secondaryActions: IAction[]; constructor( @ITelemetryService telemetryService: ITelemetryService, @@ -178,37 +177,27 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor return focusedElement && focusedElement.templateId === KEYBINDING_ENTRY_TEMPLATE_ID ? focusedElement : null; } - setKeybindingSource(searchString: string): TPromise { - this.searchWidget.setValue(searchString); - return TPromise.as(null); - } - - showDefaultKeyBindings(): IAction { - return { - label: localize('showDefaultKeybindings', "Show Default Keybindings"), - enabled: true, - id: KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS, - run: () => this.setKeybindingSource('source: default') - }; - } - - showUserKeyBindings(): IAction { - return { - label: localize('showUserKeybindings', "Show User Keybindings"), - enabled: true, - id: KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS, - run: () => this.setKeybindingSource('source: user') - }; - } - getSecondaryActions(): IAction[] { - if (!this.secondaryActions) { - this.secondaryActions = [ - this.showDefaultKeyBindings(), - this.showUserKeyBindings(), - ]; - } - return this.secondaryActions; + return [ + { + label: localize('showDefaultKeybindings', "Show Default Keybindings"), + enabled: true, + id: KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS, + run: (): TPromise => { + this.searchWidget.setValue('@source: default'); + return TPromise.as(null); + } + }, + { + label: localize('showUserKeybindings', "Show User Keybindings"), + enabled: true, + id: KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS, + run: (): TPromise => { + this.searchWidget.setValue('@source: user'); + return TPromise.as(null); + } + } + ]; } defineKeybinding(keybindingEntry: IKeybindingItemEntry): TPromise { @@ -245,10 +234,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor this.reportKeybindingAction(KEYBINDINGS_EDITOR_COMMAND_REMOVE, keybindingEntry.keybindingItem.command, keybindingEntry.keybindingItem.keybinding); return this.keybindingEditingService.removeKeybinding(keybindingEntry.keybindingItem.keybindingItem) .then(() => this.focus(), - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } return TPromise.as(null); } @@ -263,10 +252,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor } this.selectEntry(keybindingEntry); }, - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } copyKeybinding(keybinding: IKeybindingItemEntry): TPromise { diff --git a/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts b/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts index 8b623b22ff1..80c8c3290a4 100644 --- a/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts +++ b/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts @@ -250,7 +250,7 @@ class KeybindingItemMatches { private checkForSourceFilter(searchValue: string) { const words = searchValue.split(':'); - return (words.length) && (words[0].trim().toLowerCase() === 'source') ? + return (words.length) && (words[0].trim().toLowerCase() === '@source') ? words[1].trim() : searchValue; } diff --git a/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts b/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts index b452fe7a100..7347a7b370e 100644 --- a/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts +++ b/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts @@ -258,15 +258,24 @@ suite('Keybindings Editor Model test', () => { }); }); - test('filter by source: filter', () => { + test('filter by default source with "source: " prefix', () => { + const command = 'a' + uuid.generateUuid(); + const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'context1 && context2', isDefault: true }); + prepareKeybindingService(expected); + + return testObject.resolve({}).then(() => { + const actual = testObject.fetch('source: default').filter(element => element.keybindingItem.command === command)[0]; + assert.ok(actual); + }); + }); + + test('filter by user source with "source: " prefix', () => { const command = 'a' + uuid.generateUuid(); const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'context1 && context2', isDefault: false }); prepareKeybindingService(expected); return testObject.resolve({}).then(() => { - let actual = testObject.fetch('source: user').filter(element => element.keybindingItem.command === command)[0]; - assert.ok(actual); - actual = testObject.fetch('source: default').filter(element => element.keybindingItem.command === command)[0]; + const actual = testObject.fetch('source: user').filter(element => element.keybindingItem.command === command)[0]; assert.ok(actual); }); }); From 4326d4194f2252f5c3eafb30e2dd8958a6b294c3 Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Thu, 8 Mar 2018 11:41:32 +0530 Subject: [PATCH 206/658] removed un-related changes + moved @source check to fetchKeyBindings method --- .../preferences/browser/keybindingsEditor.ts | 16 ++-- .../common/keybindingsEditorModel.ts | 78 ++++++++++++------- 2 files changed, 60 insertions(+), 34 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts index 56d16de69fc..3fef3756880 100644 --- a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts @@ -234,10 +234,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor this.reportKeybindingAction(KEYBINDINGS_EDITOR_COMMAND_REMOVE, keybindingEntry.keybindingItem.command, keybindingEntry.keybindingItem.keybinding); return this.keybindingEditingService.removeKeybinding(keybindingEntry.keybindingItem.keybindingItem) .then(() => this.focus(), - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } return TPromise.as(null); } @@ -252,10 +252,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor } this.selectEntry(keybindingEntry); }, - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } copyKeybinding(keybinding: IKeybindingItemEntry): TPromise { diff --git a/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts b/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts index 80c8c3290a4..c532c6285ad 100644 --- a/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts +++ b/src/vs/workbench/parts/preferences/common/keybindingsEditorModel.ts @@ -102,6 +102,14 @@ export class KeybindingsEditorModel extends EditorModel { return this.fetchKeybindingItems(sortByPrecedence ? this._keybindingItemsSortedByPrecedence : this._keybindingItems, searchValue, quoteAtFirstChar && quoteAtLastChar); } + isSourceFilterApplied(words: string[]): boolean { + return (words.length) && (words[0].trim().toLowerCase() === '@source:'); + } + + getSourceFilterValue(words: string[]): string { + return words[1] || ''; + } + private fetchKeybindingItems(keybindingItems: IKeybindingItem[], searchValue: string, completeMatch: boolean): IKeybindingItemEntry[] { if (!searchValue) { return keybindingItems.map(keybindingItem => ({ id: KeybindingsEditorModel.getId(keybindingItem), keybindingItem, templateId: KEYBINDING_ENTRY_TEMPLATE_ID })); @@ -109,26 +117,51 @@ export class KeybindingsEditorModel extends EditorModel { const result: IKeybindingItemEntry[] = []; const words = searchValue.split(' '); + + const sourceFilterApplied: boolean = this.isSourceFilterApplied(words); + let sourceFilterSearchValue: string; + if (sourceFilterApplied) { + sourceFilterSearchValue = this.getSourceFilterValue(words); + } + const keybindingWords = this.splitKeybindingWords(words); for (const keybindingItem of keybindingItems) { - let keybindingMatches = new KeybindingItemMatches(this.modifierLabels, keybindingItem, searchValue, words, keybindingWords, completeMatch); - if (keybindingMatches.commandIdMatches - || keybindingMatches.commandLabelMatches - || keybindingMatches.commandDefaultLabelMatches - || keybindingMatches.sourceMatches - || keybindingMatches.whenMatches - || keybindingMatches.keybindingMatches) { - result.push({ - id: KeybindingsEditorModel.getId(keybindingItem), - templateId: KEYBINDING_ENTRY_TEMPLATE_ID, - commandLabelMatches: keybindingMatches.commandLabelMatches, - commandDefaultLabelMatches: keybindingMatches.commandDefaultLabelMatches, - keybindingItem, - keybindingMatches: keybindingMatches.keybindingMatches, - commandIdMatches: keybindingMatches.commandIdMatches, - sourceMatches: keybindingMatches.sourceMatches, - whenMatches: keybindingMatches.whenMatches - }); + if (sourceFilterApplied) { + let keybindingMatches = new KeybindingItemMatches(this.modifierLabels, keybindingItem, sourceFilterSearchValue, words, keybindingWords, completeMatch); + if (keybindingMatches.sourceMatches) { + result.push({ + id: KeybindingsEditorModel.getId(keybindingItem), + templateId: KEYBINDING_ENTRY_TEMPLATE_ID, + commandLabelMatches: keybindingMatches.commandLabelMatches, + commandDefaultLabelMatches: keybindingMatches.commandDefaultLabelMatches, + keybindingItem, + keybindingMatches: keybindingMatches.keybindingMatches, + commandIdMatches: keybindingMatches.commandIdMatches, + sourceMatches: keybindingMatches.sourceMatches, + whenMatches: keybindingMatches.whenMatches + }); + } + } + else { + let keybindingMatches = new KeybindingItemMatches(this.modifierLabels, keybindingItem, searchValue, words, keybindingWords, completeMatch); + if (keybindingMatches.commandIdMatches + || keybindingMatches.commandLabelMatches + || keybindingMatches.commandDefaultLabelMatches + || keybindingMatches.sourceMatches + || keybindingMatches.whenMatches + || keybindingMatches.keybindingMatches) { + result.push({ + id: KeybindingsEditorModel.getId(keybindingItem), + templateId: KEYBINDING_ENTRY_TEMPLATE_ID, + commandLabelMatches: keybindingMatches.commandLabelMatches, + commandDefaultLabelMatches: keybindingMatches.commandDefaultLabelMatches, + keybindingItem, + keybindingMatches: keybindingMatches.keybindingMatches, + commandIdMatches: keybindingMatches.commandIdMatches, + sourceMatches: keybindingMatches.sourceMatches, + whenMatches: keybindingMatches.whenMatches + }); + } } } return result; @@ -243,18 +276,11 @@ class KeybindingItemMatches { this.commandIdMatches = this.matches(searchValue, keybindingItem.command, or(matchesWords, matchesCamelCase), words); this.commandLabelMatches = keybindingItem.commandLabel ? this.matches(searchValue, keybindingItem.commandLabel, (word, wordToMatchAgainst) => matchesWords(word, keybindingItem.commandLabel, true), words) : null; this.commandDefaultLabelMatches = keybindingItem.commandDefaultLabel ? this.matches(searchValue, keybindingItem.commandDefaultLabel, (word, wordToMatchAgainst) => matchesWords(word, keybindingItem.commandDefaultLabel, true), words) : null; - this.sourceMatches = this.matches(this.checkForSourceFilter(searchValue), keybindingItem.source, (word, wordToMatchAgainst) => matchesWords(word, keybindingItem.source, true), words); + this.sourceMatches = this.matches(searchValue, keybindingItem.source, (word, wordToMatchAgainst) => matchesWords(word, keybindingItem.source, true), words); this.whenMatches = keybindingItem.when ? this.matches(searchValue, keybindingItem.when, or(matchesWords, matchesCamelCase), words) : null; this.keybindingMatches = keybindingItem.keybinding ? this.matchesKeybinding(keybindingItem.keybinding, searchValue, keybindingWords) : null; } - private checkForSourceFilter(searchValue: string) { - const words = searchValue.split(':'); - return (words.length) && (words[0].trim().toLowerCase() === '@source') ? - words[1].trim() : - searchValue; - } - private matches(searchValue: string, wordToMatchAgainst: string, wordMatchesFilter: IFilter, words: string[]): IMatch[] { let matches = wordFilter(searchValue, wordToMatchAgainst); if (!matches) { From 303fc92fdb15a74e02cc326bfc6e1e380cb64286 Mon Sep 17 00:00:00 2001 From: Shobhit Chittora Date: Thu, 8 Mar 2018 12:36:02 +0530 Subject: [PATCH 207/658] test cases fix --- .../test/common/keybindingsEditorModel.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts b/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts index 7347a7b370e..195bae94fae 100644 --- a/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts +++ b/src/vs/workbench/parts/preferences/test/common/keybindingsEditorModel.test.ts @@ -258,24 +258,24 @@ suite('Keybindings Editor Model test', () => { }); }); - test('filter by default source with "source: " prefix', () => { + test('filter by default source with "@source: " prefix', () => { const command = 'a' + uuid.generateUuid(); const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'context1 && context2', isDefault: true }); prepareKeybindingService(expected); return testObject.resolve({}).then(() => { - const actual = testObject.fetch('source: default').filter(element => element.keybindingItem.command === command)[0]; + const actual = testObject.fetch('@source: default').filter(element => element.keybindingItem.command === command)[0]; assert.ok(actual); }); }); - test('filter by user source with "source: " prefix', () => { + test('filter by user source with "@source: " prefix', () => { const command = 'a' + uuid.generateUuid(); const expected = aResolvedKeybindingItem({ command, firstPart: { keyCode: KeyCode.Escape }, when: 'context1 && context2', isDefault: false }); prepareKeybindingService(expected); return testObject.resolve({}).then(() => { - const actual = testObject.fetch('source: user').filter(element => element.keybindingItem.command === command)[0]; + const actual = testObject.fetch('@source: user').filter(element => element.keybindingItem.command === command)[0]; assert.ok(actual); }); }); From e6c9e8e36810f790423c840147e0214ebfd4770b Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 09:05:39 +0100 Subject: [PATCH 208/658] test secret variables --- build/tfs/darwin/build.yml | 46 +++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index a1d41a6e39f..162e049087d 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -1,28 +1,32 @@ -variables: - VSCODE_BUILD_VERBOSE: true - System.Debug: true - steps: -- task: NodeTool@0 - inputs: - versionSpec: "8.9.1" +# - task: NodeTool@0 +# inputs: +# versionSpec: "8.9.1" -- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 - inputs: - versionSpec: "1.3.2" +# - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 +# inputs: +# versionSpec: "1.3.2" - script: | - yarn - npm run gulp -- electron-x64 + echo "$(VSCODE_MIXIN_PASSWORD)" + # yarn + # npm run gulp -- electron-x64 -- script: | - npm run gulp -- hygiene - ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit - npm run gulp -- vscode-darwin-min - name: build +# - script: | +# npm run gulp -- hygiene +# ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit +# npm run gulp -- vscode-darwin-min +# name: build -- script: | - ./scripts/test.sh --build --reporter spec - ./scripts/test-integration.sh - name: test +# - script: | +# ./scripts/test.sh --build --reporter spec +# ./scripts/test-integration.sh +# name: test + +# steps: +# - task: ShellScript@2 +# inputs: +# scriptPath: 'build/tfs/darwin/build.sh' +# args: '"$(VSCODE_MIXIN_PASSWORD)" "$(AZURE_STORAGE_ACCESS_KEY)" "$(AZURE_STORAGE_ACCESS_KEY_2)" "$(MOONCAKE_STORAGE_ACCESS_KEY)" "$(AZURE_DOCUMENTDB_MASTERKEY)" "$(VSO_PAT)"' +# disableAutoCwd: true From 766720a17a42bfaa684661829355d1c6b4f51791 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 09:06:42 +0100 Subject: [PATCH 209/658] fix syntax --- build/tfs/darwin/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 162e049087d..5dc8b17df69 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -10,8 +10,8 @@ steps: - script: | echo "$(VSCODE_MIXIN_PASSWORD)" - # yarn - # npm run gulp -- electron-x64 +# yarn +# npm run gulp -- electron-x64 # - script: | # npm run gulp -- hygiene From 45957ca95ea0627d366fa4330c147e5405e16b26 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 09:08:39 +0100 Subject: [PATCH 210/658] yaml --- build/tfs/darwin/build.yml | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 5dc8b17df69..9eb24038b2a 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -1,32 +1,3 @@ steps: - -# - task: NodeTool@0 -# inputs: -# versionSpec: "8.9.1" - -# - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 -# inputs: -# versionSpec: "1.3.2" - - script: | - echo "$(VSCODE_MIXIN_PASSWORD)" -# yarn -# npm run gulp -- electron-x64 - -# - script: | -# npm run gulp -- hygiene -# ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit -# npm run gulp -- vscode-darwin-min -# name: build - -# - script: | -# ./scripts/test.sh --build --reporter spec -# ./scripts/test-integration.sh -# name: test - -# steps: -# - task: ShellScript@2 -# inputs: -# scriptPath: 'build/tfs/darwin/build.sh' -# args: '"$(VSCODE_MIXIN_PASSWORD)" "$(AZURE_STORAGE_ACCESS_KEY)" "$(AZURE_STORAGE_ACCESS_KEY_2)" "$(MOONCAKE_STORAGE_ACCESS_KEY)" "$(AZURE_DOCUMENTDB_MASTERKEY)" "$(VSO_PAT)"' -# disableAutoCwd: true + echo "$(VSCODE_MIXIN_PASSWORD)" \ No newline at end of file From 98ce4c524599bcb5a108101f68b8ac5e4748f203 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 09:09:39 +0100 Subject: [PATCH 211/658] yaml --- build/tfs/darwin/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 9eb24038b2a..abdbc4fec3f 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -1,3 +1,3 @@ steps: - script: | - echo "$(VSCODE_MIXIN_PASSWORD)" \ No newline at end of file + echo "$(VSCODE_MIXIN_PASSWORD)" \ No newline at end of file From 4f19e8f619d5bf875737853702b660278efff0f8 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 8 Mar 2018 09:13:20 +0100 Subject: [PATCH 212/658] tests - favour promise over done callback (for #45209) --- src/vs/base/node/pfs.ts | 4 + src/vs/base/test/browser/builder.test.ts | 10 +- src/vs/base/test/common/arrays.test.ts | 7 +- src/vs/base/test/common/async.test.ts | 153 +++---- src/vs/base/test/common/event.test.ts | 11 +- src/vs/base/test/common/resources.test.ts | 3 +- src/vs/base/test/common/utils.ts | 6 - src/vs/base/test/node/config.test.ts | 115 ++--- .../base/test/node/encoding/encoding.test.ts | 49 +- src/vs/base/test/node/extfs/extfs.test.ts | 93 ++-- src/vs/base/test/node/mime/mime.test.ts | 58 +-- src/vs/base/test/node/pfs.test.ts | 94 ++-- src/vs/base/test/node/port.test.ts | 6 +- src/vs/base/test/node/stream/stream.test.ts | 29 +- src/vs/base/test/node/utils.ts | 31 ++ .../contrib/find/test/findController.test.ts | 2 +- .../electron-main/backupMainService.test.ts | 90 ++-- .../test/node/configurationService.test.ts | 92 ++-- .../common/extensionEnablementService.test.ts | 26 +- .../test/node/extensionGalleryService.test.ts | 6 +- src/vs/platform/state/test/node/state.test.ts | 4 +- .../workspacesMainService.test.ts | 68 +-- .../test/browser/fileEditorInput.test.ts | 30 +- .../test/browser/fileEditorTracker.test.ts | 8 +- .../search/test/common/searchModel.test.ts | 48 +- .../test/node/backupFileService.test.ts | 122 +++-- .../test/node/configurationService.test.ts | 31 +- .../files/test/node/fileService.test.ts | 428 +++++++----------- .../services/files/test/node/resolver.test.ts | 42 +- .../test/keyboardMapperTestUtils.ts | 14 +- .../test/macLinuxKeyboardMapper.test.ts | 77 ++-- .../test/windowsKeyboardMapper.test.ts | 44 +- .../progress/test/progressService.test.ts | 4 +- .../textfile/test/textFileEditorModel.test.ts | 126 ++---- .../test/textFileEditorModelManager.test.ts | 41 +- .../textfile/test/textFileService.test.ts | 206 ++++----- .../test/textModelResolverService.test.ts | 5 +- .../browser/parts/editor/baseEditor.test.ts | 6 +- .../common/editor/editorDiffModel.test.ts | 6 +- .../test/common/editor/editorModel.test.ts | 13 +- .../test/common/editor/untitledEditor.test.ts | 46 +- .../api/extHostApiCommands.test.ts | 48 +- .../api/mainThreadSaveParticipant.test.ts | 17 +- 43 files changed, 960 insertions(+), 1359 deletions(-) create mode 100644 src/vs/base/test/node/utils.ts diff --git a/src/vs/base/node/pfs.ts b/src/vs/base/node/pfs.ts index a4898cfabc3..14900a32bff 100644 --- a/src/vs/base/node/pfs.ts +++ b/src/vs/base/node/pfs.ts @@ -196,3 +196,7 @@ export function whenDeleted(path: string): TPromise { }, 1000); }); } + +export function copy(source: string, target: string): TPromise { + return nfcall(extfs.copy, source, target); +} \ No newline at end of file diff --git a/src/vs/base/test/browser/builder.test.ts b/src/vs/base/test/browser/builder.test.ts index 7a323246cc0..e285f4eca6f 100644 --- a/src/vs/base/test/browser/builder.test.ts +++ b/src/vs/base/test/browser/builder.test.ts @@ -638,20 +638,19 @@ suite('Builder', () => { assert(b.isHidden()); }); - test('Builder.showDelayed()', function (done) { + test('Builder.showDelayed()', function () { let b = Build.withElementById(fixtureId); b.div().hide(); b.showDelayed(20); assert(b.hasClass('monaco-builder-hidden')); - TPromise.timeout(30).then(() => { + return TPromise.timeout(30).then(() => { assert(!b.hasClass('monaco-builder-hidden')); - done(); }); }); - test('Builder.showDelayed() but interrupted', function (done) { + test('Builder.showDelayed() but interrupted', function () { let b = Build.withElementById(fixtureId); b.div().hide(); @@ -660,9 +659,8 @@ suite('Builder', () => { b.hide(); // Should cancel the visibility promise - TPromise.timeout(30).then(() => { + return TPromise.timeout(30).then(() => { assert(b.hasClass('monaco-builder-hidden')); - done(); }); }); diff --git a/src/vs/base/test/common/arrays.test.ts b/src/vs/base/test/common/arrays.test.ts index f57418537bc..d9c2935ac4b 100644 --- a/src/vs/base/test/common/arrays.test.ts +++ b/src/vs/base/test/common/arrays.test.ts @@ -218,18 +218,17 @@ suite('Arrays', () => { assert.deepEqual(arrays.top([4, 6, 2, 7, 8, 3, 5, 1], cmp, 3), [1, 2, 3]); }); - test('topAsync', function (done) { + test('topAsync', function () { const cmp = (a: number, b: number) => { assert.strictEqual(typeof a, 'number', 'typeof a'); assert.strictEqual(typeof b, 'number', 'typeof b'); return a - b; }; - testTopAsync(cmp, 1) + return testTopAsync(cmp, 1) .then(() => { return testTopAsync(cmp, 2); - }) - .then(done, done); + }); }); function testTopAsync(cmp: any, m: number) { diff --git a/src/vs/base/test/common/async.test.ts b/src/vs/base/test/common/async.test.ts index ad09cfc655f..cb52335ed36 100644 --- a/src/vs/base/test/common/async.test.ts +++ b/src/vs/base/test/common/async.test.ts @@ -10,7 +10,7 @@ import Async = require('vs/base/common/async'); import URI from 'vs/base/common/uri'; suite('Async', () => { - test('Throttler - non async', function (done) { + test('Throttler - non async', function () { let count = 0; let factory = () => { return TPromise.as(++count); @@ -18,16 +18,16 @@ suite('Async', () => { let throttler = new Async.Throttler(); - Promise.join([ + return Promise.join([ throttler.queue(factory).then((result) => { assert.equal(result, 1); }), throttler.queue(factory).then((result) => { assert.equal(result, 2); }), throttler.queue(factory).then((result) => { assert.equal(result, 3); }), throttler.queue(factory).then((result) => { assert.equal(result, 4); }), throttler.queue(factory).then((result) => { assert.equal(result, 5); }) - ]).done(() => done()); + ]); }); - test('Throttler', function (done) { + test('Throttler', function () { let count = 0; let factory = () => { return TPromise.timeout(0).then(() => { @@ -37,24 +37,24 @@ suite('Async', () => { let throttler = new Async.Throttler(); - Promise.join([ + return Promise.join([ throttler.queue(factory).then((result) => { assert.equal(result, 1); }), throttler.queue(factory).then((result) => { assert.equal(result, 2); }), throttler.queue(factory).then((result) => { assert.equal(result, 2); }), throttler.queue(factory).then((result) => { assert.equal(result, 2); }), throttler.queue(factory).then((result) => { assert.equal(result, 2); }) - ]).done(() => { + ]).then(() => { Promise.join([ throttler.queue(factory).then((result) => { assert.equal(result, 3); }), throttler.queue(factory).then((result) => { assert.equal(result, 4); }), throttler.queue(factory).then((result) => { assert.equal(result, 4); }), throttler.queue(factory).then((result) => { assert.equal(result, 4); }), throttler.queue(factory).then((result) => { assert.equal(result, 4); }) - ]).done(() => done()); + ]); }); }); - test('Throttler - cancel should not cancel other promises', function (done) { + test('Throttler - cancel should not cancel other promises', function () { let count = 0; let factory = () => { return TPromise.timeout(0).then(() => { @@ -65,17 +65,19 @@ suite('Async', () => { let throttler = new Async.Throttler(); let p1: Promise; - Promise.join([ + const p = Promise.join([ p1 = throttler.queue(factory).then((result) => { assert(false, 'should not be here, 1'); }, () => { assert(true, 'yes, it was cancelled'); }), throttler.queue(factory).then((result) => { assert.equal(result, 1); }, () => { assert(false, 'should not be here, 2'); }), throttler.queue(factory).then((result) => { assert.equal(result, 1); }, () => { assert(false, 'should not be here, 3'); }), throttler.queue(factory).then((result) => { assert.equal(result, 1); }, () => { assert(false, 'should not be here, 4'); }) - ]).done(() => done()); + ]); p1.cancel(); + + return p; }); - test('Throttler - cancel the first queued promise should not cancel other promises', function (done) { + test('Throttler - cancel the first queued promise should not cancel other promises', function () { let count = 0; let factory = () => { return TPromise.timeout(0).then(() => { @@ -86,17 +88,19 @@ suite('Async', () => { let throttler = new Async.Throttler(); let p2: Promise; - Promise.join([ + const p = Promise.join([ throttler.queue(factory).then((result) => { assert.equal(result, 1); }, () => { assert(false, 'should not be here, 1'); }), p2 = throttler.queue(factory).then((result) => { assert(false, 'should not be here, 2'); }, () => { assert(true, 'yes, it was cancelled'); }), throttler.queue(factory).then((result) => { assert.equal(result, 2); }, () => { assert(false, 'should not be here, 3'); }), throttler.queue(factory).then((result) => { assert.equal(result, 2); }, () => { assert(false, 'should not be here, 4'); }) - ]).done(() => done()); + ]); p2.cancel(); + + return p; }); - test('Throttler - cancel in the middle should not cancel other promises', function (done) { + test('Throttler - cancel in the middle should not cancel other promises', function () { let count = 0; let factory = () => { return TPromise.timeout(0).then(() => { @@ -107,17 +111,19 @@ suite('Async', () => { let throttler = new Async.Throttler(); let p3: Promise; - Promise.join([ + const p = Promise.join([ throttler.queue(factory).then((result) => { assert.equal(result, 1); }, () => { assert(false, 'should not be here, 1'); }), throttler.queue(factory).then((result) => { assert.equal(result, 2); }, () => { assert(false, 'should not be here, 2'); }), p3 = throttler.queue(factory).then((result) => { assert(false, 'should not be here, 3'); }, () => { assert(true, 'yes, it was cancelled'); }), throttler.queue(factory).then((result) => { assert.equal(result, 2); }, () => { assert(false, 'should not be here, 4'); }) - ]).done(() => done()); + ]); p3.cancel(); + + return p; }); - test('Throttler - last factory should be the one getting called', function (done) { + test('Throttler - last factory should be the one getting called', function () { let factoryFactory = (n: number) => () => { return TPromise.timeout(0).then(() => n); }; @@ -130,10 +136,10 @@ suite('Async', () => { promises.push(throttler.queue(factoryFactory(2)).then((n) => { assert.equal(n, 3); })); promises.push(throttler.queue(factoryFactory(3)).then((n) => { assert.equal(n, 3); })); - Promise.join(promises).done(() => done()); + return Promise.join(promises); }); - test('Throttler - progress should work', function (done) { + test('Throttler - progress should work', function () { let order = 0; let factory = () => new TPromise((c, e, p) => { TPromise.timeout(0).done(() => { @@ -150,15 +156,14 @@ suite('Async', () => { promises.push(throttler.queue(factory).then(null, null, (p) => progresses[1].push(p))); promises.push(throttler.queue(factory).then(null, null, (p) => progresses[2].push(p))); - Promise.join(promises).done(() => { + return Promise.join(promises).then(() => { assert.deepEqual(progresses[0], [0]); assert.deepEqual(progresses[1], [0]); assert.deepEqual(progresses[2], [0]); - done(); }); }); - test('Delayer', function (done) { + test('Delayer', function () { let count = 0; let factory = () => { return TPromise.as(++count); @@ -178,13 +183,12 @@ suite('Async', () => { promises.push(delayer.trigger(factory).then((result) => { assert.equal(result, 1); assert(!delayer.isTriggered()); })); assert(delayer.isTriggered()); - Promise.join(promises).done(() => { + return Promise.join(promises).then(() => { assert(!delayer.isTriggered()); - done(); }); }); - test('Delayer - simple cancel', function (done) { + test('Delayer - simple cancel', function () { let count = 0; let factory = () => { return TPromise.as(++count); @@ -194,18 +198,20 @@ suite('Async', () => { assert(!delayer.isTriggered()); - delayer.trigger(factory).then(() => { + const p = delayer.trigger(factory).then(() => { assert(false); }, () => { assert(true, 'yes, it was cancelled'); - }).done(() => done()); + }); assert(delayer.isTriggered()); delayer.cancel(); assert(!delayer.isTriggered()); + + return p; }); - test('Delayer - cancel should cancel all calls to trigger', function (done) { + test('Delayer - cancel should cancel all calls to trigger', function () { let count = 0; let factory = () => { return TPromise.as(++count); @@ -227,13 +233,12 @@ suite('Async', () => { delayer.cancel(); - Promise.join(promises).done(() => { + return Promise.join(promises).then(() => { assert(!delayer.isTriggered()); - done(); }); }); - test('Delayer - trigger, cancel, then trigger again', function (done) { + test('Delayer - trigger, cancel, then trigger again', function () { let count = 0; let factory = () => { return TPromise.as(++count); @@ -244,7 +249,7 @@ suite('Async', () => { assert(!delayer.isTriggered()); - delayer.trigger(factory).then((result) => { + const p = delayer.trigger(factory).then((result) => { assert.equal(result, 1); assert(!delayer.isTriggered()); @@ -256,8 +261,7 @@ suite('Async', () => { delayer.cancel(); - Promise.join(promises).then(() => { - + const p = Promise.join(promises).then(() => { promises = []; assert(!delayer.isTriggered()); @@ -268,22 +272,26 @@ suite('Async', () => { promises.push(delayer.trigger(factory).then(() => { assert.equal(result, 1); assert(!delayer.isTriggered()); })); assert(delayer.isTriggered()); - Promise.join(promises).then(() => { + const p = Promise.join(promises).then(() => { assert(!delayer.isTriggered()); - - done(); }); assert(delayer.isTriggered()); + + return p; }); assert(delayer.isTriggered()); + + return p; }); assert(delayer.isTriggered()); + + return p; }); - test('Delayer - last task should be the one getting called', function (done) { + test('Delayer - last task should be the one getting called', function () { let factoryFactory = (n: number) => () => { return TPromise.as(n); }; @@ -297,15 +305,16 @@ suite('Async', () => { promises.push(delayer.trigger(factoryFactory(2)).then((n) => { assert.equal(n, 3); })); promises.push(delayer.trigger(factoryFactory(3)).then((n) => { assert.equal(n, 3); })); - Promise.join(promises).then(() => { + const p = Promise.join(promises).then(() => { assert(!delayer.isTriggered()); - done(); }); assert(delayer.isTriggered()); + + return p; }); - test('Delayer - progress should work', function (done) { + test('Delayer - progress should work', function () { let order = 0; let factory = () => new TPromise((c, e, p) => { TPromise.timeout(0).done(() => { @@ -322,15 +331,14 @@ suite('Async', () => { promises.push(delayer.trigger(factory).then(null, null, (p) => progresses[1].push(p))); promises.push(delayer.trigger(factory).then(null, null, (p) => progresses[2].push(p))); - Promise.join(promises).done(() => { + return Promise.join(promises).then(() => { assert.deepEqual(progresses[0], [0]); assert.deepEqual(progresses[1], [0]); assert.deepEqual(progresses[2], [0]); - done(); }); }); - test('ThrottledDelayer - progress should work', function (done) { + test('ThrottledDelayer - progress should work', function () { let order = 0; let factory = () => new TPromise((c, e, p) => { TPromise.timeout(0).done(() => { @@ -347,20 +355,19 @@ suite('Async', () => { promises.push(delayer.trigger(factory).then(null, null, (p) => progresses[1].push(p))); promises.push(delayer.trigger(factory).then(null, null, (p) => progresses[2].push(p))); - Promise.join(promises).done(() => { + return Promise.join(promises).then(() => { assert.deepEqual(progresses[0], [0]); assert.deepEqual(progresses[1], [0]); assert.deepEqual(progresses[2], [0]); - done(); }); }); - test('Sequence', function (done) { + test('Sequence', function () { let factoryFactory = (n: number) => () => { return TPromise.as(n); }; - Async.sequence([ + return Async.sequence([ factoryFactory(1), factoryFactory(2), factoryFactory(3), @@ -373,11 +380,10 @@ suite('Async', () => { assert.equal(3, result[2]); assert.equal(4, result[3]); assert.equal(5, result[4]); - done(); }); }); - test('Limiter - sync', function (done) { + test('Limiter - sync', function () { let factoryFactory = (n: number) => () => { return TPromise.as(n); }; @@ -387,7 +393,7 @@ suite('Async', () => { let promises: Promise[] = []; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].forEach(n => promises.push(limiter.queue(factoryFactory(n)))); - Promise.join(promises).then((res) => { + return Promise.join(promises).then((res) => { assert.equal(10, res.length); limiter = new Async.Limiter(100); @@ -398,10 +404,10 @@ suite('Async', () => { return Promise.join(promises).then((res) => { assert.equal(10, res.length); }); - }).done(() => done()); + }); }); - test('Limiter - async', function (done) { + test('Limiter - async', function () { let factoryFactory = (n: number) => () => { return TPromise.timeout(0).then(() => n); }; @@ -410,7 +416,7 @@ suite('Async', () => { let promises: Promise[] = []; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].forEach(n => promises.push(limiter.queue(factoryFactory(n)))); - Promise.join(promises).then((res) => { + return Promise.join(promises).then((res) => { assert.equal(10, res.length); limiter = new Async.Limiter(100); @@ -418,13 +424,13 @@ suite('Async', () => { promises = []; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].forEach(n => promises.push(limiter.queue(factoryFactory(n)))); - Promise.join(promises).then((res) => { + return Promise.join(promises).then((res) => { assert.equal(10, res.length); }); - }).done(() => done()); + }); }); - test('Limiter - assert degree of paralellism', function (done) { + test('Limiter - assert degree of paralellism', function () { let activePromises = 0; let factoryFactory = (n: number) => () => { activePromises++; @@ -437,14 +443,13 @@ suite('Async', () => { let promises: Promise[] = []; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].forEach(n => promises.push(limiter.queue(factoryFactory(n)))); - Promise.join(promises).then((res) => { + return Promise.join(promises).then((res) => { assert.equal(10, res.length); assert.deepEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], res); - done(); }); }); - test('Queue - simple', function (done) { + test('Queue - simple', function () { let queue = new Async.Queue(); let syncPromise = false; @@ -464,12 +469,10 @@ suite('Async', () => { assert.equal(queue.size, 1); assert.ok(syncPromise); assert.ok(asyncPromise); - - done(); }); }); - test('Queue - order is kept', function (done) { + test('Queue - order is kept', function () { let queue = new Async.Queue(); let res: number[] = []; @@ -484,18 +487,16 @@ suite('Async', () => { queue.queue(f2); queue.queue(f3); queue.queue(f4); - queue.queue(f5).then(() => { + return queue.queue(f5).then(() => { assert.equal(res[0], 1); assert.equal(res[1], 2); assert.equal(res[2], 3); assert.equal(res[3], 4); assert.equal(res[4], 5); - - done(); }); }); - test('Queue - errors bubble individually but not cause stop', function (done) { + test('Queue - errors bubble individually but not cause stop', function () { let queue = new Async.Queue(); let res: number[] = []; @@ -511,18 +512,16 @@ suite('Async', () => { queue.queue(f2); queue.queue(f3).then(null, () => error = true); queue.queue(f4); - queue.queue(f5).then(() => { + return queue.queue(f5).then(() => { assert.equal(res[0], 1); assert.equal(res[1], 2); assert.ok(error); assert.equal(res[2], 4); assert.equal(res[3], 5); - - done(); }); }); - test('Queue - order is kept (chained)', function (done) { + test('Queue - order is kept (chained)', function () { let queue = new Async.Queue(); let res: number[] = []; @@ -533,18 +532,16 @@ suite('Async', () => { let f4 = () => TPromise.timeout(20).then(() => res.push(4)); let f5 = () => TPromise.timeout(0).then(() => res.push(5)); - queue.queue(f1).then(() => { - queue.queue(f2).then(() => { - queue.queue(f3).then(() => { - queue.queue(f4).then(() => { - queue.queue(f5).then(() => { + return queue.queue(f1).then(() => { + return queue.queue(f2).then(() => { + return queue.queue(f3).then(() => { + return queue.queue(f4).then(() => { + return queue.queue(f5).then(() => { assert.equal(res[0], 1); assert.equal(res[1], 2); assert.equal(res[2], 3); assert.equal(res[3], 4); assert.equal(res[4], 5); - - done(); }); }); }); diff --git a/src/vs/base/test/common/event.test.ts b/src/vs/base/test/common/event.test.ts index d2385951333..363175b31cf 100644 --- a/src/vs/base/test/common/event.test.ts +++ b/src/vs/base/test/common/event.test.ts @@ -183,7 +183,7 @@ suite('Event', function () { doc.setText('3'); }); - test('Debounce Event - leading', function (done: () => void) { + test('Debounce Event - leading', function () { const emitter = new Emitter(); let debounced = debounceEvent(emitter.event, (l, e) => e, 0, /*leading=*/true); @@ -194,13 +194,13 @@ suite('Event', function () { // If the source event is fired once, the debounced (on the leading edge) event should be fired only once emitter.fire(); - setTimeout(() => { + + return TPromise.timeout(1).then(() => { assert.equal(calls, 1); - done(); }); }); - test('Debounce Event - leading', function (done: () => void) { + test('Debounce Event - leading', function () { const emitter = new Emitter(); let debounced = debounceEvent(emitter.event, (l, e) => e, 0, /*leading=*/true); @@ -213,9 +213,8 @@ suite('Event', function () { emitter.fire(); emitter.fire(); emitter.fire(); - setTimeout(() => { + return TPromise.timeout(1).then(() => { assert.equal(calls, 2); - done(); }); }); diff --git a/src/vs/base/test/common/resources.test.ts b/src/vs/base/test/common/resources.test.ts index e29e625f4c7..2c1e18bf6ef 100644 --- a/src/vs/base/test/common/resources.test.ts +++ b/src/vs/base/test/common/resources.test.ts @@ -42,13 +42,12 @@ suite('Resources', () => { assert.equal(distinct[2].toString(), resources[4].toString()); }); - test('dirname', (done) => { + test('dirname', () => { const f = URI.file('/some/file/test.txt'); const d = dirname(f); assert.equal(d.fsPath, normalize('/some/file', true)); // does not explode (https://github.com/Microsoft/vscode/issues/41987) dirname(URI.from({ scheme: 'file', authority: '/users/someone/portal.h' })); - done(); }); }); \ No newline at end of file diff --git a/src/vs/base/test/common/utils.ts b/src/vs/base/test/common/utils.ts index 8932da3d595..798cca997d4 100644 --- a/src/vs/base/test/common/utils.ts +++ b/src/vs/base/test/common/utils.ts @@ -5,7 +5,6 @@ 'use strict'; -import * as assert from 'assert'; import { TPromise, PPromise, TValueCallback, TProgressCallback, ProgressCallback } from 'vs/base/common/winjs.base'; import * as errors from 'vs/base/common/errors'; import * as paths from 'vs/base/common/paths'; @@ -80,11 +79,6 @@ export class DeferredPPromise extends PPromise { } } -export function onError(error: Error, done: () => void): void { - assert.fail(error); - done(); -} - export function toResource(this: any, path: string) { return URI.file(paths.join('C:\\', Buffer.from(this.test.fullTitle()).toString('base64'), path)); } diff --git a/src/vs/base/test/node/config.test.ts b/src/vs/base/test/node/config.test.ts index 2fc621eefea..9b9678330a9 100644 --- a/src/vs/base/test/node/config.test.ts +++ b/src/vs/base/test/node/config.test.ts @@ -10,25 +10,12 @@ import os = require('os'); import path = require('path'); import fs = require('fs'); -import extfs = require('vs/base/node/extfs'); import uuid = require('vs/base/common/uuid'); import { ConfigWatcher } from 'vs/base/node/config'; -import { onError } from 'vs/base/test/common/utils'; -import { mkdirp } from 'vs/base/node/pfs'; +import { testFile } from 'vs/base/test/node/utils'; suite('Config', () => { - function testFile(callback: (error: Error, path: string, cleanUp: (callback: () => void) => void) => void): void { - const id = uuid.generateUuid(); - const parentDir = path.join(os.tmpdir(), 'vsctests', id); - const newDir = path.join(parentDir, 'config', id); - const testFile = path.join(newDir, 'config.json'); - - const onMkdirp = error => callback(error, testFile, (callback) => extfs.del(parentDir, os.tmpdir(), () => { }, callback)); - - mkdirp(newDir, 493).done(() => onMkdirp(null), error => onMkdirp(error)); - } - test('defaults', function () { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); @@ -52,15 +39,11 @@ suite('Config', () => { watcher.dispose(); }); - test('getConfig / getValue', function (done: () => void) { - testFile((error, testFile, cleanUp) => { - if (error) { - return onError(error, done); - } + test('getConfig / getValue', function () { + return testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, '// my comment\n{ "foo": "bar" }'); - fs.writeFileSync(testFile, '// my comment\n{ "foo": "bar" }'); - - let watcher = new ConfigWatcher<{ foo: string; }>(testFile); + let watcher = new ConfigWatcher<{ foo: string; }>(res.testFile); let config = watcher.getConfig(); assert.ok(config); @@ -72,19 +55,15 @@ suite('Config', () => { watcher.dispose(); - cleanUp(done); + return res.cleanUp(); }); }); - test('getConfig / getValue - broken JSON', function (done: () => void) { - testFile((error, testFile, cleanUp) => { - if (error) { - return onError(error, done); - } + test('getConfig / getValue - broken JSON', function () { + return testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, '// my comment\n "foo": "bar ... '); - fs.writeFileSync(testFile, '// my comment\n "foo": "bar ... '); - - let watcher = new ConfigWatcher<{ foo: string; }>(testFile); + let watcher = new ConfigWatcher<{ foo: string; }>(res.testFile); let config = watcher.getConfig(); assert.ok(config); @@ -94,24 +73,20 @@ suite('Config', () => { watcher.dispose(); - cleanUp(done); + return res.cleanUp(); }); }); - test('watching', function (done: () => void) { + test('watching', function (done) { this.timeout(10000); // watching is timing intense - testFile((error, testFile, cleanUp) => { - if (error) { - return onError(error, done); - } + testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, '// my comment\n{ "foo": "bar" }'); - fs.writeFileSync(testFile, '// my comment\n{ "foo": "bar" }'); - - let watcher = new ConfigWatcher<{ foo: string; }>(testFile); + let watcher = new ConfigWatcher<{ foo: string; }>(res.testFile); watcher.getConfig(); // ensure we are in sync - fs.writeFileSync(testFile, '// my comment\n{ "foo": "changed" }'); + fs.writeFileSync(res.testFile, '// my comment\n{ "foo": "changed" }'); watcher.onDidUpdateConfiguration(event => { assert.ok(event); @@ -120,24 +95,19 @@ suite('Config', () => { watcher.dispose(); - cleanUp(done); + res.cleanUp().then(done, done); }); - - }); + }, done); }); - test('watching also works when file created later', function (done: () => void) { + test('watching also works when file created later', function (done) { this.timeout(10000); // watching is timing intense - testFile((error, testFile, cleanUp) => { - if (error) { - return onError(error, done); - } - - let watcher = new ConfigWatcher<{ foo: string; }>(testFile); + testFile('config', 'config.json').then(res => { + let watcher = new ConfigWatcher<{ foo: string; }>(res.testFile); watcher.getConfig(); // ensure we are in sync - fs.writeFileSync(testFile, '// my comment\n{ "foo": "changed" }'); + fs.writeFileSync(res.testFile, '// my comment\n{ "foo": "changed" }'); watcher.onDidUpdateConfiguration(event => { assert.ok(event); @@ -146,23 +116,18 @@ suite('Config', () => { watcher.dispose(); - cleanUp(done); + res.cleanUp().then(done, done); }); - - }); + }, done); }); - test('watching detects the config file getting deleted', function (done: () => void) { + test('watching detects the config file getting deleted', function (done) { this.timeout(10000); // watching is timing intense - testFile((error, testFile, cleanUp) => { - if (error) { - return onError(error, done); - } + testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, '// my comment\n{ "foo": "bar" }'); - fs.writeFileSync(testFile, '// my comment\n{ "foo": "bar" }'); - - let watcher = new ConfigWatcher<{ foo: string; }>(testFile); + let watcher = new ConfigWatcher<{ foo: string; }>(res.testFile); watcher.getConfig(); // ensure we are in sync watcher.onDidUpdateConfiguration(event => { @@ -170,25 +135,21 @@ suite('Config', () => { watcher.dispose(); - cleanUp(done); + res.cleanUp().then(done, done); }); - fs.unlinkSync(testFile); - }); + fs.unlinkSync(res.testFile); + }, done); }); - test('reload', function (done: () => void) { - testFile((error, testFile, cleanUp) => { - if (error) { - return onError(error, done); - } + test('reload', function (done) { + testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, '// my comment\n{ "foo": "bar" }'); - fs.writeFileSync(testFile, '// my comment\n{ "foo": "bar" }'); - - let watcher = new ConfigWatcher<{ foo: string; }>(testFile, { changeBufferDelay: 100, onError: console.error }); + let watcher = new ConfigWatcher<{ foo: string; }>(res.testFile, { changeBufferDelay: 100, onError: console.error }); watcher.getConfig(); // ensure we are in sync - fs.writeFileSync(testFile, '// my comment\n{ "foo": "changed" }'); + fs.writeFileSync(res.testFile, '// my comment\n{ "foo": "changed" }'); // still old values because change is not bubbling yet assert.equal(watcher.getConfig().foo, 'bar'); @@ -202,8 +163,8 @@ suite('Config', () => { watcher.dispose(); - cleanUp(done); + res.cleanUp().then(done, done); }); - }); + }, done); }); }); \ No newline at end of file diff --git a/src/vs/base/test/node/encoding/encoding.test.ts b/src/vs/base/test/node/encoding/encoding.test.ts index 7c5c56f7a9f..66af6ae8212 100644 --- a/src/vs/base/test/node/encoding/encoding.test.ts +++ b/src/vs/base/test/node/encoding/encoding.test.ts @@ -11,65 +11,58 @@ import encoding = require('vs/base/node/encoding'); import { encodingExists } from 'vs/base/node/encoding'; suite('Encoding', () => { - test('detectBOM UTF-8', (done: (err?: any) => void) => { + test('detectBOM UTF-8', () => { const file = require.toUrl('./fixtures/some_utf8.css'); - encoding.detectEncodingByBOM(file).then((encoding: string) => { + return encoding.detectEncodingByBOM(file).then((encoding: string) => { assert.equal(encoding, 'utf8'); - done(); - }, done); + }); }); - test('detectBOM UTF-16 LE', (done: (err?: any) => void) => { + test('detectBOM UTF-16 LE', () => { const file = require.toUrl('./fixtures/some_utf16le.css'); - encoding.detectEncodingByBOM(file).then((encoding: string) => { + return encoding.detectEncodingByBOM(file).then((encoding: string) => { assert.equal(encoding, 'utf16le'); - done(); - }, done); + }); }); - test('detectBOM UTF-16 BE', (done: (err?: any) => void) => { + test('detectBOM UTF-16 BE', () => { const file = require.toUrl('./fixtures/some_utf16be.css'); - encoding.detectEncodingByBOM(file).then((encoding: string) => { + return encoding.detectEncodingByBOM(file).then((encoding: string) => { assert.equal(encoding, 'utf16be'); - done(); - }, done); + }); }); - test('detectBOM ANSI', function (done: (err?: any) => void) { + test('detectBOM ANSI', function () { const file = require.toUrl('./fixtures/some_ansi.css'); - encoding.detectEncodingByBOM(file).then((encoding: string) => { + return encoding.detectEncodingByBOM(file).then((encoding: string) => { assert.equal(encoding, null); - done(); - }, done); + }); }); - test('detectBOM ANSI', function (done: (err?: any) => void) { + test('detectBOM ANSI', function () { const file = require.toUrl('./fixtures/empty.txt'); - encoding.detectEncodingByBOM(file).then((encoding: string) => { + return encoding.detectEncodingByBOM(file).then((encoding: string) => { assert.equal(encoding, null); - done(); - }, done); + }); }); - test('resolve terminal encoding (detect)', function (done: (err?: any) => void) { - encoding.resolveTerminalEncoding().then(encoding => { + test('resolve terminal encoding (detect)', function () { + return encoding.resolveTerminalEncoding().then(encoding => { assert.ok(encodingExists(encoding)); - done(); - }, done); + }); }); - test('resolve terminal encoding (environment)', function (done: (err?: any) => void) { + test('resolve terminal encoding (environment)', function () { process.env['VSCODE_CLI_ENCODING'] = 'utf16le'; - encoding.resolveTerminalEncoding().then(encoding => { + return encoding.resolveTerminalEncoding().then(encoding => { assert.ok(encodingExists(encoding)); assert.equal(encoding, 'utf16le'); - done(); - }, done); + }); }); }); diff --git a/src/vs/base/test/node/extfs/extfs.test.ts b/src/vs/base/test/node/extfs/extfs.test.ts index bb01309a025..2872a9aecf2 100644 --- a/src/vs/base/test/node/extfs/extfs.test.ts +++ b/src/vs/base/test/node/extfs/extfs.test.ts @@ -14,7 +14,6 @@ import fs = require('fs'); import uuid = require('vs/base/common/uuid'); import strings = require('vs/base/common/strings'); import extfs = require('vs/base/node/extfs'); -import { onError } from 'vs/base/test/common/utils'; import { Readable } from 'stream'; import { isLinux, isWindows } from 'vs/base/common/platform'; @@ -58,14 +57,14 @@ function toReadable(value: string, throwError?: boolean): Readable { suite('Extfs', () => { - test('mkdirp', function (done: () => void) { + test('mkdirp', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); @@ -74,7 +73,7 @@ suite('Extfs', () => { }); // 493 = 0755 }); - test('stat link', function (done: () => void) { + test('stat link', function (done) { if (isWindows) { // Symlinks are not the same on win, and we can not create them programitically without admin privileges return done(); @@ -89,21 +88,21 @@ suite('Extfs', () => { mkdirp(directory, 493, error => { if (error) { - return onError(error, done); + return done(error); } fs.symlinkSync(directory, symbolicLink); extfs.statLink(directory, (error, statAndIsLink) => { if (error) { - return onError(error, done); + return done(error); } assert.ok(!statAndIsLink.isSymbolicLink); extfs.statLink(symbolicLink, (error, statAndIsLink) => { if (error) { - return onError(error, done); + return done(error); } assert.ok(statAndIsLink.isSymbolicLink); @@ -124,14 +123,14 @@ suite('Extfs', () => { assert.ok(!fs.existsSync(newDir)); }); - test('delSync - simple', function (done: () => void) { + test('delSync - simple', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } fs.writeFileSync(path.join(newDir, 'somefile.txt'), 'Contents'); @@ -144,14 +143,14 @@ suite('Extfs', () => { }); // 493 = 0755 }); - test('delSync - recursive folder structure', function (done: () => void) { + test('delSync - recursive folder structure', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } fs.writeFileSync(path.join(newDir, 'somefile.txt'), 'Contents'); @@ -167,7 +166,7 @@ suite('Extfs', () => { }); // 493 = 0755 }); - test('copy, move and delete', function (done: () => void) { + test('copy, move and delete', function (done) { const id = uuid.generateUuid(); const id2 = uuid.generateUuid(); const sourceDir = require.toUrl('./fixtures'); @@ -177,7 +176,7 @@ suite('Extfs', () => { extfs.copy(sourceDir, targetDir, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(targetDir)); @@ -189,7 +188,7 @@ suite('Extfs', () => { extfs.mv(targetDir, targetDir2, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(!fs.existsSync(targetDir)); @@ -202,7 +201,7 @@ suite('Extfs', () => { extfs.mv(path.join(targetDir2, 'index.html'), path.join(targetDir2, 'index_moved.html'), error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(!fs.existsSync(path.join(targetDir2, 'index.html'))); @@ -210,11 +209,11 @@ suite('Extfs', () => { extfs.del(parentDir, os.tmpdir(), error => { if (error) { - return onError(error, done); + return done(error); } }, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(!fs.existsSync(parentDir)); done(); @@ -224,7 +223,7 @@ suite('Extfs', () => { }); }); - test('readdir', function (done: () => void) { + test('readdir', function (done) { if (strings.canNormalize && typeof process.versions['electron'] !== 'undefined' /* needs electron */) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); @@ -232,7 +231,7 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); @@ -248,7 +247,7 @@ suite('Extfs', () => { } }); - test('writeFileAndFlush (string)', function (done: () => void) { + test('writeFileAndFlush (string)', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); @@ -256,14 +255,14 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); extfs.writeFileAndFlush(testFile, 'Hello World', null, error => { if (error) { - return onError(error, done); + return done(error); } assert.equal(fs.readFileSync(testFile), 'Hello World'); @@ -272,7 +271,7 @@ suite('Extfs', () => { extfs.writeFileAndFlush(testFile, largeString, null, error => { if (error) { - return onError(error, done); + return done(error); } assert.equal(fs.readFileSync(testFile), largeString); @@ -283,7 +282,7 @@ suite('Extfs', () => { }); }); - test('writeFileAndFlush (stream)', function (done: () => void) { + test('writeFileAndFlush (stream)', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); @@ -291,14 +290,14 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); extfs.writeFileAndFlush(testFile, toReadable('Hello World'), null, error => { if (error) { - return onError(error, done); + return done(error); } assert.equal(fs.readFileSync(testFile), 'Hello World'); @@ -307,7 +306,7 @@ suite('Extfs', () => { extfs.writeFileAndFlush(testFile, toReadable(largeString), null, error => { if (error) { - return onError(error, done); + return done(error); } assert.equal(fs.readFileSync(testFile), largeString); @@ -318,7 +317,7 @@ suite('Extfs', () => { }); }); - test('writeFileAndFlush (file stream)', function (done: () => void) { + test('writeFileAndFlush (file stream)', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const sourceFile = require.toUrl('./fixtures/index.html'); @@ -327,14 +326,14 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); extfs.writeFileAndFlush(testFile, fs.createReadStream(sourceFile), null, error => { if (error) { - return onError(error, done); + return done(error); } assert.equal(fs.readFileSync(testFile).toString(), fs.readFileSync(sourceFile).toString()); @@ -344,7 +343,7 @@ suite('Extfs', () => { }); }); - test('writeFileAndFlush (string, error handling)', function (done: () => void) { + test('writeFileAndFlush (string, error handling)', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); @@ -352,7 +351,7 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); @@ -361,7 +360,7 @@ suite('Extfs', () => { extfs.writeFileAndFlush(testFile, 'Hello World', null, error => { if (!error) { - return onError(new Error('Expected error for writing to readonly file'), done); + return done(new Error('Expected error for writing to readonly file')); } extfs.del(parentDir, os.tmpdir(), done, ignore); @@ -369,7 +368,7 @@ suite('Extfs', () => { }); }); - test('writeFileAndFlush (stream, error handling EISDIR)', function (done: () => void) { + test('writeFileAndFlush (stream, error handling EISDIR)', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); @@ -377,7 +376,7 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); @@ -387,7 +386,7 @@ suite('Extfs', () => { const readable = toReadable('Hello World'); extfs.writeFileAndFlush(testFile, readable, null, error => { if (!error || (error).code !== 'EISDIR') { - return onError(new Error('Expected EISDIR error for writing to folder but got: ' + (error ? (error).code : 'no error')), done); + return done(new Error('Expected EISDIR error for writing to folder but got: ' + (error ? (error).code : 'no error'))); } // verify that the stream is still consumable (for https://github.com/Microsoft/vscode/issues/42542) @@ -398,7 +397,7 @@ suite('Extfs', () => { }); }); - test('writeFileAndFlush (stream, error handling READERROR)', function (done: () => void) { + test('writeFileAndFlush (stream, error handling READERROR)', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); @@ -406,14 +405,14 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); extfs.writeFileAndFlush(testFile, toReadable('Hello World', true /* throw error */), null, error => { if (!error || error.message !== readError) { - return onError(new Error('Expected error for writing to folder'), done); + return done(new Error('Expected error for writing to folder')); } extfs.del(parentDir, os.tmpdir(), done, ignore); @@ -421,7 +420,7 @@ suite('Extfs', () => { }); }); - test('writeFileAndFlush (stream, error handling EACCES)', function (done: () => void) { + test('writeFileAndFlush (stream, error handling EACCES)', function (done) { if (isLinux) { return done(); // somehow this test fails on Linux in our TFS builds } @@ -433,7 +432,7 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); @@ -443,7 +442,7 @@ suite('Extfs', () => { extfs.writeFileAndFlush(testFile, toReadable('Hello World'), null, error => { if (!error || !((error).code !== 'EACCES' || (error).code !== 'EPERM')) { - return onError(new Error('Expected EACCES/EPERM error for writing to folder but got: ' + (error ? (error).code : 'no error')), done); + return done(new Error('Expected EACCES/EPERM error for writing to folder but got: ' + (error ? (error).code : 'no error'))); } extfs.del(parentDir, os.tmpdir(), done, ignore); @@ -451,7 +450,7 @@ suite('Extfs', () => { }); }); - test('writeFileAndFlush (file stream, error handling)', function (done: () => void) { + test('writeFileAndFlush (file stream, error handling)', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const sourceFile = require.toUrl('./fixtures/index.html'); @@ -460,7 +459,7 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); @@ -469,7 +468,7 @@ suite('Extfs', () => { extfs.writeFileAndFlush(testFile, fs.createReadStream(sourceFile), null, error => { if (!error) { - return onError(new Error('Expected error for writing to folder'), done); + return done(new Error('Expected error for writing to folder')); } extfs.del(parentDir, os.tmpdir(), done, ignore); @@ -477,7 +476,7 @@ suite('Extfs', () => { }); }); - test('writeFileAndFlushSync', function (done: () => void) { + test('writeFileAndFlushSync', function (done) { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); @@ -485,7 +484,7 @@ suite('Extfs', () => { mkdirp(newDir, 493, error => { if (error) { - return onError(error, done); + return done(error); } assert.ok(fs.existsSync(newDir)); diff --git a/src/vs/base/test/node/mime/mime.test.ts b/src/vs/base/test/node/mime/mime.test.ts index bb4a9bde51f..ecf8f4d92a7 100644 --- a/src/vs/base/test/node/mime/mime.test.ts +++ b/src/vs/base/test/node/mime/mime.test.ts @@ -13,79 +13,71 @@ import { readExactlyByFile } from 'vs/base/node/stream'; suite('Mime', () => { - test('detectMimesFromFile (JSON saved as PNG)', function (done: (err?: any) => void) { + test('detectMimesFromFile (JSON saved as PNG)', function () { const file = require.toUrl('./fixtures/some.json.png'); - readExactlyByFile(file, 512).then(buffer => { + return readExactlyByFile(file, 512).then(buffer => { const mimes = mime.detectMimeAndEncodingFromBuffer(buffer); assert.deepEqual(mimes.mimes, ['text/plain']); - done(); }); }); - test('detectMimesFromFile (PNG saved as TXT)', function (done: (err?: any) => void) { + test('detectMimesFromFile (PNG saved as TXT)', function () { mimeCommon.registerTextMime({ id: 'text', mime: 'text/plain', extension: '.txt' }); const file = require.toUrl('./fixtures/some.png.txt'); - readExactlyByFile(file, 512).then(buffer => { + return readExactlyByFile(file, 512).then(buffer => { const mimes = mime.detectMimeAndEncodingFromBuffer(buffer); assert.deepEqual(mimes.mimes, ['application/octet-stream']); - done(); - }, done); + }); }); - test('detectMimesFromFile (XML saved as PNG)', function (done: (err?: any) => void) { + test('detectMimesFromFile (XML saved as PNG)', function () { const file = require.toUrl('./fixtures/some.xml.png'); - readExactlyByFile(file, 512).then(buffer => { + return readExactlyByFile(file, 512).then(buffer => { const mimes = mime.detectMimeAndEncodingFromBuffer(buffer); assert.deepEqual(mimes.mimes, ['text/plain']); - done(); - }, done); + }); }); - test('detectMimesFromFile (QWOFF saved as TXT)', function (done: (err?: any) => void) { + test('detectMimesFromFile (QWOFF saved as TXT)', function () { const file = require.toUrl('./fixtures/some.qwoff.txt'); - readExactlyByFile(file, 512).then(buffer => { + return readExactlyByFile(file, 512).then(buffer => { const mimes = mime.detectMimeAndEncodingFromBuffer(buffer); assert.deepEqual(mimes.mimes, ['application/octet-stream']); - done(); - }, done); + }); }); - test('detectMimesFromFile (CSS saved as QWOFF)', function (done: (err?: any) => void) { + test('detectMimesFromFile (CSS saved as QWOFF)', function () { const file = require.toUrl('./fixtures/some.css.qwoff'); - readExactlyByFile(file, 512).then(buffer => { + return readExactlyByFile(file, 512).then(buffer => { const mimes = mime.detectMimeAndEncodingFromBuffer(buffer); assert.deepEqual(mimes.mimes, ['text/plain']); - done(); - }, done); + }); }); - test('detectMimesFromFile (PDF)', function (done: () => void) { + test('detectMimesFromFile (PDF)', function () { const file = require.toUrl('./fixtures/some.pdf'); - readExactlyByFile(file, 512).then(buffer => { + return readExactlyByFile(file, 512).then(buffer => { const mimes = mime.detectMimeAndEncodingFromBuffer(buffer); assert.deepEqual(mimes.mimes, ['application/octet-stream']); - done(); - }, done); + }); }); - test('autoGuessEncoding (ShiftJIS)', function (done: () => void) { + test('autoGuessEncoding (ShiftJIS)', function () { const file = require.toUrl('./fixtures/some.shiftjis.txt'); - readExactlyByFile(file, 512 * 8).then(buffer => { - mime.detectMimeAndEncodingFromBuffer(buffer, true).then(mimes => { + return readExactlyByFile(file, 512 * 8).then(buffer => { + return mime.detectMimeAndEncodingFromBuffer(buffer, true).then(mimes => { assert.equal(mimes.encoding, 'shiftjis'); - done(); }); - }, done); + }); }); - test('autoGuessEncoding (CP1252)', function (done: () => void) { + test('autoGuessEncoding (CP1252)', function () { const file = require.toUrl('./fixtures/some.cp1252.txt'); - readExactlyByFile(file, 512 * 8).then(buffer => { - mime.detectMimeAndEncodingFromBuffer(buffer, true).then(mimes => { + return readExactlyByFile(file, 512 * 8).then(buffer => { + return mime.detectMimeAndEncodingFromBuffer(buffer, true).then(mimes => { assert.equal(mimes.encoding, 'windows1252'); - done(); }); - }, done); + }); }); }); diff --git a/src/vs/base/test/node/pfs.test.ts b/src/vs/base/test/node/pfs.test.ts index 1f167ac7954..2282ec84e0f 100644 --- a/src/vs/base/test/node/pfs.test.ts +++ b/src/vs/base/test/node/pfs.test.ts @@ -13,36 +13,28 @@ import path = require('path'); import fs = require('fs'); import uuid = require('vs/base/common/uuid'); -import extfs = require('vs/base/node/extfs'); -import { onError } from 'vs/base/test/common/utils'; import * as pfs from 'vs/base/node/pfs'; suite('PFS', () => { - test('writeFile', function (done: () => void) { + test('writeFile', function () { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'pfs', id); const testFile = path.join(newDir, 'writefile.txt'); - const onMkdirp = error => { - if (error) { - return onError(error, done); - } - + return pfs.mkdirp(newDir, 493).then(() => { assert.ok(fs.existsSync(newDir)); - pfs.writeFile(testFile, 'Hello World', null).done(() => { + return pfs.writeFile(testFile, 'Hello World', null).then(() => { assert.equal(fs.readFileSync(testFile), 'Hello World'); - extfs.del(parentDir, os.tmpdir(), () => { }, done); - }, error => onError(error, done)); - }; - - pfs.mkdirp(newDir, 493).done(() => onMkdirp(null), error => onMkdirp(error)); + return pfs.del(parentDir, os.tmpdir()); + }); + }); }); - test('writeFile - parallel write on different files works', function (done: () => void) { + test('writeFile - parallel write on different files works', function () { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'pfs', id); @@ -52,106 +44,80 @@ suite('PFS', () => { const testFile4 = path.join(newDir, 'writefile4.txt'); const testFile5 = path.join(newDir, 'writefile5.txt'); - const onMkdirp = error => { - if (error) { - return onError(error, done); - } - + return pfs.mkdirp(newDir, 493).then(() => { assert.ok(fs.existsSync(newDir)); - TPromise.join([ + return TPromise.join([ pfs.writeFile(testFile1, 'Hello World 1', null), pfs.writeFile(testFile2, 'Hello World 2', null), pfs.writeFile(testFile3, 'Hello World 3', null), pfs.writeFile(testFile4, 'Hello World 4', null), pfs.writeFile(testFile5, 'Hello World 5', null) - ]).done(() => { + ]).then(() => { assert.equal(fs.readFileSync(testFile1), 'Hello World 1'); assert.equal(fs.readFileSync(testFile2), 'Hello World 2'); assert.equal(fs.readFileSync(testFile3), 'Hello World 3'); assert.equal(fs.readFileSync(testFile4), 'Hello World 4'); assert.equal(fs.readFileSync(testFile5), 'Hello World 5'); - extfs.del(parentDir, os.tmpdir(), () => { }, done); - }, error => onError(error, done)); - }; - - pfs.mkdirp(newDir, 493).done(() => onMkdirp(null), error => onMkdirp(error)); + return pfs.del(parentDir, os.tmpdir()); + }); + }); }); - test('writeFile - parallel write on same files works and is sequentalized', function (done: () => void) { + test('writeFile - parallel write on same files works and is sequentalized', function () { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'pfs', id); const testFile = path.join(newDir, 'writefile.txt'); - const onMkdirp = error => { - if (error) { - return onError(error, done); - } - + return pfs.mkdirp(newDir, 493).then(() => { assert.ok(fs.existsSync(newDir)); - TPromise.join([ + return TPromise.join([ pfs.writeFile(testFile, 'Hello World 1', null), pfs.writeFile(testFile, 'Hello World 2', null), TPromise.timeout(10).then(() => pfs.writeFile(testFile, 'Hello World 3', null)), pfs.writeFile(testFile, 'Hello World 4', null), TPromise.timeout(10).then(() => pfs.writeFile(testFile, 'Hello World 5', null)) - ]).done(() => { + ]).then(() => { assert.equal(fs.readFileSync(testFile), 'Hello World 5'); - extfs.del(parentDir, os.tmpdir(), () => { }, done); - }, error => onError(error, done)); - }; - - pfs.mkdirp(newDir, 493).done(() => onMkdirp(null), error => onMkdirp(error)); + return pfs.del(parentDir, os.tmpdir()); + }); + }); }); - test('rimraf - simple', function (done: () => void) { + test('rimraf - simple', function () { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); - const onMkdirp = error => { - if (error) { - return onError(error, done); - } - + return pfs.mkdirp(newDir, 493).then(() => { fs.writeFileSync(path.join(newDir, 'somefile.txt'), 'Contents'); fs.writeFileSync(path.join(newDir, 'someOtherFile.txt'), 'Contents'); - pfs.rimraf(newDir).then(() => { + return pfs.rimraf(newDir).then(() => { assert.ok(!fs.existsSync(newDir)); - done(); - }, error => onError(error, done)); - }; - - pfs.mkdirp(newDir, 493).done(() => onMkdirp(null), error => onMkdirp(error)); + }); + }); }); - test('rimraf - recursive folder structure', function (done: () => void) { + test('rimraf - recursive folder structure', function () { const id = uuid.generateUuid(); const parentDir = path.join(os.tmpdir(), 'vsctests', id); const newDir = path.join(parentDir, 'extfs', id); - const onMkdirp = error => { - if (error) { - return onError(error, done); - } - + return pfs.mkdirp(newDir, 493).then(() => { fs.writeFileSync(path.join(newDir, 'somefile.txt'), 'Contents'); fs.writeFileSync(path.join(newDir, 'someOtherFile.txt'), 'Contents'); fs.mkdirSync(path.join(newDir, 'somefolder')); fs.writeFileSync(path.join(newDir, 'somefolder', 'somefile.txt'), 'Contents'); - pfs.rimraf(newDir).then(() => { + return pfs.rimraf(newDir).then(() => { assert.ok(!fs.existsSync(newDir)); - done(); - }, error => onError(error, done)); - }; - - pfs.mkdirp(newDir, 493).done(() => onMkdirp(null), error => onMkdirp(error)); + }); + }); }); }); \ No newline at end of file diff --git a/src/vs/base/test/node/port.test.ts b/src/vs/base/test/node/port.test.ts index 7c2d3678d11..16e7cdf949a 100644 --- a/src/vs/base/test/node/port.test.ts +++ b/src/vs/base/test/node/port.test.ts @@ -10,7 +10,7 @@ import * as net from 'net'; import ports = require('vs/base/node/ports'); suite('Ports', () => { - test('Finds a free port (no timeout)', function (done: () => void) { + test('Finds a free port (no timeout)', function (done) { this.timeout(1000 * 10); // higher timeout for this test if (process.env['VSCODE_PID']) { @@ -31,8 +31,8 @@ suite('Ports', () => { server.close(); done(); - }); + }, err => done(err)); }); - }); + }, err => done(err)); }); }); diff --git a/src/vs/base/test/node/stream/stream.test.ts b/src/vs/base/test/node/stream/stream.test.ts index 4dc7f9fb8c6..72114ec4684 100644 --- a/src/vs/base/test/node/stream/stream.test.ts +++ b/src/vs/base/test/node/stream/stream.test.ts @@ -10,42 +10,37 @@ import assert = require('assert'); import stream = require('vs/base/node/stream'); suite('Stream', () => { - test('readExactlyByFile - ANSI', function (done: (err?) => void) { + test('readExactlyByFile - ANSI', function () { const file = require.toUrl('./fixtures/file.css'); - stream.readExactlyByFile(file, 10).then(({ buffer, bytesRead }) => { + return stream.readExactlyByFile(file, 10).then(({ buffer, bytesRead }) => { assert.equal(bytesRead, 10); assert.equal(buffer.toString(), '/*--------'); - done(); - }, done); + }); }); - test('readExactlyByFile - empty', function (done: (err?: any) => void) { + test('readExactlyByFile - empty', function () { const file = require.toUrl('./fixtures/empty.txt'); - stream.readExactlyByFile(file, 10).then(({ bytesRead }) => { + return stream.readExactlyByFile(file, 10).then(({ bytesRead }) => { assert.equal(bytesRead, 0); - done(); - }, done); + }); }); - test('readToMatchingString - ANSI', function (done: (err?: any) => void) { + test('readToMatchingString - ANSI', function () { const file = require.toUrl('./fixtures/file.css'); - stream.readToMatchingString(file, '\n', 10, 100).then((result: string) => { + return stream.readToMatchingString(file, '\n', 10, 100).then((result: string) => { // \r may be present on Windows assert.equal(result.replace('\r', ''), '/*---------------------------------------------------------------------------------------------'); - done(); - }, done); + }); }); - test('readToMatchingString - empty', function (done: (err?: any) => void) { + test('readToMatchingString - empty', function () { const file = require.toUrl('./fixtures/empty.txt'); - stream.readToMatchingString(file, '\n', 10, 100).then((result: string) => { + return stream.readToMatchingString(file, '\n', 10, 100).then((result: string) => { assert.equal(result, null); - - done(); - }, done); + }); }); }); \ No newline at end of file diff --git a/src/vs/base/test/node/utils.ts b/src/vs/base/test/node/utils.ts new file mode 100644 index 00000000000..d38b9aef2e2 --- /dev/null +++ b/src/vs/base/test/node/utils.ts @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import { TPromise } from 'vs/base/common/winjs.base'; +import { generateUuid } from 'vs/base/common/uuid'; +import { join } from 'path'; +import { tmpdir } from 'os'; +import { mkdirp, del } from 'vs/base/node/pfs'; + +export interface ITestFileResult { + testFile: string; + cleanUp: () => TPromise; +} + +export function testFile(folder: string, file: string): TPromise { + const id = generateUuid(); + const parentDir = join(tmpdir(), 'vsctests', id); + const newDir = join(parentDir, 'config', id); + const testFile = join(newDir, 'config.json'); + + return mkdirp(newDir, 493).then(() => { + return { + testFile, + cleanUp: () => del(parentDir, tmpdir()) + } as ITestFileResult; + }); +} \ No newline at end of file diff --git a/src/vs/editor/contrib/find/test/findController.test.ts b/src/vs/editor/contrib/find/test/findController.test.ts index 54d7299ca34..a76838541cd 100644 --- a/src/vs/editor/contrib/find/test/findController.test.ts +++ b/src/vs/editor/contrib/find/test/findController.test.ts @@ -335,7 +335,7 @@ suite('FindController', () => { findController.delayedUpdateHistoryPromise.then(() => { assert.deepEqual(['3'], toArray(findController.getHistory())); done(); - }); + }, error => done(error)); }); }); diff --git a/src/vs/platform/backup/test/electron-main/backupMainService.test.ts b/src/vs/platform/backup/test/electron-main/backupMainService.test.ts index 2ab87be9326..5534588f6a7 100644 --- a/src/vs/platform/backup/test/electron-main/backupMainService.test.ts +++ b/src/vs/platform/backup/test/electron-main/backupMainService.test.ts @@ -10,7 +10,6 @@ import * as platform from 'vs/base/common/platform'; import fs = require('fs'); import os = require('os'); import path = require('path'); -import extfs = require('vs/base/node/extfs'); import pfs = require('vs/base/node/pfs'); import Uri from 'vs/base/common/uri'; import { EnvironmentService } from 'vs/platform/environment/node/environmentService'; @@ -86,23 +85,21 @@ suite('BackupMainService', () => { let service: TestBackupMainService; let configService: TestConfigurationService; - setup(done => { + setup(() => { configService = new TestConfigurationService(); service = new TestBackupMainService(backupHome, backupWorkspacesPath, configService); // Delete any existing backups completely and then re-create it. - extfs.del(backupHome, os.tmpdir(), () => { - pfs.mkdirp(backupHome).then(() => { - done(); - }); + return pfs.del(backupHome, os.tmpdir()).then(() => { + return pfs.mkdirp(backupHome); }); }); - teardown(done => { - extfs.del(backupHome, os.tmpdir(), done); + teardown(() => { + return pfs.del(backupHome, os.tmpdir()); }); - test('service validates backup workspaces on startup and cleans up (folder workspaces)', done => { + test('service validates backup workspaces on startup and cleans up (folder workspaces)', () => { // 1) backup workspace path does not exist service.registerFolderBackupSync(fooFile.fsPath); @@ -145,11 +142,9 @@ suite('BackupMainService', () => { service.loadSync(); assert.equal(service.getFolderBackupPaths().length, 0); assert.equal(service.getEmptyWindowBackupPaths().length, 1); - - done(); }); - test('service validates backup workspaces on startup and cleans up (root workspaces)', done => { + test('service validates backup workspaces on startup and cleans up (root workspaces)', () => { // 1) backup workspace path does not exist service.registerWorkspaceBackupSync(toWorkspace(fooFile.fsPath)); @@ -192,11 +187,9 @@ suite('BackupMainService', () => { service.loadSync(); assert.equal(service.getWorkspaceBackups().length, 0); assert.equal(service.getEmptyWindowBackupPaths().length, 1); - - done(); }); - test('service supports to migrate backup data from another location', done => { + test('service supports to migrate backup data from another location', () => { const backupPathToMigrate = service.toBackupPath(fooFile.fsPath); fs.mkdirSync(backupPathToMigrate); fs.writeFileSync(path.join(backupPathToMigrate, 'backup.txt'), 'Some Data'); @@ -210,11 +203,9 @@ suite('BackupMainService', () => { const emptyBackups = service.getEmptyWindowBackupPaths(); assert.equal(0, emptyBackups.length); - - done(); }); - test('service backup migration makes sure to preserve existing backups', done => { + test('service backup migration makes sure to preserve existing backups', () => { const backupPathToMigrate = service.toBackupPath(fooFile.fsPath); fs.mkdirSync(backupPathToMigrate); fs.writeFileSync(path.join(backupPathToMigrate, 'backup.txt'), 'Some Data'); @@ -234,8 +225,6 @@ suite('BackupMainService', () => { const emptyBackups = service.getEmptyWindowBackupPaths(); assert.equal(1, emptyBackups.length); assert.equal(1, fs.readdirSync(path.join(backupHome, emptyBackups[0])).length); - - done(); }); suite('loadSync', () => { @@ -434,18 +423,17 @@ suite('BackupMainService', () => { }); suite('registerWindowForBackups', () => { - test('should persist paths to workspaces.json (folder workspace)', done => { + test('should persist paths to workspaces.json (folder workspace)', () => { service.registerFolderBackupSync(fooFile.fsPath); service.registerFolderBackupSync(barFile.fsPath); assert.deepEqual(service.getFolderBackupPaths(), [fooFile.fsPath, barFile.fsPath]); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { const json = JSON.parse(buffer); assert.deepEqual(json.folderWorkspaces, [fooFile.fsPath, barFile.fsPath]); - done(); }); }); - test('should persist paths to workspaces.json (root workspace)', done => { + test('should persist paths to workspaces.json (root workspace)', () => { const ws1 = toWorkspace(fooFile.fsPath); service.registerWorkspaceBackupSync(ws1); const ws2 = toWorkspace(barFile.fsPath); @@ -455,98 +443,90 @@ suite('BackupMainService', () => { assert.equal(ws1.id, service.getWorkspaceBackups()[0].id); assert.equal(ws2.id, service.getWorkspaceBackups()[1].id); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { const json = JSON.parse(buffer); assert.deepEqual(json.rootWorkspaces.map(b => b.configPath), [fooFile.fsPath, barFile.fsPath]); assert.equal(ws1.id, json.rootWorkspaces[0].id); assert.equal(ws2.id, json.rootWorkspaces[1].id); - - done(); }); }); - test('should always store the workspace path in workspaces.json using the case given, regardless of whether the file system is case-sensitive (folder workspace)', done => { + test('should always store the workspace path in workspaces.json using the case given, regardless of whether the file system is case-sensitive (folder workspace)', () => { service.registerFolderBackupSync(fooFile.fsPath.toUpperCase()); assert.deepEqual(service.getFolderBackupPaths(), [fooFile.fsPath.toUpperCase()]); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { const json = JSON.parse(buffer); assert.deepEqual(json.folderWorkspaces, [fooFile.fsPath.toUpperCase()]); - done(); }); }); - test('should always store the workspace path in workspaces.json using the case given, regardless of whether the file system is case-sensitive (root workspace)', done => { + test('should always store the workspace path in workspaces.json using the case given, regardless of whether the file system is case-sensitive (root workspace)', () => { service.registerWorkspaceBackupSync(toWorkspace(fooFile.fsPath.toUpperCase())); assert.deepEqual(service.getWorkspaceBackups().map(b => b.configPath), [fooFile.fsPath.toUpperCase()]); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { const json = JSON.parse(buffer); assert.deepEqual(json.rootWorkspaces.map(b => b.configPath), [fooFile.fsPath.toUpperCase()]); - done(); }); }); }); suite('removeBackupPathSync', () => { - test('should remove folder workspaces from workspaces.json (folder workspace)', done => { + test('should remove folder workspaces from workspaces.json (folder workspace)', () => { service.registerFolderBackupSync(fooFile.fsPath); service.registerFolderBackupSync(barFile.fsPath); service.removeBackupPathSync(fooFile.fsPath, service.backupsData.folderWorkspaces); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { const json = JSON.parse(buffer); assert.deepEqual(json.folderWorkspaces, [barFile.fsPath]); service.removeBackupPathSync(barFile.fsPath, service.backupsData.folderWorkspaces); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(content => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(content => { const json2 = JSON.parse(content); assert.deepEqual(json2.folderWorkspaces, []); - done(); }); }); }); - test('should remove folder workspaces from workspaces.json (root workspace)', done => { + test('should remove folder workspaces from workspaces.json (root workspace)', () => { const ws1 = toWorkspace(fooFile.fsPath); service.registerWorkspaceBackupSync(ws1); const ws2 = toWorkspace(barFile.fsPath); service.registerWorkspaceBackupSync(ws2); service.removeBackupPathSync(ws1, service.backupsData.rootWorkspaces); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { const json = JSON.parse(buffer); assert.deepEqual(json.rootWorkspaces.map(r => r.configPath), [barFile.fsPath]); service.removeBackupPathSync(ws2, service.backupsData.rootWorkspaces); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(content => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(content => { const json2 = JSON.parse(content); assert.deepEqual(json2.rootWorkspaces, []); - done(); }); }); }); - test('should remove empty workspaces from workspaces.json', done => { + test('should remove empty workspaces from workspaces.json', () => { service.registerEmptyWindowBackupSync('foo'); service.registerEmptyWindowBackupSync('bar'); service.removeBackupPathSync('foo', service.backupsData.emptyWorkspaces); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(buffer => { const json = JSON.parse(buffer); assert.deepEqual(json.emptyWorkspaces, ['bar']); service.removeBackupPathSync('bar', service.backupsData.emptyWorkspaces); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(content => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(content => { const json2 = JSON.parse(content); assert.deepEqual(json2.emptyWorkspaces, []); - done(); }); }); }); - test('should fail gracefully when removing a path that doesn\'t exist', done => { + test('should fail gracefully when removing a path that doesn\'t exist', () => { const workspacesJson: IBackupWorkspacesFormat = { rootWorkspaces: [], folderWorkspaces: [fooFile.fsPath], emptyWorkspaces: [] }; - pfs.writeFile(backupWorkspacesPath, JSON.stringify(workspacesJson)).then(() => { + return pfs.writeFile(backupWorkspacesPath, JSON.stringify(workspacesJson)).then(() => { service.removeBackupPathSync(barFile.fsPath, service.backupsData.folderWorkspaces); service.removeBackupPathSync('test', service.backupsData.emptyWorkspaces); - pfs.readFile(backupWorkspacesPath, 'utf-8').then(content => { + return pfs.readFile(backupWorkspacesPath, 'utf-8').then(content => { const json = JSON.parse(content); assert.deepEqual(json.folderWorkspaces, [fooFile.fsPath]); - done(); }); }); }); @@ -574,7 +554,7 @@ suite('BackupMainService', () => { }); suite('mixed path casing', () => { - test('should handle case insensitive paths properly (registerWindowForBackupsSync) (folder workspace)', done => { + test('should handle case insensitive paths properly (registerWindowForBackupsSync) (folder workspace)', () => { service.registerFolderBackupSync(fooFile.fsPath); service.registerFolderBackupSync(fooFile.fsPath.toUpperCase()); @@ -583,11 +563,9 @@ suite('BackupMainService', () => { } else { assert.equal(service.getFolderBackupPaths().length, 1); } - - done(); }); - test('should handle case insensitive paths properly (registerWindowForBackupsSync) (root workspace)', done => { + test('should handle case insensitive paths properly (registerWindowForBackupsSync) (root workspace)', () => { service.registerWorkspaceBackupSync(toWorkspace(fooFile.fsPath)); service.registerWorkspaceBackupSync(toWorkspace(fooFile.fsPath.toUpperCase())); @@ -596,11 +574,9 @@ suite('BackupMainService', () => { } else { assert.equal(service.getWorkspaceBackups().length, 1); } - - done(); }); - test('should handle case insensitive paths properly (removeBackupPathSync) (folder workspace)', done => { + test('should handle case insensitive paths properly (removeBackupPathSync) (folder workspace)', () => { // same case service.registerFolderBackupSync(fooFile.fsPath); @@ -616,8 +592,6 @@ suite('BackupMainService', () => { } else { assert.equal(service.getFolderBackupPaths().length, 0); } - - done(); }); }); }); \ No newline at end of file diff --git a/src/vs/platform/configuration/test/node/configurationService.test.ts b/src/vs/platform/configuration/test/node/configurationService.test.ts index 55964b1e41c..dea084e392e 100644 --- a/src/vs/platform/configuration/test/node/configurationService.test.ts +++ b/src/vs/platform/configuration/test/node/configurationService.test.ts @@ -15,10 +15,9 @@ import { ConfigurationService } from 'vs/platform/configuration/node/configurati import { ParsedArgs } from 'vs/platform/environment/common/environment'; import { parseArgs } from 'vs/platform/environment/node/argv'; import { EnvironmentService } from 'vs/platform/environment/node/environmentService'; -import extfs = require('vs/base/node/extfs'); import uuid = require('vs/base/common/uuid'); import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry'; -import { mkdirp } from 'vs/base/node/pfs'; +import { testFile } from 'vs/base/test/node/utils'; class SettingsTestEnvironmentService extends EnvironmentService { @@ -31,22 +30,11 @@ class SettingsTestEnvironmentService extends EnvironmentService { suite('ConfigurationService - Node', () => { - function testFile(callback: (path: string, cleanUp: (callback: () => void) => void) => void): void { - const id = uuid.generateUuid(); - const parentDir = path.join(os.tmpdir(), 'vsctests', id); - const newDir = path.join(parentDir, 'config', id); - const testFile = path.join(newDir, 'config.json'); + test('simple', () => { + return testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, '{ "foo": "bar" }'); - const onMkdirp = error => callback(testFile, (callback) => extfs.del(parentDir, os.tmpdir(), () => { }, callback)); - - mkdirp(newDir, 493).done(() => onMkdirp(null), error => onMkdirp(error)); - } - - test('simple', (done: () => void) => { - testFile((testFile, cleanUp) => { - fs.writeFileSync(testFile, '{ "foo": "bar" }'); - - const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, testFile)); + const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, res.testFile)); const config = service.getValue<{ foo: string }>(); assert.ok(config); @@ -54,15 +42,15 @@ suite('ConfigurationService - Node', () => { service.dispose(); - cleanUp(done); + return res.cleanUp(); }); }); - test('config gets flattened', (done: () => void) => { - testFile((testFile, cleanUp) => { - fs.writeFileSync(testFile, '{ "testworkbench.editor.tabs": true }'); + test('config gets flattened', () => { + return testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, '{ "testworkbench.editor.tabs": true }'); - const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, testFile)); + const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, res.testFile)); const config = service.getValue<{ testworkbench: { editor: { tabs: boolean } } }>(); assert.ok(config); @@ -72,22 +60,22 @@ suite('ConfigurationService - Node', () => { service.dispose(); - cleanUp(done); + return res.cleanUp(); }); }); - test('error case does not explode', (done: () => void) => { - testFile((testFile, cleanUp) => { - fs.writeFileSync(testFile, ',,,,'); + test('error case does not explode', () => { + return testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, ',,,,'); - const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, testFile)); + const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, res.testFile)); const config = service.getValue<{ foo: string }>(); assert.ok(config); service.dispose(); - cleanUp(done); + return res.cleanUp(); }); }); @@ -105,17 +93,17 @@ suite('ConfigurationService - Node', () => { service.dispose(); }); - test('reloadConfiguration', (done: () => void) => { - testFile((testFile, cleanUp) => { - fs.writeFileSync(testFile, '{ "foo": "bar" }'); + test('reloadConfiguration', () => { + return testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, '{ "foo": "bar" }'); - const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, testFile)); + const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, res.testFile)); let config = service.getValue<{ foo: string }>(); assert.ok(config); assert.equal(config.foo, 'bar'); - fs.writeFileSync(testFile, '{ "foo": "changed" }'); + fs.writeFileSync(res.testFile, '{ "foo": "changed" }'); // still outdated config = service.getValue<{ foo: string }>(); @@ -123,19 +111,19 @@ suite('ConfigurationService - Node', () => { assert.equal(config.foo, 'bar'); // force a reload to get latest - service.reloadConfiguration().then(() => { + return service.reloadConfiguration().then(() => { config = service.getValue<{ foo: string }>(); assert.ok(config); assert.equal(config.foo, 'changed'); service.dispose(); - cleanUp(done); + return res.cleanUp(); }); }); }); - test('model defaults', (done: () => void) => { + test('model defaults', () => { interface ITestSetting { configuration: { service: { @@ -162,19 +150,19 @@ suite('ConfigurationService - Node', () => { assert.ok(setting); assert.equal(setting.configuration.service.testSetting, 'isSet'); - testFile((testFile, cleanUp) => { - fs.writeFileSync(testFile, '{ "testworkbench.editor.tabs": true }'); + return testFile('config', 'config.json').then(res => { + fs.writeFileSync(res.testFile, '{ "testworkbench.editor.tabs": true }'); - const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, testFile)); + const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, res.testFile)); let setting = service.getValue(); assert.ok(setting); assert.equal(setting.configuration.service.testSetting, 'isSet'); - fs.writeFileSync(testFile, '{ "configuration.service.testSetting": "isChanged" }'); + fs.writeFileSync(res.testFile, '{ "configuration.service.testSetting": "isChanged" }'); - service.reloadConfiguration().then(() => { + return service.reloadConfiguration().then(() => { let setting = service.getValue(); assert.ok(setting); @@ -183,12 +171,12 @@ suite('ConfigurationService - Node', () => { service.dispose(); serviceWithoutFile.dispose(); - cleanUp(done); + return res.cleanUp(); }); }); }); - test('lookup', (done: () => void) => { + test('lookup', () => { const configurationRegistry = Registry.as(ConfigurationExtensions.Configuration); configurationRegistry.registerConfiguration({ 'id': '_test', @@ -201,8 +189,8 @@ suite('ConfigurationService - Node', () => { } }); - testFile((testFile, cleanUp) => { - const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, testFile)); + return testFile('config', 'config.json').then(r => { + const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, r.testFile)); let res = service.inspect('something.missing'); assert.strictEqual(res.value, void 0); @@ -214,7 +202,7 @@ suite('ConfigurationService - Node', () => { assert.strictEqual(res.value, 'isSet'); assert.strictEqual(res.user, void 0); - fs.writeFileSync(testFile, '{ "lookup.service.testSetting": "bar" }'); + fs.writeFileSync(r.testFile, '{ "lookup.service.testSetting": "bar" }'); return service.reloadConfiguration().then(() => { res = service.inspect('lookup.service.testSetting'); @@ -224,12 +212,12 @@ suite('ConfigurationService - Node', () => { service.dispose(); - cleanUp(done); + return r.cleanUp(); }); }); }); - test('lookup with null', (done: () => void) => { + test('lookup with null', () => { const configurationRegistry = Registry.as(ConfigurationExtensions.Configuration); configurationRegistry.registerConfiguration({ 'id': '_testNull', @@ -241,15 +229,15 @@ suite('ConfigurationService - Node', () => { } }); - testFile((testFile, cleanUp) => { - const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, testFile)); + return testFile('config', 'config.json').then(r => { + const service = new ConfigurationService(new SettingsTestEnvironmentService(parseArgs(process.argv), process.execPath, r.testFile)); let res = service.inspect('lookup.service.testNullSetting'); assert.strictEqual(res.default, null); assert.strictEqual(res.value, null); assert.strictEqual(res.user, void 0); - fs.writeFileSync(testFile, '{ "lookup.service.testNullSetting": null }'); + fs.writeFileSync(r.testFile, '{ "lookup.service.testNullSetting": null }'); return service.reloadConfiguration().then(() => { res = service.inspect('lookup.service.testNullSetting'); @@ -259,7 +247,7 @@ suite('ConfigurationService - Node', () => { service.dispose(); - cleanUp(done); + return r.cleanUp(); }); }); }); diff --git a/src/vs/platform/extensionManagement/test/common/extensionEnablementService.test.ts b/src/vs/platform/extensionManagement/test/common/extensionEnablementService.test.ts index 46f95ce498c..f4feeba2973 100644 --- a/src/vs/platform/extensionManagement/test/common/extensionEnablementService.test.ts +++ b/src/vs/platform/extensionManagement/test/common/extensionEnablementService.test.ts @@ -223,11 +223,10 @@ suite('ExtensionEnablementService Test', () => { .then(() => assert.ok(target.calledWithExactly({ id: 'pub.a', uuid: void 0 }))); }); - test('test disable an extension for workspace when there is no workspace throws error', (done) => { + test('test disable an extension for workspace when there is no workspace throws error', () => { instantiationService.stub(IWorkspaceContextService, 'getWorkbenchState', WorkbenchState.EMPTY); return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.WorkspaceDisabled) - .then(() => assert.fail('should throw an error'), error => assert.ok(error)) - .then(done, done); + .then(() => assert.fail('should throw an error'), error => assert.ok(error)); }); test('test enable an extension globally', () => { @@ -237,26 +236,23 @@ suite('ExtensionEnablementService Test', () => { .then(extensions => assert.deepEqual([], extensions)); }); - test('test enable an extension globally return truthy promise', (done) => { - testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled) + test('test enable an extension globally return truthy promise', () => { + return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Enabled)) - .then(value => assert.ok(value)) - .then(done, done); + .then(value => assert.ok(value)); }); - test('test enable an extension globally triggers change event', (done) => { + test('test enable an extension globally triggers change event', () => { const target = sinon.spy(); - testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled) + return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Disabled) .then(() => testObject.onEnablementChanged(target)) .then(() => testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Enabled)) - .then(() => assert.ok(target.calledWithExactly({ id: 'pub.a', uuid: void 0 }))) - .then(done, done); + .then(() => assert.ok(target.calledWithExactly({ id: 'pub.a', uuid: void 0 }))); }); - test('test enable an extension globally when already enabled return falsy promise', (done) => { - testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Enabled) - .then(value => assert.ok(!value)) - .then(done, done); + test('test enable an extension globally when already enabled return falsy promise', () => { + return testObject.setEnablement(aLocalExtension('pub.a'), EnablementState.Enabled) + .then(value => assert.ok(!value)); }); test('test enable an extension for workspace', () => { diff --git a/src/vs/platform/extensionManagement/test/node/extensionGalleryService.test.ts b/src/vs/platform/extensionManagement/test/node/extensionGalleryService.test.ts index 63d4e31cb4d..e6d0bc1ad62 100644 --- a/src/vs/platform/extensionManagement/test/node/extensionGalleryService.test.ts +++ b/src/vs/platform/extensionManagement/test/node/extensionGalleryService.test.ts @@ -26,7 +26,7 @@ suite('Extension Gallery Service', () => { extfs.del(marketplaceHome, os.tmpdir(), () => { mkdirp(marketplaceHome).then(() => { done(); - }); + }, error => done(error)); }); }); @@ -34,7 +34,7 @@ suite('Extension Gallery Service', () => { extfs.del(marketplaceHome, os.tmpdir(), done); }); - test('marketplace machine id', done => { + test('marketplace machine id', () => { const args = ['--user-data-dir', marketplaceHome]; const environmentService = new EnvironmentService(parseArgs(args), process.execPath); @@ -43,8 +43,6 @@ suite('Extension Gallery Service', () => { return resolveMarketplaceHeaders(environmentService).then(headers2 => { assert.equal(headers['X-Market-User-Id'], headers2['X-Market-User-Id']); - - done(); }); }); }); diff --git a/src/vs/platform/state/test/node/state.test.ts b/src/vs/platform/state/test/node/state.test.ts index 19776218d7d..6e4d1824ec0 100644 --- a/src/vs/platform/state/test/node/state.test.ts +++ b/src/vs/platform/state/test/node/state.test.ts @@ -21,7 +21,7 @@ suite('StateService', () => { extfs.del(parentDir, os.tmpdir(), done); }); - test('Basics', done => { + test('Basics', () => { return mkdirp(parentDir).then(() => { writeFileAndFlushSync(storageFile, ''); @@ -49,8 +49,6 @@ suite('StateService', () => { service.setItem('some.null.key', null); assert.equal(service.getItem('some.null.key', 'some.default'), 'some.default'); - - done(); }); }); }); \ No newline at end of file diff --git a/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts b/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts index 3e6ecdc785e..7767ece253b 100644 --- a/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts +++ b/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts @@ -54,19 +54,17 @@ suite('WorkspacesMainService', () => { let service: TestWorkspacesMainService; - setup(done => { + setup(() => { service = new TestWorkspacesMainService(environmentService, logService); // Delete any existing backups completely and then re-create it. - extfs.del(workspacesHome, os.tmpdir(), () => { - pfs.mkdirp(workspacesHome).then(() => { - done(); - }); + return pfs.del(workspacesHome, os.tmpdir()).then(() => { + return pfs.mkdirp(workspacesHome); }); }); - teardown(done => { - extfs.del(workspacesHome, os.tmpdir(), done); + teardown(() => { + return pfs.del(workspacesHome, os.tmpdir()); }); function assertPathEquals(p1: string, p2): void { @@ -78,7 +76,7 @@ suite('WorkspacesMainService', () => { assert.equal(p1, p2); } - test('createWorkspace (folders)', done => { + test('createWorkspace (folders)', () => { return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { assert.ok(workspace); assert.ok(fs.existsSync(workspace.configPath)); @@ -91,12 +89,10 @@ suite('WorkspacesMainService', () => { assert.ok(!(ws.folders[0]).name); assert.ok(!(ws.folders[1]).name); - - done(); }); }); - test('createWorkspace (folders with name)', done => { + test('createWorkspace (folders with name)', () => { return createWorkspace([process.cwd(), os.tmpdir()], ['currentworkingdirectory', 'tempdir']).then(workspace => { assert.ok(workspace); assert.ok(fs.existsSync(workspace.configPath)); @@ -109,8 +105,6 @@ suite('WorkspacesMainService', () => { assert.equal((ws.folders[0]).name, 'currentworkingdirectory'); assert.equal((ws.folders[1]).name, 'tempdir'); - - done(); }); }); @@ -175,7 +169,7 @@ suite('WorkspacesMainService', () => { assert.ok(!(ws.folders[1]).name); }); - test('resolveWorkspaceSync', done => { + test('resolveWorkspaceSync', () => { return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { assert.ok(service.resolveWorkspaceSync(workspace.configPath)); @@ -192,56 +186,46 @@ suite('WorkspacesMainService', () => { fs.writeFileSync(workspace.configPath, JSON.stringify({ something: 'something' })); // invalid workspace const resolvedInvalid = service.resolveWorkspaceSync(workspace.configPath); assert.ok(!resolvedInvalid); - - done(); }); }); - test('resolveWorkspaceSync (support relative paths)', done => { + test('resolveWorkspaceSync (support relative paths)', () => { return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { fs.writeFileSync(workspace.configPath, JSON.stringify({ folders: [{ path: './ticino-playground/lib' }] })); const resolved = service.resolveWorkspaceSync(workspace.configPath); assert.equal(resolved.folders[0].uri.fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'lib')).fsPath); - - done(); }); }); - test('resolveWorkspaceSync (support relative paths #2)', done => { + test('resolveWorkspaceSync (support relative paths #2)', () => { return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { fs.writeFileSync(workspace.configPath, JSON.stringify({ folders: [{ path: './ticino-playground/lib/../other' }] })); const resolved = service.resolveWorkspaceSync(workspace.configPath); assert.equal(resolved.folders[0].uri.fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'other')).fsPath); - - done(); }); }); - test('resolveWorkspaceSync (support relative paths #3)', done => { + test('resolveWorkspaceSync (support relative paths #3)', () => { return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { fs.writeFileSync(workspace.configPath, JSON.stringify({ folders: [{ path: 'ticino-playground/lib' }] })); const resolved = service.resolveWorkspaceSync(workspace.configPath); assert.equal(resolved.folders[0].uri.fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'lib')).fsPath); - - done(); }); }); - test('resolveWorkspaceSync (support invalid JSON via fault tolerant parsing)', done => { + test('resolveWorkspaceSync (support invalid JSON via fault tolerant parsing)', () => { return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { fs.writeFileSync(workspace.configPath, '{ "folders": [ { "path": "./ticino-playground/lib" } , ] }'); // trailing comma const resolved = service.resolveWorkspaceSync(workspace.configPath); assert.equal(resolved.folders[0].uri.fsPath, URI.file(path.join(path.dirname(workspace.configPath), 'ticino-playground', 'lib')).fsPath); - - done(); }); }); - test('saveWorkspace (untitled)', done => { + test('saveWorkspace (untitled)', () => { let savedEvent: IWorkspaceSavedEvent; const listener = service.onWorkspaceSaved(e => { savedEvent = e; @@ -277,13 +261,11 @@ suite('WorkspacesMainService', () => { listener2.dispose(); extfs.delSync(workspaceConfigPath); - - done(); }); }); }); - test('saveWorkspace (saved workspace)', done => { + test('saveWorkspace (saved workspace)', () => { return createWorkspace([process.cwd(), os.tmpdir(), path.join(os.tmpdir(), 'somefolder')]).then(workspace => { const workspaceConfigPath = path.join(os.tmpdir(), `myworkspace.${Date.now()}.${WORKSPACE_EXTENSION}`); const newWorkspaceConfigPath = path.join(os.tmpdir(), `mySavedWorkspace.${Date.now()}.${WORKSPACE_EXTENSION}`); @@ -302,14 +284,12 @@ suite('WorkspacesMainService', () => { extfs.delSync(workspaceConfigPath); extfs.delSync(newWorkspaceConfigPath); - - done(); }); }); }); }); - test('saveWorkspace (saved workspace, preserves comments)', done => { + test('saveWorkspace (saved workspace, preserves comments)', () => { return createWorkspace([process.cwd(), os.tmpdir(), path.join(os.tmpdir(), 'somefolder')]).then(workspace => { const workspaceConfigPath = path.join(os.tmpdir(), `myworkspace.${Date.now()}.${WORKSPACE_EXTENSION}`); const newWorkspaceConfigPath = path.join(os.tmpdir(), `mySavedWorkspace.${Date.now()}.${WORKSPACE_EXTENSION}`); @@ -328,14 +308,12 @@ suite('WorkspacesMainService', () => { extfs.delSync(workspaceConfigPath); extfs.delSync(newWorkspaceConfigPath); - - done(); }); }); }); }); - test('saveWorkspace (saved workspace, preserves forward slashes)', done => { + test('saveWorkspace (saved workspace, preserves forward slashes)', () => { return createWorkspace([process.cwd(), os.tmpdir(), path.join(os.tmpdir(), 'somefolder')]).then(workspace => { const workspaceConfigPath = path.join(os.tmpdir(), `myworkspace.${Date.now()}.${WORKSPACE_EXTENSION}`); const newWorkspaceConfigPath = path.join(os.tmpdir(), `mySavedWorkspace.${Date.now()}.${WORKSPACE_EXTENSION}`); @@ -354,26 +332,22 @@ suite('WorkspacesMainService', () => { extfs.delSync(workspaceConfigPath); extfs.delSync(newWorkspaceConfigPath); - - done(); }); }); }); }); - test('deleteUntitledWorkspaceSync (untitled)', done => { + test('deleteUntitledWorkspaceSync (untitled)', () => { return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { assert.ok(fs.existsSync(workspace.configPath)); service.deleteUntitledWorkspaceSync(workspace); assert.ok(!fs.existsSync(workspace.configPath)); - - done(); }); }); - test('deleteUntitledWorkspaceSync (saved)', done => { + test('deleteUntitledWorkspaceSync (saved)', () => { return createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => { const workspaceConfigPath = path.join(os.tmpdir(), `myworkspace.${Date.now()}.${WORKSPACE_EXTENSION}`); @@ -383,13 +357,11 @@ suite('WorkspacesMainService', () => { service.deleteUntitledWorkspaceSync(savedWorkspace); assert.ok(fs.existsSync(savedWorkspace.configPath)); - - done(); }); }); }); - test('getUntitledWorkspaceSync', done => { + test('getUntitledWorkspaceSync', () => { let untitled = service.getUntitledWorkspacesSync(); assert.equal(0, untitled.length); @@ -411,8 +383,6 @@ suite('WorkspacesMainService', () => { service.deleteUntitledWorkspaceSync(untitledTwo); untitled = service.getUntitledWorkspacesSync(); assert.equal(0, untitled.length); - - done(); }); }); }); diff --git a/src/vs/workbench/parts/files/test/browser/fileEditorInput.test.ts b/src/vs/workbench/parts/files/test/browser/fileEditorInput.test.ts index f8cd5f16d24..cf5fde01cd2 100644 --- a/src/vs/workbench/parts/files/test/browser/fileEditorInput.test.ts +++ b/src/vs/workbench/parts/files/test/browser/fileEditorInput.test.ts @@ -43,7 +43,7 @@ suite('Files - FileEditorInput', () => { accessor = instantiationService.createInstance(ServiceAccessor); }); - test('Basics', function (done) { + test('Basics', function () { let input = instantiationService.createInstance(FileEditorInput, toResource(this, '/foo/bar/file.js'), void 0); const otherInput = instantiationService.createInstance(FileEditorInput, toResource(this, 'foo/bar/otherfile.js'), void 0); const otherInputSame = instantiationService.createInstance(FileEditorInput, toResource(this, 'foo/bar/file.js'), void 0); @@ -96,8 +96,6 @@ suite('Files - FileEditorInput', () => { stat = (resolved as TextFileEditorModel).getStat(); return inputToResolve.resolve(false).then(resolved => { assert(stat === (resolved as TextFileEditorModel).getStat()); // Same stat, because not refreshed - - done(); }); }); }); @@ -121,7 +119,7 @@ suite('Files - FileEditorInput', () => { assert.strictEqual(input1.matches(input2Upper), false); }); - test('getEncoding/setEncoding', function (done) { + test('getEncoding/setEncoding', function () { const input = instantiationService.createInstance(FileEditorInput, toResource(this, '/foo/bar/updatefile.js'), void 0); input.setEncoding('utf16', EncodingMode.Encode); @@ -131,46 +129,40 @@ suite('Files - FileEditorInput', () => { assert.equal(input.getEncoding(), resolved.getEncoding()); resolved.dispose(); - - done(); }); }); - test('save', function (done) { + test('save', function () { const input = instantiationService.createInstance(FileEditorInput, toResource(this, '/foo/bar/updatefile.js'), void 0); return input.resolve(true).then((resolved: TextFileEditorModel) => { resolved.textEditorModel.setValue('changed'); assert.ok(input.isDirty()); - input.save().then(() => { + return input.save().then(() => { assert.ok(!input.isDirty()); resolved.dispose(); - - done(); }); }); }); - test('revert', function (done) { + test('revert', function () { const input = instantiationService.createInstance(FileEditorInput, toResource(this, '/foo/bar/updatefile.js'), void 0); return input.resolve(true).then((resolved: TextFileEditorModel) => { resolved.textEditorModel.setValue('changed'); assert.ok(input.isDirty()); - input.revert().then(() => { + return input.revert().then(() => { assert.ok(!input.isDirty()); resolved.dispose(); - - done(); }); }); }); - test('resolve handles binary files', function (done) { + test('resolve handles binary files', function () { const input = instantiationService.createInstance(FileEditorInput, toResource(this, '/foo/bar/updatefile.js'), void 0); accessor.textFileService.setResolveTextContentErrorOnce(new FileOperationError('error', FileOperationResult.FILE_IS_BINARY)); @@ -179,17 +171,15 @@ suite('Files - FileEditorInput', () => { assert.ok(resolved); resolved.dispose(); - - done(); }); }); - test('disposes model when not open anymore', function (done) { + test('disposes model when not open anymore', function () { const resource = toResource(this, '/path/index.txt'); const input = createFileInput(instantiationService, resource); - input.resolve().then((model: TextFileEditorModel) => { + return input.resolve().then((model: TextFileEditorModel) => { const stacks = accessor.editorGroupService.getStacksModel(); const group = stacks.openGroup('group', true); group.openEditor(input); @@ -204,8 +194,6 @@ suite('Files - FileEditorInput', () => { model.dispose(); assert.ok(!accessor.modelService.getModel(model.getResource())); - - done(); }); }); }); \ No newline at end of file diff --git a/src/vs/workbench/parts/files/test/browser/fileEditorTracker.test.ts b/src/vs/workbench/parts/files/test/browser/fileEditorTracker.test.ts index 4614fa791f0..521073e88ab 100644 --- a/src/vs/workbench/parts/files/test/browser/fileEditorTracker.test.ts +++ b/src/vs/workbench/parts/files/test/browser/fileEditorTracker.test.ts @@ -184,16 +184,16 @@ suite('Files - FileEditorTracker', () => { tracker.dispose(); }); - test('file change event updates model', function (done) { + test('file change event updates model', function () { const tracker = instantiationService.createInstance(FileEditorTracker); const resource = toResource(this, '/path/index.txt'); - accessor.textFileService.models.loadOrCreate(resource).then((model: TextFileEditorModel) => { + return accessor.textFileService.models.loadOrCreate(resource).then((model: TextFileEditorModel) => { model.textEditorModel.setValue('Super Good'); assert.equal(snapshotToString(model.createSnapshot()), 'Super Good'); - model.save().then(() => { + return model.save().then(() => { // change event (watcher) accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource, type: FileChangeType.UPDATED }])); @@ -201,8 +201,6 @@ suite('Files - FileEditorTracker', () => { assert.equal(snapshotToString(model.createSnapshot()), 'Hello Html'); tracker.dispose(); - - done(); }); }); }); diff --git a/src/vs/workbench/parts/search/test/common/searchModel.test.ts b/src/vs/workbench/parts/search/test/common/searchModel.test.ts index 315d2b182fe..3cc95cf4c89 100644 --- a/src/vs/workbench/parts/search/test/common/searchModel.test.ts +++ b/src/vs/workbench/parts/search/test/common/searchModel.test.ts @@ -8,7 +8,7 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; import { DeferredPPromise } from 'vs/base/test/common/utils'; -import { PPromise } from 'vs/base/common/winjs.base'; +import { PPromise, TPromise } from 'vs/base/common/winjs.base'; import { SearchModel } from 'vs/workbench/parts/search/common/searchModel'; import URI from 'vs/base/common/uri'; import { IFileMatch, IFolderQuery, ILineMatch, ISearchService, ISearchComplete, ISearchProgressItem, IUncachedSearchStats } from 'vs/platform/search/common/search'; @@ -101,7 +101,7 @@ suite('SearchModel', () => { assert.ok(new Range(2, 1, 2, 2).equalsRange(actuaMatches[0].range())); }); - test('Search Model: Search adds to results during progress', function (done) { + test('Search Model: Search adds to results during progress', function () { let results = [aRawMatch('file://c:/1', aLineMatch('preview 1', 1, [[1, 3], [4, 7]])), aRawMatch('file://c:/2', aLineMatch('preview 2'))]; let promise = new DeferredPPromise(); instantiationService.stub(ISearchService, 'search', promise); @@ -113,7 +113,7 @@ suite('SearchModel', () => { promise.progress(results[1]); promise.complete({ results: [], stats: testSearchStats }); - result.done(() => { + return result.then(() => { let actual = testObject.searchResult.matches(); assert.equal(2, actual.length); @@ -130,8 +130,6 @@ suite('SearchModel', () => { assert.equal(1, actuaMatches.length); assert.equal('preview 2', actuaMatches[0].text()); assert.ok(new Range(2, 1, 2, 2).equalsRange(actuaMatches[0].range())); - - done(); }); }); @@ -149,7 +147,7 @@ suite('SearchModel', () => { assert.deepEqual(['searchResultsShown', { count: 3, fileCount: 2, options: {}, duration: -1, useRipgrep: undefined }], data); }); - test('Search Model: Search reports timed telemetry on search when progress is not called', function (done) { + test('Search Model: Search reports timed telemetry on search when progress is not called', function () { let target2 = sinon.spy(); stub(nullEvent, 'stop', target2); let target1 = sinon.stub().returns(nullEvent); @@ -160,17 +158,16 @@ suite('SearchModel', () => { let testObject = instantiationService.createInstance(SearchModel); const result = testObject.search({ contentPattern: { pattern: 'somestring' }, type: 1, folderQueries }); - setTimeout(() => { - result.done(() => { + return TPromise.timeout(1).then(() => { + return result.then(() => { assert.ok(target1.calledWith('searchResultsFirstRender')); assert.ok(target1.calledWith('searchResultsFinished')); - - done(); }); - }, 0); + + }); }); - test('Search Model: Search reports timed telemetry on search when progress is called', function (done) { + test('Search Model: Search reports timed telemetry on search when progress is called', function () { let target2 = sinon.spy(); stub(nullEvent, 'stop', target2); let target1 = sinon.stub().returns(nullEvent); @@ -185,18 +182,16 @@ suite('SearchModel', () => { promise.progress(aRawMatch('file://c:/1', aLineMatch('some preview'))); promise.complete({ results: [], stats: testSearchStats }); - setTimeout(() => { - result.done(() => { + return TPromise.timeout(1).then(() => { + return result.then(() => { assert.ok(target1.calledWith('searchResultsFirstRender')); assert.ok(target1.calledWith('searchResultsFinished')); // assert.equal(1, target2.callCount); - - done(); }); - }, 0); + }); }); - test('Search Model: Search reports timed telemetry on search when error is called', function (done) { + test('Search Model: Search reports timed telemetry on search when error is called', function () { let target2 = sinon.spy(); stub(nullEvent, 'stop', target2); let target1 = sinon.stub().returns(nullEvent); @@ -210,18 +205,16 @@ suite('SearchModel', () => { promise.error('error'); - setTimeout(() => { - result.done(() => { }, () => { + return TPromise.timeout(1).then(() => { + return result.then(() => { }, () => { assert.ok(target1.calledWith('searchResultsFirstRender')); assert.ok(target1.calledWith('searchResultsFinished')); // assert.ok(target2.calledOnce); - - done(); }); - }, 0); + }); }); - test('Search Model: Search reports timed telemetry on search when error is cancelled error', function (done) { + test('Search Model: Search reports timed telemetry on search when error is cancelled error', function () { let target2 = sinon.spy(); stub(nullEvent, 'stop', target2); let target1 = sinon.stub().returns(nullEvent); @@ -235,14 +228,13 @@ suite('SearchModel', () => { promise.cancel(); - setTimeout(() => { - result.done(() => { }, () => { + return TPromise.timeout(1).then(() => { + return result.then(() => { }, () => { assert.ok(target1.calledWith('searchResultsFirstRender')); assert.ok(target1.calledWith('searchResultsFinished')); // assert.ok(target2.calledOnce); - done(); }); - }, 0); + }); }); test('Search Model: Search results are cleared during search', function () { diff --git a/src/vs/workbench/services/backup/test/node/backupFileService.test.ts b/src/vs/workbench/services/backup/test/node/backupFileService.test.ts index 159133f0e46..6641fec762d 100644 --- a/src/vs/workbench/services/backup/test/node/backupFileService.test.ts +++ b/src/vs/workbench/services/backup/test/node/backupFileService.test.ts @@ -11,7 +11,6 @@ import crypto = require('crypto'); import os = require('os'); import fs = require('fs'); import path = require('path'); -import extfs = require('vs/base/node/extfs'); import pfs = require('vs/base/node/pfs'); import Uri from 'vs/base/common/uri'; import { BackupFileService, BackupFilesModel } from 'vs/workbench/services/backup/node/backupFileService'; @@ -52,21 +51,19 @@ class TestBackupFileService extends BackupFileService { suite('BackupFileService', () => { let service: TestBackupFileService; - setup(done => { + setup(() => { service = new TestBackupFileService(workspaceResource, backupHome, workspacesJsonPath); // Delete any existing backups completely and then re-create it. - extfs.del(backupHome, os.tmpdir(), () => { - pfs.mkdirp(backupHome).then(() => { - pfs.writeFile(workspacesJsonPath, '').then(() => { - done(); - }); + return pfs.del(backupHome, os.tmpdir()).then(() => { + return pfs.mkdirp(backupHome).then(() => { + return pfs.writeFile(workspacesJsonPath, ''); }); }); }); - teardown(done => { - extfs.del(backupHome, os.tmpdir(), done); + teardown(() => { + return pfs.del(backupHome, os.tmpdir()); }); suite('getBackupResource', () => { @@ -90,16 +87,15 @@ suite('BackupFileService', () => { }); suite('loadBackupResource', () => { - test('should return whether a backup resource exists', done => { - pfs.mkdirp(path.dirname(fooBackupPath)).then(() => { + test('should return whether a backup resource exists', () => { + return pfs.mkdirp(path.dirname(fooBackupPath)).then(() => { fs.writeFileSync(fooBackupPath, 'foo'); service = new TestBackupFileService(workspaceResource, backupHome, workspacesJsonPath); - service.loadBackupResource(fooFile).then(resource => { + return service.loadBackupResource(fooFile).then(resource => { assert.ok(resource); assert.equal(path.basename(resource.fsPath), path.basename(fooBackupPath)); return service.hasBackups().then(hasBackups => { assert.ok(hasBackups); - done(); }); }); }); @@ -107,165 +103,151 @@ suite('BackupFileService', () => { }); suite('backupResource', () => { - test('text file', function (done: () => void) { - service.backupResource(fooFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + test('text file', function () { + return service.backupResource(fooFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'file')).length, 1); assert.equal(fs.existsSync(fooBackupPath), true); assert.equal(fs.readFileSync(fooBackupPath), `${fooFile.toString()}\ntest`); - done(); }); }); - test('untitled file', function (done: () => void) { - service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + test('untitled file', function () { + return service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'untitled')).length, 1); assert.equal(fs.existsSync(untitledBackupPath), true); assert.equal(fs.readFileSync(untitledBackupPath), `${untitledFile.toString()}\ntest`); - done(); }); }); - test('text file (ITextSnapshot)', function (done: () => void) { + test('text file (ITextSnapshot)', function () { const model = TextModel.createFromString('test'); - service.backupResource(fooFile, model.createSnapshot()).then(() => { + return service.backupResource(fooFile, model.createSnapshot()).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'file')).length, 1); assert.equal(fs.existsSync(fooBackupPath), true); assert.equal(fs.readFileSync(fooBackupPath), `${fooFile.toString()}\ntest`); model.dispose(); - done(); }); }); - test('untitled file (ITextSnapshot)', function (done: () => void) { + test('untitled file (ITextSnapshot)', function () { const model = TextModel.createFromString('test'); - service.backupResource(untitledFile, model.createSnapshot()).then(() => { + return service.backupResource(untitledFile, model.createSnapshot()).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'untitled')).length, 1); assert.equal(fs.existsSync(untitledBackupPath), true); assert.equal(fs.readFileSync(untitledBackupPath), `${untitledFile.toString()}\ntest`); model.dispose(); - done(); }); }); - test('text file (large file, ITextSnapshot)', function (done: () => void) { + test('text file (large file, ITextSnapshot)', function () { const largeString = (new Array(10 * 1024)).join('Large String\n'); const model = TextModel.createFromString(largeString); - service.backupResource(fooFile, model.createSnapshot()).then(() => { + return service.backupResource(fooFile, model.createSnapshot()).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'file')).length, 1); assert.equal(fs.existsSync(fooBackupPath), true); assert.equal(fs.readFileSync(fooBackupPath), `${fooFile.toString()}\n${largeString}`); model.dispose(); - done(); }); }); - test('untitled file (large file, ITextSnapshot)', function (done: () => void) { + test('untitled file (large file, ITextSnapshot)', function () { const largeString = (new Array(10 * 1024)).join('Large String\n'); const model = TextModel.createFromString(largeString); - service.backupResource(untitledFile, model.createSnapshot()).then(() => { + return service.backupResource(untitledFile, model.createSnapshot()).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'untitled')).length, 1); assert.equal(fs.existsSync(untitledBackupPath), true); assert.equal(fs.readFileSync(untitledBackupPath), `${untitledFile.toString()}\n${largeString}`); model.dispose(); - done(); }); }); }); suite('discardResourceBackup', () => { - test('text file', function (done: () => void) { - service.backupResource(fooFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + test('text file', function () { + return service.backupResource(fooFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'file')).length, 1); - service.discardResourceBackup(fooFile).then(() => { + return service.discardResourceBackup(fooFile).then(() => { assert.equal(fs.existsSync(fooBackupPath), false); assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'file')).length, 0); - done(); }); }); }); - test('untitled file', function (done: () => void) { - service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + test('untitled file', function () { + return service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'untitled')).length, 1); - service.discardResourceBackup(untitledFile).then(() => { + return service.discardResourceBackup(untitledFile).then(() => { assert.equal(fs.existsSync(untitledBackupPath), false); assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'untitled')).length, 0); - done(); }); }); }); }); suite('discardAllWorkspaceBackups', () => { - test('text file', function (done: () => void) { - service.backupResource(fooFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + test('text file', function () { + return service.backupResource(fooFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'file')).length, 1); - service.backupResource(barFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + return service.backupResource(barFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'file')).length, 2); - service.discardAllWorkspaceBackups().then(() => { + return service.discardAllWorkspaceBackups().then(() => { assert.equal(fs.existsSync(fooBackupPath), false); assert.equal(fs.existsSync(barBackupPath), false); assert.equal(fs.existsSync(path.join(workspaceBackupPath, 'file')), false); - done(); }); }); }); }); - test('untitled file', function (done: () => void) { - service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + test('untitled file', function () { + return service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { assert.equal(fs.readdirSync(path.join(workspaceBackupPath, 'untitled')).length, 1); - service.discardAllWorkspaceBackups().then(() => { + return service.discardAllWorkspaceBackups().then(() => { assert.equal(fs.existsSync(untitledBackupPath), false); assert.equal(fs.existsSync(path.join(workspaceBackupPath, 'untitled')), false); - done(); }); }); }); - test('should disable further backups', function (done: () => void) { - service.discardAllWorkspaceBackups().then(() => { - service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + test('should disable further backups', function () { + return service.discardAllWorkspaceBackups().then(() => { + return service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { assert.equal(fs.existsSync(workspaceBackupPath), false); - done(); }); }); }); }); suite('getWorkspaceFileBackups', () => { - test('("file") - text file', done => { - service.backupResource(fooFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { - service.getWorkspaceFileBackups().then(textFiles => { + test('("file") - text file', () => { + return service.backupResource(fooFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + return service.getWorkspaceFileBackups().then(textFiles => { assert.deepEqual(textFiles.map(f => f.fsPath), [fooFile.fsPath]); - service.backupResource(barFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { - service.getWorkspaceFileBackups().then(textFiles => { + return service.backupResource(barFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + return service.getWorkspaceFileBackups().then(textFiles => { assert.deepEqual(textFiles.map(f => f.fsPath), [fooFile.fsPath, barFile.fsPath]); - done(); }); }); }); }); }); - test('("file") - untitled file', done => { - service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { - service.getWorkspaceFileBackups().then(textFiles => { + test('("file") - untitled file', () => { + return service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + return service.getWorkspaceFileBackups().then(textFiles => { assert.deepEqual(textFiles.map(f => f.fsPath), [untitledFile.fsPath]); - done(); }); }); }); - test('("untitled") - untitled file', done => { - service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { - service.getWorkspaceFileBackups().then(textFiles => { + test('("untitled") - untitled file', () => { + return service.backupResource(untitledFile, createTextBufferFactory('test').create(DefaultEndOfLine.LF).createSnapshot(false)).then(() => { + return service.getWorkspaceFileBackups().then(textFiles => { assert.deepEqual(textFiles.map(f => f.fsPath), ['Untitled-1']); - done(); }); }); }); @@ -346,16 +328,14 @@ suite('BackupFilesModel', () => { assert.equal(model.has(resource4), true); }); - test('resolve', (done) => { - pfs.mkdirp(path.dirname(fooBackupPath)).then(() => { + test('resolve', () => { + return pfs.mkdirp(path.dirname(fooBackupPath)).then(() => { fs.writeFileSync(fooBackupPath, 'foo'); const model = new BackupFilesModel(); - model.resolve(workspaceBackupPath).then(model => { + return model.resolve(workspaceBackupPath).then(model => { assert.equal(model.has(Uri.file(fooBackupPath)), true); - - done(); }); }); }); diff --git a/src/vs/workbench/services/configuration/test/node/configurationService.test.ts b/src/vs/workbench/services/configuration/test/node/configurationService.test.ts index bf72634738b..6fdb69cf3e1 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationService.test.ts +++ b/src/vs/workbench/services/configuration/test/node/configurationService.test.ts @@ -16,7 +16,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { ParsedArgs, IEnvironmentService } from 'vs/platform/environment/common/environment'; import { EnvironmentService } from 'vs/platform/environment/node/environmentService'; import { parseArgs } from 'vs/platform/environment/node/argv'; -import extfs = require('vs/base/node/extfs'); +import pfs = require('vs/base/node/pfs'); import uuid = require('vs/base/common/uuid'); import { IConfigurationRegistry, Extensions as ConfigurationExtensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { WorkspaceService } from 'vs/workbench/services/configuration/node/configurationService'; @@ -91,13 +91,14 @@ suite('WorkspaceContextService - Folder', () => { }); }); - teardown(done => { + teardown(() => { if (workspaceContextService) { (workspaceContextService).dispose(); } if (parentResource) { - extfs.del(parentResource, os.tmpdir(), () => { }, done); + return pfs.del(parentResource, os.tmpdir()); } + return void 0; }); test('getWorkspace()', () => { @@ -161,13 +162,14 @@ suite('WorkspaceContextService - Workspace', () => { }); }); - teardown(done => { + teardown(() => { if (testObject) { (testObject).dispose(); } if (parentResource) { - extfs.del(parentResource, os.tmpdir(), () => { }, done); + return pfs.del(parentResource, os.tmpdir()); } + return void 0; }); test('workspace folders', () => { @@ -276,7 +278,7 @@ suite('WorkspaceContextService - Workspace', () => { test('remove folders and add them back by writing into the file', done => { const folders = testObject.getWorkspace().folders; - return testObject.removeFolders([folders[0].uri]) + testObject.removeFolders([folders[0].uri]) .then(() => { testObject.onDidChangeWorkspaceFolders(actual => { assert.deepEqual(actual.added.map(r => r.uri.toString()), [folders[0].uri.toString()]); @@ -284,7 +286,7 @@ suite('WorkspaceContextService - Workspace', () => { }); const workspace = { folders: [{ path: folders[0].uri.fsPath }, { path: folders[1].uri.fsPath }] }; fs.writeFileSync(testObject.getWorkspace().configuration.fsPath, JSON.stringify(workspace, null, '\t')); - }); + }, done); }); test('update folders (remove last and add to end)', () => { @@ -417,13 +419,14 @@ suite('WorkspaceService - Initialization', () => { }); }); - teardown(done => { + teardown(() => { if (testObject) { (testObject).dispose(); } if (parentResource) { - extfs.del(parentResource, os.tmpdir(), () => { }, done); + return pfs.del(parentResource, os.tmpdir()); } + return void 0; }); test('initialize a folder workspace from an empty workspace with no configuration changes', () => { @@ -669,13 +672,14 @@ suite('WorkspaceConfigurationService - Folder', () => { }); }); - teardown(done => { + teardown(() => { if (testObject) { (testObject).dispose(); } if (parentResource) { - extfs.del(parentResource, os.tmpdir(), () => { }, done); + return pfs.del(parentResource, os.tmpdir()); } + return void 0; }); test('defaults', () => { @@ -967,13 +971,14 @@ suite('WorkspaceConfigurationService - Multiroot', () => { }); }); - teardown(done => { + teardown(() => { if (testObject) { (testObject).dispose(); } if (parentResource) { - extfs.del(parentResource, os.tmpdir(), () => { }, done); + return pfs.del(parentResource, os.tmpdir()); } + return void 0; }); test('executable settings are not read from workspace', () => { diff --git a/src/vs/workbench/services/files/test/node/fileService.test.ts b/src/vs/workbench/services/files/test/node/fileService.test.ts index f2f8dc99836..68094b710ff 100644 --- a/src/vs/workbench/services/files/test/node/fileService.test.ts +++ b/src/vs/workbench/services/files/test/node/fileService.test.ts @@ -15,10 +15,9 @@ import { FileService, IEncodingOverride } from 'vs/workbench/services/files/node import { FileOperation, FileOperationEvent, FileChangesEvent, FileOperationResult, FileOperationError } from 'vs/platform/files/common/files'; import uri from 'vs/base/common/uri'; import uuid = require('vs/base/common/uuid'); -import extfs = require('vs/base/node/extfs'); +import pfs = require('vs/base/node/pfs'); import encodingLib = require('vs/base/node/encoding'); import utils = require('vs/workbench/services/files/test/node/utils'); -import { onError } from 'vs/base/test/common/utils'; import { TestEnvironmentService, TestContextService, TestTextResourceConfigurationService, getRandomTestPath, TestLifecycleService } from 'vs/workbench/test/workbenchTestServices'; import { Workspace, toWorkspaceFolders } from 'vs/platform/workspace/common/workspace'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; @@ -29,27 +28,22 @@ suite('FileService', () => { const parentDir = getRandomTestPath(os.tmpdir(), 'vsctests', 'fileservice'); let testDir: string; - setup(function (done) { + setup(function () { const id = uuid.generateUuid(); testDir = path.join(parentDir, id); const sourceDir = require.toUrl('./fixtures/service'); - extfs.copy(sourceDir, testDir, (error) => { - if (error) { - return onError(error, done); - } - + return pfs.copy(sourceDir, testDir).then(() => { service = new FileService(new TestContextService(new Workspace(testDir, testDir, toWorkspaceFolders([{ path: testDir }]))), TestEnvironmentService, new TestTextResourceConfigurationService(), new TestConfigurationService(), new TestLifecycleService(), { disableWatcher: true }); - done(); }); }); - teardown((done) => { + teardown(() => { service.dispose(); - extfs.del(parentDir, os.tmpdir(), () => { }, done); + return pfs.del(parentDir, os.tmpdir()); }); - test('createFile', function (done: () => void) { + test('createFile', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; @@ -57,7 +51,7 @@ suite('FileService', () => { const contents = 'Hello World'; const resource = uri.file(path.join(testDir, 'test.txt')); - service.createFile(resource, contents).done(s => { + return service.createFile(resource, contents).then(s => { assert.equal(s.name, 'test.txt'); assert.equal(fs.existsSync(s.resource.fsPath), true); assert.equal(fs.readFileSync(s.resource.fsPath), contents); @@ -67,25 +61,21 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.CREATE); assert.equal(event.target.resource.fsPath, resource.fsPath); toDispose.dispose(); - - done(); - }, error => onError(error, done)); + }); }); - test('createFile (does not overwrite by default)', function (done: () => void) { + test('createFile (does not overwrite by default)', function () { const contents = 'Hello World'; const resource = uri.file(path.join(testDir, 'test.txt')); fs.writeFileSync(resource.fsPath, ''); // create file - service.createFile(resource, contents).done(null, error => { + return service.createFile(resource, contents).then(null, error => { assert.ok(error); - - done(); }); }); - test('createFile (allows to overwrite existing)', function (done: () => void) { + test('createFile (allows to overwrite existing)', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; @@ -96,7 +86,7 @@ suite('FileService', () => { fs.writeFileSync(resource.fsPath, ''); // create file - service.createFile(resource, contents, { overwrite: true }).done(s => { + return service.createFile(resource, contents, { overwrite: true }).then(s => { assert.equal(s.name, 'test.txt'); assert.equal(fs.existsSync(s.resource.fsPath), true); assert.equal(fs.readFileSync(s.resource.fsPath), contents); @@ -106,18 +96,16 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.CREATE); assert.equal(event.target.resource.fsPath, resource.fsPath); toDispose.dispose(); - - done(); - }, error => onError(error, done)); + }); }); - test('createFolder', function (done: () => void) { + test('createFolder', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); - service.resolveFile(uri.file(testDir)).done(parent => { + return service.resolveFile(uri.file(testDir)).then(parent => { const resource = uri.file(path.join(parent.resource.fsPath, 'newFolder')); return service.createFolder(resource).then(f => { @@ -130,20 +118,18 @@ suite('FileService', () => { assert.equal(event.target.resource.fsPath, resource.fsPath); assert.equal(event.target.isDirectory, true); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('createFolder: creating multiple folders at once', function (done: () => void) { + test('createFolder: creating multiple folders at once', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); const multiFolderPaths = ['a', 'couple', 'of', 'folders']; - service.resolveFile(uri.file(testDir)).done(parent => { + return service.resolveFile(uri.file(testDir)).then(parent => { const resource = uri.file(path.join(parent.resource.fsPath, ...multiFolderPaths)); return service.createFolder(resource).then(f => { @@ -157,14 +143,12 @@ suite('FileService', () => { assert.equal(event.target.resource.fsPath, resource.fsPath); assert.equal(event.target.isDirectory, true); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('touchFile', function (done: () => void) { - service.touchFile(uri.file(path.join(testDir, 'test.txt'))).done(s => { + test('touchFile', function () { + return service.touchFile(uri.file(path.join(testDir, 'test.txt'))).then(s => { assert.equal(s.name, 'test.txt'); assert.equal(fs.existsSync(s.resource.fsPath), true); assert.equal(fs.readFileSync(s.resource.fsPath).length, 0); @@ -172,21 +156,19 @@ suite('FileService', () => { const stat = fs.statSync(s.resource.fsPath); return TPromise.timeout(10).then(() => { - return service.touchFile(s.resource).done(s => { + return service.touchFile(s.resource).then(s => { const statNow = fs.statSync(s.resource.fsPath); assert.ok(statNow.mtime.getTime() >= stat.mtime.getTime()); // one some OS the resolution seems to be 1s, so we use >= here assert.equal(statNow.size, stat.size); - - done(); }); }); - }, error => onError(error, done)); + }); }); - test('touchFile - multi folder', function (done: () => void) { + test('touchFile - multi folder', function () { const multiFolderPaths = ['a', 'couple', 'of', 'folders']; - service.touchFile(uri.file(path.join(testDir, ...multiFolderPaths, 'test.txt'))).done(s => { + return service.touchFile(uri.file(path.join(testDir, ...multiFolderPaths, 'test.txt'))).then(s => { assert.equal(s.name, 'test.txt'); assert.equal(fs.existsSync(s.resource.fsPath), true); assert.equal(fs.readFileSync(s.resource.fsPath).length, 0); @@ -194,25 +176,23 @@ suite('FileService', () => { const stat = fs.statSync(s.resource.fsPath); return TPromise.timeout(10).then(() => { - return service.touchFile(s.resource).done(s => { + return service.touchFile(s.resource).then(s => { const statNow = fs.statSync(s.resource.fsPath); assert.ok(statNow.mtime.getTime() >= stat.mtime.getTime()); // one some OS the resolution seems to be 1s, so we use >= here assert.equal(statNow.size, stat.size); - - done(); }); }); - }, error => onError(error, done)); + }); }); - test('renameFile', function (done: () => void) { + test('renameFile', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); const resource = uri.file(path.join(testDir, 'index.html')); - service.resolveFile(resource).done(source => { + return service.resolveFile(resource).then(source => { return service.rename(source.resource, 'other.html').then(renamed => { assert.equal(fs.existsSync(renamed.resource.fsPath), true); assert.equal(fs.existsSync(source.resource.fsPath), false); @@ -222,13 +202,11 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.MOVE); assert.equal(event.target.resource.fsPath, renamed.resource.fsPath); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('renameFile - multi folder', function (done: () => void) { + test('renameFile - multi folder', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; @@ -238,7 +216,7 @@ suite('FileService', () => { const renameToPath = path.join(...multiFolderPaths, 'other.html'); const resource = uri.file(path.join(testDir, 'index.html')); - service.resolveFile(resource).done(source => { + return service.resolveFile(resource).then(source => { return service.rename(source.resource, renameToPath).then(renamed => { assert.equal(fs.existsSync(renamed.resource.fsPath), true); assert.equal(fs.existsSync(source.resource.fsPath), false); @@ -248,20 +226,18 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.MOVE); assert.equal(event.target.resource.fsPath, renamed.resource.fsPath); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('renameFolder', function (done: () => void) { + test('renameFolder', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); const resource = uri.file(path.join(testDir, 'deep')); - service.resolveFile(resource).done(source => { + return service.resolveFile(resource).then(source => { return service.rename(source.resource, 'deeper').then(renamed => { assert.equal(fs.existsSync(renamed.resource.fsPath), true); assert.equal(fs.existsSync(source.resource.fsPath), false); @@ -271,13 +247,11 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.MOVE); assert.equal(event.target.resource.fsPath, renamed.resource.fsPath); toDispose.dispose(); - - done(); }); }); }); - test('renameFolder - multi folder', function (done: () => void) { + test('renameFolder - multi folder', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; @@ -287,7 +261,7 @@ suite('FileService', () => { const renameToPath = path.join(...multiFolderPaths); const resource = uri.file(path.join(testDir, 'deep')); - service.resolveFile(resource).done(source => { + return service.resolveFile(resource).then(source => { return service.rename(source.resource, renameToPath).then(renamed => { assert.equal(fs.existsSync(renamed.resource.fsPath), true); assert.equal(fs.existsSync(source.resource.fsPath), false); @@ -297,19 +271,17 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.MOVE); assert.equal(event.target.resource.fsPath, renamed.resource.fsPath); toDispose.dispose(); - - done(); }); }); }); - test('renameFile - MIX CASE', function (done: () => void) { + test('renameFile - MIX CASE', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); const resource = uri.file(path.join(testDir, 'index.html')); - service.resolveFile(resource).done(source => { + return service.resolveFile(resource).then(source => { return service.rename(source.resource, 'INDEX.html').then(renamed => { assert.equal(fs.existsSync(renamed.resource.fsPath), true); assert.equal(path.basename(renamed.resource.fsPath), 'INDEX.html'); @@ -319,20 +291,18 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.MOVE); assert.equal(event.target.resource.fsPath, renamed.resource.fsPath); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('moveFile', function (done: () => void) { + test('moveFile', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); const resource = uri.file(path.join(testDir, 'index.html')); - service.resolveFile(resource).done(source => { + return service.resolveFile(resource).then(source => { return service.moveFile(source.resource, uri.file(path.join(testDir, 'other.html'))).then(renamed => { assert.equal(fs.existsSync(renamed.resource.fsPath), true); assert.equal(fs.existsSync(source.resource.fsPath), false); @@ -342,38 +312,34 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.MOVE); assert.equal(event.target.resource.fsPath, renamed.resource.fsPath); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('move - FILE_MOVE_CONFLICT', function (done: () => void) { + test('move - FILE_MOVE_CONFLICT', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); - service.resolveFile(uri.file(path.join(testDir, 'index.html'))).done(source => { + return service.resolveFile(uri.file(path.join(testDir, 'index.html'))).then(source => { return service.moveFile(source.resource, uri.file(path.join(testDir, 'binary.txt'))).then(null, (e: FileOperationError) => { assert.equal(e.fileOperationResult, FileOperationResult.FILE_MOVE_CONFLICT); assert.ok(!event); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('moveFile - MIX CASE', function (done: () => void) { + test('moveFile - MIX CASE', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); const resource = uri.file(path.join(testDir, 'index.html')); - service.resolveFile(resource).done(source => { + return service.resolveFile(resource).then(source => { return service.moveFile(source.resource, uri.file(path.join(testDir, 'INDEX.html'))).then(renamed => { assert.equal(fs.existsSync(renamed.resource.fsPath), true); assert.equal(path.basename(renamed.resource.fsPath), 'INDEX.html'); @@ -383,13 +349,11 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.MOVE); assert.equal(event.target.resource.fsPath, renamed.resource.fsPath); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('moveFile - overwrite folder with file', function (done: () => void) { + test('moveFile - overwrite folder with file', function () { let createEvent: FileOperationEvent; let moveEvent: FileOperationEvent; let deleteEvent: FileOperationEvent; @@ -403,7 +367,7 @@ suite('FileService', () => { } }); - service.resolveFile(uri.file(testDir)).done(parent => { + return service.resolveFile(uri.file(testDir)).then(parent => { const folderResource = uri.file(path.join(parent.resource.fsPath, 'conway.js')); return service.createFolder(folderResource).then(f => { const resource = uri.file(path.join(testDir, 'deep', 'conway.js')); @@ -421,20 +385,18 @@ suite('FileService', () => { assert.equal(deleteEvent.resource.fsPath, folderResource.fsPath); toDispose.dispose(); - - done(); }); }); - }, error => onError(error, done)); + }); }); - test('copyFile', function (done: () => void) { + test('copyFile', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); - service.resolveFile(uri.file(path.join(testDir, 'index.html'))).done(source => { + return service.resolveFile(uri.file(path.join(testDir, 'index.html'))).then(source => { const resource = uri.file(path.join(testDir, 'other.html')); return service.copyFile(source.resource, resource).then(copied => { assert.equal(fs.existsSync(copied.resource.fsPath), true); @@ -445,13 +407,11 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.COPY); assert.equal(event.target.resource.fsPath, copied.resource.fsPath); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('copyFile - overwrite folder with file', function (done: () => void) { + test('copyFile - overwrite folder with file', function () { let createEvent: FileOperationEvent; let copyEvent: FileOperationEvent; let deleteEvent: FileOperationEvent; @@ -465,7 +425,7 @@ suite('FileService', () => { } }); - service.resolveFile(uri.file(testDir)).done(parent => { + return service.resolveFile(uri.file(testDir)).then(parent => { const folderResource = uri.file(path.join(parent.resource.fsPath, 'conway.js')); return service.createFolder(folderResource).then(f => { const resource = uri.file(path.join(testDir, 'deep', 'conway.js')); @@ -483,20 +443,18 @@ suite('FileService', () => { assert.equal(deleteEvent.resource.fsPath, folderResource.fsPath); toDispose.dispose(); - - done(); }); }); - }, error => onError(error, done)); + }); }); - test('importFile', function (done: () => void) { + test('importFile', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); - service.resolveFile(uri.file(path.join(testDir, 'deep'))).done(target => { + return service.resolveFile(uri.file(path.join(testDir, 'deep'))).then(target => { const resource = uri.file(require.toUrl('./fixtures/service/index.html')); return service.importFile(resource, target.resource).then(res => { assert.equal(res.isNew, true); @@ -507,31 +465,27 @@ suite('FileService', () => { assert.equal(event.operation, FileOperation.IMPORT); assert.equal(event.target.resource.fsPath, res.stat.resource.fsPath); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('importFile - MIX CASE', function (done: () => void) { - service.resolveFile(uri.file(path.join(testDir, 'index.html'))).done(source => { + test('importFile - MIX CASE', function () { + return service.resolveFile(uri.file(path.join(testDir, 'index.html'))).then(source => { return service.rename(source.resource, 'CONWAY.js').then(renamed => { // index.html => CONWAY.js assert.equal(fs.existsSync(renamed.resource.fsPath), true); assert.ok(fs.readdirSync(testDir).some(f => f === 'CONWAY.js')); - return service.resolveFile(uri.file(path.join(testDir, 'deep', 'conway.js'))).done(source => { + return service.resolveFile(uri.file(path.join(testDir, 'deep', 'conway.js'))).then(source => { return service.importFile(source.resource, uri.file(testDir)).then(res => { // CONWAY.js => conway.js assert.equal(fs.existsSync(res.stat.resource.fsPath), true); assert.ok(fs.readdirSync(testDir).some(f => f === 'conway.js')); - - done(); }); }); }); - }, error => onError(error, done)); + }); }); - test('importFile - overwrite folder with file', function (done: () => void) { + test('importFile - overwrite folder with file', function () { let createEvent: FileOperationEvent; let importEvent: FileOperationEvent; let deleteEvent: FileOperationEvent; @@ -545,7 +499,7 @@ suite('FileService', () => { } }); - service.resolveFile(uri.file(testDir)).done(parent => { + return service.resolveFile(uri.file(testDir)).then(parent => { const folderResource = uri.file(path.join(parent.resource.fsPath, 'conway.js')); return service.createFolder(folderResource).then(f => { const resource = uri.file(path.join(testDir, 'deep', 'conway.js')); @@ -564,31 +518,27 @@ suite('FileService', () => { assert.equal(deleteEvent.resource.fsPath, folderResource.fsPath); toDispose.dispose(); - - done(); }); }); - }, error => onError(error, done)); + }); }); - test('importFile - same file', function (done: () => void) { - service.resolveFile(uri.file(path.join(testDir, 'index.html'))).done(source => { + test('importFile - same file', function () { + return service.resolveFile(uri.file(path.join(testDir, 'index.html'))).then(source => { return service.importFile(source.resource, uri.file(path.dirname(source.resource.fsPath))).then(imported => { assert.equal(imported.stat.size, source.size); - - done(); }); - }, error => onError(error, done)); + }); }); - test('deleteFile', function (done: () => void) { + test('deleteFile', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); const resource = uri.file(path.join(testDir, 'deep', 'conway.js')); - service.resolveFile(resource).done(source => { + return service.resolveFile(resource).then(source => { return service.del(source.resource).then(() => { assert.equal(fs.existsSync(source.resource.fsPath), false); @@ -596,20 +546,18 @@ suite('FileService', () => { assert.equal(event.resource.fsPath, resource.fsPath); assert.equal(event.operation, FileOperation.DELETE); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('deleteFolder', function (done: () => void) { + test('deleteFolder', function () { let event: FileOperationEvent; const toDispose = service.onAfterOperation(e => { event = e; }); const resource = uri.file(path.join(testDir, 'deep')); - service.resolveFile(resource).done(source => { + return service.resolveFile(resource).then(source => { return service.del(source.resource).then(() => { assert.equal(fs.existsSync(source.resource.fsPath), false); @@ -617,25 +565,21 @@ suite('FileService', () => { assert.equal(event.resource.fsPath, resource.fsPath); assert.equal(event.operation, FileOperation.DELETE); toDispose.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('resolveFile', function (done: () => void) { - service.resolveFile(uri.file(testDir), { resolveTo: [uri.file(path.join(testDir, 'deep'))] }).done(r => { + test('resolveFile', function () { + return service.resolveFile(uri.file(testDir), { resolveTo: [uri.file(path.join(testDir, 'deep'))] }).then(r => { assert.equal(r.children.length, 8); const deep = utils.getByName(r, 'deep'); assert.equal(deep.children.length, 4); - - done(); - }, error => onError(error, done)); + }); }); - test('resolveFiles', function (done: () => void) { - service.resolveFiles([ + test('resolveFiles', function () { + return service.resolveFiles([ { resource: uri.file(testDir), options: { resolveTo: [uri.file(path.join(testDir, 'deep'))] } }, { resource: uri.file(path.join(testDir, 'deep')) } ]).then(res => { @@ -649,43 +593,37 @@ suite('FileService', () => { const r2 = res[1].stat; assert.equal(r2.children.length, 4); assert.equal(r2.name, 'deep'); - - done(); - }, error => onError(error, done)); + }); }); - test('existsFile', function (done: () => void) { - service.existsFile(uri.file(testDir)).then((exists) => { + test('existsFile', function () { + return service.existsFile(uri.file(testDir)).then((exists) => { assert.equal(exists, true); - service.existsFile(uri.file(testDir + 'something')).then((exists) => { + return service.existsFile(uri.file(testDir + 'something')).then((exists) => { assert.equal(exists, false); - - done(); }); - }, error => onError(error, done)); + }); }); - test('updateContent', function (done: () => void) { + test('updateContent', function () { const resource = uri.file(path.join(testDir, 'small.txt')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { assert.equal(c.value, 'Small File'); c.value = 'Updates to the small file'; return service.updateContent(c.resource, c.value).then(c => { assert.equal(fs.readFileSync(resource.fsPath), 'Updates to the small file'); - - done(); }); - }, error => onError(error, done)); + }); }); - test('updateContent (ITextSnapShot)', function (done: () => void) { + test('updateContent (ITextSnapShot)', function () { const resource = uri.file(path.join(testDir, 'small.txt')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { assert.equal(c.value, 'Small File'); const model = TextModel.createFromString('Updates to the small file'); @@ -694,47 +632,41 @@ suite('FileService', () => { assert.equal(fs.readFileSync(resource.fsPath), 'Updates to the small file'); model.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('updateContent (large file)', function (done: () => void) { + test('updateContent (large file)', function () { const resource = uri.file(path.join(testDir, 'lorem.txt')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { const newValue = c.value + c.value; c.value = newValue; return service.updateContent(c.resource, c.value).then(c => { assert.equal(fs.readFileSync(resource.fsPath), newValue); - - done(); }); - }, error => onError(error, done)); + }); }); - test('updateContent (large file, ITextSnapShot)', function (done: () => void) { + test('updateContent (large file, ITextSnapShot)', function () { const resource = uri.file(path.join(testDir, 'lorem.txt')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { const newValue = c.value + c.value; const model = TextModel.createFromString(newValue); return service.updateContent(c.resource, model.createSnapshot()).then(c => { assert.equal(fs.readFileSync(resource.fsPath), newValue); - - done(); }); - }, error => onError(error, done)); + }); }); - test('updateContent - use encoding (UTF 16 BE)', function (done: () => void) { + test('updateContent - use encoding (UTF 16 BE)', function () { const resource = uri.file(path.join(testDir, 'small.txt')); const encoding = 'utf16be'; - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { c.encoding = encoding; return service.updateContent(c.resource, c.value, { encoding: encoding }).then(c => { @@ -743,19 +675,17 @@ suite('FileService', () => { return service.resolveContent(resource).then(c => { assert.equal(c.encoding, encoding); - - done(); }); }); }); - }, error => onError(error, done)); + }); }); - test('updateContent - use encoding (UTF 16 BE, ITextSnapShot)', function (done: () => void) { + test('updateContent - use encoding (UTF 16 BE, ITextSnapShot)', function () { const resource = uri.file(path.join(testDir, 'small.txt')); const encoding = 'utf16be'; - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { c.encoding = encoding; const model = TextModel.createFromString(c.value); @@ -768,19 +698,17 @@ suite('FileService', () => { assert.equal(c.encoding, encoding); model.dispose(); - - done(); }); }); }); - }, error => onError(error, done)); + }); }); - test('updateContent - encoding preserved (UTF 16 LE)', function (done: () => void) { + test('updateContent - encoding preserved (UTF 16 LE)', function () { const encoding = 'utf16le'; const resource = uri.file(path.join(testDir, 'some_utf16le.css')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { assert.equal(c.encoding, encoding); c.value = 'Some updates'; @@ -791,19 +719,17 @@ suite('FileService', () => { return service.resolveContent(resource).then(c => { assert.equal(c.encoding, encoding); - - done(); }); }); }); - }, error => onError(error, done)); + }); }); - test('updateContent - encoding preserved (UTF 16 LE, ITextSnapShot)', function (done: () => void) { + test('updateContent - encoding preserved (UTF 16 LE, ITextSnapShot)', function () { const encoding = 'utf16le'; const resource = uri.file(path.join(testDir, 'some_utf16le.css')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { assert.equal(c.encoding, encoding); const model = TextModel.createFromString('Some updates'); @@ -816,22 +742,18 @@ suite('FileService', () => { assert.equal(c.encoding, encoding); model.dispose(); - - done(); }); }); }); - }, error => onError(error, done)); + }); }); - test('resolveContent - large file', function (done: () => void) { + test('resolveContent - large file', function () { const resource = uri.file(path.join(testDir, 'lorem.txt')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { assert.ok(c.value.length > 64000); - - done(); - }, error => onError(error, done)); + }); }); test('Files are intermingled #38331', function () { @@ -851,108 +773,90 @@ suite('FileService', () => { }); }); - test('resolveContent - FILE_IS_BINARY', function (done: () => void) { + test('resolveContent - FILE_IS_BINARY', function () { const resource = uri.file(path.join(testDir, 'binary.txt')); - service.resolveContent(resource, { acceptTextOnly: true }).done(null, (e: FileOperationError) => { + return service.resolveContent(resource, { acceptTextOnly: true }).then(null, (e: FileOperationError) => { assert.equal(e.fileOperationResult, FileOperationResult.FILE_IS_BINARY); return service.resolveContent(uri.file(path.join(testDir, 'small.txt')), { acceptTextOnly: true }).then(r => { assert.equal(r.name, 'small.txt'); - - done(); }); - }, error => onError(error, done)); + }); }); - test('resolveContent - FILE_IS_DIRECTORY', function (done: () => void) { + test('resolveContent - FILE_IS_DIRECTORY', function () { const resource = uri.file(path.join(testDir, 'deep')); - service.resolveContent(resource).done(null, (e: FileOperationError) => { + return service.resolveContent(resource).then(null, (e: FileOperationError) => { assert.equal(e.fileOperationResult, FileOperationResult.FILE_IS_DIRECTORY); - - done(); - }, error => onError(error, done)); + }); }); - test('resolveContent - FILE_NOT_FOUND', function (done: () => void) { + test('resolveContent - FILE_NOT_FOUND', function () { const resource = uri.file(path.join(testDir, '404.html')); - service.resolveContent(resource).done(null, (e: FileOperationError) => { + return service.resolveContent(resource).then(null, (e: FileOperationError) => { assert.equal(e.fileOperationResult, FileOperationResult.FILE_NOT_FOUND); - - done(); - }, error => onError(error, done)); + }); }); - test('resolveContent - FILE_NOT_MODIFIED_SINCE', function (done: () => void) { + test('resolveContent - FILE_NOT_MODIFIED_SINCE', function () { const resource = uri.file(path.join(testDir, 'index.html')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { return service.resolveContent(resource, { etag: c.etag }).then(null, (e: FileOperationError) => { assert.equal(e.fileOperationResult, FileOperationResult.FILE_NOT_MODIFIED_SINCE); - - done(); }); - }, error => onError(error, done)); + }); }); - test('resolveContent - FILE_MODIFIED_SINCE', function (done: () => void) { + test('resolveContent - FILE_MODIFIED_SINCE', function () { const resource = uri.file(path.join(testDir, 'index.html')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { fs.writeFileSync(resource.fsPath, 'Updates Incoming!'); return service.updateContent(resource, c.value, { etag: c.etag, mtime: c.mtime - 1000 }).then(null, (e: FileOperationError) => { assert.equal(e.fileOperationResult, FileOperationResult.FILE_MODIFIED_SINCE); - - done(); }); - }, error => onError(error, done)); + }); }); - test('resolveContent - encoding picked up', function (done: () => void) { + test('resolveContent - encoding picked up', function () { const resource = uri.file(path.join(testDir, 'index.html')); const encoding = 'windows1252'; - service.resolveContent(resource, { encoding: encoding }).done(c => { + return service.resolveContent(resource, { encoding: encoding }).then(c => { assert.equal(c.encoding, encoding); - - done(); - }, error => onError(error, done)); + }); }); - test('resolveContent - user overrides BOM', function (done: () => void) { + test('resolveContent - user overrides BOM', function () { const resource = uri.file(path.join(testDir, 'some_utf16le.css')); - service.resolveContent(resource, { encoding: 'windows1252' }).done(c => { + return service.resolveContent(resource, { encoding: 'windows1252' }).then(c => { assert.equal(c.encoding, 'windows1252'); - - done(); - }, error => onError(error, done)); + }); }); - test('resolveContent - BOM removed', function (done: () => void) { + test('resolveContent - BOM removed', function () { const resource = uri.file(path.join(testDir, 'some_utf8_bom.txt')); - service.resolveContent(resource).done(c => { + return service.resolveContent(resource).then(c => { assert.equal(encodingLib.detectEncodingByBOMFromBuffer(Buffer.from(c.value), 512), null); - - done(); - }, error => onError(error, done)); + }); }); - test('resolveContent - invalid encoding', function (done: () => void) { + test('resolveContent - invalid encoding', function () { const resource = uri.file(path.join(testDir, 'index.html')); - service.resolveContent(resource, { encoding: 'superduper' }).done(c => { + return service.resolveContent(resource, { encoding: 'superduper' }).then(c => { assert.equal(c.encoding, 'utf8'); - - done(); - }, error => onError(error, done)); + }); }); - test('watchFileChanges', function (done: () => void) { + test('watchFileChanges', function (done) { const toWatch = uri.file(path.join(testDir, 'index.html')); service.watchFileChanges(toWatch); @@ -969,7 +873,7 @@ suite('FileService', () => { }, 100); }); - test('watchFileChanges - support atomic save', function (done: () => void) { + test('watchFileChanges - support atomic save', function (done) { const toWatch = uri.file(path.join(testDir, 'index.html')); service.watchFileChanges(toWatch); @@ -991,14 +895,14 @@ suite('FileService', () => { }, 100); }); - test('options - encoding', function (done: () => void) { + test('options - encoding', function () { // setup const _id = uuid.generateUuid(); const _testDir = path.join(parentDir, _id); const _sourceDir = require.toUrl('./fixtures/service'); - extfs.copy(_sourceDir, _testDir, () => { + return pfs.copy(_sourceDir, _testDir).then(() => { const encodingOverride: IEncodingOverride[] = []; encodingOverride.push({ resource: uri.file(path.join(testDir, 'deep')), @@ -1015,21 +919,20 @@ suite('FileService', () => { disableWatcher: true }); - _service.resolveContent(uri.file(path.join(testDir, 'index.html'))).done(c => { + return _service.resolveContent(uri.file(path.join(testDir, 'index.html'))).then(c => { assert.equal(c.encoding, 'windows1252'); - return _service.resolveContent(uri.file(path.join(testDir, 'deep', 'conway.js'))).done(c => { + return _service.resolveContent(uri.file(path.join(testDir, 'deep', 'conway.js'))).then(c => { assert.equal(c.encoding, 'utf16le'); // teardown _service.dispose(); - done(); }); }); }); }); - test('UTF 8 BOMs', function (done: () => void) { + test('UTF 8 BOMs', function () { // setup const _id = uuid.generateUuid(); @@ -1041,38 +944,37 @@ suite('FileService', () => { disableWatcher: true }); - extfs.copy(_sourceDir, _testDir, () => { - fs.readFile(resource.fsPath, (error, data) => { + return pfs.copy(_sourceDir, _testDir).then(() => { + return pfs.readFile(resource.fsPath).then(data => { assert.equal(encodingLib.detectEncodingByBOMFromBuffer(data, 512), null); const model = TextModel.createFromString('Hello Bom'); // Update content: UTF_8 => UTF_8_BOM - _service.updateContent(resource, model.createSnapshot(), { encoding: encodingLib.UTF8_with_bom }).done(() => { - fs.readFile(resource.fsPath, (error, data) => { + return _service.updateContent(resource, model.createSnapshot(), { encoding: encodingLib.UTF8_with_bom }).then(() => { + return pfs.readFile(resource.fsPath).then(data => { assert.equal(encodingLib.detectEncodingByBOMFromBuffer(data, 512), encodingLib.UTF8); // Update content: PRESERVE BOM when using UTF-8 model.setValue('Please stay Bom'); - _service.updateContent(resource, model.createSnapshot(), { encoding: encodingLib.UTF8 }).done(() => { - fs.readFile(resource.fsPath, (error, data) => { + return _service.updateContent(resource, model.createSnapshot(), { encoding: encodingLib.UTF8 }).then(() => { + return pfs.readFile(resource.fsPath).then(data => { assert.equal(encodingLib.detectEncodingByBOMFromBuffer(data, 512), encodingLib.UTF8); // Update content: REMOVE BOM model.setValue('Go away Bom'); - _service.updateContent(resource, model.createSnapshot(), { encoding: encodingLib.UTF8, overwriteEncoding: true }).done(() => { - fs.readFile(resource.fsPath, (error, data) => { + return _service.updateContent(resource, model.createSnapshot(), { encoding: encodingLib.UTF8, overwriteEncoding: true }).then(() => { + return pfs.readFile(resource.fsPath).then(data => { assert.equal(encodingLib.detectEncodingByBOMFromBuffer(data, 512), null); // Update content: BOM comes not back model.setValue('Do not come back Bom'); - _service.updateContent(resource, model.createSnapshot(), { encoding: encodingLib.UTF8 }).done(() => { - fs.readFile(resource.fsPath, (error, data) => { + return _service.updateContent(resource, model.createSnapshot(), { encoding: encodingLib.UTF8 }).then(() => { + return pfs.readFile(resource.fsPath).then(data => { assert.equal(encodingLib.detectEncodingByBOMFromBuffer(data, 512), null); model.dispose(); _service.dispose(); - done(); }); }); }); @@ -1085,21 +987,19 @@ suite('FileService', () => { }); }); - test('resolveContent - from position (ASCII)', function (done: () => void) { + test('resolveContent - from position (ASCII)', function () { const resource = uri.file(path.join(testDir, 'small.txt')); - service.resolveContent(resource, { position: 6 }).done(content => { + return service.resolveContent(resource, { position: 6 }).then(content => { assert.equal(content.value, 'File'); - done(); - }, error => onError(error, done)); + }); }); - test('resolveContent - from position (with umlaut)', function (done: () => void) { + test('resolveContent - from position (with umlaut)', function () { const resource = uri.file(path.join(testDir, 'small_umlaut.txt')); - service.resolveContent(resource, { position: Buffer.from('Small File with Ü').length }).done(content => { + return service.resolveContent(resource, { position: Buffer.from('Small File with Ü').length }).then(content => { assert.equal(content.value, 'mlaut'); - done(); - }, error => onError(error, done)); + }); }); }); diff --git a/src/vs/workbench/services/files/test/node/resolver.test.ts b/src/vs/workbench/services/files/test/node/resolver.test.ts index 4b9298f83fd..2d410fd0edc 100644 --- a/src/vs/workbench/services/files/test/node/resolver.test.ts +++ b/src/vs/workbench/services/files/test/node/resolver.test.ts @@ -31,9 +31,9 @@ function toResource(relativePath: string): uri { suite('Stat Resolver', () => { - test('resolve file', function (done: () => void) { + test('resolve file', function () { let resolver = create('/index.html'); - resolver.resolve(null).then(result => { + return resolver.resolve(null).then(result => { assert.ok(!result.isDirectory); assert.equal(result.name, 'index.html'); assert.ok(!!result.etag); @@ -42,16 +42,15 @@ suite('Stat Resolver', () => { return resolver.resolve(null).then(result => { assert.ok(result.isDirectory); }); - }) - .done(() => done(), done); + }); }); - test('resolve directory', function (done: () => void) { + test('resolve directory', function () { let testsElements = ['examples', 'other', 'index.html', 'site.css']; let resolver = create('/'); - resolver.resolve(null).then(result => { + return resolver.resolve(null).then(result => { assert.ok(result); assert.ok(result.children); assert.ok(result.children.length > 0); @@ -78,14 +77,13 @@ suite('Stat Resolver', () => { assert.ok(!'Unexpected value ' + path.basename(value.resource.fsPath)); } }); - }) - .done(() => done(), done); + }); }); - test('resolve directory - resolveTo single directory', function (done: () => void) { + test('resolve directory - resolveTo single directory', function () { let resolver = create('/'); - resolver.resolve({ resolveTo: [toResource('other/deep')] }).then(result => { + return resolver.resolve({ resolveTo: [toResource('other/deep')] }).then(result => { assert.ok(result); assert.ok(result.children); assert.ok(result.children.length > 0); @@ -102,14 +100,13 @@ suite('Stat Resolver', () => { assert.ok(deep); assert.ok(deep.children.length > 0); assert.equal(deep.children.length, 4); - }) - .done(() => done(), done); + }); }); - test('resolve directory - resolveTo single directory - mixed casing', function (done: () => void) { + test('resolve directory - resolveTo single directory - mixed casing', function () { let resolver = create('/'); - resolver.resolve({ resolveTo: [toResource('other/Deep')] }).then(result => { + return resolver.resolve({ resolveTo: [toResource('other/Deep')] }).then(result => { assert.ok(result); assert.ok(result.children); assert.ok(result.children.length > 0); @@ -131,14 +128,13 @@ suite('Stat Resolver', () => { assert.ok(deep.children.length > 0); assert.equal(deep.children.length, 4); } - }) - .done(() => done(), done); + }); }); - test('resolve directory - resolveTo multiple directories', function (done: () => void) { + test('resolve directory - resolveTo multiple directories', function () { let resolver = create('/'); - resolver.resolve({ resolveTo: [toResource('other/deep'), toResource('examples')] }).then(result => { + return resolver.resolve({ resolveTo: [toResource('other/deep'), toResource('examples')] }).then(result => { assert.ok(result); assert.ok(result.children); assert.ok(result.children.length > 0); @@ -160,14 +156,13 @@ suite('Stat Resolver', () => { assert.ok(examples); assert.ok(examples.children.length > 0); assert.equal(examples.children.length, 4); - }) - .done(() => done(), done); + }); }); - test('resolve directory - resolveSingleChildFolders', function (done: () => void) { + test('resolve directory - resolveSingleChildFolders', function () { let resolver = create('/other'); - resolver.resolve({ resolveSingleChildDescendants: true }).then(result => { + return resolver.resolve({ resolveSingleChildDescendants: true }).then(result => { assert.ok(result); assert.ok(result.children); assert.ok(result.children.length > 0); @@ -180,7 +175,6 @@ suite('Stat Resolver', () => { assert.ok(deep); assert.ok(deep.children.length > 0); assert.equal(deep.children.length, 4); - }) - .done(() => done(), done); + }); }); }); diff --git a/src/vs/workbench/services/keybinding/test/keyboardMapperTestUtils.ts b/src/vs/workbench/services/keybinding/test/keyboardMapperTestUtils.ts index 57bab2d3412..6cf36eab48f 100644 --- a/src/vs/workbench/services/keybinding/test/keyboardMapperTestUtils.ts +++ b/src/vs/workbench/services/keybinding/test/keyboardMapperTestUtils.ts @@ -62,20 +62,16 @@ export function readRawMapping(file: string): TPromise { }); } -export function assertMapping(writeFileIfDifferent: boolean, mapper: IKeyboardMapper, file: string, done: (err?: any) => void): void { +export function assertMapping(writeFileIfDifferent: boolean, mapper: IKeyboardMapper, file: string): TPromise { const filePath = require.toUrl(`vs/workbench/services/keybinding/test/${file}`); - readFile(filePath).then((buff) => { + return readFile(filePath).then((buff) => { let expected = buff.toString(); const actual = mapper.dumpDebugInfo(); if (actual !== expected && writeFileIfDifferent) { writeFile(filePath, actual); } - try { - assert.deepEqual(actual.split(/\r\n|\n/), expected.split(/\r\n|\n/)); - } catch (err) { - return done(err); - } - done(); - }, done); + + assert.deepEqual(actual.split(/\r\n|\n/), expected.split(/\r\n|\n/)); + }); } diff --git a/src/vs/workbench/services/keybinding/test/macLinuxKeyboardMapper.test.ts b/src/vs/workbench/services/keybinding/test/macLinuxKeyboardMapper.test.ts index bd0f29a1abe..6f414ca6387 100644 --- a/src/vs/workbench/services/keybinding/test/macLinuxKeyboardMapper.test.ts +++ b/src/vs/workbench/services/keybinding/test/macLinuxKeyboardMapper.test.ts @@ -27,15 +27,14 @@ suite('keyboardMapper - MAC de_ch', () => { let mapper: MacLinuxKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(false, 'mac_de_ch', OperatingSystem.Macintosh).then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(false, 'mac_de_ch', OperatingSystem.Macintosh).then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'mac_de_ch.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'mac_de_ch.txt'); }); function assertKeybindingTranslation(kb: number, expected: string | string[]): void { @@ -378,15 +377,14 @@ suite('keyboardMapper - MAC en_us', () => { let mapper: MacLinuxKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(true, 'mac_en_us', OperatingSystem.Macintosh).then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(true, 'mac_en_us', OperatingSystem.Macintosh).then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'mac_en_us.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'mac_en_us.txt'); }); test('resolveUserBinding Cmd+[Comma] Cmd+/', () => { @@ -457,15 +455,14 @@ suite('keyboardMapper - LINUX de_ch', () => { let mapper: MacLinuxKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(false, 'linux_de_ch', OperatingSystem.Linux).then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(false, 'linux_de_ch', OperatingSystem.Linux).then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'linux_de_ch.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'linux_de_ch.txt'); }); function assertKeybindingTranslation(kb: number, expected: string | string[]): void { @@ -808,15 +805,14 @@ suite('keyboardMapper - LINUX en_us', () => { let mapper: MacLinuxKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(true, 'linux_en_us', OperatingSystem.Linux).then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(true, 'linux_en_us', OperatingSystem.Linux).then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'linux_en_us.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'linux_en_us.txt'); }); function _assertResolveKeybinding(k: number, expected: IResolvedKeybinding[]): void { @@ -1328,15 +1324,14 @@ suite('keyboardMapper - LINUX ru', () => { let mapper: MacLinuxKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(false, 'linux_ru', OperatingSystem.Linux).then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(false, 'linux_ru', OperatingSystem.Linux).then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'linux_ru.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'linux_ru.txt'); }); function _assertResolveKeybinding(k: number, expected: IResolvedKeybinding[]): void { @@ -1363,15 +1358,14 @@ suite('keyboardMapper - LINUX en_uk', () => { let mapper: MacLinuxKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(false, 'linux_en_uk', OperatingSystem.Linux).then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(false, 'linux_en_uk', OperatingSystem.Linux).then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'linux_en_uk.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'linux_en_uk.txt'); }); test('issue #24522: resolveKeyboardEvent Ctrl+Alt+[Minus]', () => { @@ -1402,15 +1396,14 @@ suite('keyboardMapper - MAC zh_hant', () => { let mapper: MacLinuxKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(false, 'mac_zh_hant', OperatingSystem.Macintosh).then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(false, 'mac_zh_hant', OperatingSystem.Macintosh).then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'mac_zh_hant.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'mac_zh_hant.txt'); }); function _assertResolveKeybinding(k: number, expected: IResolvedKeybinding[]): void { diff --git a/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts b/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts index f66d60bf206..85bae2537ac 100644 --- a/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts +++ b/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts @@ -28,15 +28,14 @@ suite('keyboardMapper - WINDOWS de_ch', () => { let mapper: WindowsKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(false, 'win_de_ch').then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(false, 'win_de_ch').then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'win_de_ch.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'win_de_ch.txt'); }); test('resolveKeybinding Ctrl+A', () => { @@ -321,15 +320,14 @@ suite('keyboardMapper - WINDOWS en_us', () => { let mapper: WindowsKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(true, 'win_en_us').then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(true, 'win_en_us').then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'win_en_us.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'win_en_us.txt'); }); test('resolveKeybinding Ctrl+K Ctrl+\\', () => { @@ -410,15 +408,14 @@ suite('keyboardMapper - WINDOWS por_ptb', () => { let mapper: WindowsKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(false, 'win_por_ptb').then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(false, 'win_por_ptb').then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'win_por_ptb.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'win_por_ptb.txt'); }); test('resolveKeyboardEvent Ctrl+[IntlRo]', () => { @@ -472,15 +469,14 @@ suite('keyboardMapper - WINDOWS ru', () => { let mapper: WindowsKeyboardMapper; - suiteSetup((done) => { - createKeyboardMapper(false, 'win_ru').then((_mapper) => { + suiteSetup(() => { + return createKeyboardMapper(false, 'win_ru').then((_mapper) => { mapper = _mapper; - done(); - }, done); + }); }); - test('mapping', (done) => { - assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'win_ru.txt', done); + test('mapping', () => { + return assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'win_ru.txt'); }); test('issue ##24361: resolveKeybinding Ctrl+K Ctrl+K', () => { diff --git a/src/vs/workbench/services/progress/test/progressService.test.ts b/src/vs/workbench/services/progress/test/progressService.test.ts index b47aad236ff..0f8a924c3fd 100644 --- a/src/vs/workbench/services/progress/test/progressService.test.ts +++ b/src/vs/workbench/services/progress/test/progressService.test.ts @@ -280,12 +280,12 @@ suite('Progress Service', () => { // Acive: Show While let p = TPromise.as(null); - service.showWhile(p).then(() => { + return service.showWhile(p).then(() => { assert.strictEqual(true, testProgressBar.fDone); viewletService.onDidViewletCloseEmitter.fire(testViewlet); p = TPromise.as(null); - service.showWhile(p).then(() => { + return service.showWhile(p).then(() => { assert.strictEqual(true, testProgressBar.fDone); viewletService.onDidViewletOpenEmitter.fire(testViewlet); diff --git a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts index d747bb23b3f..e85af8ad8b6 100644 --- a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts @@ -12,7 +12,7 @@ import { EncodingMode } from 'vs/workbench/common/editor'; import { TextFileEditorModel, SaveSequentializer } from 'vs/workbench/services/textfile/common/textFileEditorModel'; import { ITextFileService, ModelState, StateChange } from 'vs/workbench/services/textfile/common/textfiles'; import { workbenchInstantiationService, TestTextFileService, createFileInput, TestFileService } from 'vs/workbench/test/workbenchTestServices'; -import { onError, toResource } from 'vs/base/test/common/utils'; +import { toResource } from 'vs/base/test/common/utils'; import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager'; import { FileOperationResult, FileOperationError, IFileService, snapshotToString } from 'vs/platform/files/common/files'; import { IModelService } from 'vs/editor/common/services/modelService'; @@ -46,10 +46,10 @@ suite('Files - TextFileEditorModel', () => { accessor.fileService.setContent(content); }); - test('Save', function (done) { + test('Save', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('bar'); assert.ok(getLastModifiedTime(model) <= Date.now()); @@ -59,10 +59,8 @@ suite('Files - TextFileEditorModel', () => { model.dispose(); assert.ok(!accessor.modelService.getModel(model.getResource())); - - done(); }); - }, error => onError(error, done)); + }); }); test('setEncoding - encode', function () { @@ -88,19 +86,17 @@ suite('Files - TextFileEditorModel', () => { model.dispose(); }); - test('disposes when underlying model is destroyed', function (done) { + test('disposes when underlying model is destroyed', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.dispose(); assert.ok(model.isDisposed()); - - done(); - }, error => onError(error, done)); + }); }); - test('Load does not trigger save', function (done) { + test('Load does not trigger save', function () { const model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index.txt'), 'utf8'); assert.ok(model.hasState(ModelState.SAVED)); @@ -108,21 +104,19 @@ suite('Files - TextFileEditorModel', () => { assert.ok(e !== StateChange.DIRTY && e !== StateChange.SAVED); }); - model.load().done(() => { + return model.load().then(() => { assert.ok(model.isResolved()); model.dispose(); assert.ok(!accessor.modelService.getModel(model.getResource())); - - done(); - }, error => onError(error, done)); + }); }); - test('Load returns dirty model as long as model is dirty', function (done) { + test('Load returns dirty model as long as model is dirty', function () { const model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.ok(model.isDirty()); @@ -131,13 +125,11 @@ suite('Files - TextFileEditorModel', () => { assert.ok(model.isDirty()); model.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('Revert', function (done) { + test('Revert', function () { let eventCounter = 0; const model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); @@ -148,7 +140,7 @@ suite('Files - TextFileEditorModel', () => { } }); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.ok(model.isDirty()); @@ -159,13 +151,11 @@ suite('Files - TextFileEditorModel', () => { assert.equal(eventCounter, 1); model.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('Revert (soft)', function (done) { + test('Revert (soft)', function () { let eventCounter = 0; const model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); @@ -176,7 +166,7 @@ suite('Files - TextFileEditorModel', () => { } }); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.ok(model.isDirty()); @@ -187,30 +177,26 @@ suite('Files - TextFileEditorModel', () => { assert.equal(eventCounter, 1); model.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('Load and undo turns model dirty', function (done) { + test('Load and undo turns model dirty', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); - model.load().done(() => { + return model.load().then(() => { accessor.fileService.setContent('Hello Change'); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.undo(); assert.ok(model.isDirty()); - - done(); }); - }, error => onError(error, done)); + }); }); - test('File not modified error is handled gracefully', function (done) { + test('File not modified error is handled gracefully', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); - model.load().done(() => { + return model.load().then(() => { const mtime = getLastModifiedTime(model); accessor.textFileService.setResolveTextContentErrorOnce(new FileOperationError('error', FileOperationResult.FILE_NOT_MODIFIED_SINCE)); @@ -218,32 +204,28 @@ suite('Files - TextFileEditorModel', () => { assert.ok(model); assert.equal(getLastModifiedTime(model), mtime); model.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('Load error is handled gracefully if model already exists', function (done) { + test('Load error is handled gracefully if model already exists', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); - model.load().done(() => { + return model.load().then(() => { accessor.textFileService.setResolveTextContentErrorOnce(new FileOperationError('error', FileOperationResult.FILE_NOT_FOUND)); return model.load().then((model: TextFileEditorModel) => { assert.ok(model); model.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('save() and isDirty() - proper with check for mtimes', function (done) { + test('save() and isDirty() - proper with check for mtimes', function () { const input1 = createFileInput(instantiationService, toResource.call(this, '/path/index_async2.txt')); const input2 = createFileInput(instantiationService, toResource.call(this, '/path/index_async.txt')); - input1.resolve().done((model1: TextFileEditorModel) => { + return input1.resolve().then((model1: TextFileEditorModel) => { return input2.resolve().then((model2: TextFileEditorModel) => { model1.textEditorModel.setValue('foo'); @@ -270,15 +252,13 @@ suite('Files - TextFileEditorModel', () => { model1.dispose(); model2.dispose(); - - done(); }); }); }); - }, error => onError(error, done)); + }); }); - test('Save Participant', function (done) { + test('Save Participant', function () { let eventCounter = 0; const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); @@ -300,20 +280,18 @@ suite('Files - TextFileEditorModel', () => { } }); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); return model.save().then(() => { model.dispose(); assert.equal(eventCounter, 2); - - done(); }); - }, error => onError(error, done)); + }); }); - test('Save Participant, async participant', function (done) { + test('Save Participant, async participant', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); @@ -323,19 +301,18 @@ suite('Files - TextFileEditorModel', () => { } }); - return model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); + const now = Date.now(); return model.save().then(() => { assert.ok(Date.now() - now >= 10); model.dispose(); - - done(); }); - }, error => onError(error, done)); + }); }); - test('Save Participant, bad participant', function (done) { + test('Save Participant, bad participant', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/index_async.txt'), 'utf8'); TextFileEditorModel.setSaveParticipant({ @@ -347,17 +324,12 @@ suite('Files - TextFileEditorModel', () => { return model.load().then(() => { model.textEditorModel.setValue('foo'); return model.save().then(() => { - assert.ok(true); model.dispose(); - - done(); - }, err => { - assert.ok(false); }); - }, error => onError(error, done)); + }); }); - test('SaveSequentializer - pending basics', function (done) { + test('SaveSequentializer - pending basics', function () { const sequentializer = new SaveSequentializer(); assert.ok(!sequentializer.hasPendingSave()); @@ -381,12 +353,10 @@ suite('Files - TextFileEditorModel', () => { assert.ok(!sequentializer.hasPendingSave()); assert.ok(!sequentializer.hasPendingSave(2)); assert.ok(!sequentializer.pendingSave); - - done(); }); }); - test('SaveSequentializer - pending and next (finishes instantly)', function (done) { + test('SaveSequentializer - pending and next (finishes instantly)', function () { const sequentializer = new SaveSequentializer(); let pendingDone = false; @@ -399,12 +369,10 @@ suite('Files - TextFileEditorModel', () => { return res.done(() => { assert.ok(pendingDone); assert.ok(nextDone); - - done(); }); }); - test('SaveSequentializer - pending and next (finishes after timeout)', function (done) { + test('SaveSequentializer - pending and next (finishes after timeout)', function () { const sequentializer = new SaveSequentializer(); let pendingDone = false; @@ -417,12 +385,10 @@ suite('Files - TextFileEditorModel', () => { return res.done(() => { assert.ok(pendingDone); assert.ok(nextDone); - - done(); }); }); - test('SaveSequentializer - pending and multiple next (last one wins)', function (done) { + test('SaveSequentializer - pending and multiple next (last one wins)', function () { const sequentializer = new SaveSequentializer(); let pendingDone = false; @@ -443,8 +409,6 @@ suite('Files - TextFileEditorModel', () => { assert.ok(!firstDone); assert.ok(!secondDone); assert.ok(thirdDone); - - done(); }); }); }); diff --git a/src/vs/workbench/services/textfile/test/textFileEditorModelManager.test.ts b/src/vs/workbench/services/textfile/test/textFileEditorModelManager.test.ts index 99275a3e567..45cdeaa6e96 100644 --- a/src/vs/workbench/services/textfile/test/textFileEditorModelManager.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileEditorModelManager.test.ts @@ -12,7 +12,6 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager'; import { join } from 'vs/base/common/paths'; import { workbenchInstantiationService, TestEditorGroupService, TestFileService } from 'vs/workbench/test/workbenchTestServices'; -import { onError } from 'vs/base/test/common/utils'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel'; import { IFileService, FileChangesEvent, FileChangeType } from 'vs/platform/files/common/files'; @@ -103,12 +102,12 @@ suite('Files - TextFileEditorModelManager', () => { model3.dispose(); }); - test('loadOrCreate', function (done) { + test('loadOrCreate', function () { const manager: TestTextFileEditorModelManager = instantiationService.createInstance(TestTextFileEditorModelManager); const resource = URI.file('/test.html'); const encoding = 'utf8'; - manager.loadOrCreate(resource, { encoding, reload: true }).done(model => { + return manager.loadOrCreate(resource, { encoding, reload: true }).then(model => { assert.ok(model); assert.equal(model.getEncoding(), encoding); assert.equal(manager.get(resource), model); @@ -123,11 +122,9 @@ suite('Files - TextFileEditorModelManager', () => { assert.equal(manager.get(resource), model3); model3.dispose(); - - done(); }); }); - }, error => onError(error, done)); + }); }); test('removed from cache when model disposed', function () { @@ -150,7 +147,7 @@ suite('Files - TextFileEditorModelManager', () => { model3.dispose(); }); - test('events', function (done) { + test('events', function () { TextFileEditorModel.DEFAULT_CONTENT_CHANGE_BUFFER_DELAY = 0; TextFileEditorModel.DEFAULT_ORPHANED_CHANGE_BUFFER_DELAY = 0; @@ -200,7 +197,7 @@ suite('Files - TextFileEditorModelManager', () => { disposeCounter++; }); - manager.loadOrCreate(resource1, { encoding: 'utf8' }).done(model1 => { + return manager.loadOrCreate(resource1, { encoding: 'utf8' }).then(model1 => { accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource: resource1, type: FileChangeType.DELETED }])); accessor.fileService.fireFileChanges(new FileChangesEvent([{ resource: resource1, type: FileChangeType.ADDED }])); @@ -223,7 +220,7 @@ suite('Files - TextFileEditorModelManager', () => { assert.equal(encodingCounter, 2); // content change event if done async - TPromise.timeout(10).then(() => { + return TPromise.timeout(10).then(() => { assert.equal(contentCounter, 2); model1.dispose(); @@ -231,17 +228,15 @@ suite('Files - TextFileEditorModelManager', () => { assert.ok(!accessor.modelService.getModel(resource1)); assert.ok(!accessor.modelService.getModel(resource2)); - - done(); }); }); }); }); }); - }, error => onError(error, done)); + }); }); - test('events debounced', function (done) { + test('events debounced', function () { const manager: TestTextFileEditorModelManager = instantiationService.createInstance(TestTextFileEditorModelManager); const resource1 = toResource('/path/index.txt'); @@ -268,7 +263,7 @@ suite('Files - TextFileEditorModelManager', () => { assert.equal(e[0].resource.toString(), resource1.toString()); }); - manager.loadOrCreate(resource1, { encoding: 'utf8' }).done(model1 => { + return manager.loadOrCreate(resource1, { encoding: 'utf8' }).then(model1 => { return manager.loadOrCreate(resource2, { encoding: 'utf8' }).then(model2 => { model1.textEditorModel.setValue('changed'); model1.updatePreferredEncoding('utf16'); @@ -291,38 +286,35 @@ suite('Files - TextFileEditorModelManager', () => { assert.ok(!accessor.modelService.getModel(resource1)); assert.ok(!accessor.modelService.getModel(resource2)); - - done(); }); }); }); }); }); - }, error => onError(error, done)); + }); }); - test('disposing model takes it out of the manager', function (done) { + test('disposing model takes it out of the manager', function () { const manager: TestTextFileEditorModelManager = instantiationService.createInstance(TestTextFileEditorModelManager); const resource = toResource('/path/index_something.txt'); - manager.loadOrCreate(resource, { encoding: 'utf8' }).done(model => { + return manager.loadOrCreate(resource, { encoding: 'utf8' }).then(model => { model.dispose(); assert.ok(!manager.get(resource)); assert.ok(!accessor.modelService.getModel(model.getResource())); manager.dispose(); - done(); - }, error => onError(error, done)); + }); }); - test('dispose prevents dirty model from getting disposed', function (done) { + test('dispose prevents dirty model from getting disposed', function () { const manager: TestTextFileEditorModelManager = instantiationService.createInstance(TestTextFileEditorModelManager); const resource = toResource('/path/index_something.txt'); - manager.loadOrCreate(resource, { encoding: 'utf8' }).done(model => { + return manager.loadOrCreate(resource, { encoding: 'utf8' }).then(model => { model.textEditorModel.setValue('make dirty'); manager.disposeModel(model as TextFileEditorModel); @@ -334,7 +326,6 @@ suite('Files - TextFileEditorModelManager', () => { assert.ok(model.isDisposed()); manager.dispose(); - done(); - }, error => onError(error, done)); + }); }); }); \ No newline at end of file diff --git a/src/vs/workbench/services/textfile/test/textFileService.test.ts b/src/vs/workbench/services/textfile/test/textFileService.test.ts index 3fe68e030d9..e6d16134bfd 100644 --- a/src/vs/workbench/services/textfile/test/textFileService.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileService.test.ts @@ -9,7 +9,7 @@ import * as platform from 'vs/base/common/platform'; import { TPromise } from 'vs/base/common/winjs.base'; import { ILifecycleService, ShutdownEvent, ShutdownReason } from 'vs/platform/lifecycle/common/lifecycle'; import { workbenchInstantiationService, TestLifecycleService, TestTextFileService, TestWindowsService, TestContextService } from 'vs/workbench/test/workbenchTestServices'; -import { onError, toResource } from 'vs/base/test/common/utils'; +import { toResource } from 'vs/base/test/common/utils'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IWindowsService } from 'vs/platform/windows/common/windows'; import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel'; @@ -77,14 +77,14 @@ suite('Files - TextFileService', () => { } }); - test('confirm onWillShutdown - veto if user cancels', function (done) { + test('confirm onWillShutdown - veto if user cancels', function () { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8'); (accessor.textFileService.models).add(model.getResource(), model); const service = accessor.textFileService; service.setConfirmResult(ConfirmResult.CANCEL); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.equal(service.getDirty().length, 1); @@ -93,12 +93,10 @@ suite('Files - TextFileService', () => { accessor.lifecycleService.fireWillShutdown(event); assert.ok(event.value); - - done(); - }, error => onError(error, done)); + }); }); - test('confirm onWillShutdown - no veto and backups cleaned up if user does not want to save (hot.exit: off)', function (done) { + test('confirm onWillShutdown - no veto and backups cleaned up if user does not want to save (hot.exit: off)', function () { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8'); (accessor.textFileService.models).add(model.getResource(), model); @@ -106,7 +104,7 @@ suite('Files - TextFileService', () => { service.setConfirmResult(ConfirmResult.DONT_SAVE); service.onFilesConfigurationChange({ files: { hotExit: 'off' } }); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.equal(service.getDirty().length, 1); @@ -119,19 +117,17 @@ suite('Files - TextFileService', () => { assert.ok(service.cleanupBackupsBeforeShutdownCalled); assert.ok(!veto); - done(); + return void 0; } else { - veto.then(veto => { + return veto.then(veto => { assert.ok(service.cleanupBackupsBeforeShutdownCalled); assert.ok(!veto); - - done(); }); } - }, error => onError(error, done)); + }); }); - test('confirm onWillShutdown - save (hot.exit: off)', function (done) { + test('confirm onWillShutdown - save (hot.exit: off)', function () { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8'); (accessor.textFileService.models).add(model.getResource(), model); @@ -139,7 +135,7 @@ suite('Files - TextFileService', () => { service.setConfirmResult(ConfirmResult.SAVE); service.onFilesConfigurationChange({ files: { hotExit: 'off' } }); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.equal(service.getDirty().length, 1); @@ -150,18 +146,16 @@ suite('Files - TextFileService', () => { return (>event.value).then(veto => { assert.ok(!veto); assert.ok(!model.isDirty()); - - done(); }); - }, error => onError(error, done)); + }); }); - test('isDirty/getDirty - files and untitled', function (done) { + test('isDirty/getDirty - files and untitled', function () { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8'); (accessor.textFileService.models).add(model.getResource(), model); const service = accessor.textFileService; - model.load().done(() => { + return model.load().then(() => { assert.ok(!service.isDirty(model.getResource())); model.textEditorModel.setValue('foo'); @@ -178,19 +172,17 @@ suite('Files - TextFileService', () => { assert.ok(service.isDirty(untitled.getResource())); assert.equal(service.getDirty().length, 2); assert.equal(service.getDirty([untitled.getResource()])[0].toString(), untitled.getResource().toString()); - - done(); }); - }, error => onError(error, done)); + }); }); - test('save - file', function (done) { + test('save - file', function () { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8'); (accessor.textFileService.models).add(model.getResource(), model); const service = accessor.textFileService; - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.ok(service.isDirty(model.getResource())); @@ -198,19 +190,17 @@ suite('Files - TextFileService', () => { return service.save(model.getResource()).then(res => { assert.ok(res); assert.ok(!service.isDirty(model.getResource())); - - done(); }); - }, error => onError(error, done)); + }); }); - test('saveAll - file', function (done) { + test('saveAll - file', function () { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8'); (accessor.textFileService.models).add(model.getResource(), model); const service = accessor.textFileService; - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.ok(service.isDirty(model.getResource())); @@ -220,20 +210,18 @@ suite('Files - TextFileService', () => { assert.ok(!service.isDirty(model.getResource())); assert.equal(res.results.length, 1); assert.equal(res.results[0].source.toString(), model.getResource().toString()); - - done(); }); - }, error => onError(error, done)); + }); }); - test('saveAs - file', function (done) { + test('saveAs - file', function () { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8'); (accessor.textFileService.models).add(model.getResource(), model); const service = accessor.textFileService; service.setPromptPath(model.getResource().fsPath); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.ok(service.isDirty(model.getResource())); @@ -241,20 +229,18 @@ suite('Files - TextFileService', () => { return service.saveAs(model.getResource()).then(res => { assert.equal(res.toString(), model.getResource().toString()); assert.ok(!service.isDirty(model.getResource())); - - done(); }); - }, error => onError(error, done)); + }); }); - test('revert - file', function (done) { + test('revert - file', function () { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8'); (accessor.textFileService.models).add(model.getResource(), model); const service = accessor.textFileService; service.setPromptPath(model.getResource().fsPath); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.ok(service.isDirty(model.getResource())); @@ -262,116 +248,114 @@ suite('Files - TextFileService', () => { return service.revert(model.getResource()).then(res => { assert.ok(res); assert.ok(!service.isDirty(model.getResource())); - - done(); }); - }, error => onError(error, done)); + }); }); suite('Hot Exit', () => { suite('"onExit" setting', () => { - test('should hot exit on non-Mac (reason: CLOSE, windows: single, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.CLOSE, false, true, !!platform.isMacintosh, done); + test('should hot exit on non-Mac (reason: CLOSE, windows: single, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.CLOSE, false, true, !!platform.isMacintosh); }); - test('should hot exit on non-Mac (reason: CLOSE, windows: single, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.CLOSE, false, false, !!platform.isMacintosh, done); + test('should hot exit on non-Mac (reason: CLOSE, windows: single, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.CLOSE, false, false, !!platform.isMacintosh); }); - test('should NOT hot exit (reason: CLOSE, windows: multiple, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.CLOSE, true, true, true, done); + test('should NOT hot exit (reason: CLOSE, windows: multiple, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.CLOSE, true, true, true); }); - test('should NOT hot exit (reason: CLOSE, windows: multiple, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.CLOSE, true, false, true, done); + test('should NOT hot exit (reason: CLOSE, windows: multiple, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.CLOSE, true, false, true); }); - test('should hot exit (reason: QUIT, windows: single, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.QUIT, false, true, false, done); + test('should hot exit (reason: QUIT, windows: single, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.QUIT, false, true, false); }); - test('should hot exit (reason: QUIT, windows: single, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.QUIT, false, false, false, done); + test('should hot exit (reason: QUIT, windows: single, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.QUIT, false, false, false); }); - test('should hot exit (reason: QUIT, windows: multiple, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.QUIT, true, true, false, done); + test('should hot exit (reason: QUIT, windows: multiple, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.QUIT, true, true, false); }); - test('should hot exit (reason: QUIT, windows: multiple, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.QUIT, true, false, false, done); + test('should hot exit (reason: QUIT, windows: multiple, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.QUIT, true, false, false); }); - test('should hot exit (reason: RELOAD, windows: single, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.RELOAD, false, true, false, done); + test('should hot exit (reason: RELOAD, windows: single, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.RELOAD, false, true, false); }); - test('should hot exit (reason: RELOAD, windows: single, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.RELOAD, false, false, false, done); + test('should hot exit (reason: RELOAD, windows: single, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.RELOAD, false, false, false); }); - test('should hot exit (reason: RELOAD, windows: multiple, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.RELOAD, true, true, false, done); + test('should hot exit (reason: RELOAD, windows: multiple, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.RELOAD, true, true, false); }); - test('should hot exit (reason: RELOAD, windows: multiple, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.RELOAD, true, false, false, done); + test('should hot exit (reason: RELOAD, windows: multiple, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.RELOAD, true, false, false); }); - test('should NOT hot exit (reason: LOAD, windows: single, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.LOAD, false, true, true, done); + test('should NOT hot exit (reason: LOAD, windows: single, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.LOAD, false, true, true); }); - test('should NOT hot exit (reason: LOAD, windows: single, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.LOAD, false, false, true, done); + test('should NOT hot exit (reason: LOAD, windows: single, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.LOAD, false, false, true); }); - test('should NOT hot exit (reason: LOAD, windows: multiple, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.LOAD, true, true, true, done); + test('should NOT hot exit (reason: LOAD, windows: multiple, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.LOAD, true, true, true); }); - test('should NOT hot exit (reason: LOAD, windows: multiple, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.LOAD, true, false, true, done); + test('should NOT hot exit (reason: LOAD, windows: multiple, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT, ShutdownReason.LOAD, true, false, true); }); }); suite('"onExitAndWindowClose" setting', () => { - test('should hot exit (reason: CLOSE, windows: single, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.CLOSE, false, true, false, done); + test('should hot exit (reason: CLOSE, windows: single, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.CLOSE, false, true, false); }); - test('should hot exit (reason: CLOSE, windows: single, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.CLOSE, false, false, !!platform.isMacintosh, done); + test('should hot exit (reason: CLOSE, windows: single, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.CLOSE, false, false, !!platform.isMacintosh); }); - test('should hot exit (reason: CLOSE, windows: multiple, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.CLOSE, true, true, false, done); + test('should hot exit (reason: CLOSE, windows: multiple, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.CLOSE, true, true, false); }); - test('should NOT hot exit (reason: CLOSE, windows: multiple, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.CLOSE, true, false, true, done); + test('should NOT hot exit (reason: CLOSE, windows: multiple, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.CLOSE, true, false, true); }); - test('should hot exit (reason: QUIT, windows: single, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.QUIT, false, true, false, done); + test('should hot exit (reason: QUIT, windows: single, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.QUIT, false, true, false); }); - test('should hot exit (reason: QUIT, windows: single, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.QUIT, false, false, false, done); + test('should hot exit (reason: QUIT, windows: single, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.QUIT, false, false, false); }); - test('should hot exit (reason: QUIT, windows: multiple, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.QUIT, true, true, false, done); + test('should hot exit (reason: QUIT, windows: multiple, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.QUIT, true, true, false); }); - test('should hot exit (reason: QUIT, windows: multiple, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.QUIT, true, false, false, done); + test('should hot exit (reason: QUIT, windows: multiple, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.QUIT, true, false, false); }); - test('should hot exit (reason: RELOAD, windows: single, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.RELOAD, false, true, false, done); + test('should hot exit (reason: RELOAD, windows: single, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.RELOAD, false, true, false); }); - test('should hot exit (reason: RELOAD, windows: single, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.RELOAD, false, false, false, done); + test('should hot exit (reason: RELOAD, windows: single, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.RELOAD, false, false, false); }); - test('should hot exit (reason: RELOAD, windows: multiple, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.RELOAD, true, true, false, done); + test('should hot exit (reason: RELOAD, windows: multiple, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.RELOAD, true, true, false); }); - test('should hot exit (reason: RELOAD, windows: multiple, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.RELOAD, true, false, false, done); + test('should hot exit (reason: RELOAD, windows: multiple, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.RELOAD, true, false, false); }); - test('should hot exit (reason: LOAD, windows: single, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.LOAD, false, true, false, done); + test('should hot exit (reason: LOAD, windows: single, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.LOAD, false, true, false); }); - test('should NOT hot exit (reason: LOAD, windows: single, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.LOAD, false, false, true, done); + test('should NOT hot exit (reason: LOAD, windows: single, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.LOAD, false, false, true); }); - test('should hot exit (reason: LOAD, windows: multiple, workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.LOAD, true, true, false, done); + test('should hot exit (reason: LOAD, windows: multiple, workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.LOAD, true, true, false); }); - test('should NOT hot exit (reason: LOAD, windows: multiple, empty workspace)', function (done) { - hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.LOAD, true, false, true, done); + test('should NOT hot exit (reason: LOAD, windows: multiple, empty workspace)', function () { + return hotExitTest.call(this, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE, ShutdownReason.LOAD, true, false, true); }); }); - function hotExitTest(this: any, setting: string, shutdownReason: ShutdownReason, multipleWindows: boolean, workspace: true, shouldVeto: boolean, done: () => void): void { + function hotExitTest(this: any, setting: string, shutdownReason: ShutdownReason, multipleWindows: boolean, workspace: true, shouldVeto: boolean): TPromise { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8'); (accessor.textFileService.models).add(model.getResource(), model); @@ -389,7 +373,7 @@ suite('Files - TextFileService', () => { // Set cancel to force a veto if hot exit does not trigger service.setConfirmResult(ConfirmResult.CANCEL); - model.load().done(() => { + return model.load().then(() => { model.textEditorModel.setValue('foo'); assert.equal(service.getDirty().length, 1); @@ -402,10 +386,8 @@ suite('Files - TextFileService', () => { // When hot exit is set, backups should never be cleaned since the confirm result is cancel assert.ok(!service.cleanupBackupsBeforeShutdownCalled); assert.equal(veto, shouldVeto); - - done(); }); - }, error => onError(error, done)); + }); } }); }); \ No newline at end of file diff --git a/src/vs/workbench/services/textmodelResolver/test/textModelResolverService.test.ts b/src/vs/workbench/services/textmodelResolver/test/textModelResolverService.test.ts index 3c904f154a4..83b68a82c00 100644 --- a/src/vs/workbench/services/textmodelResolver/test/textModelResolverService.test.ts +++ b/src/vs/workbench/services/textmodelResolver/test/textModelResolverService.test.ts @@ -56,7 +56,7 @@ suite('Workbench - TextModelResolverService', () => { accessor.untitledEditorService.revertAll(); }); - test('resolve resource', function (done) { + test('resolve resource', function () { const dispose = accessor.textModelResolverService.registerTextModelContentProvider('test', { provideTextContent: function (resource: URI): TPromise { if (resource.scheme === 'test') { @@ -72,7 +72,7 @@ suite('Workbench - TextModelResolverService', () => { let resource = URI.from({ scheme: 'test', authority: null, path: 'thePath' }); let input: ResourceEditorInput = instantiationService.createInstance(ResourceEditorInput, 'The Name', 'The Description', resource); - input.resolve().then(model => { + return input.resolve().then(model => { assert.ok(model); assert.equal(snapshotToString((model as ResourceEditorModel).createSnapshot()), 'Hello Test'); @@ -85,7 +85,6 @@ suite('Workbench - TextModelResolverService', () => { assert.equal(disposed, true); dispose.dispose(); - done(); }); }); diff --git a/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts b/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts index 7129a92624f..eb05c9676b1 100644 --- a/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts @@ -101,7 +101,7 @@ class MyResourceInput extends ResourceEditorInput { } suite('Workbench BaseEditor', () => { - test('BaseEditor API', function (done) { + test('BaseEditor API', function () { let e = new MyEditor(NullTelemetryService); let input = new MyOtherInput(); let options = new EditorOptions(); @@ -109,7 +109,7 @@ suite('Workbench BaseEditor', () => { assert(!e.isVisible()); assert(!e.input); assert(!e.options); - e.setInput(input, options).then(() => { + return e.setInput(input, options).then(() => { assert.strictEqual(input, e.input); assert.strictEqual(options, e.options); @@ -125,7 +125,7 @@ suite('Workbench BaseEditor', () => { assert(!e.input); assert(!e.options); assert(!e.getControl()); - }).done(() => done()); + }); }); test('EditorDescriptor', function () { diff --git a/src/vs/workbench/test/common/editor/editorDiffModel.test.ts b/src/vs/workbench/test/common/editor/editorDiffModel.test.ts index 554ff73cbcb..3e87ee10ade 100644 --- a/src/vs/workbench/test/common/editor/editorDiffModel.test.ts +++ b/src/vs/workbench/test/common/editor/editorDiffModel.test.ts @@ -38,7 +38,7 @@ suite('Workbench - EditorModel', () => { accessor = instantiationService.createInstance(ServiceAccessor); }); - test('TextDiffEditorModel', function (done) { + test('TextDiffEditorModel', function () { const dispose = accessor.textModelResolverService.registerTextModelContentProvider('test', { provideTextContent: function (resource: URI): TPromise { if (resource.scheme === 'test') { @@ -55,7 +55,7 @@ suite('Workbench - EditorModel', () => { let otherInput = instantiationService.createInstance(ResourceEditorInput, 'name2', 'description', URI.from({ scheme: 'test', authority: null, path: 'thePath' })); let diffInput = new DiffEditorInput('name', 'description', input, otherInput); - diffInput.resolve(true).then((model: any) => { + return diffInput.resolve(true).then((model: any) => { assert(model); assert(model instanceof TextDiffEditorModel); @@ -72,8 +72,6 @@ suite('Workbench - EditorModel', () => { dispose.dispose(); }); - }).done(() => { - done(); }); }); }); diff --git a/src/vs/workbench/test/common/editor/editorModel.test.ts b/src/vs/workbench/test/common/editor/editorModel.test.ts index 843e19701a6..0d02e1a48b0 100644 --- a/src/vs/workbench/test/common/editor/editorModel.test.ts +++ b/src/vs/workbench/test/common/editor/editorModel.test.ts @@ -36,7 +36,7 @@ suite('Workbench - EditorModel', () => { modeService = instantiationService.stub(IModeService, ModeServiceImpl); }); - test('EditorModel', function (done) { + test('EditorModel', function () { let counter = 0; let m = new MyEditorModel(); @@ -46,26 +46,25 @@ suite('Workbench - EditorModel', () => { counter++; }); - m.load().then(model => { + return m.load().then(model => { assert(model === m); assert.strictEqual(m.isResolved(), true); m.dispose(); assert.equal(counter, 1); - }).done(() => done()); + }); }); - test('BaseTextEditorModel', function (done) { + test('BaseTextEditorModel', function () { let modelService = stubModelService(instantiationService); let m = new MyTextEditorModel(modelService, modeService); - m.load().then((model: MyTextEditorModel) => { + return m.load().then((model: MyTextEditorModel) => { assert(model === m); return model.createTextEditorModel(createTextBufferFactory('foo'), null, 'text/plain').then(() => { assert.strictEqual(m.isResolved(), true); }); - }).done(() => { + }).then(() => { m.dispose(); - done(); }); }); diff --git a/src/vs/workbench/test/common/editor/untitledEditor.test.ts b/src/vs/workbench/test/common/editor/untitledEditor.test.ts index 8edf3bb24aa..a30d55d62c3 100644 --- a/src/vs/workbench/test/common/editor/untitledEditor.test.ts +++ b/src/vs/workbench/test/common/editor/untitledEditor.test.ts @@ -102,7 +102,7 @@ suite('Workbench - Untitled Editor', () => { }); model.textEditorModel.setValue('foo bar'); - }); + }, err => done(err)); }); test('Untitled with associated resource', function () { @@ -115,12 +115,12 @@ suite('Workbench - Untitled Editor', () => { untitled.dispose(); }); - test('Untitled no longer dirty when content gets empty', function (done) { + test('Untitled no longer dirty when content gets empty', function () { const service = accessor.untitledEditorService; const input = service.createOrGet(); // dirty - input.resolve().then((model: UntitledEditorModel) => { + return input.resolve().then((model: UntitledEditorModel) => { model.textEditorModel.setValue('foo bar'); assert.ok(model.isDirty()); @@ -128,12 +128,10 @@ suite('Workbench - Untitled Editor', () => { assert.ok(!model.isDirty()); input.dispose(); - - done(); }); }); - test('Untitled via loadOrCreate', function (done) { + test('Untitled via loadOrCreate', function () { const service = accessor.untitledEditorService; service.loadOrCreate().then(model1 => { model1.textEditorModel.setValue('foo bar'); @@ -160,8 +158,6 @@ suite('Workbench - Untitled Editor', () => { model3.dispose(); model4.dispose(); input.dispose(); - - done(); }); }); }); @@ -175,13 +171,13 @@ suite('Workbench - Untitled Editor', () => { assert.ok(service.suggestFileName(input.getResource())); }); - test('Untitled with associated path remains dirty when content gets empty', function (done) { + test('Untitled with associated path remains dirty when content gets empty', function () { const service = accessor.untitledEditorService; const file = URI.file(join('C:\\', '/foo/file.txt')); const input = service.createOrGet(file); // dirty - input.resolve().then((model: UntitledEditorModel) => { + return input.resolve().then((model: UntitledEditorModel) => { model.textEditorModel.setValue('foo bar'); assert.ok(model.isDirty()); @@ -189,8 +185,6 @@ suite('Workbench - Untitled Editor', () => { assert.ok(model.isDirty()); input.dispose(); - - done(); }); }); @@ -225,7 +219,7 @@ suite('Workbench - Untitled Editor', () => { input.dispose(); }); - test('encoding change event', function (done) { + test('encoding change event', function () { const service = accessor.untitledEditorService; const input = service.createOrGet(); @@ -237,18 +231,16 @@ suite('Workbench - Untitled Editor', () => { }); // dirty - input.resolve().then((model: UntitledEditorModel) => { + return input.resolve().then((model: UntitledEditorModel) => { model.setEncoding('utf16'); assert.equal(counter, 1); input.dispose(); - - done(); }); }); - test('onDidChangeContent event', done => { + test('onDidChangeContent event', () => { const service = accessor.untitledEditorService; const input = service.createOrGet(); @@ -261,32 +253,30 @@ suite('Workbench - Untitled Editor', () => { assert.equal(r.toString(), input.getResource().toString()); }); - input.resolve().then((model: UntitledEditorModel) => { + return input.resolve().then((model: UntitledEditorModel) => { model.textEditorModel.setValue('foo'); assert.equal(counter, 0, 'Dirty model should not trigger event immediately'); - TPromise.timeout(3).then(() => { + return TPromise.timeout(3).then(() => { assert.equal(counter, 1, 'Dirty model should trigger event'); model.textEditorModel.setValue('bar'); - TPromise.timeout(3).then(() => { + return TPromise.timeout(3).then(() => { assert.equal(counter, 2, 'Content change when dirty should trigger event'); model.textEditorModel.setValue(''); - TPromise.timeout(3).then(() => { + return TPromise.timeout(3).then(() => { assert.equal(counter, 3, 'Manual revert should trigger event'); model.textEditorModel.setValue('foo'); - TPromise.timeout(3).then(() => { + return TPromise.timeout(3).then(() => { assert.equal(counter, 4, 'Dirty model should trigger event'); model.revert(); - TPromise.timeout(3).then(() => { + return TPromise.timeout(3).then(() => { assert.equal(counter, 5, 'Revert should trigger event'); input.dispose(); - - done(); }); }); }); @@ -295,7 +285,7 @@ suite('Workbench - Untitled Editor', () => { }); }); - test('onDidDisposeModel event', done => { + test('onDidDisposeModel event', () => { const service = accessor.untitledEditorService; const input = service.createOrGet(); @@ -306,12 +296,10 @@ suite('Workbench - Untitled Editor', () => { assert.equal(r.toString(), input.getResource().toString()); }); - input.resolve().then((model: UntitledEditorModel) => { + return input.resolve().then((model: UntitledEditorModel) => { assert.equal(counter, 0); input.dispose(); assert.equal(counter, 1); - - done(); }); }); }); \ No newline at end of file diff --git a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts index 90ac6be2310..e7c23d46798 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts @@ -54,7 +54,7 @@ let originalErrorHandler: (e: any) => any; suite('ExtHostLanguageFeatureCommands', function () { - suiteSetup((done) => { + suiteSetup(() => { originalErrorHandler = errorHandler.getUnexpectedErrorHandler(); setUnexpectedErrorHandler(() => { }); @@ -127,7 +127,7 @@ suite('ExtHostLanguageFeatureCommands', function () { mainThread = rpcProtocol.set(MainContext.MainThreadLanguageFeatures, inst.createInstance(MainThreadLanguageFeatures, rpcProtocol)); - rpcProtocol.sync().then(done, done); + return rpcProtocol.sync(); }); suiteTeardown(() => { @@ -136,17 +136,16 @@ suite('ExtHostLanguageFeatureCommands', function () { mainThread.dispose(); }); - teardown(function (done) { + teardown(function () { while (disposables.length) { disposables.pop().dispose(); } - rpcProtocol.sync() - .then(() => done(), err => done(err)); + return rpcProtocol.sync(); }); // --- workspace symbols - test('WorkspaceSymbols, invalid arguments', function (done) { + test('WorkspaceSymbols, invalid arguments', function () { let promises = [ commands.executeCommand('vscode.executeWorkspaceSymbolProvider'), commands.executeCommand('vscode.executeWorkspaceSymbolProvider', null), @@ -154,14 +153,12 @@ suite('ExtHostLanguageFeatureCommands', function () { commands.executeCommand('vscode.executeWorkspaceSymbolProvider', true) ]; - TPromise.join(promises).then(undefined, (err: any[]) => { + return TPromise.join(promises).then(undefined, (err: any[]) => { assert.equal(err.length, 4); - done(); - return []; }); }); - test('WorkspaceSymbols, back and forth', function (done) { + test('WorkspaceSymbols, back and forth', function () { disposables.push(extHost.registerWorkspaceSymbolProvider({ provideWorkspaceSymbols(query): any { @@ -180,8 +177,8 @@ suite('ExtHostLanguageFeatureCommands', function () { } })); - rpcProtocol.sync().then(() => { - commands.executeCommand('vscode.executeWorkspaceSymbolProvider', 'testing').then(value => { + return rpcProtocol.sync().then(() => { + return commands.executeCommand('vscode.executeWorkspaceSymbolProvider', 'testing').then(value => { for (let info of value) { assert.ok(info instanceof types.SymbolInformation); @@ -189,9 +186,8 @@ suite('ExtHostLanguageFeatureCommands', function () { assert.equal(info.kind, types.SymbolKind.Array); } assert.equal(value.length, 3); - done(); - }, done); - }, done); + }); + }); }); test('executeWorkspaceSymbolProvider should accept empty string, #39522', async function () { @@ -213,7 +209,7 @@ suite('ExtHostLanguageFeatureCommands', function () { // --- definition - test('Definition, invalid arguments', function (done) { + test('Definition, invalid arguments', function () { let promises = [ commands.executeCommand('vscode.executeDefinitionProvider'), commands.executeCommand('vscode.executeDefinitionProvider', null), @@ -221,10 +217,8 @@ suite('ExtHostLanguageFeatureCommands', function () { commands.executeCommand('vscode.executeDefinitionProvider', true, false) ]; - TPromise.join(promises).then(undefined, (err: any[]) => { + return TPromise.join(promises).then(undefined, (err: any[]) => { assert.equal(err.length, 4); - done(); - return []; }); }); @@ -281,7 +275,7 @@ suite('ExtHostLanguageFeatureCommands', function () { // --- outline - test('Outline, back and forth', function (done) { + test('Outline, back and forth', function () { disposables.push(extHost.registerDocumentSymbolProvider(defaultSelector, { provideDocumentSymbols(): any { return [ @@ -291,15 +285,14 @@ suite('ExtHostLanguageFeatureCommands', function () { } })); - rpcProtocol.sync().then(() => { - commands.executeCommand('vscode.executeDocumentSymbolProvider', model.uri).then(values => { + return rpcProtocol.sync().then(() => { + return commands.executeCommand('vscode.executeDocumentSymbolProvider', model.uri).then(values => { assert.equal(values.length, 2); let [first, second] = values; assert.equal(first.name, 'testing2'); assert.equal(second.name, 'testing1'); - done(); - }, done); - }, done); + }); + }); }); // --- suggest @@ -362,7 +355,7 @@ suite('ExtHostLanguageFeatureCommands', function () { }); }); - test('Suggest, return CompletionList !array', function (done) { + test('Suggest, return CompletionList !array', function () { disposables.push(extHost.registerCompletionItemProvider(defaultSelector, { provideCompletionItems(): any { let a = new types.CompletionItem('item1'); @@ -371,11 +364,10 @@ suite('ExtHostLanguageFeatureCommands', function () { } }, [])); - rpcProtocol.sync().then(() => { + return rpcProtocol.sync().then(() => { return commands.executeCommand('vscode.executeCompletionItemProvider', model.uri, new types.Position(0, 4)).then(list => { assert.ok(list instanceof types.CompletionList); assert.equal(list.isIncomplete, true); - done(); }); }); }); diff --git a/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts b/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts index d83503b679e..f3131cc37c7 100644 --- a/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts +++ b/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts @@ -39,10 +39,10 @@ suite('MainThreadSaveParticipant', function () { TextFileEditorModel.setSaveParticipant(null); // reset any set participant }); - test('insert final new line', function (done) { + test('insert final new line', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/final_new_line.txt'), 'utf8'); - model.load().then(() => { + return model.load().then(() => { const configService = new TestConfigurationService(); configService.setUserConfiguration('files', { 'insertFinalNewline': true }); @@ -71,15 +71,13 @@ suite('MainThreadSaveParticipant', function () { model.textEditorModel.setValue(lineContent); participant.participate(model, { reason: SaveReason.EXPLICIT }); assert.equal(snapshotToString(model.createSnapshot()), `${lineContent}${model.textEditorModel.getEOL()}`); - - done(); }); }); - test('trim final new lines', function (done) { + test('trim final new lines', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/trim_final_new_line.txt'), 'utf8'); - model.load().then(() => { + return model.load().then(() => { const configService = new TestConfigurationService(); configService.setUserConfiguration('files', { 'trimFinalNewlines': true }); @@ -111,15 +109,13 @@ suite('MainThreadSaveParticipant', function () { model.textEditorModel.setValue(lineContent); participant.participate(model, { reason: SaveReason.EXPLICIT }); assert.equal(snapshotToString(model.createSnapshot()), `${textContent}${eol}${textContent}${eol}`); - - done(); }); }); - test('trim final new lines bug#39750', function (done) { + test('trim final new lines bug#39750', function () { const model: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/trim_final_new_line.txt'), 'utf8'); - model.load().then(() => { + return model.load().then(() => { const configService = new TestConfigurationService(); configService.setUserConfiguration('files', { 'trimFinalNewlines': true }); @@ -140,7 +136,6 @@ suite('MainThreadSaveParticipant', function () { participant.participate(model, { reason: SaveReason.EXPLICIT }); model.textEditorModel.redo(); assert.equal(snapshotToString(model.createSnapshot()), `${textContent}.`); - done(); }); }); From 34264883b140e8017d57f76a480862d4705a7328 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 09:13:21 +0100 Subject: [PATCH 213/658] test darwin build --- build/tfs/darwin/build.yml | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index abdbc4fec3f..5fe8f15085c 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -1,3 +1,34 @@ +variables: + VSCODE_BUILD_VERBOSE: true + System.Debug: true + steps: + +- task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + +- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + - script: | - echo "$(VSCODE_MIXIN_PASSWORD)" \ No newline at end of file + echo "machine monacotools.visualstudio.com password $VSO_PAT" > ~/.netrc + yarn + npm run gulp -- hygiene + ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit + npm run gulp -- mixin + node build/tfs/common/installDistro.js + +- script: | + npm run gulp -- vscode-darwin-min + name: build + +- script: | + ./scripts/test.sh --build --reporter dot + ./scripts/test-integration.sh + name: test + +- script: | + ./build/tfs/darwin/release.sh + npm run gulp -- upload-vscode-configuration \ No newline at end of file From a088b266dfd69ffe361141b6fbbad28724eb617d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 09:22:37 +0100 Subject: [PATCH 214/658] pass variables --- build/tfs/darwin/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 5fe8f15085c..858ad962dbb 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -17,7 +17,7 @@ steps: yarn npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit - npm run gulp -- mixin + VSCODE_MIXIN_PASSWORD="$VSCODE_MIXIN_PASSWORD" npm run gulp -- mixin node build/tfs/common/installDistro.js - script: | From f954c3a9d6331c6f16d210a42c2c618bb365e53e Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 09:30:31 +0100 Subject: [PATCH 215/658] build --- build/tfs/darwin/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 858ad962dbb..03155335dc9 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -17,7 +17,7 @@ steps: yarn npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit - VSCODE_MIXIN_PASSWORD="$VSCODE_MIXIN_PASSWORD" npm run gulp -- mixin + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js - script: | From 2825a22c4202c017dbf942c927e56dc784a20151 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 09:36:45 +0100 Subject: [PATCH 216/658] build --- build/tfs/darwin/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 03155335dc9..8a64bfadc92 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -13,7 +13,7 @@ steps: versionSpec: "1.3.2" - script: | - echo "machine monacotools.visualstudio.com password $VSO_PAT" > ~/.netrc + echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc yarn npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit From f4f8918996ee92218273acb3e9c34a2551f52c28 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 09:57:40 +0100 Subject: [PATCH 217/658] remove debug --- build/tfs/darwin/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 8a64bfadc92..41cd1c7e3d0 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -1,6 +1,5 @@ variables: VSCODE_BUILD_VERBOSE: true - System.Debug: true steps: From c40385ade74f82a2ec9e6571bfc7cd2dfaea81bc Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 10:12:10 +0100 Subject: [PATCH 218/658] return promises for mocha tree model tests related to #45209 --- .../parts/tree/test/browser/treeModel.test.ts | 479 ++++++++---------- 1 file changed, 211 insertions(+), 268 deletions(-) diff --git a/src/vs/base/parts/tree/test/browser/treeModel.test.ts b/src/vs/base/parts/tree/test/browser/treeModel.test.ts index 1e0dac447a2..2fa8e3eac44 100644 --- a/src/vs/base/parts/tree/test/browser/treeModel.test.ts +++ b/src/vs/base/parts/tree/test/browser/treeModel.test.ts @@ -201,64 +201,60 @@ suite('TreeModel', () => { assert.equal(model.getInput(), SAMPLE.ONE); }); - test('refresh() refreshes all', (done) => { - model.setInput(SAMPLE.AB).then(() => { + test('refresh() refreshes all', () => { + return model.setInput(SAMPLE.AB).then(() => { counter.listen(model.onRefresh); // 1 counter.listen(model.onDidRefresh); // 1 counter.listen(model.onDidRefreshItem); // 4 counter.listen(model.onRefreshItemChildren); // 1 counter.listen(model.onDidRefreshItemChildren); // 1 return model.refresh(null); - }).done(() => { + }).then(() => { assert.equal(counter.count, 8); - done(); }); }); - test('refresh(root) refreshes all', (done) => { - model.setInput(SAMPLE.AB).then(() => { + test('refresh(root) refreshes all', () => { + return model.setInput(SAMPLE.AB).then(() => { counter.listen(model.onRefresh); // 1 counter.listen(model.onDidRefresh); // 1 counter.listen(model.onDidRefreshItem); // 4 counter.listen(model.onRefreshItemChildren); // 1 counter.listen(model.onDidRefreshItemChildren); // 1 return model.refresh(SAMPLE.AB); - }).done(() => { + }).then(() => { assert.equal(counter.count, 8); - done(); }); }); - test('refresh(root, false) refreshes the root', (done) => { - model.setInput(SAMPLE.AB).then(() => { + test('refresh(root, false) refreshes the root', () => { + return model.setInput(SAMPLE.AB).then(() => { counter.listen(model.onRefresh); // 1 counter.listen(model.onDidRefresh); // 1 counter.listen(model.onDidRefreshItem); // 1 counter.listen(model.onRefreshItemChildren); // 1 counter.listen(model.onDidRefreshItemChildren); // 1 return model.refresh(SAMPLE.AB, false); - }).done(() => { + }).then(() => { assert.equal(counter.count, 5); - done(); }); }); - test('refresh(collapsed element) does not refresh descendants', (done) => { - model.setInput(SAMPLE.AB).then(() => { + test('refresh(collapsed element) does not refresh descendants', () => { + return model.setInput(SAMPLE.AB).then(() => { counter.listen(model.onRefresh); // 1 counter.listen(model.onDidRefresh); // 1 counter.listen(model.onDidRefreshItem); // 1 counter.listen(model.onRefreshItemChildren); // 0 counter.listen(model.onDidRefreshItemChildren); // 0 return model.refresh(SAMPLE.AB.children[0]); - }).done(() => { + }).then(() => { assert.equal(counter.count, 3); - done(); }); }); - test('refresh(expanded element) refreshes the element and descendants', (done) => { - model.setInput(SAMPLE.AB).then(() => { + test('refresh(expanded element) refreshes the element and descendants', () => { + return model.setInput(SAMPLE.AB).then(() => { model.expand(SAMPLE.AB.children[0]); counter.listen(model.onRefresh); // 1 @@ -267,14 +263,13 @@ suite('TreeModel', () => { counter.listen(model.onRefreshItemChildren); // 1 counter.listen(model.onDidRefreshItemChildren); // 1 return model.refresh(SAMPLE.AB.children[0]); - }).done(() => { + }).then(() => { assert.equal(counter.count, 7); - done(); }); }); - test('refresh(element, false) refreshes the element', (done) => { - model.setInput(SAMPLE.AB).then(() => { + test('refresh(element, false) refreshes the element', () => { + return model.setInput(SAMPLE.AB).then(() => { model.expand(SAMPLE.AB.children[0]); counter.listen(model.onRefresh); // 1 @@ -286,57 +281,53 @@ suite('TreeModel', () => { counter.listen(model.onRefreshItemChildren); // 1 counter.listen(model.onDidRefreshItemChildren); // 1 return model.refresh(SAMPLE.AB.children[0], false); - }).done(() => { + }).then(() => { assert.equal(counter.count, 6); - done(); }); }); - test('depths', (done) => { - model.setInput(SAMPLE.AB).then(() => { - model.expandAll(['a', 'c']); + test('depths', () => { + return model.setInput(SAMPLE.AB).then(() => { + return model.expandAll(['a', 'c']).then(() => { + counter.listen(model.onDidRefreshItem, item => { + switch (item.id) { + case 'ROOT': assert.equal(item.getDepth(), 0); break; + case 'a': assert.equal(item.getDepth(), 1); break; + case 'aa': assert.equal(item.getDepth(), 2); break; + case 'ab': assert.equal(item.getDepth(), 2); break; + case 'b': assert.equal(item.getDepth(), 1); break; + case 'c': assert.equal(item.getDepth(), 1); break; + case 'ca': assert.equal(item.getDepth(), 2); break; + case 'cb': assert.equal(item.getDepth(), 2); break; + default: return; + } + counter.up(); + }); - counter.listen(model.onDidRefreshItem, item => { - switch (item.id) { - case 'ROOT': assert.equal(item.getDepth(), 0); break; - case 'a': assert.equal(item.getDepth(), 1); break; - case 'aa': assert.equal(item.getDepth(), 2); break; - case 'ab': assert.equal(item.getDepth(), 2); break; - case 'b': assert.equal(item.getDepth(), 1); break; - case 'c': assert.equal(item.getDepth(), 1); break; - case 'ca': assert.equal(item.getDepth(), 2); break; - case 'cb': assert.equal(item.getDepth(), 2); break; - default: return; - } - counter.up(); + return model.refresh(); }); - - return model.refresh(); - }).done(() => { + }).then(() => { assert.equal(counter.count, 16); - done(); }); }); - test('intersections', (done) => { - model.setInput(SAMPLE.AB).done(() => { - model.expandAll(['a', 'c']); + test('intersections', () => { + return model.setInput(SAMPLE.AB).then(() => { + return model.expandAll(['a', 'c']).then(() => { + // going internals + var r = (model).registry; - // going internals - var r = (model).registry; - - assert(r.getItem('a').intersects(r.getItem('a'))); - assert(r.getItem('a').intersects(r.getItem('aa'))); - assert(r.getItem('a').intersects(r.getItem('ab'))); - assert(r.getItem('aa').intersects(r.getItem('a'))); - assert(r.getItem('ab').intersects(r.getItem('a'))); - assert(!r.getItem('aa').intersects(r.getItem('ab'))); - assert(!r.getItem('a').intersects(r.getItem('b'))); - assert(!r.getItem('a').intersects(r.getItem('c'))); - assert(!r.getItem('a').intersects(r.getItem('ca'))); - assert(!r.getItem('aa').intersects(r.getItem('ca'))); - - done(); + assert(r.getItem('a').intersects(r.getItem('a'))); + assert(r.getItem('a').intersects(r.getItem('aa'))); + assert(r.getItem('a').intersects(r.getItem('ab'))); + assert(r.getItem('aa').intersects(r.getItem('a'))); + assert(r.getItem('ab').intersects(r.getItem('a'))); + assert(!r.getItem('aa').intersects(r.getItem('ab'))); + assert(!r.getItem('a').intersects(r.getItem('b'))); + assert(!r.getItem('a').intersects(r.getItem('c'))); + assert(!r.getItem('a').intersects(r.getItem('ca'))); + assert(!r.getItem('aa').intersects(r.getItem('ca'))); + }); }); }); }); @@ -357,19 +348,18 @@ suite('TreeModel - TreeNavigator', () => { model.dispose(); }); - test('next()', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('next()', () => { + return model.setInput(SAMPLE.AB).then(() => { var nav = model.getNavigator(); assert.equal(nav.next().id, 'a'); assert.equal(nav.next().id, 'b'); assert.equal(nav.next().id, 'c'); assert.equal(nav.next() && false, null); - done(); }); }); - test('previous()', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('previous()', () => { + return model.setInput(SAMPLE.AB).then(() => { var nav = model.getNavigator(); nav.next(); @@ -379,13 +369,12 @@ suite('TreeModel - TreeNavigator', () => { assert.equal(nav.previous().id, 'b'); assert.equal(nav.previous().id, 'a'); assert.equal(nav.previous() && false, null); - done(); }); }); - test('parent()', (done) => { - model.setInput(SAMPLE.AB).done(() => { - model.expandAll([{ id: 'a' }, { id: 'c' }]).done(() => { + test('parent()', () => { + return model.setInput(SAMPLE.AB).then(() => { + return model.expandAll([{ id: 'a' }, { id: 'c' }]).then(() => { var nav = model.getNavigator(); assert.equal(nav.next().id, 'a'); @@ -404,67 +393,62 @@ suite('TreeModel - TreeNavigator', () => { assert.equal(nav.parent().id, 'c'); assert.equal(nav.parent() && false, null); - done(); }); }); }); - test('next() - scoped', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('next() - scoped', () => { + return model.setInput(SAMPLE.AB).then(() => { var nav = model.getNavigator(SAMPLE.AB.children[0]); - model.expand({ id: 'a' }).done(() => { + return model.expand({ id: 'a' }).then(() => { assert.equal(nav.next().id, 'aa'); assert.equal(nav.next().id, 'ab'); assert.equal(nav.next() && false, null); - done(); }); }); }); - test('previous() - scoped', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('previous() - scoped', () => { + return model.setInput(SAMPLE.AB).then(() => { var nav = model.getNavigator(SAMPLE.AB.children[0]); - model.expand({ id: 'a' }).done(() => { + return model.expand({ id: 'a' }).then(() => { assert.equal(nav.next().id, 'aa'); assert.equal(nav.next().id, 'ab'); assert.equal(nav.previous().id, 'aa'); assert.equal(nav.previous() && false, null); - done(); }); }); }); - test('parent() - scoped', (done) => { - model.setInput(SAMPLE.AB).done(() => { - model.expandAll([{ id: 'a' }, { id: 'c' }]).done(() => { + test('parent() - scoped', () => { + return model.setInput(SAMPLE.AB).then(() => { + return model.expandAll([{ id: 'a' }, { id: 'c' }]).then(() => { var nav = model.getNavigator(SAMPLE.AB.children[0]); assert.equal(nav.next().id, 'aa'); assert.equal(nav.next().id, 'ab'); assert.equal(nav.parent() && false, null); - done(); }); }); }); - test('next() - non sub tree only', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('next() - non sub tree only', () => { + return model.setInput(SAMPLE.AB).then(() => { var nav = model.getNavigator(SAMPLE.AB.children[0], false); - model.expand({ id: 'a' }).done(() => { + return model.expand({ id: 'a' }).then(() => { assert.equal(nav.next().id, 'aa'); assert.equal(nav.next().id, 'ab'); assert.equal(nav.next().id, 'b'); assert.equal(nav.next().id, 'c'); assert.equal(nav.next() && false, null); - done(); }); }); }); - test('previous() - non sub tree only', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('previous() - non sub tree only', () => { + return model.setInput(SAMPLE.AB).then(() => { var nav = model.getNavigator(SAMPLE.AB.children[0], false); - model.expand({ id: 'a' }).done(() => { + return model.expand({ id: 'a' }).then(() => { assert.equal(nav.next().id, 'aa'); assert.equal(nav.next().id, 'ab'); assert.equal(nav.next().id, 'b'); @@ -474,49 +458,47 @@ suite('TreeModel - TreeNavigator', () => { assert.equal(nav.previous().id, 'aa'); assert.equal(nav.previous().id, 'a'); assert.equal(nav.previous() && false, null); - done(); }); }); }); - test('parent() - non sub tree only', (done) => { - model.setInput(SAMPLE.AB).done(() => { - model.expandAll([{ id: 'a' }, { id: 'c' }]).done(() => { + test('parent() - non sub tree only', () => { + return model.setInput(SAMPLE.AB).then(() => { + return model.expandAll([{ id: 'a' }, { id: 'c' }]).then(() => { var nav = model.getNavigator(SAMPLE.AB.children[0], false); assert.equal(nav.next().id, 'aa'); assert.equal(nav.next().id, 'ab'); assert.equal(nav.parent().id, 'a'); assert.equal(nav.parent() && false, null); - done(); }); }); }); - test('deep next() - scoped', (done) => { - model.setInput(SAMPLE.DEEP).done(() => { - model.expand(SAMPLE.DEEP.children[0]); - model.expand(SAMPLE.DEEP.children[0].children[0]); - - var nav = model.getNavigator(SAMPLE.DEEP.children[0].children[0]); - assert.equal(nav.next().id, 'xa'); - assert.equal(nav.next().id, 'xb'); - assert.equal(nav.next() && false, null); - done(); + test('deep next() - scoped', () => { + return model.setInput(SAMPLE.DEEP).then(() => { + return model.expand(SAMPLE.DEEP.children[0]).then(() => { + return model.expand(SAMPLE.DEEP.children[0].children[0]).then(() => { + var nav = model.getNavigator(SAMPLE.DEEP.children[0].children[0]); + assert.equal(nav.next().id, 'xa'); + assert.equal(nav.next().id, 'xb'); + assert.equal(nav.next() && false, null); + }); + }); }); }); - test('deep previous() - scoped', (done) => { - model.setInput(SAMPLE.DEEP).done(() => { - model.expand(SAMPLE.DEEP.children[0]); - model.expand(SAMPLE.DEEP.children[0].children[0]); - - var nav = model.getNavigator(SAMPLE.DEEP.children[0].children[0]); - assert.equal(nav.next().id, 'xa'); - assert.equal(nav.next().id, 'xb'); - assert.equal(nav.previous().id, 'xa'); - assert.equal(nav.previous() && false, null); - done(); + test('deep previous() - scoped', () => { + return model.setInput(SAMPLE.DEEP).then(() => { + return model.expand(SAMPLE.DEEP.children[0]).then(() => { + return model.expand(SAMPLE.DEEP.children[0].children[0]).then(() => { + var nav = model.getNavigator(SAMPLE.DEEP.children[0].children[0]); + assert.equal(nav.next().id, 'xa'); + assert.equal(nav.next().id, 'xb'); + assert.equal(nav.previous().id, 'xa'); + assert.equal(nav.previous() && false, null); + }); + }); }); }); @@ -546,8 +528,8 @@ suite('TreeModel - Expansion', () => { model.dispose(); }); - test('collapse, expand', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('collapse, expand', () => { + return model.setInput(SAMPLE.AB).then(() => { counter.listen(model.onExpandItem, (e) => { assert.equal(e.item.id, 'a'); var nav = model.getNavigator(e.item); @@ -572,7 +554,7 @@ suite('TreeModel - Expansion', () => { assert.equal(model.getExpandedElements().length, 0); - model.expand(SAMPLE.AB.children[0]).done(() => { + return model.expand(SAMPLE.AB.children[0]).then(() => { assert(model.isExpanded(SAMPLE.AB.children[0])); nav = model.getNavigator(); @@ -588,46 +570,42 @@ suite('TreeModel - Expansion', () => { assert.equal(expandedElements[0].id, 'a'); assert.equal(counter.count, 2); - done(); }); }); }); - test('toggleExpansion', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('toggleExpansion', () => { + return model.setInput(SAMPLE.AB).then(() => { assert(!model.isExpanded(SAMPLE.AB.children[0])); - model.toggleExpansion(SAMPLE.AB.children[0]).done(() => { + return model.toggleExpansion(SAMPLE.AB.children[0]).then(() => { assert(model.isExpanded(SAMPLE.AB.children[0])); assert(!model.isExpanded(SAMPLE.AB.children[0].children[0])); - model.toggleExpansion(SAMPLE.AB.children[0].children[0]).done(() => { + return model.toggleExpansion(SAMPLE.AB.children[0].children[0]).then(() => { assert(!model.isExpanded(SAMPLE.AB.children[0].children[0])); - model.toggleExpansion(SAMPLE.AB.children[0]).done(() => { + return model.toggleExpansion(SAMPLE.AB.children[0]).then(() => { assert(!model.isExpanded(SAMPLE.AB.children[0])); - - done(); }); }); }); }); }); - test('collapseAll', (done) => { - model.setInput(SAMPLE.DEEP2).done(() => { - model.expand(SAMPLE.DEEP2.children[0]).done(() => { - model.expand(SAMPLE.DEEP2.children[0].children[0]).done(() => { + test('collapseAll', () => { + return model.setInput(SAMPLE.DEEP2).then(() => { + return model.expand(SAMPLE.DEEP2.children[0]).then(() => { + return model.expand(SAMPLE.DEEP2.children[0].children[0]).then(() => { assert(model.isExpanded(SAMPLE.DEEP2.children[0])); assert(model.isExpanded(SAMPLE.DEEP2.children[0].children[0])); - model.collapseAll().done(() => { + return model.collapseAll().then(() => { assert(!model.isExpanded(SAMPLE.DEEP2.children[0])); - model.expand(SAMPLE.DEEP2.children[0]).done(() => { + return model.expand(SAMPLE.DEEP2.children[0]).then(() => { assert(!model.isExpanded(SAMPLE.DEEP2.children[0].children[0])); - done(); }); }); }); @@ -635,37 +613,35 @@ suite('TreeModel - Expansion', () => { }); }); - test('collapseDeepestExpandedLevel', (done) => { - model.setInput(SAMPLE.DEEP2).done(() => { - model.expand(SAMPLE.DEEP2.children[0]).done(() => { - model.expand(SAMPLE.DEEP2.children[0].children[0]).done(() => { + test('collapseDeepestExpandedLevel', () => { + return model.setInput(SAMPLE.DEEP2).then(() => { + return model.expand(SAMPLE.DEEP2.children[0]).then(() => { + return model.expand(SAMPLE.DEEP2.children[0].children[0]).then(() => { assert(model.isExpanded(SAMPLE.DEEP2.children[0])); assert(model.isExpanded(SAMPLE.DEEP2.children[0].children[0])); - model.collapseDeepestExpandedLevel().done(() => { + return model.collapseDeepestExpandedLevel().then(() => { assert(model.isExpanded(SAMPLE.DEEP2.children[0])); assert(!model.isExpanded(SAMPLE.DEEP2.children[0].children[0])); - done(); }); }); }); }); }); - test('auto expand single child folders', (done) => { - model.setInput(SAMPLE.DEEP).done(() => { - model.expand(SAMPLE.DEEP.children[0]).done(() => { + test('auto expand single child folders', () => { + return model.setInput(SAMPLE.DEEP).then(() => { + return model.expand(SAMPLE.DEEP.children[0]).then(() => { assert(model.isExpanded(SAMPLE.DEEP.children[0])); assert(model.isExpanded(SAMPLE.DEEP.children[0].children[0])); - done(); }); }); }); - test('expand can trigger refresh', (done) => { + test('expand can trigger refresh', () => { // MUnit.expect(16); - model.setInput(SAMPLE.AB).done(() => { + return model.setInput(SAMPLE.AB).then(() => { assert(!model.isExpanded(SAMPLE.AB.children[0])); @@ -685,7 +661,7 @@ suite('TreeModel - Expansion', () => { g(); }); - model.expand(SAMPLE.AB.children[0]).done(() => { + return model.expand(SAMPLE.AB.children[0]).then(() => { assert(model.isExpanded(SAMPLE.AB.children[0])); nav = model.getNavigator(); @@ -697,28 +673,25 @@ suite('TreeModel - Expansion', () => { assert.equal(nav.next() && false, null); assert.equal(counter.count, 2); - done(); }); }); }); - test('top level collapsed', (done) => { - model.setInput(SAMPLE.AB).done(() => { - - model.collapseAll([{ id: 'a' }, { id: 'b' }, { id: 'c' }]); - - var nav = model.getNavigator(); - assert.equal(nav.next().id, 'a'); - assert.equal(nav.next().id, 'b'); - assert.equal(nav.next().id, 'c'); - assert.equal(nav.previous().id, 'b'); - assert.equal(nav.previous().id, 'a'); - assert.equal(nav.previous() && false, null); - done(); + test('top level collapsed', () => { + return model.setInput(SAMPLE.AB).then(() => { + return model.collapseAll([{ id: 'a' }, { id: 'b' }, { id: 'c' }]).then(() => { + var nav = model.getNavigator(); + assert.equal(nav.next().id, 'a'); + assert.equal(nav.next().id, 'b'); + assert.equal(nav.next().id, 'c'); + assert.equal(nav.previous().id, 'b'); + assert.equal(nav.previous().id, 'a'); + assert.equal(nav.previous() && false, null); + }); }); }); - test('shouldAutoexpand', (done) => { + test('shouldAutoexpand', () => { // setup const model = new TreeModel({ dataSource: { @@ -734,13 +707,12 @@ suite('TreeModel - Expansion', () => { } }); - model.setInput('root').then(() => { + return model.setInput('root').then(() => { return model.refresh('root', true); }).then(() => { assert(!model.isExpanded('a')); assert(model.isExpanded('b')); assert(!model.isExpanded('c')); - done(); }); }); }); @@ -777,10 +749,10 @@ suite('TreeModel - Filter', () => { model.dispose(); }); - test('no filter', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('no filter', () => { + return model.setInput(SAMPLE.AB).then(() => { - model.expandAll([{ id: 'a' }, { id: 'c' }]).done(() => { + return model.expandAll([{ id: 'a' }, { id: 'c' }]).then(() => { var nav = model.getNavigator(); assert.equal(nav.next().id, 'a'); assert.equal(nav.next().id, 'aa'); @@ -797,30 +769,27 @@ suite('TreeModel - Filter', () => { assert.equal(nav.previous().id, 'aa'); assert.equal(nav.previous().id, 'a'); assert.equal(nav.previous() && false, null); - - done(); }); }); }); - test('filter all', (done) => { + test('filter all', () => { filter.fn = () => false; - model.setInput(SAMPLE.AB).done(() => { - model.refresh(); - var nav = model.getNavigator(); - assert.equal(nav.next() && false, null); - - done(); + return model.setInput(SAMPLE.AB).then(() => { + return model.refresh().then(() => { + var nav = model.getNavigator(); + assert.equal(nav.next() && false, null); + }); }); }); - test('simple filter', (done) => { + test('simple filter', () => { // hide elements that do not start with 'a' filter.fn = (e) => e.id[0] === 'a'; - model.setInput(SAMPLE.AB).done(() => { - model.expand({ id: 'a' }).done(() => { + return model.setInput(SAMPLE.AB).then(() => { + return model.expand({ id: 'a' }).then(() => { var nav = model.getNavigator(); assert.equal(nav.next().id, 'a'); @@ -829,35 +798,32 @@ suite('TreeModel - Filter', () => { assert.equal(nav.previous().id, 'aa'); assert.equal(nav.previous().id, 'a'); assert.equal(nav.previous() && false, null); - done(); }); }); }); - test('simple filter 2', (done) => { + test('simple filter 2', () => { // hide 'ab' filter.fn = (e) => e.id !== 'ab'; - model.setInput(SAMPLE.AB).done(() => { - model.expand({ id: 'a' }).done(() => { - + return model.setInput(SAMPLE.AB).then(() => { + return model.expand({ id: 'a' }).then(() => { var nav = model.getNavigator(); assert.equal(nav.next().id, 'a'); assert.equal(nav.next().id, 'aa'); assert.equal(nav.next().id, 'b'); assert.equal(nav.next().id, 'c'); assert.equal(nav.next() && false, null); - done(); }); }); }); - test('simple filter, opposite', (done) => { + test('simple filter, opposite', () => { // hide elements that start with 'a' filter.fn = (e) => e.id[0] !== 'a'; - model.setInput(SAMPLE.AB).done(() => { - model.expand({ id: 'c' }).done(() => { + return model.setInput(SAMPLE.AB).then(() => { + return model.expand({ id: 'c' }).then(() => { var nav = model.getNavigator(); assert.equal(nav.next().id, 'b'); @@ -868,17 +834,16 @@ suite('TreeModel - Filter', () => { assert.equal(nav.previous().id, 'c'); assert.equal(nav.previous().id, 'b'); assert.equal(nav.previous() && false, null); - done(); }); }); }); - test('simple filter, mischieving', (done) => { + test('simple filter, mischieving', () => { // hide the element 'a' filter.fn = (e) => e.id !== 'a'; - model.setInput(SAMPLE.AB).done(() => { - model.expand({ id: 'c' }).done(() => { + return model.setInput(SAMPLE.AB).then(() => { + return model.expand({ id: 'c' }).then(() => { var nav = model.getNavigator(); assert.equal(nav.next().id, 'b'); @@ -889,20 +854,18 @@ suite('TreeModel - Filter', () => { assert.equal(nav.previous().id, 'c'); assert.equal(nav.previous().id, 'b'); assert.equal(nav.previous() && false, null); - done(); }); }); }); - test('simple filter & previous', (done) => { + test('simple filter & previous', () => { // hide 'b' filter.fn = (e) => e.id !== 'b'; - model.setInput(SAMPLE.AB).done(() => { + return model.setInput(SAMPLE.AB).then(() => { var nav = model.getNavigator({ id: 'c' }, false); assert.equal(nav.previous().id, 'a'); assert.equal(nav.previous() && false, null); - done(); }); }); }); @@ -923,8 +886,8 @@ suite('TreeModel - Traits', () => { model.dispose(); }); - test('Selection', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('Selection', () => { + return model.setInput(SAMPLE.AB).then(() => { assert.equal(model.getSelection().length, 0); model.select(SAMPLE.AB.children[1]); assert(model.isSelected(SAMPLE.AB.children[1])); @@ -1015,13 +978,11 @@ suite('TreeModel - Traits', () => { assert.equal(model.isSelected(SAMPLE.AB.children[0]), true); assert.equal(model.isSelected(SAMPLE.AB.children[2]), false); - - done(); }); }); - test('Focus', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('Focus', () => { + return model.setInput(SAMPLE.AB).then(() => { assert(!model.getFocus()); model.setFocus(SAMPLE.AB.children[1]); assert(model.isFocused(SAMPLE.AB.children[1])); @@ -1095,13 +1056,11 @@ suite('TreeModel - Traits', () => { assert(model.isFocused(SAMPLE.AB.children[0])); model.focusNth(1); assert(model.isFocused(SAMPLE.AB.children[1])); - - done(); }); }); - test('Highlight', (done) => { - model.setInput(SAMPLE.AB).done(() => { + test('Highlight', () => { + return model.setInput(SAMPLE.AB).then(() => { assert(!model.getHighlight()); model.setHighlight(SAMPLE.AB.children[1]); assert(model.isHighlighted(SAMPLE.AB.children[1])); @@ -1132,8 +1091,6 @@ suite('TreeModel - Traits', () => { assert(!model.isHighlighted(SAMPLE.AB.children[0])); assert(!model.isHighlighted(SAMPLE.AB.children[1])); assert(!model.isHighlighted(SAMPLE.AB.children[2])); - - done(); }); }); }); @@ -1218,15 +1175,15 @@ suite('TreeModel - Dynamic data model', () => { model.dispose(); }); - test('items get property disposed', (done) => { + test('items get property disposed', () => { dataModel.addChild('root', 'grandfather'); dataModel.addChild('grandfather', 'father'); dataModel.addChild('father', 'son'); dataModel.addChild('father', 'daughter'); dataModel.addChild('son', 'baby'); - model.setInput('root').done(() => { - model.expandAll(['grandfather', 'father', 'son']).done(() => { + return model.setInput('root').then(() => { + return model.expandAll(['grandfather', 'father', 'son']).then(() => { dataModel.removeChild('grandfather', 'father'); var items = ['baby', 'son', 'daughter', 'father']; @@ -1235,21 +1192,20 @@ suite('TreeModel - Dynamic data model', () => { assert.equal(items[times++], item.id); }); - model.refresh().done(() => { + return model.refresh().then(() => { assert.equal(times, items.length); assert.equal(counter.count, 4); - done(); }); }); }); }); - test('addChild, removeChild, collapse', (done) => { + test('addChild, removeChild, collapse', () => { dataModel.addChild('root', 'super'); dataModel.addChild('root', 'hyper'); dataModel.addChild('root', 'mega'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { var nav = model.getNavigator(); assert.equal(nav.next().id, 'super'); assert.equal(nav.next().id, 'hyper'); @@ -1257,7 +1213,7 @@ suite('TreeModel - Dynamic data model', () => { assert.equal(nav.next() && false, null); dataModel.removeChild('root', 'hyper'); - model.refresh().done(() => { + return model.refresh().then(() => { nav = model.getNavigator(); assert.equal(nav.next().id, 'super'); assert.equal(nav.next().id, 'mega'); @@ -1267,8 +1223,8 @@ suite('TreeModel - Dynamic data model', () => { dataModel.addChild('mega', 'nano'); dataModel.addChild('mega', 'pico'); - model.refresh().done(() => { - model.expand('mega').done(() => { + return model.refresh().then(() => { + return model.expand('mega').then(() => { nav = model.getNavigator(); assert.equal(nav.next().id, 'super'); assert.equal(nav.next().id, 'mega'); @@ -1282,15 +1238,13 @@ suite('TreeModel - Dynamic data model', () => { assert.equal(nav.next().id, 'super'); assert.equal(nav.next().id, 'mega'); assert.equal(nav.next() && false, null); - - done(); }); }); }); }); }); - test('move', (done) => { + test('move', () => { dataModel.addChild('root', 'super'); dataModel.addChild('super', 'apples'); dataModel.addChild('super', 'bananas'); @@ -1298,9 +1252,9 @@ suite('TreeModel - Dynamic data model', () => { dataModel.addChild('root', 'hyper'); dataModel.addChild('root', 'mega'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { - model.expand('super').done(() => { + return model.expand('super').then(() => { var nav = model.getNavigator(); assert.equal(nav.next().id, 'super'); @@ -1314,9 +1268,9 @@ suite('TreeModel - Dynamic data model', () => { dataModel.move('bananas', 'super', 'hyper'); dataModel.move('apples', 'super', 'mega'); - model.refresh().done(() => { + return model.refresh().then(() => { - model.expandAll(['hyper', 'mega']).done(() => { + return model.expandAll(['hyper', 'mega']).then(() => { nav = model.getNavigator(); assert.equal(nav.next().id, 'super'); assert.equal(nav.next().id, 'pears'); @@ -1325,20 +1279,18 @@ suite('TreeModel - Dynamic data model', () => { assert.equal(nav.next().id, 'mega'); assert.equal(nav.next().id, 'apples'); assert.equal(nav.next() && false, null); - - done(); }); }); }); }); }); - test('refreshing grandfather recursively should not refresh collapsed father\'s children immediately', (done) => { + test('refreshing grandfather recursively should not refresh collapsed father\'s children immediately', () => { dataModel.addChild('root', 'grandfather'); dataModel.addChild('grandfather', 'father'); dataModel.addChild('father', 'son'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { model.expand('grandfather'); model.collapse('father'); @@ -1348,7 +1300,7 @@ suite('TreeModel - Dynamic data model', () => { assert.equal(element, 'grandfather'); }); - model.refresh('grandfather').done(() => { + return model.refresh('grandfather').then(() => { assert.equal(times, 1); listener.dispose(); @@ -1357,22 +1309,21 @@ suite('TreeModel - Dynamic data model', () => { assert.equal(element, 'father'); }); - model.expand('father').done(() => { + return model.expand('father').then(() => { assert.equal(times, 2); listener.dispose(); - done(); }); }); }); }); - test('simultaneously refreshing two disjoint elements should parallelize the refreshes', (done) => { + test('simultaneously refreshing two disjoint elements should parallelize the refreshes', () => { dataModel.addChild('root', 'father'); dataModel.addChild('root', 'mother'); dataModel.addChild('father', 'son'); dataModel.addChild('mother', 'daughter'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { model.expand('father'); model.expand('mother'); @@ -1403,7 +1354,7 @@ suite('TreeModel - Dynamic data model', () => { assert.equal(getTimes, 2); assert.equal(gotTimes, 0); - WinJS.Promise.join([p1, p2]).done(() => { + return WinJS.Promise.join([p1, p2]).then(() => { assert.equal(getTimes, 2); assert.equal(gotTimes, 2); @@ -1416,17 +1367,16 @@ suite('TreeModel - Dynamic data model', () => { getListener.dispose(); gotListener.dispose(); - done(); }); }); }); - test('simultaneously recursively refreshing two intersecting elements should concatenate the refreshes - ancestor first', (done) => { + test('simultaneously recursively refreshing two intersecting elements should concatenate the refreshes - ancestor first', () => { dataModel.addChild('root', 'grandfather'); dataModel.addChild('grandfather', 'father'); dataModel.addChild('father', 'son'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { model.expand('grandfather'); model.expand('father'); @@ -1487,7 +1437,7 @@ suite('TreeModel - Dynamic data model', () => { assert.equal(getTimes, 3); assert.equal(gotTimes, 3); - p2.done(() => { + return p2.then(() => { nav = model.getNavigator(); assert.equal(nav.next().id, 'grandfather'); assert.equal(nav.next().id, 'father'); @@ -1496,17 +1446,16 @@ suite('TreeModel - Dynamic data model', () => { getListener.dispose(); gotListener.dispose(); - done(); }); }); }); - test('simultaneously recursively refreshing two intersecting elements should concatenate the refreshes - ancestor second', (done) => { + test('simultaneously recursively refreshing two intersecting elements should concatenate the refreshes - ancestor second', () => { dataModel.addChild('root', 'grandfather'); dataModel.addChild('grandfather', 'father'); dataModel.addChild('father', 'son'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { model.expand('grandfather'); model.expand('father'); @@ -1552,7 +1501,7 @@ suite('TreeModel - Dynamic data model', () => { assert.equal(getTimes, 3); assert.equal(gotTimes, 3); - p2.done(() => { + return p2.then(() => { nav = model.getNavigator(); assert.equal(nav.next().id, 'grandfather'); assert.equal(nav.next().id, 'father'); @@ -1561,16 +1510,15 @@ suite('TreeModel - Dynamic data model', () => { getListener.dispose(); gotListener.dispose(); - done(); }); }); }); - test('refreshing an empty element that adds children should still keep it collapsed', (done) => { + test('refreshing an empty element that adds children should still keep it collapsed', () => { dataModel.addChild('root', 'grandfather'); dataModel.addChild('grandfather', 'father'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { model.expand('grandfather'); model.expand('father'); @@ -1578,19 +1526,18 @@ suite('TreeModel - Dynamic data model', () => { dataModel.addChild('father', 'son'); - model.refresh('father').done(() => { + return model.refresh('father').then(() => { assert(!model.isExpanded('father')); - done(); }); }); }); - test('refreshing a collapsed element that adds children should still keep it collapsed', (done) => { + test('refreshing a collapsed element that adds children should still keep it collapsed', () => { dataModel.addChild('root', 'grandfather'); dataModel.addChild('grandfather', 'father'); dataModel.addChild('father', 'son'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { model.expand('grandfather'); model.expand('father'); model.collapse('father'); @@ -1599,39 +1546,37 @@ suite('TreeModel - Dynamic data model', () => { dataModel.addChild('father', 'daughter'); - model.refresh('father').done(() => { + return model.refresh('father').then(() => { assert(!model.isExpanded('father')); - done(); }); }); }); - test('recursively refreshing an ancestor of an expanded element, should keep that element expanded', (done) => { + test('recursively refreshing an ancestor of an expanded element, should keep that element expanded', () => { dataModel.addChild('root', 'grandfather'); dataModel.addChild('grandfather', 'father'); dataModel.addChild('father', 'son'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { model.expand('grandfather'); model.expand('father'); assert(model.isExpanded('grandfather')); assert(model.isExpanded('father')); - model.refresh('grandfather').done(() => { + return model.refresh('grandfather').then(() => { assert(model.isExpanded('grandfather')); assert(model.isExpanded('father')); - done(); }); }); }); - test('recursively refreshing an ancestor of a collapsed element, should keep that element collapsed', (done) => { + test('recursively refreshing an ancestor of a collapsed element, should keep that element collapsed', () => { dataModel.addChild('root', 'grandfather'); dataModel.addChild('grandfather', 'father'); dataModel.addChild('father', 'son'); - model.setInput('root').done(() => { + return model.setInput('root').then(() => { model.expand('grandfather'); model.expand('father'); model.collapse('father'); @@ -1639,21 +1584,20 @@ suite('TreeModel - Dynamic data model', () => { assert(model.isExpanded('grandfather')); assert(!model.isExpanded('father')); - model.refresh('grandfather').done(() => { + return model.refresh('grandfather').then(() => { assert(model.isExpanded('grandfather')); assert(!model.isExpanded('father')); - done(); }); }); }); - test('Bug 10855:[explorer] quickly deleting things causes NPE in tree - intersectsLock should always be called when trying to unlock', (done) => { + test('Bug 10855:[explorer] quickly deleting things causes NPE in tree - intersectsLock should always be called when trying to unlock', () => { dataModel.addChild('root', 'father'); dataModel.addChild('father', 'son'); dataModel.addChild('root', 'mother'); dataModel.addChild('mother', 'daughter'); - model.setInput('root').then(() => { + return model.setInput('root').then(() => { // delay expansions and refreshes dataModel.promiseFactory = () => { return WinJS.TPromise.timeout(0); }; @@ -1673,7 +1617,7 @@ suite('TreeModel - Dynamic data model', () => { }, (errs) => { assert(false, 'should not fail'); }); - }).done(done); + }); }); }); @@ -1691,7 +1635,7 @@ suite('TreeModel - bugs', () => { /** * This bug occurs when an item is expanded right during its removal */ - test('Bug 10566:[tree] build viewlet is broken after some time', (done) => { + test('Bug 10566:[tree] build viewlet is broken after some time', () => { // setup let model = new TreeModel({ dataSource: { @@ -1718,7 +1662,7 @@ suite('TreeModel - bugs', () => { counter.listen(model.onExpandItem, () => { assert(false, 'should never receive item:expanding event'); }); counter.listen(model.onDidExpandItem, () => { assert(false, 'should never receive item:expanded event'); }); - model.setInput('root').then(() => { + return model.setInput('root').then(() => { // remove bart getRootChildren = getGetRootChildren(['homer', 'lisa', 'marge', 'maggie'], 10); @@ -1740,7 +1684,7 @@ suite('TreeModel - bugs', () => { // what now? return WinJS.Promise.join([p1, p2]); - }).done(() => { + }).then(() => { // teardown while (listeners.length > 0) { listeners.pop()(); } @@ -1749,7 +1693,6 @@ suite('TreeModel - bugs', () => { model = null; assert.equal(counter.count, 0); - done(); }); }); }); From e7a96243af3d373db7c1467da72c36362d9a7fb0 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 10:44:26 +0100 Subject: [PATCH 219/658] improve pull/push specificity --- extensions/git/src/commands.ts | 12 +++---- extensions/git/src/repository.ts | 62 ++++++++++++++++++-------------- 2 files changed, 42 insertions(+), 32 deletions(-) diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index f35b73486fb..7cf5d096d7e 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -1345,7 +1345,7 @@ export class CommandCenter { return; } - await repository.pull(repository.HEAD && repository.HEAD.upstream); + await repository.pull(repository.HEAD); } @command('git.pullRebase', { repository: true }) @@ -1357,7 +1357,7 @@ export class CommandCenter { return; } - await repository.pullWithRebase(repository.HEAD && repository.HEAD.upstream); + await repository.pullWithRebase(repository.HEAD); } @command('git.push', { repository: true }) @@ -1375,7 +1375,7 @@ export class CommandCenter { } try { - await repository.push(repository.HEAD.upstream); + await repository.push(repository.HEAD); } catch (err) { if (err.gitErrorCode !== GitErrorCodes.NoUpstreamBranch) { throw err; @@ -1456,9 +1456,9 @@ export class CommandCenter { } if (rebase) { - await repository.syncRebase(HEAD.upstream); + await repository.syncRebase(HEAD); } else { - await repository.sync(HEAD.upstream); + await repository.sync(HEAD); } } @@ -1476,7 +1476,7 @@ export class CommandCenter { return; } - await repository.sync(HEAD.upstream); + await repository.sync(HEAD); })); } diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index a0145ad226b..7586abee7eb 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -6,7 +6,7 @@ 'use strict'; import { commands, Uri, Command, EventEmitter, Event, scm, SourceControl, SourceControlInputBox, SourceControlResourceGroup, SourceControlResourceState, SourceControlResourceDecorations, SourceControlInputBoxValidation, Disposable, ProgressLocation, window, workspace, WorkspaceEdit, ThemeColor, DecorationData, Memento, SourceControlInputBoxValidationType } from 'vscode'; -import { Repository as BaseRepository, Ref, Branch, Remote, Commit, GitErrorCodes, Stash, RefType, GitError, Submodule, DiffOptions, UpstreamRef } from './git'; +import { Repository as BaseRepository, Ref, Branch, Remote, Commit, GitErrorCodes, Stash, RefType, GitError, Submodule, DiffOptions } from './git'; import { anyEvent, filterEvent, eventToPromise, dispose, find, isDescendant, IDisposable, onceEvent, EmptyDisposable, debounceEvent } from './util'; import { memoize, throttle, debounce } from './decorators'; import { toGitUri } from './uri'; @@ -728,26 +728,26 @@ export class Repository implements Disposable { } @throttle - async pullWithRebase(upstream?: UpstreamRef): Promise { + async pullWithRebase(head: Branch | undefined): Promise { let remote: string | undefined; let branch: string | undefined; - if (upstream) { - remote = upstream.remote; - branch = upstream.name; + if (head && head.name && head.upstream) { + remote = head.upstream.remote; + branch = `${head.upstream.name}`; } await this.run(Operation.Pull, () => this.repository.pull(true, remote, branch)); } @throttle - async pull(upstream?: UpstreamRef): Promise { + async pull(head: Branch | undefined): Promise { let remote: string | undefined; let branch: string | undefined; - if (upstream) { - remote = upstream.remote; - branch = upstream.name; + if (head && head.name && head.upstream) { + remote = head.upstream.remote; + branch = `${head.upstream.name}`; } await this.run(Operation.Pull, () => this.repository.pull(false, remote, branch)); @@ -758,13 +758,13 @@ export class Repository implements Disposable { } @throttle - async push(upstream?: UpstreamRef): Promise { + async push(head: Branch): Promise { let remote: string | undefined; let branch: string | undefined; - if (upstream) { - remote = upstream.remote; - branch = upstream.name; + if (head && head.name && head.upstream) { + remote = head.upstream.remote; + branch = `${head.name}:${head.upstream.name}`; } await this.run(Operation.Push, () => this.repository.push(remote, branch)); @@ -778,28 +778,38 @@ export class Repository implements Disposable { await this.run(Operation.Push, () => this.repository.push(remote, undefined, false, true)); } - private async _sync(upstream: UpstreamRef, rebase: boolean): Promise { + @throttle + sync(head: Branch): Promise { + return this._sync(head, false); + } + + @throttle + async syncRebase(head: Branch): Promise { + return this._sync(head, true); + } + + private async _sync(head: Branch, rebase: boolean): Promise { + let remote: string | undefined; + let pullBranch: string | undefined; + let pushBranch: string | undefined; + + if (head.name && head.upstream) { + remote = head.upstream.remote; + pullBranch = `${head.upstream.name}`; + pushBranch = `${head.name}:${head.upstream.name}`; + } + await this.run(Operation.Sync, async () => { - await this.repository.pull(rebase, upstream.remote, upstream.name); + await this.repository.pull(rebase, remote, pullBranch); const shouldPush = this.HEAD && typeof this.HEAD.ahead === 'number' ? this.HEAD.ahead > 0 : true; if (shouldPush) { - await this.repository.push(upstream.remote, upstream.name); + await this.repository.push(remote, pushBranch); } }); } - @throttle - sync(upstream: UpstreamRef): Promise { - return this._sync(upstream, false); - } - - @throttle - async syncRebase(upstream: UpstreamRef): Promise { - return this._sync(upstream, true); - } - async show(ref: string, filePath: string): Promise { return await this.run(Operation.Show, async () => { const relativePath = path.relative(this.repository.root, filePath).replace(/\\/g, '/'); From 45bb588c39982477a0b5ec36a2aa3be7926b3015 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 10:46:50 +0100 Subject: [PATCH 220/658] fix build --- build/tfs/darwin/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 41cd1c7e3d0..d59a305a137 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -20,7 +20,7 @@ steps: node build/tfs/common/installDistro.js - script: | - npm run gulp -- vscode-darwin-min + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-darwin-min name: build - script: | From a74a9047940ea9816f89980dfb166146b3050f94 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 11:08:51 +0100 Subject: [PATCH 221/658] fix build --- build/tfs/darwin/build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index d59a305a137..f17cb55b761 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -29,5 +29,7 @@ steps: name: test - script: | - ./build/tfs/darwin/release.sh + cd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin-unsigned.zip * + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" node build/tfs/common/publish.js "$(VSCODE_QUALITY)" darwin archive-unsigned "VSCode-darwin-$(VSCODE_QUALITY)-unsigned.zip" "$(VERSION)" false "$(UNSIGNEDZIP)" + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" node build/tfs/common/enqueue.js "$(VSCODE_QUALITY)" npm run gulp -- upload-vscode-configuration \ No newline at end of file From cee570ddd7209fb5dc38ccb3cb315aa31fea487e Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 11:09:07 +0100 Subject: [PATCH 222/658] remove tests from build --- build/tfs/darwin/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index f17cb55b761..66bff1dda0c 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -23,10 +23,10 @@ steps: VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-darwin-min name: build -- script: | - ./scripts/test.sh --build --reporter dot - ./scripts/test-integration.sh - name: test +# - script: | +# ./scripts/test.sh --build --reporter dot +# ./scripts/test-integration.sh +# name: test - script: | cd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin-unsigned.zip * From 8c71cf6a0a552209e8d7352c0388c0df91e0de39 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 8 Mar 2018 11:13:39 +0100 Subject: [PATCH 223/658] tests - favour native promise over winjs --- src/vs/base/test/browser/builder.test.ts | 6 ++--- src/vs/base/test/common/cache.test.ts | 3 ++- src/vs/base/test/node/pfs.test.ts | 5 ++-- .../electron-browser/commonProperties.test.ts | 4 ++-- .../search/test/common/searchModel.test.ts | 11 +++++---- .../files/test/node/fileService.test.ts | 5 ++-- .../textfile/test/textFileEditorModel.test.ts | 23 ++++++++++--------- .../test/textFileEditorModelManager.test.ts | 6 ++--- .../test/common/editor/untitledEditor.test.ts | 12 +++++----- .../extHostDocumentSaveParticipant.test.ts | 15 ++++++------ .../api/mainThreadDocuments.test.ts | 4 ++-- 11 files changed, 50 insertions(+), 44 deletions(-) diff --git a/src/vs/base/test/browser/builder.test.ts b/src/vs/base/test/browser/builder.test.ts index e285f4eca6f..a5eb8b75928 100644 --- a/src/vs/base/test/browser/builder.test.ts +++ b/src/vs/base/test/browser/builder.test.ts @@ -8,8 +8,8 @@ import * as assert from 'assert'; import { Build, Builder, MultiBuilder, $, bindElement, withElement, setPropertyOnElement, getPropertyFromElement } from 'vs/base/browser/builder'; import * as Types from 'vs/base/common/types'; import * as DomUtils from 'vs/base/browser/dom'; -import { TPromise } from 'vs/base/common/winjs.base'; import { IDisposable } from 'vs/base/common/lifecycle'; +import { timeout } from 'vs/base/common/async'; let withElementsBySelector = function (selector: string, offdom: boolean = false) { let elements = window.document.querySelectorAll(selector); @@ -645,7 +645,7 @@ suite('Builder', () => { b.showDelayed(20); assert(b.hasClass('monaco-builder-hidden')); - return TPromise.timeout(30).then(() => { + return timeout(30).then(() => { assert(!b.hasClass('monaco-builder-hidden')); }); }); @@ -659,7 +659,7 @@ suite('Builder', () => { b.hide(); // Should cancel the visibility promise - return TPromise.timeout(30).then(() => { + return timeout(30).then(() => { assert(b.hasClass('monaco-builder-hidden')); }); }); diff --git a/src/vs/base/test/common/cache.test.ts b/src/vs/base/test/common/cache.test.ts index 521c59b3375..fbae6a16147 100644 --- a/src/vs/base/test/common/cache.test.ts +++ b/src/vs/base/test/common/cache.test.ts @@ -8,6 +8,7 @@ import * as assert from 'assert'; import Cache from 'vs/base/common/cache'; import { TPromise } from 'vs/base/common/winjs.base'; +import { timeout } from 'vs/base/common/async'; suite('Cache', () => { @@ -36,7 +37,7 @@ suite('Cache', () => { const cache = new Cache(() => { counter1++; - return TPromise.timeout(1).then(() => counter2++); + return timeout(1).then(() => counter2++); }); assert.equal(counter1, 0); diff --git a/src/vs/base/test/node/pfs.test.ts b/src/vs/base/test/node/pfs.test.ts index 2282ec84e0f..c4e3a088af5 100644 --- a/src/vs/base/test/node/pfs.test.ts +++ b/src/vs/base/test/node/pfs.test.ts @@ -14,6 +14,7 @@ import fs = require('fs'); import uuid = require('vs/base/common/uuid'); import * as pfs from 'vs/base/node/pfs'; +import { timeout } from 'vs/base/common/async'; suite('PFS', () => { @@ -77,9 +78,9 @@ suite('PFS', () => { return TPromise.join([ pfs.writeFile(testFile, 'Hello World 1', null), pfs.writeFile(testFile, 'Hello World 2', null), - TPromise.timeout(10).then(() => pfs.writeFile(testFile, 'Hello World 3', null)), + timeout(10).then(() => pfs.writeFile(testFile, 'Hello World 3', null)), pfs.writeFile(testFile, 'Hello World 4', null), - TPromise.timeout(10).then(() => pfs.writeFile(testFile, 'Hello World 5', null)) + timeout(10).then(() => pfs.writeFile(testFile, 'Hello World 5', null)) ]).then(() => { assert.equal(fs.readFileSync(testFile), 'Hello World 5'); diff --git a/src/vs/platform/telemetry/test/electron-browser/commonProperties.test.ts b/src/vs/platform/telemetry/test/electron-browser/commonProperties.test.ts index fb89055b500..2970c6b00bd 100644 --- a/src/vs/platform/telemetry/test/electron-browser/commonProperties.test.ts +++ b/src/vs/platform/telemetry/test/electron-browser/commonProperties.test.ts @@ -8,13 +8,13 @@ import * as assert from 'assert'; import * as path from 'path'; import * as os from 'os'; import * as fs from 'fs'; -import { TPromise } from 'vs/base/common/winjs.base'; import { resolveWorkbenchCommonProperties } from 'vs/platform/telemetry/node/workbenchCommonProperties'; import { StorageService, InMemoryLocalStorage } from 'vs/platform/storage/common/storageService'; import { TestWorkspace } from 'vs/platform/workspace/test/common/testWorkspace'; import { getRandomTestPath } from 'vs/workbench/test/workbenchTestServices'; import { del } from 'vs/base/node/extfs'; import { mkdirp } from 'vs/base/node/pfs'; +import { timeout } from 'vs/base/common/async'; suite('Telemetry - common properties', function () { const parentDir = getRandomTestPath(os.tmpdir(), 'vsctests', 'telemetryservice'); @@ -93,7 +93,7 @@ suite('Telemetry - common properties', function () { assert.ok(value1 !== value2, 'timestamp'); value1 = props['common.timesincesessionstart']; - return TPromise.timeout(10).then(_ => { + return timeout(10).then(_ => { value2 = props['common.timesincesessionstart']; assert.ok(value1 !== value2, 'timesincesessionstart'); }); diff --git a/src/vs/workbench/parts/search/test/common/searchModel.test.ts b/src/vs/workbench/parts/search/test/common/searchModel.test.ts index 3cc95cf4c89..673f4840f0f 100644 --- a/src/vs/workbench/parts/search/test/common/searchModel.test.ts +++ b/src/vs/workbench/parts/search/test/common/searchModel.test.ts @@ -8,7 +8,7 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; import { DeferredPPromise } from 'vs/base/test/common/utils'; -import { PPromise, TPromise } from 'vs/base/common/winjs.base'; +import { PPromise } from 'vs/base/common/winjs.base'; import { SearchModel } from 'vs/workbench/parts/search/common/searchModel'; import URI from 'vs/base/common/uri'; import { IFileMatch, IFolderQuery, ILineMatch, ISearchService, ISearchComplete, ISearchProgressItem, IUncachedSearchStats } from 'vs/platform/search/common/search'; @@ -19,6 +19,7 @@ import { IModelService } from 'vs/editor/common/services/modelService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { ModelServiceImpl } from 'vs/editor/common/services/modelServiceImpl'; +import { timeout } from 'vs/base/common/async'; const nullEvent = new class { @@ -158,7 +159,7 @@ suite('SearchModel', () => { let testObject = instantiationService.createInstance(SearchModel); const result = testObject.search({ contentPattern: { pattern: 'somestring' }, type: 1, folderQueries }); - return TPromise.timeout(1).then(() => { + return timeout(1).then(() => { return result.then(() => { assert.ok(target1.calledWith('searchResultsFirstRender')); assert.ok(target1.calledWith('searchResultsFinished')); @@ -182,7 +183,7 @@ suite('SearchModel', () => { promise.progress(aRawMatch('file://c:/1', aLineMatch('some preview'))); promise.complete({ results: [], stats: testSearchStats }); - return TPromise.timeout(1).then(() => { + return timeout(1).then(() => { return result.then(() => { assert.ok(target1.calledWith('searchResultsFirstRender')); assert.ok(target1.calledWith('searchResultsFinished')); @@ -205,7 +206,7 @@ suite('SearchModel', () => { promise.error('error'); - return TPromise.timeout(1).then(() => { + return timeout(1).then(() => { return result.then(() => { }, () => { assert.ok(target1.calledWith('searchResultsFirstRender')); assert.ok(target1.calledWith('searchResultsFinished')); @@ -228,7 +229,7 @@ suite('SearchModel', () => { promise.cancel(); - return TPromise.timeout(1).then(() => { + return timeout(1).then(() => { return result.then(() => { }, () => { assert.ok(target1.calledWith('searchResultsFirstRender')); assert.ok(target1.calledWith('searchResultsFinished')); diff --git a/src/vs/workbench/services/files/test/node/fileService.test.ts b/src/vs/workbench/services/files/test/node/fileService.test.ts index 68094b710ff..772626d2e0a 100644 --- a/src/vs/workbench/services/files/test/node/fileService.test.ts +++ b/src/vs/workbench/services/files/test/node/fileService.test.ts @@ -22,6 +22,7 @@ import { TestEnvironmentService, TestContextService, TestTextResourceConfigurati import { Workspace, toWorkspaceFolders } from 'vs/platform/workspace/common/workspace'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { TextModel } from 'vs/editor/common/model/textModel'; +import { timeout } from 'vs/base/common/async'; suite('FileService', () => { let service: FileService; @@ -155,7 +156,7 @@ suite('FileService', () => { const stat = fs.statSync(s.resource.fsPath); - return TPromise.timeout(10).then(() => { + return timeout(10).then(() => { return service.touchFile(s.resource).then(s => { const statNow = fs.statSync(s.resource.fsPath); assert.ok(statNow.mtime.getTime() >= stat.mtime.getTime()); // one some OS the resolution seems to be 1s, so we use >= here @@ -175,7 +176,7 @@ suite('FileService', () => { const stat = fs.statSync(s.resource.fsPath); - return TPromise.timeout(10).then(() => { + return timeout(10).then(() => { return service.touchFile(s.resource).then(s => { const statNow = fs.statSync(s.resource.fsPath); assert.ok(statNow.mtime.getTime() >= stat.mtime.getTime()); // one some OS the resolution seems to be 1s, so we use >= here diff --git a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts index e85af8ad8b6..9ce74a61c1c 100644 --- a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts @@ -16,6 +16,7 @@ import { toResource } from 'vs/base/test/common/utils'; import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager'; import { FileOperationResult, FileOperationError, IFileService, snapshotToString } from 'vs/platform/files/common/files'; import { IModelService } from 'vs/editor/common/services/modelService'; +import { timeout } from 'vs/base/common/async'; class ServiceAccessor { constructor( @ITextFileService public textFileService: TestTextFileService, @IModelService public modelService: IModelService, @IFileService public fileService: TestFileService) { @@ -241,7 +242,7 @@ suite('Files - TextFileEditorModel', () => { model2.textEditorModel.setValue('foo'); assert.ok(accessor.textFileService.isDirty(toResource.call(this, '/path/index_async.txt'))); - return TPromise.timeout(10).then(() => { + return timeout(10).then(() => { accessor.textFileService.saveAll().then(() => { assert.ok(!accessor.textFileService.isDirty(toResource.call(this, '/path/index_async.txt'))); assert.ok(!accessor.textFileService.isDirty(toResource.call(this, '/path/index_async2.txt'))); @@ -297,7 +298,7 @@ suite('Files - TextFileEditorModel', () => { TextFileEditorModel.setSaveParticipant({ participate: (model) => { - return TPromise.timeout(10); + return timeout(10); } }); @@ -343,13 +344,13 @@ suite('Files - TextFileEditorModel', () => { assert.ok(!sequentializer.pendingSave); // pending removes itself after done (use timeout) - sequentializer.setPending(2, TPromise.timeout(1)); + sequentializer.setPending(2, timeout(1)); assert.ok(sequentializer.hasPendingSave()); assert.ok(sequentializer.hasPendingSave(2)); assert.ok(!sequentializer.hasPendingSave(1)); assert.ok(sequentializer.pendingSave); - return TPromise.timeout(2).then(() => { + return timeout(2).then(() => { assert.ok(!sequentializer.hasPendingSave()); assert.ok(!sequentializer.hasPendingSave(2)); assert.ok(!sequentializer.pendingSave); @@ -360,7 +361,7 @@ suite('Files - TextFileEditorModel', () => { const sequentializer = new SaveSequentializer(); let pendingDone = false; - sequentializer.setPending(1, TPromise.timeout(1).then(() => { pendingDone = true; return null; })); + sequentializer.setPending(1, timeout(1).then(() => { pendingDone = true; return null; })); // next finishes instantly let nextDone = false; @@ -376,11 +377,11 @@ suite('Files - TextFileEditorModel', () => { const sequentializer = new SaveSequentializer(); let pendingDone = false; - sequentializer.setPending(1, TPromise.timeout(1).then(() => { pendingDone = true; return null; })); + sequentializer.setPending(1, timeout(1).then(() => { pendingDone = true; return null; })); // next finishes after timeout let nextDone = false; - const res = sequentializer.setNext(() => TPromise.timeout(1).then(() => { nextDone = true; return null; })); + const res = sequentializer.setNext(() => timeout(1).then(() => { nextDone = true; return null; })); return res.done(() => { assert.ok(pendingDone); @@ -392,17 +393,17 @@ suite('Files - TextFileEditorModel', () => { const sequentializer = new SaveSequentializer(); let pendingDone = false; - sequentializer.setPending(1, TPromise.timeout(1).then(() => { pendingDone = true; return null; })); + sequentializer.setPending(1, timeout(1).then(() => { pendingDone = true; return null; })); // next finishes after timeout let firstDone = false; - let firstRes = sequentializer.setNext(() => TPromise.timeout(2).then(() => { firstDone = true; return null; })); + let firstRes = sequentializer.setNext(() => timeout(2).then(() => { firstDone = true; return null; })); let secondDone = false; - let secondRes = sequentializer.setNext(() => TPromise.timeout(3).then(() => { secondDone = true; return null; })); + let secondRes = sequentializer.setNext(() => timeout(3).then(() => { secondDone = true; return null; })); let thirdDone = false; - let thirdRes = sequentializer.setNext(() => TPromise.timeout(4).then(() => { thirdDone = true; return null; })); + let thirdRes = sequentializer.setNext(() => timeout(4).then(() => { thirdDone = true; return null; })); return TPromise.join([firstRes, secondRes, thirdRes]).then(() => { assert.ok(pendingDone); diff --git a/src/vs/workbench/services/textfile/test/textFileEditorModelManager.test.ts b/src/vs/workbench/services/textfile/test/textFileEditorModelManager.test.ts index 45cdeaa6e96..5018eb1ce17 100644 --- a/src/vs/workbench/services/textfile/test/textFileEditorModelManager.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileEditorModelManager.test.ts @@ -7,7 +7,6 @@ import * as assert from 'assert'; import URI from 'vs/base/common/uri'; -import { TPromise } from 'vs/base/common/winjs.base'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager'; import { join } from 'vs/base/common/paths'; @@ -16,6 +15,7 @@ import { IEditorGroupService } from 'vs/workbench/services/group/common/groupSer import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel'; import { IFileService, FileChangesEvent, FileChangeType } from 'vs/platform/files/common/files'; import { IModelService } from 'vs/editor/common/services/modelService'; +import { timeout } from 'vs/base/common/async'; export class TestTextFileEditorModelManager extends TextFileEditorModelManager { @@ -220,7 +220,7 @@ suite('Files - TextFileEditorModelManager', () => { assert.equal(encodingCounter, 2); // content change event if done async - return TPromise.timeout(10).then(() => { + return timeout(10).then(() => { assert.equal(contentCounter, 2); model1.dispose(); @@ -276,7 +276,7 @@ suite('Files - TextFileEditorModelManager', () => { model2.dispose(); return model1.revert().then(() => { // should not trigger another event if disposed - return TPromise.timeout(20).then(() => { + return timeout(20).then(() => { assert.equal(dirtyCounter, 2); assert.equal(revertedCounter, 1); assert.equal(savedCounter, 1); diff --git a/src/vs/workbench/test/common/editor/untitledEditor.test.ts b/src/vs/workbench/test/common/editor/untitledEditor.test.ts index a30d55d62c3..8a32e60a918 100644 --- a/src/vs/workbench/test/common/editor/untitledEditor.test.ts +++ b/src/vs/workbench/test/common/editor/untitledEditor.test.ts @@ -6,7 +6,6 @@ import URI from 'vs/base/common/uri'; import * as assert from 'assert'; -import { TPromise } from 'vs/base/common/winjs.base'; import { join } from 'vs/base/common/paths'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; @@ -18,6 +17,7 @@ import { IModeService } from 'vs/editor/common/services/modeService'; import { ModeServiceImpl } from 'vs/editor/common/services/modeServiceImpl'; import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput'; import { snapshotToString } from 'vs/platform/files/common/files'; +import { timeout } from 'vs/base/common/async'; export class TestUntitledEditorService extends UntitledEditorService { @@ -257,23 +257,23 @@ suite('Workbench - Untitled Editor', () => { model.textEditorModel.setValue('foo'); assert.equal(counter, 0, 'Dirty model should not trigger event immediately'); - return TPromise.timeout(3).then(() => { + return timeout(3).then(() => { assert.equal(counter, 1, 'Dirty model should trigger event'); model.textEditorModel.setValue('bar'); - return TPromise.timeout(3).then(() => { + return timeout(3).then(() => { assert.equal(counter, 2, 'Content change when dirty should trigger event'); model.textEditorModel.setValue(''); - return TPromise.timeout(3).then(() => { + return timeout(3).then(() => { assert.equal(counter, 3, 'Manual revert should trigger event'); model.textEditorModel.setValue('foo'); - return TPromise.timeout(3).then(() => { + return timeout(3).then(() => { assert.equal(counter, 4, 'Dirty model should trigger event'); model.revert(); - return TPromise.timeout(3).then(() => { + return timeout(3).then(() => { assert.equal(counter, 5, 'Revert should trigger event'); input.dispose(); diff --git a/src/vs/workbench/test/electron-browser/api/extHostDocumentSaveParticipant.test.ts b/src/vs/workbench/test/electron-browser/api/extHostDocumentSaveParticipant.test.ts index c5be878b29c..b44d25fba63 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostDocumentSaveParticipant.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostDocumentSaveParticipant.test.ts @@ -19,6 +19,7 @@ import { mock } from 'vs/workbench/test/electron-browser/api/mock'; import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; import { NullLogService } from 'vs/platform/log/common/log'; import { isResourceTextEdit, ResourceTextEdit } from 'vs/editor/common/modes'; +import { timeout } from 'vs/base/common/async'; suite('ExtHostDocumentSaveParticipant', () => { @@ -166,12 +167,12 @@ suite('ExtHostDocumentSaveParticipant', () => { let callCount = 0; let sub1 = participant.getOnWillSaveTextDocumentEvent(nullExtensionDescription)(function (event) { callCount += 1; - event.waitUntil(TPromise.timeout(17)); + event.waitUntil(timeout(17)); }); let sub2 = participant.getOnWillSaveTextDocumentEvent(nullExtensionDescription)(function (event) { callCount += 1; - event.waitUntil(TPromise.timeout(17)); + event.waitUntil(timeout(17)); }); let sub3 = participant.getOnWillSaveTextDocumentEvent(nullExtensionDescription)(function (event) { @@ -193,9 +194,9 @@ suite('ExtHostDocumentSaveParticipant', () => { let sub = participant.getOnWillSaveTextDocumentEvent(nullExtensionDescription)(function (event) { - event.waitUntil(TPromise.timeout(10)); - event.waitUntil(TPromise.timeout(10)); - event.waitUntil(TPromise.timeout(10)); + event.waitUntil(timeout(10)); + event.waitUntil(timeout(10)); + event.waitUntil(timeout(10)); }); return participant.$participateInSave(resource, SaveReason.EXPLICIT).then(() => { @@ -212,7 +213,7 @@ suite('ExtHostDocumentSaveParticipant', () => { event.waitUntil(new TPromise((resolve, reject) => { setTimeout(() => { try { - assert.throws(() => event.waitUntil(TPromise.timeout(10))); + assert.throws(() => event.waitUntil(timeout(10))); resolve(void 0); } catch (e) { reject(e); @@ -231,7 +232,7 @@ suite('ExtHostDocumentSaveParticipant', () => { const participant = new ExtHostDocumentSaveParticipant(nullLogService, documents, mainThreadEditors, { timeout: 5, errors: 3 }); let sub = participant.getOnWillSaveTextDocumentEvent(nullExtensionDescription)(function (event) { - event.waitUntil(TPromise.timeout(15)); + event.waitUntil(timeout(15)); }); return participant.$participateInSave(resource, SaveReason.EXPLICIT).then(values => { diff --git a/src/vs/workbench/test/electron-browser/api/mainThreadDocuments.test.ts b/src/vs/workbench/test/electron-browser/api/mainThreadDocuments.test.ts index b99f976b124..c1b40738ed7 100644 --- a/src/vs/workbench/test/electron-browser/api/mainThreadDocuments.test.ts +++ b/src/vs/workbench/test/electron-browser/api/mainThreadDocuments.test.ts @@ -8,7 +8,7 @@ import * as assert from 'assert'; import { BoundModelReferenceCollection } from 'vs/workbench/api/electron-browser/mainThreadDocuments'; import { TextModel } from 'vs/editor/common/model/textModel'; -import { TPromise } from 'vs/base/common/winjs.base'; +import { timeout } from 'vs/base/common/async'; suite('BoundModelReferenceCollection', () => { @@ -29,7 +29,7 @@ suite('BoundModelReferenceCollection', () => { } }); - return TPromise.timeout(30).then(() => { + return timeout(30).then(() => { assert.equal(didDispose, true); }); }); From 21c8bb66796285507064fe7be50a6f4bba0532cd Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 8 Mar 2018 11:19:36 +0100 Subject: [PATCH 224/658] :lipstick: --- src/vs/base/test/common/cache.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/vs/base/test/common/cache.test.ts b/src/vs/base/test/common/cache.test.ts index fbae6a16147..521c59b3375 100644 --- a/src/vs/base/test/common/cache.test.ts +++ b/src/vs/base/test/common/cache.test.ts @@ -8,7 +8,6 @@ import * as assert from 'assert'; import Cache from 'vs/base/common/cache'; import { TPromise } from 'vs/base/common/winjs.base'; -import { timeout } from 'vs/base/common/async'; suite('Cache', () => { @@ -37,7 +36,7 @@ suite('Cache', () => { const cache = new Cache(() => { counter1++; - return timeout(1).then(() => counter2++); + return TPromise.timeout(1).then(() => counter2++); }); assert.equal(counter1, 0); From 4efecc46bf72399799e371aa5a6bb381faf79233 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 11:22:57 +0100 Subject: [PATCH 225/658] fix directory jumping --- build/tfs/darwin/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 66bff1dda0c..58518a2246e 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -29,7 +29,7 @@ steps: # name: test - script: | - cd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin-unsigned.zip * + pushd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin-unsigned.zip * && popd AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" node build/tfs/common/publish.js "$(VSCODE_QUALITY)" darwin archive-unsigned "VSCode-darwin-$(VSCODE_QUALITY)-unsigned.zip" "$(VERSION)" false "$(UNSIGNEDZIP)" AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" node build/tfs/common/enqueue.js "$(VSCODE_QUALITY)" npm run gulp -- upload-vscode-configuration \ No newline at end of file From 63865cba76bbf4e6955cd6b3577110361434cdd7 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 8 Mar 2018 11:30:06 +0100 Subject: [PATCH 226/658] fix #45195 --- src/vs/base/common/labels.ts | 2 +- src/vs/base/test/common/labels.test.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/base/common/labels.ts b/src/vs/base/common/labels.ts index cb962143454..60b7381d5a6 100644 --- a/src/vs/base/common/labels.ts +++ b/src/vs/base/common/labels.ts @@ -325,7 +325,7 @@ export function template(template: string, values: { [key: string]: string | ISe const left = segments[index - 1]; const right = segments[index + 1]; - return [left, right].every(segment => segment && segment.type === Type.VARIABLE && segment.value.length > 0); + return [left, right].every(segment => segment && (segment.type === Type.VARIABLE || segment.type === Type.TEXT) && segment.value.length > 0); } // accept any TEXT and VARIABLE diff --git a/src/vs/base/test/common/labels.test.ts b/src/vs/base/test/common/labels.test.ts index 3cdb5adb088..a2b4adfec35 100644 --- a/src/vs/base/test/common/labels.test.ts +++ b/src/vs/base/test/common/labels.test.ts @@ -125,9 +125,9 @@ suite('Labels', () => { // conditional separator assert.strictEqual(labels.template('Foo${separator}Bar'), 'FooBar'); - assert.strictEqual(labels.template('Foo${separator}Bar', { separator: { label: ' - ' } }), 'FooBar'); - assert.strictEqual(labels.template('${separator}Foo${separator}Bar', { value: 'something', separator: { label: ' - ' } }), 'FooBar'); - assert.strictEqual(labels.template('${value} Foo${separator}Bar', { value: 'something', separator: { label: ' - ' } }), 'something FooBar'); + assert.strictEqual(labels.template('Foo${separator}Bar', { separator: { label: ' - ' } }), 'Foo - Bar'); + assert.strictEqual(labels.template('${separator}Foo${separator}Bar', { value: 'something', separator: { label: ' - ' } }), 'Foo - Bar'); + assert.strictEqual(labels.template('${value} Foo${separator}Bar', { value: 'something', separator: { label: ' - ' } }), 'something Foo - Bar'); // // real world example (macOS) let t = '${activeEditorShort}${separator}${rootName}'; From 6e9796737edb7a3325d28ff6d9dd817006d92179 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 11:38:30 +0100 Subject: [PATCH 227/658] fix build --- build/tfs/darwin/build.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 58518a2246e..e885c2f9b4c 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -30,6 +30,11 @@ steps: - script: | pushd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin-unsigned.zip * && popd - AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" node build/tfs/common/publish.js "$(VSCODE_QUALITY)" darwin archive-unsigned "VSCode-darwin-$(VSCODE_QUALITY)-unsigned.zip" "$(VERSION)" false "$(UNSIGNEDZIP)" + + PACKAGEJSON=`ls ../VSCode-darwin/*.app/Contents/Resources/app/package.json` + VERSION=`node -p "require(\"$PACKAGEJSON\").version"` + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" node build/tfs/common/publish.js "$(VSCODE_QUALITY)" darwin archive-unsigned "VSCode-darwin-$(VSCODE_QUALITY)-unsigned.zip" $VERSION false ../VSCode-darwin-unsigned.zip + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" node build/tfs/common/enqueue.js "$(VSCODE_QUALITY)" + npm run gulp -- upload-vscode-configuration \ No newline at end of file From 059ed0f940dbbc24acfd70bd64204f3223ef063f Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Thu, 8 Mar 2018 05:35:02 -0800 Subject: [PATCH 228/658] vscode-xterm@3.3.0-beta3 Fixes #45228 --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 8dd2860eeb4..04dbcf5c946 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "vscode-nsfw": "1.0.17", "vscode-ripgrep": "0.7.1-patch.0.1", "vscode-textmate": "^3.2.0", - "vscode-xterm": "3.3.0-beta2", + "vscode-xterm": "3.3.0-beta3", "yauzl": "2.8.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index cca157d5065..42d3d1e77d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5996,9 +5996,9 @@ vscode-textmate@^3.2.0: fast-plist "^0.1.2" oniguruma "^6.0.1" -vscode-xterm@3.3.0-beta2: - version "3.3.0-beta2" - resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.3.0-beta2.tgz#b3b90cdf1fada306662a1eacf43e1d38229aa254" +vscode-xterm@3.3.0-beta3: + version "3.3.0-beta3" + resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.3.0-beta3.tgz#f265a7e1b963f341c728bb23e2399e8298270dcd" vso-node-api@^6.1.2-preview: version "6.1.2-preview" From b6a0773c292ddb4c0a3656743fdb0b42a3f9ec7b Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 8 Mar 2018 14:10:45 +0100 Subject: [PATCH 229/658] settings wording --- src/vs/workbench/electron-browser/main.contribution.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index 136a7292250..09d6296c839 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -336,7 +336,7 @@ configurationRegistry.registerConfiguration({ 'type': 'string', 'default': isMacintosh ? '${activeEditorShort}${separator}${rootName}' : '${dirty}${activeEditorShort}${separator}${rootName}${separator}${appName}', 'description': nls.localize({ comment: ['This is the description for a setting. Values surrounded by parenthesis are not to be translated.'], key: 'title' }, - "Controls the window title based on the active editor. Variables are substituted based on the context:\n\${activeEditorShort}: the file name (e.g. myFile.txt)\n\${activeEditorMedium}: the path of the file relative to the workspace folder (e.g. myFolder/myFile.txt)\n\${activeEditorLong}: the full path of the file (e.g. /Users/Development/myProject/myFolder/myFile.txt)\n\${folderName}: name of the workspace folder the file is contained in (e.g. myFolder)\n\${folderPath}: file path of the workspace folder the file is contained in (e.g. /Users/Development/myFolder)\n\${rootName}: name of the workspace (e.g. myFolder or myWorkspace)\n\${rootPath}: file path of the workspace (e.g. /Users/Development/myWorkspace)\n\${appName}: e.g. VS Code\n\${dirty}: a dirty indicator if the active editor is dirty\n\${separator}: a conditional separator (\" - \") that only shows when surrounded by variables with values") + "Controls the window title based on the active editor. Variables are substituted based on the context:\n\${activeEditorShort}: the file name (e.g. myFile.txt)\n\${activeEditorMedium}: the path of the file relative to the workspace folder (e.g. myFolder/myFile.txt)\n\${activeEditorLong}: the full path of the file (e.g. /Users/Development/myProject/myFolder/myFile.txt)\n\${folderName}: name of the workspace folder the file is contained in (e.g. myFolder)\n\${folderPath}: file path of the workspace folder the file is contained in (e.g. /Users/Development/myFolder)\n\${rootName}: name of the workspace (e.g. myFolder or myWorkspace)\n\${rootPath}: file path of the workspace (e.g. /Users/Development/myWorkspace)\n\${appName}: e.g. VS Code\n\${dirty}: a dirty indicator if the active editor is dirty\n\${separator}: a conditional separator (\" - \") that only shows when surrounded by variables with values or static text") }, 'window.newWindowDimensions': { 'type': 'string', From 2b5770854e95bc69577196537a8bcb8ac6de6a9c Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 8 Mar 2018 14:56:13 +0100 Subject: [PATCH 230/658] move markers panel into electron-browser --- .../debug/electron-browser/debugService.ts | 2 +- .../browser/markersWorkbenchContributions.ts | 82 -------- .../{common => electron-browser}/constants.ts | 0 .../electron-browser/markers.contribution.ts | 192 ++++++++++++++++++ .../{common => electron-browser}/markers.ts | 8 +- .../markersElectronContributions.ts | 128 ------------ .../markersFileDecorations.ts | 0 .../markersModel.ts | 2 +- .../markersPanel.ts | 14 +- .../markersPanelActions.ts | 10 +- .../markersTreeController.ts | 2 +- .../markersTreeViewer.ts | 4 +- .../media/markers.css | 0 .../media/status-error-inverse.svg | 0 .../media/status-error.svg | 0 .../media/status-info-inverse.svg | 0 .../media/status-info.svg | 0 .../media/status-warning-inverse.svg | 0 .../media/status-warning.svg | 0 .../{common => electron-browser}/messages.ts | 0 .../parts/markers/markers.contribution.ts | 11 - .../markersModel.test.ts | 2 +- .../electron-browser/task.contribution.ts | 2 +- src/vs/workbench/workbench.main.ts | 3 +- 24 files changed, 218 insertions(+), 244 deletions(-) delete mode 100644 src/vs/workbench/parts/markers/browser/markersWorkbenchContributions.ts rename src/vs/workbench/parts/markers/{common => electron-browser}/constants.ts (100%) create mode 100644 src/vs/workbench/parts/markers/electron-browser/markers.contribution.ts rename src/vs/workbench/parts/markers/{common => electron-browser}/markers.ts (91%) delete mode 100644 src/vs/workbench/parts/markers/electron-browser/markersElectronContributions.ts rename src/vs/workbench/parts/markers/{browser => electron-browser}/markersFileDecorations.ts (100%) rename src/vs/workbench/parts/markers/{common => electron-browser}/markersModel.ts (99%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/markersPanel.ts (96%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/markersPanelActions.ts (95%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/markersTreeController.ts (97%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/markersTreeViewer.ts (98%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/media/markers.css (100%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/media/status-error-inverse.svg (100%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/media/status-error.svg (100%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/media/status-info-inverse.svg (100%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/media/status-info.svg (100%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/media/status-warning-inverse.svg (100%) rename src/vs/workbench/parts/markers/{browser => electron-browser}/media/status-warning.svg (100%) rename src/vs/workbench/parts/markers/{common => electron-browser}/messages.ts (100%) delete mode 100644 src/vs/workbench/parts/markers/markers.contribution.ts rename src/vs/workbench/parts/markers/test/{common => electron-browser}/markersModel.test.ts (99%) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index b7f3f4f5a98..d9080ab9ac2 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -35,7 +35,7 @@ import { Model, ExceptionBreakpoint, FunctionBreakpoint, Breakpoint, Expression, import { ViewModel } from 'vs/workbench/parts/debug/common/debugViewModel'; import * as debugactions from 'vs/workbench/parts/debug/browser/debugActions'; import { ConfigurationManager } from 'vs/workbench/parts/debug/electron-browser/debugConfigurationManager'; -import Constants from 'vs/workbench/parts/markers/common/constants'; +import Constants from 'vs/workbench/parts/markers/electron-browser/constants'; import { ITaskService, ITaskSummary } from 'vs/workbench/parts/tasks/common/taskService'; import { TaskError } from 'vs/workbench/parts/tasks/common/taskSystem'; import { VIEWLET_ID as EXPLORER_VIEWLET_ID } from 'vs/workbench/parts/files/common/files'; diff --git a/src/vs/workbench/parts/markers/browser/markersWorkbenchContributions.ts b/src/vs/workbench/parts/markers/browser/markersWorkbenchContributions.ts deleted file mode 100644 index 70489480afa..00000000000 --- a/src/vs/workbench/parts/markers/browser/markersWorkbenchContributions.ts +++ /dev/null @@ -1,82 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import Messages from 'vs/workbench/parts/markers/common/messages'; -import Constants from 'vs/workbench/parts/markers/common/constants'; -import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; -import { Registry } from 'vs/platform/registry/common/platform'; -import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; -import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; -import { PanelRegistry, Extensions as PanelExtensions, PanelDescriptor } from 'vs/workbench/browser/panel'; -import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; -import { ToggleMarkersPanelAction, ShowProblemsPanelAction } from 'vs/workbench/parts/markers/browser/markersPanelActions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; -import { MarkersPanel } from 'vs/workbench/parts/markers/browser/markersPanel'; -import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { IMarkersWorkbenchService, MarkersWorkbenchService } from 'vs/workbench/parts/markers/common/markers'; - -export function registerContributions(): void { - - registerSingleton(IMarkersWorkbenchService, MarkersWorkbenchService); - - KeybindingsRegistry.registerCommandAndKeybindingRule({ - id: Constants.MARKER_OPEN_SIDE_ACTION_ID, - weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), - when: ContextKeyExpr.and(Constants.MarkerFocusContextKey), - primary: KeyMod.CtrlCmd | KeyCode.Enter, - mac: { - primary: KeyMod.WinCtrl | KeyCode.Enter - }, - handler: (accessor, args: any) => { - const markersPanel = (accessor.get(IPanelService).getActivePanel()); - markersPanel.openFileAtElement(markersPanel.getFocusElement(), false, true, true); - } - }); - - KeybindingsRegistry.registerCommandAndKeybindingRule({ - id: Constants.MARKER_SHOW_PANEL_ID, - weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), - when: undefined, - primary: undefined, - handler: (accessor, args: any) => { - accessor.get(IPanelService).openPanel(Constants.MARKERS_PANEL_ID); - } - }); - - // configuration - Registry.as(Extensions.Configuration).registerConfiguration({ - 'id': 'problems', - 'order': 101, - 'title': Messages.PROBLEMS_PANEL_CONFIGURATION_TITLE, - 'type': 'object', - 'properties': { - 'problems.autoReveal': { - 'description': Messages.PROBLEMS_PANEL_CONFIGURATION_AUTO_REVEAL, - 'type': 'boolean', - 'default': true - } - } - }); - - - // markers panel - Registry.as(PanelExtensions.Panels).registerPanel(new PanelDescriptor( - MarkersPanel, - Constants.MARKERS_PANEL_ID, - Messages.MARKERS_PANEL_TITLE_PROBLEMS, - 'markersPanel', - 10, - ToggleMarkersPanelAction.ID - )); - - // actions - const registry = Registry.as(ActionExtensions.WorkbenchActions); - registry.registerWorkbenchAction(new SyncActionDescriptor(ToggleMarkersPanelAction, ToggleMarkersPanelAction.ID, ToggleMarkersPanelAction.LABEL, { - primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_M - }), 'View: Toggle Problems (Errors, Warnings, Infos)', Messages.MARKERS_PANEL_VIEW_CATEGORY); - registry.registerWorkbenchAction(new SyncActionDescriptor(ShowProblemsPanelAction, ShowProblemsPanelAction.ID, ShowProblemsPanelAction.LABEL), 'View: Focus Problems (Errors, Warnings, Infos)', Messages.MARKERS_PANEL_VIEW_CATEGORY); -} diff --git a/src/vs/workbench/parts/markers/common/constants.ts b/src/vs/workbench/parts/markers/electron-browser/constants.ts similarity index 100% rename from src/vs/workbench/parts/markers/common/constants.ts rename to src/vs/workbench/parts/markers/electron-browser/constants.ts diff --git a/src/vs/workbench/parts/markers/electron-browser/markers.contribution.ts b/src/vs/workbench/parts/markers/electron-browser/markers.contribution.ts new file mode 100644 index 00000000000..2c1ecca2c3f --- /dev/null +++ b/src/vs/workbench/parts/markers/electron-browser/markers.contribution.ts @@ -0,0 +1,192 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + + +import { clipboard } from 'electron'; +import { CommandsRegistry, ICommandHandler } from 'vs/platform/commands/common/commands'; +import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; +import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; +import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; +import { KeybindingsRegistry, IKeybindings } from 'vs/platform/keybinding/common/keybindingsRegistry'; +import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; +import { localize } from 'vs/nls'; +import { Marker } from 'vs/workbench/parts/markers/electron-browser/markersModel'; +import { MarkersPanel } from 'vs/workbench/parts/markers/electron-browser/markersPanel'; +import { MenuId, MenuRegistry, SyncActionDescriptor } from 'vs/platform/actions/common/actions'; +import { PanelRegistry, Extensions as PanelExtensions, PanelDescriptor } from 'vs/workbench/browser/panel'; +import { Registry } from 'vs/platform/registry/common/platform'; +import { ToggleMarkersPanelAction, ShowProblemsPanelAction } from 'vs/workbench/parts/markers/electron-browser/markersPanelActions'; +import Constants from 'vs/workbench/parts/markers/electron-browser/constants'; +import Messages from 'vs/workbench/parts/markers/electron-browser/messages'; + +import './markers'; +import './markersFileDecorations'; + +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: Constants.MARKER_OPEN_SIDE_ACTION_ID, + weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), + when: ContextKeyExpr.and(Constants.MarkerFocusContextKey), + primary: KeyMod.CtrlCmd | KeyCode.Enter, + mac: { + primary: KeyMod.WinCtrl | KeyCode.Enter + }, + handler: (accessor, args: any) => { + const markersPanel = (accessor.get(IPanelService).getActivePanel()); + markersPanel.openFileAtElement(markersPanel.getFocusElement(), false, true, true); + } +}); + +KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: Constants.MARKER_SHOW_PANEL_ID, + weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), + when: undefined, + primary: undefined, + handler: (accessor, args: any) => { + accessor.get(IPanelService).openPanel(Constants.MARKERS_PANEL_ID); + } +}); + +// configuration +Registry.as(Extensions.Configuration).registerConfiguration({ + 'id': 'problems', + 'order': 101, + 'title': Messages.PROBLEMS_PANEL_CONFIGURATION_TITLE, + 'type': 'object', + 'properties': { + 'problems.autoReveal': { + 'description': Messages.PROBLEMS_PANEL_CONFIGURATION_AUTO_REVEAL, + 'type': 'boolean', + 'default': true + } + } +}); + + +// markers panel +Registry.as(PanelExtensions.Panels).registerPanel(new PanelDescriptor( + MarkersPanel, + Constants.MARKERS_PANEL_ID, + Messages.MARKERS_PANEL_TITLE_PROBLEMS, + 'markersPanel', + 10, + ToggleMarkersPanelAction.ID +)); + +// actions +const registry = Registry.as(ActionExtensions.WorkbenchActions); +registry.registerWorkbenchAction(new SyncActionDescriptor(ToggleMarkersPanelAction, ToggleMarkersPanelAction.ID, ToggleMarkersPanelAction.LABEL, { + primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_M +}), 'View: Toggle Problems (Errors, Warnings, Infos)', Messages.MARKERS_PANEL_VIEW_CATEGORY); +registry.registerWorkbenchAction(new SyncActionDescriptor(ShowProblemsPanelAction, ShowProblemsPanelAction.ID, ShowProblemsPanelAction.LABEL), 'View: Focus Problems (Errors, Warnings, Infos)', Messages.MARKERS_PANEL_VIEW_CATEGORY); +registerAction({ + id: Constants.MARKER_COPY_ACTION_ID, + title: localize('copyMarker', "Copy"), + handler(accessor) { + copyMarker(accessor.get(IPanelService)); + }, + menu: { + menuId: MenuId.ProblemsPanelContext, + when: Constants.MarkerFocusContextKey, + group: 'navigation' + }, + keybinding: { + keys: { + primary: KeyMod.CtrlCmd | KeyCode.KEY_C + }, + when: Constants.MarkerFocusContextKey + } +}); +registerAction({ + id: Constants.MARKER_COPY_MESSAGE_ACTION_ID, + title: localize('copyMarkerMessage', "Copy Message"), + handler(accessor) { + copyMessage(accessor.get(IPanelService)); + }, + menu: { + menuId: MenuId.ProblemsPanelContext, + when: Constants.MarkerFocusContextKey, + group: 'navigation' + } +}); + + +function copyMarker(panelService: IPanelService) { + const activePanel = panelService.getActivePanel(); + if (activePanel instanceof MarkersPanel) { + const element = (activePanel).getFocusElement(); + if (element instanceof Marker) { + clipboard.writeText(`${element}`); + } + } +} + +function copyMessage(panelService: IPanelService) { + const activePanel = panelService.getActivePanel(); + if (activePanel instanceof MarkersPanel) { + const element = (activePanel).getFocusElement(); + if (element instanceof Marker) { + clipboard.writeText(element.raw.message); + } + } +} + +interface IActionDescriptor { + id: string; + handler: ICommandHandler; + + // ICommandUI + title: string; + category?: string; + f1?: boolean; + + // + menu?: { + menuId: MenuId, + when?: ContextKeyExpr; + group?: string; + }; + + // + keybinding?: { + when?: ContextKeyExpr; + weight?: number; + keys: IKeybindings; + }; +} + +function registerAction(desc: IActionDescriptor) { + + const { id, handler, title, category, menu, keybinding } = desc; + + // 1) register as command + CommandsRegistry.registerCommand(id, handler); + + // 2) menus + let command = { id, title, category }; + if (menu) { + let { menuId, when, group } = menu; + MenuRegistry.appendMenuItem(menuId, { + command, + when, + group + }); + } + + // 3) keybindings + if (keybinding) { + let { when, weight, keys } = keybinding; + KeybindingsRegistry.registerKeybindingRule({ + id, + when, + weight, + primary: keys.primary, + secondary: keys.secondary, + linux: keys.linux, + mac: keys.mac, + win: keys.win + }); + } +} diff --git a/src/vs/workbench/parts/markers/common/markers.ts b/src/vs/workbench/parts/markers/electron-browser/markers.ts similarity index 91% rename from src/vs/workbench/parts/markers/common/markers.ts rename to src/vs/workbench/parts/markers/electron-browser/markers.ts index 6bf86a6064b..f0bf981423c 100644 --- a/src/vs/workbench/parts/markers/common/markers.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markers.ts @@ -4,14 +4,15 @@ *--------------------------------------------------------------------------------------------*/ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { MarkersModel, FilterOptions } from 'vs/workbench/parts/markers/common/markersModel'; +import { MarkersModel, FilterOptions } from './markersModel'; import { Disposable } from 'vs/base/common/lifecycle'; import { IMarkerService } from 'vs/platform/markers/common/markers'; import { IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity'; import { localize } from 'vs/nls'; -import Constants from 'vs/workbench/parts/markers/common/constants'; +import Constants from './constants'; import URI from 'vs/base/common/uri'; import Event, { Emitter } from 'vs/base/common/event'; +import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; export const IMarkersWorkbenchService = createDecorator('markersWorkbenchService'); @@ -62,3 +63,6 @@ export class MarkersWorkbenchService extends Disposable implements IMarkersWorkb this.activityService.showActivity(Constants.MARKERS_PANEL_ID, new NumberBadge(filtered, () => message)); } } + + +registerSingleton(IMarkersWorkbenchService, MarkersWorkbenchService); diff --git a/src/vs/workbench/parts/markers/electron-browser/markersElectronContributions.ts b/src/vs/workbench/parts/markers/electron-browser/markersElectronContributions.ts deleted file mode 100644 index fd27e672ab8..00000000000 --- a/src/vs/workbench/parts/markers/electron-browser/markersElectronContributions.ts +++ /dev/null @@ -1,128 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { localize } from 'vs/nls'; -import { clipboard } from 'electron'; -import { Marker } from 'vs/workbench/parts/markers/common/markersModel'; -import Constants from 'vs/workbench/parts/markers/common/constants'; -import { CommandsRegistry, ICommandHandler } from 'vs/platform/commands/common/commands'; -import { MenuId, MenuRegistry } from 'vs/platform/actions/common/actions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { KeybindingsRegistry, IKeybindings } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; -import { MarkersPanel } from 'vs/workbench/parts/markers/browser/markersPanel'; -import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; - - -export function registerContributions(): void { - registerAction({ - id: Constants.MARKER_COPY_ACTION_ID, - title: localize('copyMarker', "Copy"), - handler(accessor) { - copyMarker(accessor.get(IPanelService)); - }, - menu: { - menuId: MenuId.ProblemsPanelContext, - when: Constants.MarkerFocusContextKey, - group: 'navigation' - }, - keybinding: { - keys: { - primary: KeyMod.CtrlCmd | KeyCode.KEY_C - }, - when: Constants.MarkerFocusContextKey - } - }); - registerAction({ - id: Constants.MARKER_COPY_MESSAGE_ACTION_ID, - title: localize('copyMarkerMessage', "Copy Message"), - handler(accessor) { - copyMessage(accessor.get(IPanelService)); - }, - menu: { - menuId: MenuId.ProblemsPanelContext, - when: Constants.MarkerFocusContextKey, - group: 'navigation' - } - }); -} - -function copyMarker(panelService: IPanelService) { - const activePanel = panelService.getActivePanel(); - if (activePanel instanceof MarkersPanel) { - const element = (activePanel).getFocusElement(); - if (element instanceof Marker) { - clipboard.writeText(`${element}`); - } - } -} - -function copyMessage(panelService: IPanelService) { - const activePanel = panelService.getActivePanel(); - if (activePanel instanceof MarkersPanel) { - const element = (activePanel).getFocusElement(); - if (element instanceof Marker) { - clipboard.writeText(element.raw.message); - } - } -} - -interface IActionDescriptor { - id: string; - handler: ICommandHandler; - - // ICommandUI - title: string; - category?: string; - f1?: boolean; - - // - menu?: { - menuId: MenuId, - when?: ContextKeyExpr; - group?: string; - }; - - // - keybinding?: { - when?: ContextKeyExpr; - weight?: number; - keys: IKeybindings; - }; -} - -function registerAction(desc: IActionDescriptor) { - - const { id, handler, title, category, menu, keybinding } = desc; - - // 1) register as command - CommandsRegistry.registerCommand(id, handler); - - // 2) menus - let command = { id, title, category }; - if (menu) { - let { menuId, when, group } = menu; - MenuRegistry.appendMenuItem(menuId, { - command, - when, - group - }); - } - - // 3) keybindings - if (keybinding) { - let { when, weight, keys } = keybinding; - KeybindingsRegistry.registerKeybindingRule({ - id, - when, - weight, - primary: keys.primary, - secondary: keys.secondary, - linux: keys.linux, - mac: keys.mac, - win: keys.win - }); - } -} diff --git a/src/vs/workbench/parts/markers/browser/markersFileDecorations.ts b/src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.ts similarity index 100% rename from src/vs/workbench/parts/markers/browser/markersFileDecorations.ts rename to src/vs/workbench/parts/markers/electron-browser/markersFileDecorations.ts diff --git a/src/vs/workbench/parts/markers/common/markersModel.ts b/src/vs/workbench/parts/markers/electron-browser/markersModel.ts similarity index 99% rename from src/vs/workbench/parts/markers/common/markersModel.ts rename to src/vs/workbench/parts/markers/electron-browser/markersModel.ts index 268aaa2cdd2..6a2b5ae92e1 100644 --- a/src/vs/workbench/parts/markers/common/markersModel.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersModel.ts @@ -10,7 +10,7 @@ import URI from 'vs/base/common/uri'; import { Range, IRange } from 'vs/editor/common/core/range'; import { IMarker } from 'vs/platform/markers/common/markers'; import { IFilter, IMatch, or, matchesContiguousSubString, matchesPrefix, matchesFuzzy } from 'vs/base/common/filters'; -import Messages from 'vs/workbench/parts/markers/common/messages'; +import Messages from 'vs/workbench/parts/markers/electron-browser/messages'; import { Schemas } from 'vs/base/common/network'; import { groupBy, isFalsyOrEmpty } from 'vs/base/common/arrays'; import { values } from 'vs/base/common/map'; diff --git a/src/vs/workbench/parts/markers/browser/markersPanel.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts similarity index 96% rename from src/vs/workbench/parts/markers/browser/markersPanel.ts rename to src/vs/workbench/parts/markers/electron-browser/markersPanel.ts index 273330a09b9..632c6c2f948 100644 --- a/src/vs/workbench/parts/markers/browser/markersPanel.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanel.ts @@ -17,20 +17,20 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; import { Panel } from 'vs/workbench/browser/panel'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; -import Constants from 'vs/workbench/parts/markers/common/constants'; -import { Marker, Resource } from 'vs/workbench/parts/markers/common/markersModel'; -import { Controller } from 'vs/workbench/parts/markers/browser/markersTreeController'; -import * as Viewer from 'vs/workbench/parts/markers/browser/markersTreeViewer'; +import Constants from 'vs/workbench/parts/markers/electron-browser/constants'; +import { Marker, Resource } from 'vs/workbench/parts/markers/electron-browser/markersModel'; +import { Controller } from 'vs/workbench/parts/markers/electron-browser/markersTreeController'; +import * as Viewer from 'vs/workbench/parts/markers/electron-browser/markersTreeViewer'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { CollapseAllAction, FilterAction, FilterInputBoxActionItem } from 'vs/workbench/parts/markers/browser/markersPanelActions'; +import { CollapseAllAction, FilterAction, FilterInputBoxActionItem } from 'vs/workbench/parts/markers/electron-browser/markersPanelActions'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import Messages from 'vs/workbench/parts/markers/common/messages'; +import Messages from 'vs/workbench/parts/markers/electron-browser/messages'; import { RangeHighlightDecorations } from 'vs/workbench/browser/parts/editor/rangeDecorations'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { debounceEvent } from 'vs/base/common/event'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { TreeResourceNavigator, WorkbenchTree } from 'vs/platform/list/browser/listService'; -import { IMarkersWorkbenchService } from 'vs/workbench/parts/markers/common/markers'; +import { IMarkersWorkbenchService } from 'vs/workbench/parts/markers/electron-browser/markers'; import { SimpleFileResourceDragAndDrop } from 'vs/workbench/browser/dnd'; export class MarkersPanel extends Panel { diff --git a/src/vs/workbench/parts/markers/browser/markersPanelActions.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts similarity index 95% rename from src/vs/workbench/parts/markers/browser/markersPanelActions.ts rename to src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts index 09247771346..995798cc77d 100644 --- a/src/vs/workbench/parts/markers/browser/markersPanelActions.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts @@ -14,9 +14,9 @@ import { KeyCode } from 'vs/base/common/keyCodes'; import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { TogglePanelAction } from 'vs/workbench/browser/panel'; -import Messages from 'vs/workbench/parts/markers/common/messages'; -import Constants from 'vs/workbench/parts/markers/common/constants'; -import { MarkersPanel } from 'vs/workbench/parts/markers/browser/markersPanel'; +import Messages from 'vs/workbench/parts/markers/electron-browser/messages'; +import Constants from 'vs/workbench/parts/markers/electron-browser/constants'; +import { MarkersPanel } from 'vs/workbench/parts/markers/electron-browser/markersPanel'; import { IPartService } from 'vs/workbench/services/part/common/partService'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; @@ -24,7 +24,7 @@ import { CollapseAllAction as TreeCollapseAction } from 'vs/base/parts/tree/brow import Tree = require('vs/base/parts/tree/browser/tree'); import { IThemeService } from 'vs/platform/theme/common/themeService'; import { attachInputBoxStyler } from 'vs/platform/theme/common/styler'; -import { IMarkersWorkbenchService } from 'vs/workbench/parts/markers/common/markers'; +import { IMarkersWorkbenchService } from 'vs/workbench/parts/markers/electron-browser/markers'; export class ToggleMarkersPanelAction extends TogglePanelAction { @@ -148,4 +148,4 @@ export class FilterInputBoxActionItem extends BaseActionItem { return; } } -} \ No newline at end of file +} diff --git a/src/vs/workbench/parts/markers/browser/markersTreeController.ts b/src/vs/workbench/parts/markers/electron-browser/markersTreeController.ts similarity index 97% rename from src/vs/workbench/parts/markers/browser/markersTreeController.ts rename to src/vs/workbench/parts/markers/electron-browser/markersTreeController.ts index fce03cf8240..236c63abba2 100644 --- a/src/vs/workbench/parts/markers/browser/markersTreeController.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersTreeController.ts @@ -7,7 +7,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; import * as mouse from 'vs/base/browser/mouseEvent'; import tree = require('vs/base/parts/tree/browser/tree'); -import { MarkersModel } from 'vs/workbench/parts/markers/common/markersModel'; +import { MarkersModel } from 'vs/workbench/parts/markers/electron-browser/markersModel'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IMenuService, MenuId } from 'vs/platform/actions/common/actions'; import { IAction } from 'vs/base/common/actions'; diff --git a/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts b/src/vs/workbench/parts/markers/electron-browser/markersTreeViewer.ts similarity index 98% rename from src/vs/workbench/parts/markers/browser/markersTreeViewer.ts rename to src/vs/workbench/parts/markers/electron-browser/markersTreeViewer.ts index f58e565e034..7495bea1148 100644 --- a/src/vs/workbench/parts/markers/browser/markersTreeViewer.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersTreeViewer.ts @@ -13,8 +13,8 @@ import { CountBadge } from 'vs/base/browser/ui/countBadge/countBadge'; import { FileLabel, ResourceLabel } from 'vs/workbench/browser/labels'; import { HighlightedLabel } from 'vs/base/browser/ui/highlightedlabel/highlightedLabel'; import { IMarker } from 'vs/platform/markers/common/markers'; -import { MarkersModel, Resource, Marker } from 'vs/workbench/parts/markers/common/markersModel'; -import Messages from 'vs/workbench/parts/markers/common/messages'; +import { MarkersModel, Resource, Marker } from 'vs/workbench/parts/markers/electron-browser/markersModel'; +import Messages from 'vs/workbench/parts/markers/electron-browser/messages'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { attachBadgeStyler } from 'vs/platform/theme/common/styler'; import { IThemeService } from 'vs/platform/theme/common/themeService'; diff --git a/src/vs/workbench/parts/markers/browser/media/markers.css b/src/vs/workbench/parts/markers/electron-browser/media/markers.css similarity index 100% rename from src/vs/workbench/parts/markers/browser/media/markers.css rename to src/vs/workbench/parts/markers/electron-browser/media/markers.css diff --git a/src/vs/workbench/parts/markers/browser/media/status-error-inverse.svg b/src/vs/workbench/parts/markers/electron-browser/media/status-error-inverse.svg similarity index 100% rename from src/vs/workbench/parts/markers/browser/media/status-error-inverse.svg rename to src/vs/workbench/parts/markers/electron-browser/media/status-error-inverse.svg diff --git a/src/vs/workbench/parts/markers/browser/media/status-error.svg b/src/vs/workbench/parts/markers/electron-browser/media/status-error.svg similarity index 100% rename from src/vs/workbench/parts/markers/browser/media/status-error.svg rename to src/vs/workbench/parts/markers/electron-browser/media/status-error.svg diff --git a/src/vs/workbench/parts/markers/browser/media/status-info-inverse.svg b/src/vs/workbench/parts/markers/electron-browser/media/status-info-inverse.svg similarity index 100% rename from src/vs/workbench/parts/markers/browser/media/status-info-inverse.svg rename to src/vs/workbench/parts/markers/electron-browser/media/status-info-inverse.svg diff --git a/src/vs/workbench/parts/markers/browser/media/status-info.svg b/src/vs/workbench/parts/markers/electron-browser/media/status-info.svg similarity index 100% rename from src/vs/workbench/parts/markers/browser/media/status-info.svg rename to src/vs/workbench/parts/markers/electron-browser/media/status-info.svg diff --git a/src/vs/workbench/parts/markers/browser/media/status-warning-inverse.svg b/src/vs/workbench/parts/markers/electron-browser/media/status-warning-inverse.svg similarity index 100% rename from src/vs/workbench/parts/markers/browser/media/status-warning-inverse.svg rename to src/vs/workbench/parts/markers/electron-browser/media/status-warning-inverse.svg diff --git a/src/vs/workbench/parts/markers/browser/media/status-warning.svg b/src/vs/workbench/parts/markers/electron-browser/media/status-warning.svg similarity index 100% rename from src/vs/workbench/parts/markers/browser/media/status-warning.svg rename to src/vs/workbench/parts/markers/electron-browser/media/status-warning.svg diff --git a/src/vs/workbench/parts/markers/common/messages.ts b/src/vs/workbench/parts/markers/electron-browser/messages.ts similarity index 100% rename from src/vs/workbench/parts/markers/common/messages.ts rename to src/vs/workbench/parts/markers/electron-browser/messages.ts diff --git a/src/vs/workbench/parts/markers/markers.contribution.ts b/src/vs/workbench/parts/markers/markers.contribution.ts deleted file mode 100644 index b7b91dbc852..00000000000 --- a/src/vs/workbench/parts/markers/markers.contribution.ts +++ /dev/null @@ -1,11 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { registerContributions } from 'vs/workbench/parts/markers/browser/markersWorkbenchContributions'; -import { registerContributions as registerElectronContributions } from 'vs/workbench/parts/markers/electron-browser/markersElectronContributions'; - -import './browser/markersFileDecorations'; - -registerContributions(); -registerElectronContributions(); diff --git a/src/vs/workbench/parts/markers/test/common/markersModel.test.ts b/src/vs/workbench/parts/markers/test/electron-browser/markersModel.test.ts similarity index 99% rename from src/vs/workbench/parts/markers/test/common/markersModel.test.ts rename to src/vs/workbench/parts/markers/test/electron-browser/markersModel.test.ts index aeefe2c50f3..c53f7ae09d4 100644 --- a/src/vs/workbench/parts/markers/test/common/markersModel.test.ts +++ b/src/vs/workbench/parts/markers/test/electron-browser/markersModel.test.ts @@ -9,7 +9,7 @@ import assert = require('assert'); import URI from 'vs/base/common/uri'; import Severity from 'vs/base/common/severity'; import { IMarker } from 'vs/platform/markers/common/markers'; -import { MarkersModel, Marker, Resource } from 'vs/workbench/parts/markers/common/markersModel'; +import { MarkersModel, Marker, Resource } from 'vs/workbench/parts/markers/electron-browser/markersModel'; class TestMarkersModel extends MarkersModel { diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index 278b41bec89..11721ad823d 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -58,7 +58,7 @@ import { IQuickOpenRegistry, Extensions as QuickOpenExtensions, QuickOpenHandler import { IQuickOpenService, IPickOpenEntry, IPickOpenAction, IPickOpenItem } from 'vs/platform/quickOpen/common/quickOpen'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; -import Constants from 'vs/workbench/parts/markers/common/constants'; +import Constants from 'vs/workbench/parts/markers/electron-browser/constants'; import { IPartService } from 'vs/workbench/services/part/common/partService'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; diff --git a/src/vs/workbench/workbench.main.ts b/src/vs/workbench/workbench.main.ts index ff1a9f22748..62d2302178b 100644 --- a/src/vs/workbench/workbench.main.ts +++ b/src/vs/workbench/workbench.main.ts @@ -63,8 +63,7 @@ import 'vs/workbench/parts/debug/electron-browser/repl'; import 'vs/workbench/parts/debug/browser/debugEditorActions'; import 'vs/workbench/parts/debug/browser/debugViewlet'; // can be packaged separately -import 'vs/workbench/parts/markers/markers.contribution'; -import 'vs/workbench/parts/markers/browser/markersPanel'; // can be packaged separately +import 'vs/workbench/parts/markers/electron-browser/markers.contribution'; import 'vs/workbench/parts/html/electron-browser/html.contribution'; From d10a4f49750fc7e0635601eebdbb633e2e9833d6 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 8 Mar 2018 14:59:58 +0100 Subject: [PATCH 231/658] notifications - remove toasts from DOM that are not visible --- .../parts/notifications/notificationsToasts.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/browser/parts/notifications/notificationsToasts.ts b/src/vs/workbench/browser/parts/notifications/notificationsToasts.ts index 6fb9023c111..2ec0b43a231 100644 --- a/src/vs/workbench/browser/parts/notifications/notificationsToasts.ts +++ b/src/vs/workbench/browser/parts/notifications/notificationsToasts.ts @@ -466,10 +466,18 @@ export class NotificationsToasts extends Themable { } private setVisibility(toast: INotificationToast, visible: boolean): void { - toast.container.style.display = visible ? 'block' : 'none'; + if (this.isVisible(toast) === visible) { + return; + } + + if (visible) { + this.notificationsToastsContainer.appendChild(toast.container); + } else { + this.notificationsToastsContainer.removeChild(toast.container); + } } private isVisible(toast: INotificationToast): boolean { - return toast.container.style.display === 'block'; + return !!toast.container.parentElement; } } \ No newline at end of file From 667f21b4fe747fe8fb23a94bfa26d316da2b8f85 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 15:12:48 +0100 Subject: [PATCH 232/658] cleanup darwin build --- build/tfs/darwin/build.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index e885c2f9b4c..7754903ef33 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -29,12 +29,27 @@ steps: # name: test - script: | + # archive the unsigned build pushd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin-unsigned.zip * && popd + # publish the unsigned build PACKAGEJSON=`ls ../VSCode-darwin/*.app/Contents/Resources/app/package.json` VERSION=`node -p "require(\"$PACKAGEJSON\").version"` - AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" node build/tfs/common/publish.js "$(VSCODE_QUALITY)" darwin archive-unsigned "VSCode-darwin-$(VSCODE_QUALITY)-unsigned.zip" $VERSION false ../VSCode-darwin-unsigned.zip + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ + AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ + MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \ + node build/tfs/common/publish.js \ + "$(VSCODE_QUALITY)" \ + darwin \ + archive-unsigned \ + "VSCode-darwin-$(VSCODE_QUALITY)-unsigned.zip" \ + $VERSION \ + false \ + ../VSCode-darwin-unsigned.zip - AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" node build/tfs/common/enqueue.js "$(VSCODE_QUALITY)" + # enqueue the unsigned build + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ + AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ + node build/tfs/common/enqueue.js "$(VSCODE_QUALITY)" npm run gulp -- upload-vscode-configuration \ No newline at end of file From 04095e6a1648ff92c0025edbdd1f3b0b9682a52f Mon Sep 17 00:00:00 2001 From: Isidor Nikolic Date: Thu, 8 Mar 2018 15:23:12 +0100 Subject: [PATCH 233/658] Revert "Debug icons consistency and housekeeping work" --- .../parts/debug/browser/media/add-focus.svg | 2 +- .../parts/debug/browser/media/add-inverse.svg | 2 +- .../parts/debug/browser/media/add.svg | 2 +- .../media/breakpoint-conditional-dark.svg | 10 ++++++++++ .../media/breakpoint-conditional-disabled.svg | 1 - .../breakpoint-conditional-unverified.svg | 1 - .../browser/media/breakpoint-conditional.svg | 11 +++++++++- .../debug/browser/media/breakpoint-dark.svg | 1 + .../media/breakpoint-disabled-dark.svg | 1 + .../browser/media/breakpoint-disabled.svg | 2 +- .../media/breakpoint-function-dark.svg | 1 + .../breakpoint-function-disabled-dark.svg | 1 + .../media/breakpoint-function-disabled.svg | 2 +- .../breakpoint-function-unverified-dark.svg | 1 + .../media/breakpoint-function-unverified.svg | 2 +- .../browser/media/breakpoint-function.svg | 2 +- .../debug/browser/media/breakpoint-hint.svg | 1 + .../browser/media/breakpoint-log-disabled.svg | 1 - .../media/breakpoint-log-unverified.svg | 1 - .../debug/browser/media/breakpoint-log.svg | 1 - .../media/breakpoint-unsupported-dark.svg | 17 ++++++++++++++++ .../browser/media/breakpoint-unsupported.svg | 18 ++++++++++++++++- .../media/breakpoint-unverified-dark.svg | 1 + .../browser/media/breakpoint-unverified.svg | 2 +- .../parts/debug/browser/media/breakpoint.svg | 2 +- .../media/breakpoints-activate-inverse.svg | 1 + .../browser/media/breakpoints-activate.svg | 2 +- .../browser/media/clear-repl-inverse.svg | 2 +- .../parts/debug/browser/media/clear-repl.svg | 2 +- .../debug/browser/media/configure-inverse.svg | 2 +- .../parts/debug/browser/media/configure.svg | 2 +- .../debug/browser/media/continue-inverse.svg | 4 +++- .../parts/debug/browser/media/continue.svg | 4 +++- .../browser/media/current-and-breakpoint.svg | 2 +- .../debug/browser/media/current-arrow.svg | 2 +- .../parts/debug/browser/media/debug-dark.svg | 2 +- .../browser/media/debug.contribution.css | 20 +++++++++---------- .../browser/media/debugActionsWidget.css | 4 ++-- .../browser/media/disconnect-inverse.svg | 2 +- .../parts/debug/browser/media/disconnect.svg | 2 +- .../parts/debug/browser/media/drag.svg | 9 ++++++++- .../debug/browser/media/pause-inverse.svg | 2 +- .../parts/debug/browser/media/pause.svg | 2 +- .../browser/media/remove-all-inverse.svg | 2 +- .../parts/debug/browser/media/remove-all.svg | 2 +- .../debug/browser/media/remove-focus.svg | 2 +- .../debug/browser/media/remove-inverse.svg | 2 +- .../parts/debug/browser/media/remove.svg | 2 +- .../debug/browser/media/repl-inverse.svg | 2 +- .../parts/debug/browser/media/repl.svg | 2 +- .../debug/browser/media/restart-inverse.svg | 2 +- .../parts/debug/browser/media/restart.svg | 2 +- .../media/stackframe-and-breakpoint-dark.svg | 1 + .../media/stackframe-and-breakpoint.svg | 2 +- .../browser/media/stackframe-arrow-dark.svg | 1 + .../debug/browser/media/stackframe-arrow.svg | 2 +- .../debug/browser/media/step-into-inverse.svg | 2 +- .../parts/debug/browser/media/step-into.svg | 2 +- .../debug/browser/media/step-out-inverse.svg | 2 +- .../parts/debug/browser/media/step-out.svg | 2 +- .../debug/browser/media/step-over-inverse.svg | 2 +- .../parts/debug/browser/media/step-over.svg | 2 +- .../debug/browser/media/stop-inverse.svg | 2 +- .../parts/debug/browser/media/stop.svg | 2 +- .../update/electron-browser/media/update.svg | 2 +- 65 files changed, 130 insertions(+), 64 deletions(-) create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg create mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg create mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg create mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg diff --git a/src/vs/workbench/parts/debug/browser/media/add-focus.svg b/src/vs/workbench/parts/debug/browser/media/add-focus.svg index 769bd3b12bd..5e9f5851e8b 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-focus.svg @@ -1 +1 @@ -add-focus \ No newline at end of file +Layer 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg index 7d3fd77ffd6..3475c1e1963 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg @@ -1 +1 @@ -add \ No newline at end of file +Layer 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add.svg b/src/vs/workbench/parts/debug/browser/media/add.svg index 2b679663e80..bdecdb0e45b 100644 --- a/src/vs/workbench/parts/debug/browser/media/add.svg +++ b/src/vs/workbench/parts/debug/browser/media/add.svg @@ -1 +1 @@ -add \ No newline at end of file +Layer 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg new file mode 100644 index 00000000000..720679e07e8 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg @@ -0,0 +1,10 @@ + + + + + + diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg deleted file mode 100644 index ae7c86d8e51..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-conditional-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg deleted file mode 100644 index f4781277d91..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-conditional-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg index 455743a5669..77dd991c2b6 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg @@ -1 +1,10 @@ -breakpoint-conditional \ No newline at end of file + + + + + + diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg new file mode 100644 index 00000000000..5ccf397efaf --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg new file mode 100644 index 00000000000..bf58a18178f --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg index b9cc51c1547..9780270357d 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg @@ -1 +1 @@ -breakpoint-disabled \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg new file mode 100755 index 00000000000..6b2651a9a39 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg @@ -0,0 +1 @@ +BreakpointFunction_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg new file mode 100755 index 00000000000..fe6aaa60d76 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg @@ -0,0 +1 @@ +BreakpointFunction_disabled_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg index 3b191a8229b..e45fd9cb12c 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg @@ -1 +1 @@ -breakpoint-function-disabled \ No newline at end of file +BreakpointFunction_disabled_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg new file mode 100755 index 00000000000..13903346b2d --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg @@ -0,0 +1 @@ +BreakpointFunctionUnverified_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg index 3e01ce1345c..0af1324d785 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg @@ -1 +1 @@ -breakpoint-function-unverified \ No newline at end of file +BreakpointFunctionUnverified_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg index 2bc6454e520..6bc70465fa3 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg @@ -1 +1 @@ -breakpoint-function \ No newline at end of file +BreakpointFunction_16xMD \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg new file mode 100644 index 00000000000..24f20069526 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg deleted file mode 100644 index f37856481f5..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-log-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg deleted file mode 100644 index b0e1624bf79..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-log-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg deleted file mode 100644 index d6094ade2e8..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg +++ /dev/null @@ -1 +0,0 @@ -breakpoint-log \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg new file mode 100644 index 00000000000..fffcfb8cb47 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg index f7d377af128..cc0c89e1b74 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg @@ -1 +1,17 @@ -breakpoint-unsupported \ No newline at end of file + + + + + + + + + + + + + diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg new file mode 100644 index 00000000000..4a2575a3056 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg index 511448bae65..617e7ede7bd 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg @@ -1 +1 @@ -breakpoint-unverified \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg index e00d15a298f..7629294bcc5 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg @@ -1 +1 @@ -breakpoint \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg new file mode 100644 index 00000000000..07344800a2f --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg index 34809f9b1b6..b32b1cd6de6 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg @@ -1 +1 @@ -breakpoints-activate \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg index f6d7128f4bc..7df4455d7c3 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg @@ -1 +1 @@ -clear-repl \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg index 7867d13d754..6e4d3a1d481 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg @@ -1 +1 @@ -clear-repl \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg index bbfbd366eb9..61baaea2b8b 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg @@ -1 +1 @@ -configure \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure.svg b/src/vs/workbench/parts/debug/browser/media/configure.svg index c97bb48bdcc..3dec2ba50fd 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure.svg @@ -1 +1 @@ -configure \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg index 5abc15f219b..f82c45c1109 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg @@ -1 +1,3 @@ -continue \ No newline at end of file + +]> \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue.svg b/src/vs/workbench/parts/debug/browser/media/continue.svg index 99a6e9aef93..33affa1a519 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue.svg @@ -1 +1,3 @@ -continue \ No newline at end of file + +]> \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg index d947abab683..7a3e6f26357 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg @@ -1 +1 @@ -current-and-breakpoint + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg index 3ea9f6b07b8..bd1ca579f13 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg @@ -1 +1 @@ -current-arrow \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg index cedddacf03e..9a969fb3589 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg @@ -1 +1 @@ -debug-dark \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css index 2b39f7aa30d..db36f9d3069 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css +++ b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css @@ -6,7 +6,6 @@ /* Activity Bar */ .monaco-workbench > .activitybar .monaco-action-bar .action-label.debug { -webkit-mask: url('debug-dark.svg') no-repeat 50% 50%; - -webkit-mask-size: 28px; } .monaco-editor .debug-top-stack-frame-line, @@ -31,8 +30,7 @@ } .debug-breakpoint-hint { - background: url('breakpoint.svg') center center no-repeat; - opacity: .2; + background: url('breakpoint-hint.svg') center center no-repeat; } .debug-breakpoint-disabled, @@ -251,45 +249,45 @@ .vs-dark .debug-breakpoint, .hc-black .debug-breakpoint, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-column::before { - background: url('breakpoint.svg') center center no-repeat; + background: url('breakpoint-dark.svg') center center no-repeat; } .vs-dark .debug-breakpoint-conditional, .hc-black .debug-breakpoint-conditional, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-conditional-column::before { - background: url('breakpoint-conditional.svg') center center no-repeat; + background: url('breakpoint-conditional-dark.svg') center center no-repeat; } .vs-dark .debug-breakpoint-unsupported, .hc-black .debug-breakpoint-unsupported, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-unsupported-column::before { - background: url('breakpoint-unsupported.svg') center center no-repeat; + background: url('breakpoint-unsupported-dark.svg') center center no-repeat; } .vs-dark .debug-breakpoint-disabled, .hc-black .debug-breakpoint-disabled, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-disabled-column::before { - background: url('breakpoint-disabled.svg') center center no-repeat; + background: url('breakpoint-disabled-dark.svg') center center no-repeat; } .vs-dark .debug-breakpoint-unverified, .hc-black .debug-breakpoint-unverified, .monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-unverified-column::before { - background: url('breakpoint-unverified.svg') center center no-repeat; + background: url('breakpoint-unverified-dark.svg') center center no-repeat; } .monaco-editor.vs-dark .debug-focused-stack-frame { - background: url('stackframe-arrow.svg') center center no-repeat; + background: url('stackframe-arrow-dark.svg') center center no-repeat; } .monaco-editor.vs-dark .debug-focused-stack-frame.debug-breakpoint, .monaco-editor.vs-dark .debug-focused-stack-frame.debug-breakpoint-conditional { - background: url('stackframe-and-breakpoint.svg') center center no-repeat; + background: url('stackframe-and-breakpoint-dark.svg') center center no-repeat; } .vs-dark .debug-function-breakpoint, .hc-black .debug-function-breakpoint { - background: url('breakpoint-function.svg') center center no-repeat; + background: url('breakpoint-function-dark.svg') center center no-repeat; } .vs-dark .debug-function-breakpoint-unverified, diff --git a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css index 2a5c68c992e..db600ac32b9 100644 --- a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css +++ b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css @@ -23,8 +23,8 @@ .monaco-workbench .debug-actions-widget .drag-area { cursor: -webkit-grab; - height: 16px; - width: 16px; + height: 32px; + width: 10px; background: url('drag.svg') center center no-repeat; } diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg index 2d1e78b5b68..e00fd4062df 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg @@ -1 +1 @@ -disconnect \ No newline at end of file +Plan de travail 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect.svg b/src/vs/workbench/parts/debug/browser/media/disconnect.svg index b2deb2b91df..2a87ce11ef8 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect.svg @@ -1 +1 @@ -disconnect \ No newline at end of file +Plan de travail 1 \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/drag.svg b/src/vs/workbench/parts/debug/browser/media/drag.svg index 522bf98284a..7f4145d742b 100644 --- a/src/vs/workbench/parts/debug/browser/media/drag.svg +++ b/src/vs/workbench/parts/debug/browser/media/drag.svg @@ -1 +1,8 @@ -drag \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg index 0185b23700d..7418a236159 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg @@ -1 +1 @@ -pause \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause.svg b/src/vs/workbench/parts/debug/browser/media/pause.svg index 9a4beeb7710..f8e3b859b18 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause.svg @@ -1 +1 @@ -pause \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg index 99369626bfc..74e8dd8a024 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg @@ -1 +1 @@ -remove-all \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all.svg b/src/vs/workbench/parts/debug/browser/media/remove-all.svg index a71c2feeedc..7250ff6b54e 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all.svg @@ -1 +1 @@ -remove-all_16x \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg index e1af90b8058..865c5aaea5a 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg @@ -1 +1 @@ -remove-focus \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg index e78bb998737..751e89b3b02 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg @@ -1 +1 @@ -remove \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove.svg b/src/vs/workbench/parts/debug/browser/media/remove.svg index 31d6abd6bab..fde34404d4e 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove.svg @@ -1 +1 @@ -remove \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg index a8939860d05..f9fcfba75e2 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg @@ -1 +1 @@ -repl \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl.svg b/src/vs/workbench/parts/debug/browser/media/repl.svg index 8175eb32f94..93558e96b47 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl.svg @@ -1 +1 @@ -repl \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg index c9071eb96c6..1443bb3158b 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg @@ -1 +1 @@ -restart \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart.svg b/src/vs/workbench/parts/debug/browser/media/restart.svg index 94ebb45d0bc..3d7a499db2a 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart.svg @@ -1 +1 @@ -restart \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg new file mode 100644 index 00000000000..1d6a7c3ec3d --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg index 56f8da3f7b2..2d5823561e2 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg @@ -1 +1 @@ -stackframe-and-breakpoint + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg new file mode 100644 index 00000000000..f965fddd633 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg index c7ab10bfa8c..e39215f9a7c 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg @@ -1 +1 @@ -stackframe-arrow \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg index 8cfab5c40b1..b7de8c5fd13 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg @@ -1 +1 @@ -step-into \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into.svg b/src/vs/workbench/parts/debug/browser/media/step-into.svg index a4beee54411..b92fb4ef806 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into.svg @@ -1 +1 @@ -step-into \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg index 045a84ff032..fc66ca1b80d 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg @@ -1 +1 @@ -step-out \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out.svg b/src/vs/workbench/parts/debug/browser/media/step-out.svg index 850aed93c2e..0fdc63f6ef9 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out.svg @@ -1 +1 @@ -step-out \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg index f3a1aa36f22..98c1026db46 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg @@ -1 +1 @@ -step-over \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over.svg b/src/vs/workbench/parts/debug/browser/media/step-over.svg index 3343de71d83..a716cbcf559 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over.svg @@ -1 +1 @@ -step-over \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg index c8e37202875..a0e6bcb42d6 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg @@ -1 +1 @@ -stop \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop.svg b/src/vs/workbench/parts/debug/browser/media/stop.svg index 57c29044b12..333812dcdaf 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop.svg @@ -1 +1 @@ -stop \ No newline at end of file + \ No newline at end of file diff --git a/src/vs/workbench/parts/update/electron-browser/media/update.svg b/src/vs/workbench/parts/update/electron-browser/media/update.svg index c97bb48bdcc..3dec2ba50fd 100644 --- a/src/vs/workbench/parts/update/electron-browser/media/update.svg +++ b/src/vs/workbench/parts/update/electron-browser/media/update.svg @@ -1 +1 @@ -configure \ No newline at end of file + \ No newline at end of file From 8f75afe2ad689608b6306d9657fa5048e8dda7a8 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 15:33:23 +0100 Subject: [PATCH 234/658] lightweight reporter --- build/tfs/darwin/build.yml | 1 - test/electron/index.js | 32 +++++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 7754903ef33..9949d1c0fd2 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -25,7 +25,6 @@ steps: # - script: | # ./scripts/test.sh --build --reporter dot -# ./scripts/test-integration.sh # name: test - script: | diff --git a/test/electron/index.js b/test/electron/index.js index 953723c351f..aa054f553ca 100644 --- a/test/electron/index.js +++ b/test/electron/index.js @@ -8,6 +8,7 @@ const { tmpdir } = require('os'); const { join } = require('path'); const path = require('path'); const mocha = require('mocha'); +const JUnitReporter = require('mocha-junit-reporter'); const events = require('events'); const defaultReporterName = process.platform === 'win32' ? 'list' : 'spec'; @@ -96,6 +97,26 @@ function parseReporterOption(value) { return r ? { [r[1]]: r[2] } : {}; } +class TFSReporter extends mocha.reporters.Base { + + constructor(runner) { + super(runner); + + runner.on('pending', test => { + console.log('PEND', test.fullTitle()); + }); + runner.on('pass', test => { + console.log('OK ', test.fullTitle(), `(${test.duration}ms)`); + }); + runner.on('fail', test => { + console.log('FAIL', test.fullTitle(), `(${test.duration}ms)`); + }); + runner.once('end', () => { + this.epilogue(); + }); + } +} + app.on('ready', () => { const win = new BrowserWindow({ @@ -121,15 +142,12 @@ app.on('ready', () => { const runner = new IPCRunner(); if (argv.tfs) { - const Reporter = require('mocha-multi-reporters'); - const reporterOptions = { - reporterEnabled: `${defaultReporterName}, mocha-junit-reporter`, - mochaJunitReporterReporterOptions: { + new TFSReporter(runner); + new JUnitReporter(runner, { + reporterOptions: { mochaFile: '.build/tests/unit-test-results.xml' } - }; - - new Reporter(runner, { reporterOptions }); + }); } else { const reporterPath = path.join(path.dirname(require.resolve('mocha')), 'lib', 'reporters', argv.reporter); let Reporter; From 65a60df20e6353d978fa701792bd7c3a66c714d5 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 15:42:15 +0100 Subject: [PATCH 235/658] linux product build --- build/tfs/darwin/build.yml | 2 +- build/tfs/linux/build.yml | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 9949d1c0fd2..434f1048832 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -24,7 +24,7 @@ steps: name: build # - script: | -# ./scripts/test.sh --build --reporter dot +# ./scripts/test.sh --build --tfs # name: test - script: | diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 5b9d2f4d4e5..fb0228d428e 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -1,6 +1,5 @@ variables: VSCODE_BUILD_VERBOSE: true - System.Debug: true steps: @@ -23,15 +22,17 @@ steps: versionSpec: "1.3.2" - script: | + echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc yarn - npm run gulp -- electron-x64 - -- script: | npm run gulp -- hygiene ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit - npm run gulp -- vscode-linux-x64-min + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin + node build/tfs/common/installDistro.js + +- script: | + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-x64-min name: build - script: | - DISPLAY=:10 ./scripts/test.sh --build --reporter spec - name: test + ./scripts/test.sh --build --reporter dot + name: test \ No newline at end of file From 0a6a2d72e73172ff3407a67b011ac31304a97e6f Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 15:47:40 +0100 Subject: [PATCH 236/658] windows build --- build/tfs/darwin/build.yml | 2 +- build/tfs/linux/build.yml | 2 +- build/tfs/win32/build.yml | 20 ++++++++++++++------ package.json | 3 ++- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 434f1048832..64b8f678e1d 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -15,7 +15,7 @@ steps: echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc yarn npm run gulp -- hygiene - ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit + npm run monaco-compile-check VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index fb0228d428e..f58122e9c89 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -25,7 +25,7 @@ steps: echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc yarn npm run gulp -- hygiene - ./node_modules/.bin/tsc -p ./src/tsconfig.monaco.json --noEmit + npm run monaco-compile-check VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 12f739b7033..4308dca10b8 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -1,8 +1,6 @@ variables: - ELECTRON_RUN_AS_NODE: 1 VSCODE_BUILD_VERBOSE: true APPVEYOR: true - System.Debug: true steps: @@ -15,12 +13,22 @@ steps: versionSpec: "1.3.2" - powershell: | + "machine monacotools.visualstudio.com password ${vsoPAT}" | Out-File "$env:HOME\_netrc" -Encoding ASCII + $env:npm_config_arch="$arch" + $env:CHILD_CONCURRENCY="1" yarn - .\node_modules\.bin\gulp electron - .\node_modules\.bin\tsc -p .\src\tsconfig.monaco.json --noEmit - npm run compile + npm run gulp -- hygiene + npm run monaco-compile-check + $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" + npm run gulp -- mixin + node build/tfs/common/installDistro.js + +- powershell: | + $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" + npm run gulp -- "vscode-win32-$global:arch-min" + npm run gulp -- "vscode-win32-$global:arch-copy-inno-updater" name: build - powershell: | - .\scripts\test.bat + .\scripts\test.bat --build --tfs name: test \ No newline at end of file diff --git a/package.json b/package.json index 634a14975e6..578fa952739 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "7z": "7z", "update-grammars": "node build/npm/update-all-grammars.js", "update-localization-extension": "node build/npm/update-localization-extension.js", - "smoketest": "cd test/smoke && mocha" + "smoketest": "cd test/smoke && mocha", + "monaco-compile-check": "tsc -p src/tsconfig.monaco.json --noEmit" }, "dependencies": { "applicationinsights": "0.18.0", From 526c5c038c87bca1fdb78c89e33c66a3da17155b Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 15:48:11 +0100 Subject: [PATCH 237/658] debug: postDebugTask fixes #11522 --- src/vs/workbench/parts/debug/common/debug.ts | 1 + .../parts/debug/electron-browser/debugService.ts | 11 +++++++---- src/vs/workbench/parts/debug/node/debugAdapter.ts | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index e94bd0a70c7..6e145872d95 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -356,6 +356,7 @@ export interface IEnvConfig { request: string; internalConsoleOptions?: 'neverOpen' | 'openOnSessionStart' | 'openOnFirstSessionStart'; preLaunchTask?: string; + postDebugTask?: string; __restart?: any; __sessionId?: string; debugServer?: number; diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index d9080ab9ac2..74bcabd89ed 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -814,7 +814,7 @@ export class DebugService implements debug.IDebugService { return this.doCreateProcess(workspace, resolvedConfig, sessionId); }); - return this.runPreLaunchTask(sessionId, workspace, resolvedConfig.preLaunchTask).then((taskSummary: ITaskSummary) => { + return this.runTask(sessionId, workspace, resolvedConfig.preLaunchTask).then((taskSummary: ITaskSummary) => { const errorCount = resolvedConfig.preLaunchTask ? this.markerService.getStatistics().errors : 0; const successExitCode = taskSummary && taskSummary.exitCode === 0; const failureExitCode = taskSummary && taskSummary.exitCode !== undefined && taskSummary.exitCode !== 0; @@ -995,7 +995,7 @@ export class DebugService implements debug.IDebugService { }); } - private runPreLaunchTask(sessionId: string, root: IWorkspaceFolder, taskName: string): TPromise { + private runTask(sessionId: string, root: IWorkspaceFolder, taskName: string): TPromise { if (!taskName) { return TPromise.as(null); } @@ -1003,7 +1003,7 @@ export class DebugService implements debug.IDebugService { // run a task before starting a debug session return this.taskService.getTask(root, taskName).then(task => { if (!task) { - return TPromise.wrapError(errors.create(nls.localize('DebugTaskNotFound', "Could not find the preLaunchTask \'{0}\'.", taskName))); + return TPromise.wrapError(errors.create(nls.localize('DebugTaskNotFound', "Could not find the task \'{0}\'.", taskName))); } function once(kind: TaskEventKind, event: Event): Event { @@ -1047,7 +1047,7 @@ export class DebugService implements debug.IDebugService { setTimeout(() => { if (!taskStarted) { - e({ severity: severity.Error, message: nls.localize('taskNotTracked', "The preLaunchTask '{0}' cannot be tracked.", taskName) }); + e({ severity: severity.Error, message: nls.localize('taskNotTracked', "The task '{0}' cannot be tracked.", taskName) }); } }, 10000); }); @@ -1142,6 +1142,9 @@ export class DebugService implements debug.IDebugService { if (process) { process.inactive = true; this._onDidEndProcess.fire(process); + if (process.configuration.postDebugTask) { + this.runTask(process.getId(), process.session.root, process.configuration.postDebugTask); + } } this.toDisposeOnSessionEnd.set(session.getId(), lifecycle.dispose(this.toDisposeOnSessionEnd.get(session.getId()))); diff --git a/src/vs/workbench/parts/debug/node/debugAdapter.ts b/src/vs/workbench/parts/debug/node/debugAdapter.ts index 5ad50ee4dda..b39e2c838e2 100644 --- a/src/vs/workbench/parts/debug/node/debugAdapter.ts +++ b/src/vs/workbench/parts/debug/node/debugAdapter.ts @@ -215,6 +215,11 @@ export class Adapter { default: null, description: nls.localize('debugPrelaunchTask', "Task to run before debug session starts.") }; + properties['postDebugTask'] = { + type: ['string', 'null'], + default: null, + description: nls.localize('debugPostDebugTask', "Task to run after debug session ends.") + }; properties['internalConsoleOptions'] = INTERNAL_CONSOLE_OPTIONS_SCHEMA; const osProperties = objects.deepClone(properties); From 51761e7b4cd4879a519c1f4db44547328e277488 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 15:56:07 +0100 Subject: [PATCH 238/658] fix linux tests --- build/tfs/linux/build.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index f58122e9c89..b785044505f 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -34,5 +34,5 @@ steps: name: build - script: | - ./scripts/test.sh --build --reporter dot + DISPLAY=:10 ./scripts/test.sh --build --reporter dot name: test \ No newline at end of file diff --git a/package.json b/package.json index 578fa952739..853d0fa7432 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "7z": "7z", "update-grammars": "node build/npm/update-all-grammars.js", "update-localization-extension": "node build/npm/update-localization-extension.js", - "smoketest": "cd test/smoke && mocha", + "smoketest": "cd test/smoke && mocha", "monaco-compile-check": "tsc -p src/tsconfig.monaco.json --noEmit" }, "dependencies": { From 66be1d8db4f373817b57da78e978a0657fce50ea Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 16:09:31 +0100 Subject: [PATCH 239/658] debug win build --- build/tfs/win32/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 4308dca10b8..4f49b3bd1ac 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -13,6 +13,7 @@ steps: versionSpec: "1.3.2" - powershell: | + echo $(VSCODE_MIXIN_PASSWORD) "machine monacotools.visualstudio.com password ${vsoPAT}" | Out-File "$env:HOME\_netrc" -Encoding ASCII $env:npm_config_arch="$arch" $env:CHILD_CONCURRENCY="1" From cb845480f9c88c372755da7c9c6d60dc7b9d9446 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 8 Mar 2018 16:09:58 +0100 Subject: [PATCH 240/658] Win/Linux: allow window.openFilesInNewWindow:default (for #48) --- src/vs/code/electron-main/windows.ts | 16 ++++++++++++++-- .../electron-browser/main.contribution.ts | 9 +++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index ce7112ed726..89ce0c3c77a 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -981,10 +981,22 @@ export class WindowsManager implements IWindowsMainService { if (openConfig.forceNewWindow || openConfig.forceReuseWindow) { openFilesInNewWindow = openConfig.forceNewWindow && !openConfig.forceReuseWindow; } else { - if (openConfig.context === OpenContext.DOCK) { - openFilesInNewWindow = true; // only on macOS do we allow to open files in a new window if this is triggered via DOCK context + + // macOS: by default we open files in a new window if this is triggered via DOCK context + if (isMacintosh) { + if (openConfig.context === OpenContext.DOCK) { + openFilesInNewWindow = true; + } } + // Linux/Windows: by default we open files in the new window unless triggered via DIALOG or MENU context + else { + if (openConfig.context !== OpenContext.DIALOG && openConfig.context !== OpenContext.MENU) { + openFilesInNewWindow = true; + } + } + + // finally check for overrides of default if (!openConfig.cli.extensionDevelopmentPath && (openFilesInNewWindowConfig === 'on' || openFilesInNewWindowConfig === 'off')) { openFilesInNewWindow = (openFilesInNewWindowConfig === 'on'); } diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index 09d6296c839..09a3d529a56 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -293,11 +293,16 @@ configurationRegistry.registerConfiguration({ 'enumDescriptions': [ nls.localize('window.openFilesInNewWindow.on', "Files will open in a new window"), nls.localize('window.openFilesInNewWindow.off', "Files will open in the window with the files' folder open or the last active window"), - nls.localize('window.openFilesInNewWindow.default', "Files will open in the window with the files' folder open or the last active window unless opened via the dock or from finder (macOS only)") + isMacintosh ? + nls.localize('window.openFilesInNewWindow.defaultMac', "Files will open in the window with the files' folder open or the last active window unless opened via the Dock or from Finder") : + nls.localize('window.openFilesInNewWindow.default', "Files will open in a new window unless picked from within the application (e.g. via the File menu)") ], 'default': 'off', 'description': - nls.localize('openFilesInNewWindow', "Controls if files should open in a new window.\n- default: files will open in the window with the files' folder open or the last active window unless opened via the dock or from finder (macOS only)\n- on: files will open in a new window\n- off: files will open in the window with the files' folder open or the last active window\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") + isMacintosh ? + nls.localize('openFilesInNewWindowMac', "Controls if files should open in a new window.\n- default: files will open in the window with the files' folder open or the last active window unless opened via the Dock or from Finder\n- on: files will open in a new window\n- off: files will open in the window with the files' folder open or the last active window\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") : + nls.localize('openFilesInNewWindow', "Controls if files should open in a new window.\n- default: files will open in a new window unless picked from within the application (e.g. via the File menu)\n- on: files will open in a new window\n- off: files will open in the window with the files' folder open or the last active window\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") + }, 'window.openFoldersInNewWindow': { 'type': 'string', From 8ec6c83b06a2e402e97ee5ae3dba12b0e5b9aa91 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 16:15:40 +0100 Subject: [PATCH 241/658] windows build --- build/tfs/win32/build.yml | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 4f49b3bd1ac..7e563aa598f 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -12,17 +12,26 @@ steps: inputs: versionSpec: "1.3.2" -- powershell: | - echo $(VSCODE_MIXIN_PASSWORD) - "machine monacotools.visualstudio.com password ${vsoPAT}" | Out-File "$env:HOME\_netrc" -Encoding ASCII - $env:npm_config_arch="$arch" - $env:CHILD_CONCURRENCY="1" - yarn - npm run gulp -- hygiene - npm run monaco-compile-check - $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" - npm run gulp -- mixin - node build/tfs/common/installDistro.js +- task: PowerShell@1 + inputs: + scriptType: inlineScript + arguments: '-arch x64 -mixinPassword "$(VSCODE_MIXIN_PASSWORD)" -vsoPAT "$(VSO_PAT)"' + inlineScript: | + Param( + [string]$arch, + [string]$mixinPassword, + [string]$vsoPAT + ) + + "machine monacotools.visualstudio.com password ${vsoPAT}" | Out-File "$env:HOME\_netrc" -Encoding ASCII + $env:npm_config_arch="$arch" + $env:CHILD_CONCURRENCY="1" + yarn + npm run gulp -- hygiene + npm run monaco-compile-check + $env:VSCODE_MIXIN_PASSWORD = $mixinPassword + npm run gulp -- mixin + node build/tfs/common/installDistro.js - powershell: | $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" From e929a1cbd24e65b710619dedcc004cfb556f6590 Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 16:21:53 +0100 Subject: [PATCH 242/658] composite bar: respect order of composites when adding fixes #44306 --- .../browser/parts/compositebar/compositeBar.ts | 15 +++++++++------ src/vs/workbench/browser/parts/panel/panelPart.ts | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts index 992d906761e..01adcb9b6ee 100644 --- a/src/vs/workbench/browser/parts/compositebar/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositebar/compositeBar.ts @@ -24,7 +24,7 @@ export interface ICompositeBarOptions { icon: boolean; storageId: string; orientation: ActionsOrientation; - composites: { id: string, name: string }[]; + composites: { id: string, name: string, order: number }[]; colors: ICompositeBarColors; overflowActionSize: number; getActivityAction: (compositeId: string) => ActivityAction; @@ -81,13 +81,16 @@ export class CompositeBar implements ICompositeBar { return this._onDidContextMenu.event; } - public addComposite(compositeData: { id: string; name: string }): void { + public addComposite(compositeData: { id: string; name: string, order: number }): void { if (this.options.composites.filter(c => c.id === compositeData.id).length) { return; } - + let i = 0; + while (i < this.options.composites.length && this.options.composites[i].order < compositeData.order) { + i++; + } this.options.composites.push(compositeData); - this.pin(compositeData.id); + this.pin(compositeData.id, true, i); } public removeComposite(id: string): void { @@ -431,13 +434,13 @@ export class CompositeBar implements ICompositeBar { return this.pinnedComposites.indexOf(compositeId) >= 0; } - public pin(compositeId: string, update = true): void { + public pin(compositeId: string, update = true, index = this.pinnedComposites.length): void { if (this.isPinned(compositeId)) { return; } this.options.openComposite(compositeId).then(() => { - this.pinnedComposites.push(compositeId); + this.pinnedComposites.splice(index, 0, compositeId); this.pinnedComposites = arrays.distinct(this.pinnedComposites); if (update) { diff --git a/src/vs/workbench/browser/parts/panel/panelPart.ts b/src/vs/workbench/browser/parts/panel/panelPart.ts index bb74e114f9c..af549f732f8 100644 --- a/src/vs/workbench/browser/parts/panel/panelPart.ts +++ b/src/vs/workbench/browser/parts/panel/panelPart.ts @@ -12,7 +12,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { ActionsOrientation } from 'vs/base/browser/ui/actionbar/actionbar'; import { IPanel } from 'vs/workbench/common/panel'; import { CompositePart, ICompositeTitleLabel } from 'vs/workbench/browser/parts/compositePart'; -import { Panel, PanelRegistry, Extensions as PanelExtensions } from 'vs/workbench/browser/panel'; +import { Panel, PanelRegistry, Extensions as PanelExtensions, PanelDescriptor } from 'vs/workbench/browser/panel'; import { IPanelService, IPanelIdentifier } from 'vs/workbench/services/panel/common/panelService'; import { IPartService, Parts, Position } from 'vs/workbench/services/part/common/partService'; import { IStorageService } from 'vs/platform/storage/common/storage'; @@ -169,7 +169,7 @@ export class PanelPart extends CompositePart implements IPanelService { }); } - public getPanels(): IPanelIdentifier[] { + public getPanels(): PanelDescriptor[] { return Registry.as(PanelExtensions.Panels).getPanels() .filter(p => p.enabled) .sort((v1, v2) => v1.order - v2.order); From 4a47f21d969b7b4980b7fea34b8718aef70dc0b7 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 16:33:46 +0100 Subject: [PATCH 243/658] test variables --- build/tfs/win32/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 7e563aa598f..f266d83e191 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -12,6 +12,9 @@ steps: inputs: versionSpec: "1.3.2" +- powershell: | + echo $(VSCODE_MIXIN_PASSWORD) + - task: PowerShell@1 inputs: scriptType: inlineScript From 35fe7822f44d25a03675436ef649a2994e226612 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 16:37:37 +0100 Subject: [PATCH 244/658] cleanup windows build --- build/tfs/win32/build.yml | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index f266d83e191..12531f9a38c 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -13,33 +13,20 @@ steps: versionSpec: "1.3.2" - powershell: | - echo $(VSCODE_MIXIN_PASSWORD) - -- task: PowerShell@1 - inputs: - scriptType: inlineScript - arguments: '-arch x64 -mixinPassword "$(VSCODE_MIXIN_PASSWORD)" -vsoPAT "$(VSO_PAT)"' - inlineScript: | - Param( - [string]$arch, - [string]$mixinPassword, - [string]$vsoPAT - ) - - "machine monacotools.visualstudio.com password ${vsoPAT}" | Out-File "$env:HOME\_netrc" -Encoding ASCII - $env:npm_config_arch="$arch" - $env:CHILD_CONCURRENCY="1" - yarn - npm run gulp -- hygiene - npm run monaco-compile-check - $env:VSCODE_MIXIN_PASSWORD = $mixinPassword - npm run gulp -- mixin - node build/tfs/common/installDistro.js + "machine monacotools.visualstudio.com password $(VSO_PAT)" | Out-File "$env:HOME\_netrc" -Encoding ASCII + $env:npm_config_arch="$(VSCODE_ARCH)" + $env:CHILD_CONCURRENCY="1" + yarn + npm run gulp -- hygiene + npm run monaco-compile-check + $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" + npm run gulp -- mixin + node build/tfs/common/installDistro.js - powershell: | $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" - npm run gulp -- "vscode-win32-$global:arch-min" - npm run gulp -- "vscode-win32-$global:arch-copy-inno-updater" + npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-min" + npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-copy-inno-updater" name: build - powershell: | From ab22449c7b1eb6f12d597b31c504d85913f0c040 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 16:43:13 +0100 Subject: [PATCH 245/658] generic linux build --- build/tfs/linux/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index b785044505f..41d37574b1c 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -6,7 +6,7 @@ steps: - script: | apt-get update apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 dbus xvfb - cp build/tfs/linux/x64/xvfb.init /etc/init.d/xvfb + cp build/tfs/linux/$(VSCODE_ARCH)/xvfb.init /etc/init.d/xvfb chmod +x /etc/init.d/xvfb update-rc.d xvfb defaults ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon @@ -30,7 +30,7 @@ steps: node build/tfs/common/installDistro.js - script: | - VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-x64-min + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-$(VSCODE_ARCH)-min name: build - script: | From ce745369d0cb68ab9f07ba9bff4cbf2ae8080134 Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 16:45:59 +0100 Subject: [PATCH 246/658] null guards for checking if list has focus --- src/vs/base/browser/ui/list/listWidget.ts | 2 +- src/vs/base/parts/tree/browser/treeImpl.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index b4232c778dd..4277662548d 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -1059,7 +1059,7 @@ export class List implements ISpliceable, IDisposable { } isDOMFocused(): boolean { - return this.view.domNode === document.activeElement; + return this.view && this.view.domNode === document.activeElement; } getHTMLElement(): HTMLElement { diff --git a/src/vs/base/parts/tree/browser/treeImpl.ts b/src/vs/base/parts/tree/browser/treeImpl.ts index f7c9173df5a..eea9ff87554 100644 --- a/src/vs/base/parts/tree/browser/treeImpl.ts +++ b/src/vs/base/parts/tree/browser/treeImpl.ts @@ -131,7 +131,7 @@ export class Tree implements _.ITree { } public isDOMFocused(): boolean { - return this.view.isFocused(); + return this.view && this.view.isFocused(); } public domBlur(): void { From e281413c22869198afd735e9ea9da5c8eba74dde Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 16:58:04 +0100 Subject: [PATCH 247/658] fix netrc --- build/tfs/win32/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index 12531f9a38c..da7d4982ca8 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -13,7 +13,7 @@ steps: versionSpec: "1.3.2" - powershell: | - "machine monacotools.visualstudio.com password $(VSO_PAT)" | Out-File "$env:HOME\_netrc" -Encoding ASCII + "machine monacotools.visualstudio.com password $(VSO_PAT)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII $env:npm_config_arch="$(VSCODE_ARCH)" $env:CHILD_CONCURRENCY="1" yarn From c51d244f4765d81939ffbe81a60664d239e21eb9 Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 17:24:52 +0100 Subject: [PATCH 248/658] listService: forget about disposed lists --- src/vs/base/browser/ui/list/listPaging.ts | 6 +++++- src/vs/base/browser/ui/list/listWidget.ts | 2 +- src/vs/base/parts/tree/browser/treeImpl.ts | 2 +- src/vs/platform/list/browser/listService.ts | 8 +++++++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/vs/base/browser/ui/list/listPaging.ts b/src/vs/base/browser/ui/list/listPaging.ts index d883cc421bd..5955300a6ea 100644 --- a/src/vs/base/browser/ui/list/listPaging.ts +++ b/src/vs/base/browser/ui/list/listPaging.ts @@ -97,6 +97,10 @@ export class PagedList implements IDisposable { return this.list; } + get onDidDispose(): Event { + return this.list.onDidDispose; + } + get onFocusChange(): Event> { return mapEvent(this.list.onFocusChange, ({ elements, indexes }) => ({ elements: elements.map(e => this._model.get(e)), indexes })); } @@ -193,4 +197,4 @@ export class PagedList implements IDisposable { dispose(): void { this.list.dispose(); } -} \ No newline at end of file +} diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index 4277662548d..b4232c778dd 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -1059,7 +1059,7 @@ export class List implements ISpliceable, IDisposable { } isDOMFocused(): boolean { - return this.view && this.view.domNode === document.activeElement; + return this.view.domNode === document.activeElement; } getHTMLElement(): HTMLElement { diff --git a/src/vs/base/parts/tree/browser/treeImpl.ts b/src/vs/base/parts/tree/browser/treeImpl.ts index eea9ff87554..f7c9173df5a 100644 --- a/src/vs/base/parts/tree/browser/treeImpl.ts +++ b/src/vs/base/parts/tree/browser/treeImpl.ts @@ -131,7 +131,7 @@ export class Tree implements _.ITree { } public isDOMFocused(): boolean { - return this.view && this.view.isFocused(); + return this.view.isFocused(); } public domBlur(): void { diff --git a/src/vs/platform/list/browser/listService.ts b/src/vs/platform/list/browser/listService.ts index d230f82981d..c3982e98716 100644 --- a/src/vs/platform/list/browser/listService.ts +++ b/src/vs/platform/list/browser/listService.ts @@ -73,7 +73,13 @@ export class ListService implements IListService { const result = combinedDisposable([ widget.onDidFocus(() => this._lastFocusedWidget = widget), - toDisposable(() => this.lists.splice(this.lists.indexOf(registeredList), 1)) + toDisposable(() => this.lists.splice(this.lists.indexOf(registeredList), 1)), + widget.onDidDispose(() => { + this.lists = this.lists.filter(l => l !== registeredList); + if (this._lastFocusedWidget === widget) { + this._lastFocusedWidget = undefined; + } + }) ]); return result; From 8d24d8a65c5f502dab8183340c0ceac5ee8c7ddb Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 8 Mar 2018 17:28:46 +0100 Subject: [PATCH 249/658] support ignore-case-flag for the regexp context key, #42605 --- src/vs/platform/contextkey/common/contextkey.ts | 5 +++-- src/vs/platform/contextkey/test/common/contextkey.test.ts | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vs/platform/contextkey/common/contextkey.ts b/src/vs/platform/contextkey/common/contextkey.ts index 208cfa184bf..09cd643441f 100644 --- a/src/vs/platform/contextkey/common/contextkey.ts +++ b/src/vs/platform/contextkey/common/contextkey.ts @@ -112,8 +112,9 @@ export abstract class ContextKeyExpr { } let value = serializedValue.slice(start + 1, end); + let caseIgnoreFlag = serializedValue[end + 1] === 'i' ? 'i' : ''; try { - return new RegExp(value); + return new RegExp(value, caseIgnoreFlag); } catch (e) { console.warn(`bad regexp-value '${serializedValue}', parse error: ${e}`); return null; @@ -400,7 +401,7 @@ export class ContextKeyRegexExpr implements ContextKeyExpr { } public serialize(): string { - return `${this.key} =~ /${this.regexp ? this.regexp.source : ''}/`; + return `${this.key} =~ /${this.regexp ? this.regexp.source : ''}/${this.regexp.ignoreCase ? 'i' : ''}`; } public keys(): string[] { diff --git a/src/vs/platform/contextkey/test/common/contextkey.test.ts b/src/vs/platform/contextkey/test/common/contextkey.test.ts index beafc373f80..b04468b13ff 100644 --- a/src/vs/platform/contextkey/test/common/contextkey.test.ts +++ b/src/vs/platform/contextkey/test/common/contextkey.test.ts @@ -81,6 +81,7 @@ suite('ContextKeyExpr', () => { testExpression(expr + ' != 5', value != '5'); testExpression('!' + expr, !value); testExpression(expr + ' =~ /d.*/', /d.*/.test(value)); + testExpression(expr + ' =~ /D/i', /D/i.test(value)); } testBatch('a', true); @@ -92,7 +93,7 @@ suite('ContextKeyExpr', () => { testExpression('a && !b', true && !false); testExpression('a && b', true && false); testExpression('a && !b && c == 5', true && !false && '5' == '5'); - testExpression('dddd =~ d.*', false); + testExpression('d =~ /e.*/', false); /* tslint:enable:triple-equals */ }); }); From d8c0383312b104984f2789f3c6ea6f76eadd77c2 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 17:34:48 +0100 Subject: [PATCH 250/658] slow tests --- .../backup/test/electron-main/backupMainService.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/backup/test/electron-main/backupMainService.test.ts b/src/vs/platform/backup/test/electron-main/backupMainService.test.ts index 5534588f6a7..38bb1d0b50f 100644 --- a/src/vs/platform/backup/test/electron-main/backupMainService.test.ts +++ b/src/vs/platform/backup/test/electron-main/backupMainService.test.ts @@ -99,7 +99,8 @@ suite('BackupMainService', () => { return pfs.del(backupHome, os.tmpdir()); }); - test('service validates backup workspaces on startup and cleans up (folder workspaces)', () => { + test('service validates backup workspaces on startup and cleans up (folder workspaces)', function () { + this.timeout(10000); // 1) backup workspace path does not exist service.registerFolderBackupSync(fooFile.fsPath); @@ -144,7 +145,8 @@ suite('BackupMainService', () => { assert.equal(service.getEmptyWindowBackupPaths().length, 1); }); - test('service validates backup workspaces on startup and cleans up (root workspaces)', () => { + test('service validates backup workspaces on startup and cleans up (root workspaces)', function () { + this.timeout(10000); // 1) backup workspace path does not exist service.registerWorkspaceBackupSync(toWorkspace(fooFile.fsPath)); From 3089f6591212be332364139cd44962e528b5603f Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 17:35:01 +0100 Subject: [PATCH 251/658] linux build --- build/tfs/linux/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 41d37574b1c..e33c4df719c 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -34,5 +34,5 @@ steps: name: build - script: | - DISPLAY=:10 ./scripts/test.sh --build --reporter dot + DISPLAY=:10 ./scripts/test.sh --build --tfs name: test \ No newline at end of file From eccd6c9955ff927d9aad440b36ba84032edd0b69 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 17:40:25 +0100 Subject: [PATCH 252/658] win32 publish --- build/tfs/win32/build.yml | 183 +++++++++++++++++++++++++++++++++++++- 1 file changed, 182 insertions(+), 1 deletion(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index da7d4982ca8..a9e0e7b0a2e 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -31,4 +31,185 @@ steps: - powershell: | .\scripts\test.bat --build --tfs - name: test \ No newline at end of file + name: test + +- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 + inputs: + ConnectedServiceName: 'ESRP CodeSign' + FolderPath: '$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)' + Pattern: '*.dll,*.exe,*.node' + signConfigType: inlineSignParams + inlineOperation: | + [ + { + "keyCode": "CP-229803", + "operationSetCode": "SigntoolSign", + "parameters": [ + { + "parameterName": "OpusName", + "parameterValue": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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: | + npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-archive" "vscode-win32-$(VSCODE_ARCH)-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": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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: | + $Repo = "$(pwd)" + $Root = "$Repo\.." + $Exe = "$Repo\.build\win32-$(VSCODE_ARCH)\setup\VSCodeSetup.exe" + $Zip = "$Repo\.build\win32-$(VSCODE_ARCH)\archive\VSCode-win32-$(VSCODE_ARCH).zip" + $Build = "$Root\VSCode-win32-$(VSCODE_ARCH)" + + # get version + $PackageJson = Get-Content -Raw -Path "$Build\resources\app\package.json" | ConvertFrom-Json + $Version = $PackageJson.version + $Quality = "$env:VSCODE_QUALITY" + $env:AZURE_STORAGE_ACCESS_KEY_2 = "$(AZURE_STORAGE_ACCESS_KEY_2)" + $env:MOONCAKE_STORAGE_ACCESS_KEY = "$(MOONCAKE_STORAGE_ACCESS_KEY)" + $env:AZURE_DOCUMENTDB_MASTERKEY = "$(AZURE_DOCUMENTDB_MASTERKEY)" + + $assetPlatform = if ($(VSCODE_ARCH) -eq "ia32") { "win32" } else { "win32-x64" } + + node build/tfs/common/publish.js $Quality "$global:assetPlatform-archive" archive "VSCode-win32-$(VSCODE_ARCH)-$Version.zip" $Version true $Zip + node build/tfs/common/publish.js $Quality "$global:assetPlatform" setup "VSCodeSetup-$(VSCODE_ARCH)-$Version.exe" $Version true $Exe \ No newline at end of file From c08e38dbf3e216f30789c4c4670c0ba4dd3e07d6 Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 17:46:44 +0100 Subject: [PATCH 253/658] debug: do not run prelaunch and postdebug tasks for automtic restarts fixes #11522 --- .../workbench/parts/debug/electron-browser/debugService.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 74bcabd89ed..0047fea5d05 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -83,6 +83,7 @@ export class DebugService implements debug.IDebugService { private breakpointsToSendOnResourceSaved: Set; private launchJsonChanged: boolean; private firstSessionStart: boolean; + private skipRunningTask: boolean; private previousState: debug.State; private fetchThreadsSchedulers: Map; @@ -996,7 +997,8 @@ export class DebugService implements debug.IDebugService { } private runTask(sessionId: string, root: IWorkspaceFolder, taskName: string): TPromise { - if (!taskName) { + if (!taskName || this.skipRunningTask) { + this.skipRunningTask = false; return TPromise.as(null); } @@ -1065,6 +1067,8 @@ export class DebugService implements debug.IDebugService { } const focusedProcess = this.viewModel.focusedProcess; const preserveFocus = focusedProcess && process.getId() === focusedProcess.getId(); + // Do not run prelaunch and postdebug tasks for automtic restarts + this.skipRunningTask = !!restartData; return process.session.disconnect(true).then(() => { if (strings.equalsIgnoreCase(process.configuration.type, 'extensionHost') && process.session.root) { @@ -1088,6 +1092,7 @@ export class DebugService implements debug.IDebugService { config.noDebug = process.configuration.noDebug; } config.__restart = restartData; + this.skipRunningTask = !!restartData; this.startDebugging(launch, config).then(() => c(null), err => e(err)); }, 300); }); From 5df04daaef4b34967cebf04c6bf4db395ac1c50f Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 17:48:02 +0100 Subject: [PATCH 254/658] typo --- src/vs/workbench/parts/debug/electron-browser/debugService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 0047fea5d05..5a0ee96aff3 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -1067,7 +1067,7 @@ export class DebugService implements debug.IDebugService { } const focusedProcess = this.viewModel.focusedProcess; const preserveFocus = focusedProcess && process.getId() === focusedProcess.getId(); - // Do not run prelaunch and postdebug tasks for automtic restarts + // Do not run preLaunch and postDebug tasks for automatic restarts this.skipRunningTask = !!restartData; return process.session.disconnect(true).then(() => { From 254e6bd07961db2e78f315d29635ca31316ad8c0 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 17:52:01 +0100 Subject: [PATCH 255/658] increase test timeout --- .../test/node/configurationEditingService.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts index 777f1c1b149..ed4e5febbec 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts +++ b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts @@ -47,7 +47,8 @@ class SettingsTestEnvironmentService extends EnvironmentService { get appSettingsPath(): string { return this.customAppSettingsHome; } } -suite('ConfigurationEditingService', () => { +suite('ConfigurationEditingService', function () { + this.timeout(10000); let instantiationService: TestInstantiationService; let testObject: ConfigurationEditingService; From db8b2b3fcc83eb250785b2bd0687016b96f33565 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 18:12:07 +0100 Subject: [PATCH 256/658] linux publish deb and rpm --- build/tfs/linux/build.yml | 8 ++++- build/tfs/linux/release2.sh | 66 +++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100755 build/tfs/linux/release2.sh diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index e33c4df719c..223674586f0 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -35,4 +35,10 @@ steps: - script: | DISPLAY=:10 ./scripts/test.sh --build --tfs - name: test \ No newline at end of file + name: test + +- script: | + npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-deb" + npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-rpm" + #npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-snap" + ./build/tfs/linux/release2.sh $(VSCODE_ARCH) $(LINUX_REPO_PASSWORD) \ No newline at end of file diff --git a/build/tfs/linux/release2.sh b/build/tfs/linux/release2.sh new file mode 100755 index 00000000000..47379836922 --- /dev/null +++ b/build/tfs/linux/release2.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +# Arguments +ARCH="$1" +LINUX_REPO_PASSWORD="$2" + +# Variables +PLATFORM_LINUX="linux-$ARCH" +PLATFORM_DEB="linux-deb-$ARCH" +PLATFORM_RPM="linux-rpm-$ARCH" +[[ "$ARCH" == "ia32" ]] && DEB_ARCH="i386" || DEB_ARCH="amd64" +[[ "$ARCH" == "ia32" ]] && RPM_ARCH="i386" || RPM_ARCH="x86_64" +REPO="`pwd`" +ROOT="$REPO/.." +BUILDNAME="VSCode-$PLATFORM_LINUX" +BUILD="$ROOT/$BUILDNAME" +BUILD_VERSION="$(ls $REPO/.build/linux/deb/$DEB_ARCH/deb/ | sed -e 's/code-[a-z]*_//g' -e 's/\.deb$//g')" +[ -z "$VSCODE_QUALITY" ] && TARBALL_FILENAME="code-$BUILD_VERSION.tar.gz" || TARBALL_FILENAME="code-$VSCODE_QUALITY-$BUILD_VERSION.tar.gz" +TARBALL_PATH="$ROOT/$TARBALL_FILENAME" +PACKAGEJSON="$BUILD/resources/app/package.json" +VERSION=$(node -p "require(\"$PACKAGEJSON\").version") + +rm -rf $ROOT/code-*.tar.* +(cd $ROOT && tar -czf $TARBALL_PATH $BUILDNAME) + +node build/tfs/common/publish.js $VSCODE_QUALITY $PLATFORM_LINUX archive-unsigned $TARBALL_FILENAME $VERSION true $TARBALL_PATH + +DEB_FILENAME="$(ls $REPO/.build/linux/deb/$DEB_ARCH/deb/)" +DEB_PATH="$REPO/.build/linux/deb/$DEB_ARCH/deb/$DEB_FILENAME" + +node build/tfs/common/publish.js $VSCODE_QUALITY $PLATFORM_DEB package $DEB_FILENAME $VERSION true $DEB_PATH + +RPM_FILENAME="$(ls $REPO/.build/linux/rpm/$RPM_ARCH/ | grep .rpm)" +RPM_PATH="$REPO/.build/linux/rpm/$RPM_ARCH/$RPM_FILENAME" + +node build/tfs/common/publish.js $VSCODE_QUALITY $PLATFORM_RPM package $RPM_FILENAME $VERSION true $RPM_PATH + +# SNAP_FILENAME="$(ls $REPO/.build/linux/snap/$ARCH/ | grep .snap)" +# SNAP_PATH="$REPO/.build/linux/snap/$ARCH/$SNAP_FILENAME" + +IS_FROZEN="$(node build/tfs/linux/frozen-check.js $VSCODE_QUALITY)" + +if [ -z "$VSCODE_QUALITY" ]; then + echo "VSCODE_QUALITY is not set, skipping repo package publish" +elif [ "$IS_FROZEN" = "true" ]; then + echo "$VSCODE_QUALITY is frozen, skipping repo package publish" +else + if [ "$BUILD_SOURCEBRANCH" = "master" ] || [ "$BUILD_SOURCEBRANCH" = "refs/heads/master" ]; then + if [[ $BUILD_QUEUEDBY = *"Project Collection Service Accounts"* || $BUILD_QUEUEDBY = *"Microsoft.VisualStudio.Services.TFS"* ]]; then + # Write config files needed by API, use eval to force environment variable expansion + pushd build/tfs/linux + # Submit to apt repo + if [ "$DEB_ARCH" = "amd64" ]; then + eval echo '{ \"server\": \"azure-apt-cat.cloudapp.net\", \"protocol\": \"https\", \"port\": \"443\", \"repositoryId\": \"58a4adf642421134a1a48d1a\", \"username\": \"vscode\", \"password\": \"$LINUX_REPO_PASSWORD\" }' > apt-config.json + + ./repoapi_client.sh -config apt-config.json -addfile $DEB_PATH + fi + # Submit to yum repo (disabled as it's manual until signing is automated) + # eval echo '{ \"server\": \"azure-apt-cat.cloudapp.net\", \"protocol\": \"https\", \"port\": \"443\", \"repositoryId\": \"58a4ae3542421134a1a48d1b\", \"username\": \"vscode\", \"password\": \"$LINUX_REPO_PASSWORD\" }' > yum-config.json + + # ./repoapi_client.sh -config yum-config.json -addfile $RPM_PATH + popd + echo "To check repo publish status run ./repoapi_client.sh -config config.json -check " + fi + fi +fi From 7d6948250e3543e0be50cc1456fc110f270de653 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 18:12:29 +0100 Subject: [PATCH 257/658] increase test timeout --- .../services/backup/test/node/backupFileService.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/services/backup/test/node/backupFileService.test.ts b/src/vs/workbench/services/backup/test/node/backupFileService.test.ts index 6641fec762d..1ce73d52c82 100644 --- a/src/vs/workbench/services/backup/test/node/backupFileService.test.ts +++ b/src/vs/workbench/services/backup/test/node/backupFileService.test.ts @@ -48,7 +48,9 @@ class TestBackupFileService extends BackupFileService { } } -suite('BackupFileService', () => { +suite('BackupFileService', function () { + this.timeout(10000); + let service: TestBackupFileService; setup(() => { From 6200d9d7aaea6d40e52452177628196e8d669f98 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 18:18:52 +0100 Subject: [PATCH 258/658] fix windows build --- build/tfs/win32/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index a9e0e7b0a2e..afd77abee41 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -209,7 +209,7 @@ steps: $env:MOONCAKE_STORAGE_ACCESS_KEY = "$(MOONCAKE_STORAGE_ACCESS_KEY)" $env:AZURE_DOCUMENTDB_MASTERKEY = "$(AZURE_DOCUMENTDB_MASTERKEY)" - $assetPlatform = if ($(VSCODE_ARCH) -eq "ia32") { "win32" } else { "win32-x64" } + $assetPlatform = if ("$(VSCODE_ARCH)" -eq "ia32") { "win32" } else { "win32-x64" } node build/tfs/common/publish.js $Quality "$global:assetPlatform-archive" archive "VSCode-win32-$(VSCODE_ARCH)-$Version.zip" $Version true $Zip node build/tfs/common/publish.js $Quality "$global:assetPlatform" setup "VSCodeSetup-$(VSCODE_ARCH)-$Version.exe" $Version true $Exe \ No newline at end of file From a1b581e80d29dd623779e15163427197a4e5c572 Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 18:27:51 +0100 Subject: [PATCH 259/658] layout: always make sure the sidebar with and panels have more than minimum values fixes #42736 --- src/vs/workbench/browser/layout.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts index 5724d744de1..e1606df78da 100644 --- a/src/vs/workbench/browser/layout.ts +++ b/src/vs/workbench/browser/layout.ts @@ -133,9 +133,9 @@ export class WorkbenchLayout implements IVerticalSashLayoutProvider, IHorizontal orientation: Orientation.HORIZONTAL }); - this._sidebarWidth = this.storageService.getInteger(WorkbenchLayout.sashXOneWidthSettingsKey, StorageScope.GLOBAL, -1); - this._panelHeight = this.storageService.getInteger(WorkbenchLayout.sashYHeightSettingsKey, StorageScope.GLOBAL, 0); - this._panelWidth = this.storageService.getInteger(WorkbenchLayout.sashXTwoWidthSettingsKey, StorageScope.GLOBAL, 0); + this._sidebarWidth = Math.max(this.partLayoutInfo.sidebar.minWidth, this.storageService.getInteger(WorkbenchLayout.sashXOneWidthSettingsKey, StorageScope.GLOBAL, -1)); + this._panelHeight = Math.max(this.partLayoutInfo.panel.minHeight, this.storageService.getInteger(WorkbenchLayout.sashYHeightSettingsKey, StorageScope.GLOBAL, 0)); + this._panelWidth = Math.max(this.partLayoutInfo.panel.minWidth, this.storageService.getInteger(WorkbenchLayout.sashXTwoWidthSettingsKey, StorageScope.GLOBAL, 0)); this.layoutEditorGroupsVertically = (this.editorGroupService.getGroupOrientation() !== 'horizontal'); @@ -786,4 +786,4 @@ export class WorkbenchLayout implements IVerticalSashLayoutProvider, IHorizontal this.toUnbind = null; } } -} \ No newline at end of file +} From d49302c26f062f7b0cbbd77c023625e485a50d50 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 8 Mar 2018 18:32:09 +0100 Subject: [PATCH 260/658] increase mocha timeout --- test/electron/renderer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/electron/renderer.js b/test/electron/renderer.js index 5658b244719..5fe876dc803 100644 --- a/test/electron/renderer.js +++ b/test/electron/renderer.js @@ -252,6 +252,8 @@ function runTests(opts) { mocha.reporter(IPCReporter); } + mocha.timeout(5000); + const runner = mocha.run(() => { createCoverageReport(opts).then(() => { ipcRenderer.send('all done'); From 248107b96af7082eb2f8cf659b9f77cf0c9051a0 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Thu, 8 Mar 2018 10:00:13 -0800 Subject: [PATCH 261/658] vscode-xterm@3.3.0-beta4 - Underscore private vars - Smooth alt buffer scrolling Fixes #44647 --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 04dbcf5c946..8eff1e209ac 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "vscode-nsfw": "1.0.17", "vscode-ripgrep": "0.7.1-patch.0.1", "vscode-textmate": "^3.2.0", - "vscode-xterm": "3.3.0-beta3", + "vscode-xterm": "3.3.0-beta4", "yauzl": "2.8.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 42d3d1e77d3..e8d23ef9467 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5996,9 +5996,9 @@ vscode-textmate@^3.2.0: fast-plist "^0.1.2" oniguruma "^6.0.1" -vscode-xterm@3.3.0-beta3: - version "3.3.0-beta3" - resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.3.0-beta3.tgz#f265a7e1b963f341c728bb23e2399e8298270dcd" +vscode-xterm@3.3.0-beta4: + version "3.3.0-beta4" + resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.3.0-beta4.tgz#560c039c3addebe6aa3a81c5b79d2869de87ecc5" vso-node-api@^6.1.2-preview: version "6.1.2-preview" From 3fbe6a6c989d0f2c64a5daefcf66ef267a92035f Mon Sep 17 00:00:00 2001 From: Cherry Wang Date: Thu, 8 Mar 2018 10:47:13 -0800 Subject: [PATCH 262/658] Removed unused dark theme icon css; tweaked drag-area css to keep icon size & position; tweaked start-debug container size for the responsive svg icon; added breakpoints-active-inverse.svg file that was missing. --- .../media/breakpoints-activate-inverse.svg | 1 + .../browser/media/debug.contribution.css | 60 +------------------ .../browser/media/debugActionsWidget.css | 1 + .../debug/browser/media/debugViewlet.css | 1 + 4 files changed, 4 insertions(+), 59 deletions(-) create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg new file mode 100644 index 00000000000..71fd2e1001e --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg @@ -0,0 +1 @@ +breakpoints-activate \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css index 2b39f7aa30d..073be30b803 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css +++ b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css @@ -95,10 +95,7 @@ .monaco-editor .debug-top-stack-frame.debug-breakpoint, .monaco-editor .debug-top-stack-frame.debug-breakpoint-conditional, -.monaco-editor .debug-breakpoint-column.debug-breakpoint-column.debug-top-stack-frame-column::before, -.monaco-editor.vs-dark .debug-top-stack-frame.debug-breakpoint, -.monaco-editor.vs-dark .debug-top-stack-frame.debug-breakpoint-conditional, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-column.debug-top-stack-frame-column::before { +.monaco-editor .debug-breakpoint-column.debug-breakpoint-column.debug-top-stack-frame-column::before { background: url('current-and-breakpoint.svg') center center no-repeat; } @@ -248,61 +245,6 @@ background-color: rgba(255, 255, 0, 0.3) } -.vs-dark .debug-breakpoint, -.hc-black .debug-breakpoint, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-column::before { - background: url('breakpoint.svg') center center no-repeat; -} - -.vs-dark .debug-breakpoint-conditional, -.hc-black .debug-breakpoint-conditional, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-conditional-column::before { - background: url('breakpoint-conditional.svg') center center no-repeat; -} - -.vs-dark .debug-breakpoint-unsupported, -.hc-black .debug-breakpoint-unsupported, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-unsupported-column::before { - background: url('breakpoint-unsupported.svg') center center no-repeat; -} - -.vs-dark .debug-breakpoint-disabled, -.hc-black .debug-breakpoint-disabled, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-disabled-column::before { - background: url('breakpoint-disabled.svg') center center no-repeat; -} - -.vs-dark .debug-breakpoint-unverified, -.hc-black .debug-breakpoint-unverified, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-unverified-column::before { - background: url('breakpoint-unverified.svg') center center no-repeat; -} - -.monaco-editor.vs-dark .debug-focused-stack-frame { - background: url('stackframe-arrow.svg') center center no-repeat; -} - -.monaco-editor.vs-dark .debug-focused-stack-frame.debug-breakpoint, -.monaco-editor.vs-dark .debug-focused-stack-frame.debug-breakpoint-conditional { - background: url('stackframe-and-breakpoint.svg') center center no-repeat; -} - -.vs-dark .debug-function-breakpoint, -.hc-black .debug-function-breakpoint { - background: url('breakpoint-function.svg') center center no-repeat; -} - -.vs-dark .debug-function-breakpoint-unverified, -.hc-black .debug-function-breakpoint-unverified { - background: url('breakpoint-function-unverified.svg') center center no-repeat; - -} - -.vs-dark .debug-function-breakpoint-disabled, -.hc-black .debug-function-breakpoint-disabled { - background: url('breakpoint-function-disabled.svg') center center no-repeat; -} - /* High Contrast Theming */ .monaco-editor.hc-black .debug-focused-stack-frame-line { diff --git a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css index 2a5c68c992e..c59e08762ab 100644 --- a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css +++ b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css @@ -26,6 +26,7 @@ height: 16px; width: 16px; background: url('drag.svg') center center no-repeat; + background-size: 16px 16px; } .monaco-workbench .debug-actions-widget .drag-area.dragged { diff --git a/src/vs/workbench/parts/debug/browser/media/debugViewlet.css b/src/vs/workbench/parts/debug/browser/media/debugViewlet.css index 2fbaa8518b5..14fc1203e9b 100644 --- a/src/vs/workbench/parts/debug/browser/media/debugViewlet.css +++ b/src/vs/workbench/parts/debug/browser/media/debugViewlet.css @@ -68,6 +68,7 @@ height: 20px; width: 20px; background: url('continue.svg') center center no-repeat; + background-size: 16px 16px; flex-shrink: 0; transition: transform 50ms ease; -webkit-transition: -webkit-transform 50ms ease; From 0f5277a3581861f6ad21d2aeebb1bf56acdbfb03 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 11:26:42 -0800 Subject: [PATCH 263/658] Properly wait for unzipped file handle to close - #43813 --- src/vs/base/node/zip.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/base/node/zip.ts b/src/vs/base/node/zip.ts index 5d257d40634..61d88800b89 100644 --- a/src/vs/base/node/zip.ts +++ b/src/vs/base/node/zip.ts @@ -76,7 +76,7 @@ function extractEntry(stream: Readable, fileName: string, mode: number, targetPa return mkdirp(targetDirName).then(() => new TPromise((c, e) => { let istream = createWriteStream(targetFileName, { mode }); - istream.once('finish', () => c(null)); + istream.once('close', () => c(null)); istream.once('error', e); stream.once('error', e); stream.pipe(istream); From 387f8153b54f71353ed6c05ac800c0e679ba66dd Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 12:10:29 -0800 Subject: [PATCH 264/658] For #43813 - retry rename when it fails with EPERM on windows, for 5s --- .../node/extensionManagementService.ts | 205 ++++++++++-------- 1 file changed, 113 insertions(+), 92 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 9f3df878827..189ea355193 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -30,7 +30,7 @@ import Event, { Emitter } from 'vs/base/common/event'; import * as semver from 'semver'; import URI from 'vs/base/common/uri'; import pkg from 'vs/platform/node/package'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh, platform, Platform } from 'vs/base/common/platform'; import { ILogService } from 'vs/platform/log/common/log'; import { ExtensionsManifestCache } from 'vs/platform/extensionManagement/node/extensionsManifestCache'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; @@ -101,6 +101,8 @@ interface InstallableExtension { export class ExtensionManagementService extends Disposable implements IExtensionManagementService { + private static readonly RENAME_RETRY_TIME = 5 * 1000; + _serviceBrand: any; private extensionsPath: string; @@ -147,25 +149,25 @@ export class ExtensionManagementService extends Disposable implements IExtension const identifier = { id: getLocalExtensionIdFromManifest(manifest) }; return this.unsetUninstalledAndRemove(identifier.id) .then( - () => this.checkOutdated(manifest) - .then(validated => { - if (validated) { - this.logService.info('Installing the extension:', identifier.id); - this._onInstallExtension.fire({ identifier, zipPath }); - return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) - .then( - metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), - error => this.installFromZipPath(identifier, zipPath, null, manifest)) - .then( - local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, - e => { - this.logService.error('Failed to install the extension:', identifier.id, e.message); - return TPromise.wrapError(e); - }); - } - return null; - }), - e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); + () => this.checkOutdated(manifest) + .then(validated => { + if (validated) { + this.logService.info('Installing the extension:', identifier.id); + this._onInstallExtension.fire({ identifier, zipPath }); + return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) + .then( + metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), + error => this.installFromZipPath(identifier, zipPath, null, manifest)) + .then( + local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, + e => { + this.logService.error('Failed to install the extension:', identifier.id, e.message); + return TPromise.wrapError(e); + }); + } + return null; + }), + e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); }); } @@ -220,8 +222,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return local; }) .then( - local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, - error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } + local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, + error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } ); } @@ -229,17 +231,17 @@ export class ExtensionManagementService extends Disposable implements IExtension this.onInstallExtensions([extension]); return this.collectExtensionsToInstall(extension) .then( - extensionsToInstall => { - if (extensionsToInstall.length > 1) { - this.onInstallExtensions(extensionsToInstall.slice(1)); - } - return this.downloadAndInstallExtensions(extensionsToInstall) - .then( - locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) - .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), - errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); - }, - error => this.onDidInstallExtensions([extension], [], [error])); + extensionsToInstall => { + if (extensionsToInstall.length > 1) { + this.onInstallExtensions(extensionsToInstall.slice(1)); + } + return this.downloadAndInstallExtensions(extensionsToInstall) + .then( + locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) + .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), + errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); + }, + error => this.onDidInstallExtensions([extension], [], [error])); } reinstall(extension: ILocalExtension): TPromise { @@ -252,8 +254,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.uninstallExtension(extension) .then(() => this.removeUninstalledExtension(extension) .then( - () => this.installFromGallery(galleryExtension), - e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); + () => this.installFromGallery(galleryExtension), + e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); } return TPromise.wrapError(new Error(nls.localize('Not a Marketplace extension', "Only Marketplace Extensions can be reinstalled"))); }); @@ -267,10 +269,10 @@ export class ExtensionManagementService extends Disposable implements IExtension } return this.getDependenciesToInstall(compatible.properties.dependencies) .then( - dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private downloadAndInstallExtensions(extensions: IGalleryExtension[]): TPromise { @@ -292,8 +294,8 @@ export class ExtensionManagementService extends Disposable implements IExtension .then(extension => this.downloadInstallableExtension(extension)) .then(installableExtension => this.installExtension(installableExtension)) .then( - local => { this.installingExtensions.delete(extension.identifier.id); return local; }, - e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } + local => { this.installingExtensions.delete(extension.identifier.id); return local; }, + e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } ); this.installingExtensions.set(extension.identifier.id, installingExtension); @@ -310,25 +312,25 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.galleryService.loadCompatibleVersion(extension) .then( - compatible => { - if (compatible) { - this.logService.trace('Started downloading extension:', extension.name); - return this.galleryService.download(extension) - .then( - zipPath => { - this.logService.info('Downloaded extension:', extension.name); - return validateLocalExtension(zipPath) - .then( - manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) - ); - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); - } else { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); - } - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + compatible => { + if (compatible) { + this.logService.trace('Started downloading extension:', extension.name); + return this.galleryService.download(extension) + .then( + zipPath => { + this.logService.info('Downloaded extension:', extension.name); + return validateLocalExtension(zipPath) + .then( + manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) + ); + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); + } else { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); + } + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private onInstallExtensions(extensions: IGalleryExtension[]): void { @@ -377,18 +379,18 @@ export class ExtensionManagementService extends Disposable implements IExtension private installExtension(installableExtension: InstallableExtension): TPromise { return this.unsetUninstalledAndGetLocal(installableExtension.id) .then( - local => { - if (local) { - return local; - } - return this.extractAndInstall(installableExtension); - }, - e => { - if (isMacintosh) { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - } - return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - }); + local => { + if (local) { + return local; + } + return this.extractAndInstall(installableExtension); + }, + e => { + if (isMacintosh) { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + } + return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + }); } private unsetUninstalledAndGetLocal(id: string): TPromise { @@ -426,23 +428,42 @@ export class ExtensionManagementService extends Disposable implements IExtension this.logService.trace(`Started extracting the extension from ${zipPath} to ${extractPath}`); return pfs.rimraf(extractPath) .then( - () => extract(zipPath, extractPath, options) - .then( - () => this.logService.info(`Extracted extension to ${extractPath}:`, id), - e => always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), - e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); + () => extract(zipPath, extractPath, options) + .then( + () => this.logService.info(`Extracted extension to ${extractPath}:`, id), + e => always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), + e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); } private completeInstall(id: string, extractPath: string): TPromise { - return pfs.rename(extractPath, path.join(this.extensionsPath, id)) + return this.renameWithRetry(id, extractPath) .then( - () => this.logService.info('Installation compelted.', id), - e => { - this.logService.info('Deleting the extracted extension', id); - return always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(e)); - }); + () => this.logService.info('Installation compelted.', id), + e => { + this.logService.info('Deleting the extracted extension', id); + return always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(e)); + }); + } + + private renameWithRetry(id: string, extractPath: string): TPromise { + const retry = (task: () => TPromise, shouldRetry: (err: any) => boolean) => { + return task().then( + null, + err => { + if (shouldRetry(err)) { + return retry(task, shouldRetry); + } else { + throw err; + } + }); + }; + + const retryUntil = Date.now() + ExtensionManagementService.RENAME_RETRY_TIME; + return retry( + () => pfs.rename(extractPath, path.join(this.extensionsPath, id)), + err => platform === Platform.Windows && Date.now() < retryUntil && err.code === 'EPERM'); } private rollback(extensions: IGalleryExtension[]): TPromise { @@ -519,10 +540,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.hasDependencies(extension, installed) ? this.promptForDependenciesAndUninstall(extension, installed, force) : this.promptAndUninstall(extension, installed, force)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private hasDependencies(extension: ILocalExtension, installed: ILocalExtension[]): boolean { @@ -639,10 +660,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.uninstallExtension(extension)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private preUninstallExtension(extension: ILocalExtension): TPromise { From 6634ff34c87e2ee6e27cd5d123e13b12bc0139d9 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 12:19:23 -0800 Subject: [PATCH 265/658] For #43813 - add null check for error --- .../extensionManagement/node/extensionManagementService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 189ea355193..a03278c37a0 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -463,7 +463,7 @@ export class ExtensionManagementService extends Disposable implements IExtension const retryUntil = Date.now() + ExtensionManagementService.RENAME_RETRY_TIME; return retry( () => pfs.rename(extractPath, path.join(this.extensionsPath, id)), - err => platform === Platform.Windows && Date.now() < retryUntil && err.code === 'EPERM'); + err => platform === Platform.Windows && err && err.code === 'EPERM' && Date.now() < retryUntil); } private rollback(extensions: IGalleryExtension[]): TPromise { From cc45527c52b9a3f8c39b353f7ca1b7e14c670bee Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 12:22:42 -0800 Subject: [PATCH 266/658] For #43813 - Clean up Platform import --- .../extensionManagement/node/extensionManagementService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index a03278c37a0..91a36de8443 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -30,7 +30,7 @@ import Event, { Emitter } from 'vs/base/common/event'; import * as semver from 'semver'; import URI from 'vs/base/common/uri'; import pkg from 'vs/platform/node/package'; -import { isMacintosh, platform, Platform } from 'vs/base/common/platform'; +import { isMacintosh, isWindows } from 'vs/base/common/platform'; import { ILogService } from 'vs/platform/log/common/log'; import { ExtensionsManifestCache } from 'vs/platform/extensionManagement/node/extensionsManifestCache'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; @@ -463,7 +463,7 @@ export class ExtensionManagementService extends Disposable implements IExtension const retryUntil = Date.now() + ExtensionManagementService.RENAME_RETRY_TIME; return retry( () => pfs.rename(extractPath, path.join(this.extensionsPath, id)), - err => platform === Platform.Windows && err && err.code === 'EPERM' && Date.now() < retryUntil); + err => isWindows && err && err.code === 'EPERM' && Date.now() < retryUntil); } private rollback(extensions: IGalleryExtension[]): TPromise { From c1dde3829ec103b57f7d3dd47f76235f7de0a0d3 Mon Sep 17 00:00:00 2001 From: Cherry Wang Date: Thu, 8 Mar 2018 12:32:09 -0800 Subject: [PATCH 267/658] Consolidate changes from previous commits --- .../parts/debug/browser/media/add-focus.svg | 2 +- .../parts/debug/browser/media/add-inverse.svg | 2 +- .../parts/debug/browser/media/add.svg | 2 +- .../media/breakpoint-conditional-dark.svg | 10 ---------- .../media/breakpoint-conditional-disabled.svg | 1 + .../breakpoint-conditional-unverified.svg | 1 + .../browser/media/breakpoint-conditional.svg | 11 +---------- .../debug/browser/media/breakpoint-dark.svg | 1 - .../browser/media/breakpoint-disabled-dark.svg | 1 - .../browser/media/breakpoint-disabled.svg | 2 +- .../browser/media/breakpoint-function-dark.svg | 1 - .../breakpoint-function-disabled-dark.svg | 1 - .../media/breakpoint-function-disabled.svg | 2 +- .../breakpoint-function-unverified-dark.svg | 1 - .../media/breakpoint-function-unverified.svg | 2 +- .../browser/media/breakpoint-function.svg | 2 +- .../browser/media/breakpoint-log-disabled.svg | 1 + .../media/breakpoint-log-unverified.svg | 1 + .../debug/browser/media/breakpoint-log.svg | 1 + .../media/breakpoint-unsupported-dark.svg | 17 ----------------- .../browser/media/breakpoint-unsupported.svg | 18 +----------------- .../media/breakpoint-unverified-dark.svg | 1 - .../browser/media/breakpoint-unverified.svg | 2 +- .../parts/debug/browser/media/breakpoint.svg | 2 +- .../browser/media/breakpoints-activate.svg | 2 +- .../debug/browser/media/clear-repl-inverse.svg | 2 +- .../parts/debug/browser/media/clear-repl.svg | 2 +- .../debug/browser/media/configure-inverse.svg | 2 +- .../parts/debug/browser/media/configure.svg | 2 +- .../debug/browser/media/continue-inverse.svg | 4 +--- .../parts/debug/browser/media/continue.svg | 4 +--- .../browser/media/current-and-breakpoint.svg | 2 +- .../debug/browser/media/current-arrow.svg | 2 +- .../parts/debug/browser/media/debug-dark.svg | 2 +- .../debug/browser/media/debugActionsWidget.css | 4 ++-- .../debug/browser/media/disconnect-inverse.svg | 2 +- .../parts/debug/browser/media/disconnect.svg | 2 +- .../parts/debug/browser/media/drag.svg | 9 +-------- .../debug/browser/media/pause-inverse.svg | 2 +- .../parts/debug/browser/media/pause.svg | 2 +- .../debug/browser/media/remove-all-inverse.svg | 2 +- .../parts/debug/browser/media/remove-all.svg | 2 +- .../parts/debug/browser/media/remove-focus.svg | 2 +- .../debug/browser/media/remove-inverse.svg | 2 +- .../parts/debug/browser/media/remove.svg | 2 +- .../parts/debug/browser/media/repl-inverse.svg | 2 +- .../parts/debug/browser/media/repl.svg | 2 +- .../debug/browser/media/restart-inverse.svg | 2 +- .../parts/debug/browser/media/restart.svg | 2 +- .../media/stackframe-and-breakpoint-dark.svg | 1 - .../media/stackframe-and-breakpoint.svg | 2 +- .../browser/media/stackframe-arrow-dark.svg | 1 - .../debug/browser/media/stackframe-arrow.svg | 2 +- .../debug/browser/media/step-into-inverse.svg | 2 +- .../parts/debug/browser/media/step-into.svg | 2 +- .../debug/browser/media/step-out-inverse.svg | 2 +- .../parts/debug/browser/media/step-out.svg | 2 +- .../debug/browser/media/step-over-inverse.svg | 2 +- .../parts/debug/browser/media/step-over.svg | 2 +- .../parts/debug/browser/media/stop-inverse.svg | 2 +- .../parts/debug/browser/media/stop.svg | 2 +- .../update/electron-browser/media/update.svg | 2 +- 62 files changed, 53 insertions(+), 119 deletions(-) delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg delete mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg delete mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg delete mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg diff --git a/src/vs/workbench/parts/debug/browser/media/add-focus.svg b/src/vs/workbench/parts/debug/browser/media/add-focus.svg index 5e9f5851e8b..769bd3b12bd 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-focus.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add-focus \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg index 3475c1e1963..7d3fd77ffd6 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add.svg b/src/vs/workbench/parts/debug/browser/media/add.svg index bdecdb0e45b..2b679663e80 100644 --- a/src/vs/workbench/parts/debug/browser/media/add.svg +++ b/src/vs/workbench/parts/debug/browser/media/add.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg deleted file mode 100644 index 720679e07e8..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg new file mode 100644 index 00000000000..ae7c86d8e51 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg @@ -0,0 +1 @@ +breakpoint-conditional-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg new file mode 100644 index 00000000000..f4781277d91 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg @@ -0,0 +1 @@ +breakpoint-conditional-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg index 77dd991c2b6..455743a5669 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg @@ -1,10 +1 @@ - - - - - - +breakpoint-conditional \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg deleted file mode 100644 index 5ccf397efaf..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg deleted file mode 100644 index bf58a18178f..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg index 9780270357d..b9cc51c1547 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg deleted file mode 100755 index 6b2651a9a39..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg +++ /dev/null @@ -1 +0,0 @@ -BreakpointFunction_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg deleted file mode 100755 index fe6aaa60d76..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg +++ /dev/null @@ -1 +0,0 @@ -BreakpointFunction_disabled_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg index e45fd9cb12c..3b191a8229b 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg @@ -1 +1 @@ -BreakpointFunction_disabled_16xMD +breakpoint-function-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg deleted file mode 100755 index 13903346b2d..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg +++ /dev/null @@ -1 +0,0 @@ -BreakpointFunctionUnverified_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg index 0af1324d785..3e01ce1345c 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg @@ -1 +1 @@ -BreakpointFunctionUnverified_16xMD +breakpoint-function-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg index 6bc70465fa3..2bc6454e520 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg @@ -1 +1 @@ -BreakpointFunction_16xMD \ No newline at end of file +breakpoint-function \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg new file mode 100644 index 00000000000..f37856481f5 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg @@ -0,0 +1 @@ +breakpoint-log-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg new file mode 100644 index 00000000000..b0e1624bf79 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg @@ -0,0 +1 @@ +breakpoint-log-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg new file mode 100644 index 00000000000..d6094ade2e8 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg @@ -0,0 +1 @@ +breakpoint-log \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg deleted file mode 100644 index fffcfb8cb47..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg index cc0c89e1b74..f7d377af128 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg @@ -1,17 +1 @@ - - - - - - - - - - - - - +breakpoint-unsupported \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg deleted file mode 100644 index 4a2575a3056..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg index 617e7ede7bd..511448bae65 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg index 7629294bcc5..e00d15a298f 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg index b32b1cd6de6..34809f9b1b6 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoints-activate \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg index 7df4455d7c3..f6d7128f4bc 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +clear-repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg index 6e4d3a1d481..7867d13d754 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg @@ -1 +1 @@ - \ No newline at end of file +clear-repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg index 61baaea2b8b..bbfbd366eb9 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure.svg b/src/vs/workbench/parts/debug/browser/media/configure.svg index 3dec2ba50fd..c97bb48bdcc 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg index f82c45c1109..5abc15f219b 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg @@ -1,3 +1 @@ - -]> \ No newline at end of file +continue \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue.svg b/src/vs/workbench/parts/debug/browser/media/continue.svg index 33affa1a519..99a6e9aef93 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue.svg @@ -1,3 +1 @@ - -]> \ No newline at end of file +continue \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg index 7a3e6f26357..d947abab683 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +current-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg index bd1ca579f13..3ea9f6b07b8 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg @@ -1 +1 @@ - \ No newline at end of file +current-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg index 9a969fb3589..cedddacf03e 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg @@ -1 +1 @@ - \ No newline at end of file +debug-dark \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css index af7b6aaefb4..c59e08762ab 100644 --- a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css +++ b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css @@ -23,8 +23,8 @@ .monaco-workbench .debug-actions-widget .drag-area { cursor: -webkit-grab; - height: 32px; - width: 10px; + height: 16px; + width: 16px; background: url('drag.svg') center center no-repeat; background-size: 16px 16px; } diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg index e00fd4062df..2d1e78b5b68 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg @@ -1 +1 @@ -Plan de travail 1 \ No newline at end of file +disconnect \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect.svg b/src/vs/workbench/parts/debug/browser/media/disconnect.svg index 2a87ce11ef8..b2deb2b91df 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect.svg @@ -1 +1 @@ -Plan de travail 1 \ No newline at end of file +disconnect \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/drag.svg b/src/vs/workbench/parts/debug/browser/media/drag.svg index 7f4145d742b..522bf98284a 100644 --- a/src/vs/workbench/parts/debug/browser/media/drag.svg +++ b/src/vs/workbench/parts/debug/browser/media/drag.svg @@ -1,8 +1 @@ - - - - - - - - \ No newline at end of file +drag \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg index 7418a236159..0185b23700d 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +pause \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause.svg b/src/vs/workbench/parts/debug/browser/media/pause.svg index f8e3b859b18..9a4beeb7710 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause.svg @@ -1 +1 @@ - \ No newline at end of file +pause \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg index 74e8dd8a024..99369626bfc 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +remove-all \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all.svg b/src/vs/workbench/parts/debug/browser/media/remove-all.svg index 7250ff6b54e..a71c2feeedc 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all.svg @@ -1 +1 @@ - \ No newline at end of file +remove-all_16x \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg index 865c5aaea5a..e1af90b8058 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg @@ -1 +1 @@ - \ No newline at end of file +remove-focus \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg index 751e89b3b02..e78bb998737 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +remove \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove.svg b/src/vs/workbench/parts/debug/browser/media/remove.svg index fde34404d4e..31d6abd6bab 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove.svg @@ -1 +1 @@ - \ No newline at end of file +remove \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg index f9fcfba75e2..a8939860d05 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl.svg b/src/vs/workbench/parts/debug/browser/media/repl.svg index 93558e96b47..8175eb32f94 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl.svg @@ -1 +1 @@ - \ No newline at end of file +repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg index 1443bb3158b..c9071eb96c6 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +restart \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart.svg b/src/vs/workbench/parts/debug/browser/media/restart.svg index 3d7a499db2a..94ebb45d0bc 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart.svg @@ -1 +1 @@ - \ No newline at end of file +restart \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg deleted file mode 100644 index 1d6a7c3ec3d..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg index 2d5823561e2..56f8da3f7b2 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +stackframe-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg deleted file mode 100644 index f965fddd633..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg index e39215f9a7c..c7ab10bfa8c 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg @@ -1 +1 @@ - \ No newline at end of file +stackframe-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg index b7de8c5fd13..8cfab5c40b1 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-into \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into.svg b/src/vs/workbench/parts/debug/browser/media/step-into.svg index b92fb4ef806..a4beee54411 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into.svg @@ -1 +1 @@ - \ No newline at end of file +step-into \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg index fc66ca1b80d..045a84ff032 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-out \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out.svg b/src/vs/workbench/parts/debug/browser/media/step-out.svg index 0fdc63f6ef9..850aed93c2e 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out.svg @@ -1 +1 @@ - \ No newline at end of file +step-out \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg index 98c1026db46..f3a1aa36f22 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-over \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over.svg b/src/vs/workbench/parts/debug/browser/media/step-over.svg index a716cbcf559..3343de71d83 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over.svg @@ -1 +1 @@ - \ No newline at end of file +step-over \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg index a0e6bcb42d6..c8e37202875 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +stop \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop.svg b/src/vs/workbench/parts/debug/browser/media/stop.svg index 333812dcdaf..57c29044b12 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop.svg @@ -1 +1 @@ - \ No newline at end of file +stop \ No newline at end of file diff --git a/src/vs/workbench/parts/update/electron-browser/media/update.svg b/src/vs/workbench/parts/update/electron-browser/media/update.svg index 3dec2ba50fd..c97bb48bdcc 100644 --- a/src/vs/workbench/parts/update/electron-browser/media/update.svg +++ b/src/vs/workbench/parts/update/electron-browser/media/update.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file From a9dcb2c3159367e347271d88c399e1f6ca88c23d Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 13:40:38 -0800 Subject: [PATCH 268/658] Revert whitespace formatting changes from 387f8153b54f71353ed6c05ac800c0e679ba66dd --- .../node/extensionManagementService.ts | 180 +++++++++--------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 91a36de8443..52d5d3f56bb 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -149,25 +149,25 @@ export class ExtensionManagementService extends Disposable implements IExtension const identifier = { id: getLocalExtensionIdFromManifest(manifest) }; return this.unsetUninstalledAndRemove(identifier.id) .then( - () => this.checkOutdated(manifest) - .then(validated => { - if (validated) { - this.logService.info('Installing the extension:', identifier.id); - this._onInstallExtension.fire({ identifier, zipPath }); - return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) - .then( - metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), - error => this.installFromZipPath(identifier, zipPath, null, manifest)) - .then( - local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, - e => { - this.logService.error('Failed to install the extension:', identifier.id, e.message); - return TPromise.wrapError(e); - }); - } - return null; - }), - e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); + () => this.checkOutdated(manifest) + .then(validated => { + if (validated) { + this.logService.info('Installing the extension:', identifier.id); + this._onInstallExtension.fire({ identifier, zipPath }); + return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) + .then( + metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), + error => this.installFromZipPath(identifier, zipPath, null, manifest)) + .then( + local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, + e => { + this.logService.error('Failed to install the extension:', identifier.id, e.message); + return TPromise.wrapError(e); + }); + } + return null; + }), + e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); }); } @@ -222,8 +222,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return local; }) .then( - local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, - error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } + local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, + error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } ); } @@ -231,17 +231,17 @@ export class ExtensionManagementService extends Disposable implements IExtension this.onInstallExtensions([extension]); return this.collectExtensionsToInstall(extension) .then( - extensionsToInstall => { - if (extensionsToInstall.length > 1) { - this.onInstallExtensions(extensionsToInstall.slice(1)); - } - return this.downloadAndInstallExtensions(extensionsToInstall) - .then( - locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) - .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), - errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); - }, - error => this.onDidInstallExtensions([extension], [], [error])); + extensionsToInstall => { + if (extensionsToInstall.length > 1) { + this.onInstallExtensions(extensionsToInstall.slice(1)); + } + return this.downloadAndInstallExtensions(extensionsToInstall) + .then( + locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) + .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), + errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); + }, + error => this.onDidInstallExtensions([extension], [], [error])); } reinstall(extension: ILocalExtension): TPromise { @@ -254,8 +254,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.uninstallExtension(extension) .then(() => this.removeUninstalledExtension(extension) .then( - () => this.installFromGallery(galleryExtension), - e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); + () => this.installFromGallery(galleryExtension), + e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); } return TPromise.wrapError(new Error(nls.localize('Not a Marketplace extension', "Only Marketplace Extensions can be reinstalled"))); }); @@ -269,10 +269,10 @@ export class ExtensionManagementService extends Disposable implements IExtension } return this.getDependenciesToInstall(compatible.properties.dependencies) .then( - dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private downloadAndInstallExtensions(extensions: IGalleryExtension[]): TPromise { @@ -294,8 +294,8 @@ export class ExtensionManagementService extends Disposable implements IExtension .then(extension => this.downloadInstallableExtension(extension)) .then(installableExtension => this.installExtension(installableExtension)) .then( - local => { this.installingExtensions.delete(extension.identifier.id); return local; }, - e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } + local => { this.installingExtensions.delete(extension.identifier.id); return local; }, + e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } ); this.installingExtensions.set(extension.identifier.id, installingExtension); @@ -312,25 +312,25 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.galleryService.loadCompatibleVersion(extension) .then( - compatible => { - if (compatible) { - this.logService.trace('Started downloading extension:', extension.name); - return this.galleryService.download(extension) - .then( - zipPath => { - this.logService.info('Downloaded extension:', extension.name); - return validateLocalExtension(zipPath) - .then( - manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) - ); - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); - } else { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); - } - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + compatible => { + if (compatible) { + this.logService.trace('Started downloading extension:', extension.name); + return this.galleryService.download(extension) + .then( + zipPath => { + this.logService.info('Downloaded extension:', extension.name); + return validateLocalExtension(zipPath) + .then( + manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) + ); + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); + } else { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); + } + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private onInstallExtensions(extensions: IGalleryExtension[]): void { @@ -379,18 +379,18 @@ export class ExtensionManagementService extends Disposable implements IExtension private installExtension(installableExtension: InstallableExtension): TPromise { return this.unsetUninstalledAndGetLocal(installableExtension.id) .then( - local => { - if (local) { - return local; - } - return this.extractAndInstall(installableExtension); - }, - e => { - if (isMacintosh) { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - } - return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - }); + local => { + if (local) { + return local; + } + return this.extractAndInstall(installableExtension); + }, + e => { + if (isMacintosh) { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + } + return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + }); } private unsetUninstalledAndGetLocal(id: string): TPromise { @@ -428,23 +428,23 @@ export class ExtensionManagementService extends Disposable implements IExtension this.logService.trace(`Started extracting the extension from ${zipPath} to ${extractPath}`); return pfs.rimraf(extractPath) .then( - () => extract(zipPath, extractPath, options) - .then( - () => this.logService.info(`Extracted extension to ${extractPath}:`, id), - e => always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), - e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); + () => extract(zipPath, extractPath, options) + .then( + () => this.logService.info(`Extracted extension to ${extractPath}:`, id), + e => always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), + e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); } private completeInstall(id: string, extractPath: string): TPromise { return this.renameWithRetry(id, extractPath) .then( - () => this.logService.info('Installation compelted.', id), - e => { - this.logService.info('Deleting the extracted extension', id); - return always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(e)); - }); + () => this.logService.info('Installation compelted.', id), + e => { + this.logService.info('Deleting the extracted extension', id); + return always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(e)); + }); } private renameWithRetry(id: string, extractPath: string): TPromise { @@ -540,10 +540,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.hasDependencies(extension, installed) ? this.promptForDependenciesAndUninstall(extension, installed, force) : this.promptAndUninstall(extension, installed, force)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private hasDependencies(extension: ILocalExtension, installed: ILocalExtension[]): boolean { @@ -660,10 +660,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.uninstallExtension(extension)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private preUninstallExtension(extension: ILocalExtension): TPromise { From c9c2d9e80b01f574922566beb305b5275eb7c87d Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 13:06:01 -0800 Subject: [PATCH 269/658] Remove return statement snippets for ts Fixes #45217 These snipepts do not add much value and do not seem like a good fit for core vscode --- .../snippets/typescript.json | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/extensions/typescript-basics/snippets/typescript.json b/extensions/typescript-basics/snippets/typescript.json index b5c9a39e253..0a7195751d8 100644 --- a/extensions/typescript-basics/snippets/typescript.json +++ b/extensions/typescript-basics/snippets/typescript.json @@ -109,27 +109,6 @@ ], "description": "Triple-slash reference" }, - "Return false": { - "prefix": "ret0", - "body": [ - "return false;$0" - ], - "description": "Return false" - }, - "Return true": { - "prefix": "ret1", - "body": [ - "return true;$0" - ], - "description": "Return true" - }, - "Return statement": { - "prefix": "ret", - "body": [ - "return $1;$0" - ], - "description": "Return statement" - }, "Property setter": { "prefix": "set", "body": [ From 0c8e31f14a2c1d4c0c7ea75573caab39b171384b Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 14:27:33 -0800 Subject: [PATCH 270/658] Use memoize for documentSelector --- extensions/typescript/src/languageProvider.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/extensions/typescript/src/languageProvider.ts b/extensions/typescript/src/languageProvider.ts index 1c8cffb3025..afdcf4fcbbd 100644 --- a/extensions/typescript/src/languageProvider.ts +++ b/extensions/typescript/src/languageProvider.ts @@ -18,6 +18,7 @@ import DiagnosticsManager from './features/diagnostics'; import { LanguageDescription } from './utils/languageDescription'; import * as fileSchemes from './utils/fileSchemes'; import { CachedNavTreeResponse } from './features/baseCodeLensProvider'; +import { memoize } from './utils/memoize'; const validateSetting = 'validate.enable'; const foldingSetting = 'typescript.experimental.syntaxFolding'; @@ -31,8 +32,6 @@ export default class LanguageProvider { private _validate: boolean = true; - private _documentSelector?: DocumentFilter[]; - private readonly disposables: Disposable[] = []; private readonly versionDependentDisposables: Disposable[] = []; @@ -82,16 +81,15 @@ export default class LanguageProvider { this.formattingOptionsManager.dispose(); } + @memoize private get documentSelector(): DocumentFilter[] { - if (!this._documentSelector) { - this._documentSelector = []; - for (const language of this.description.modeIds) { - for (const scheme of fileSchemes.supportedSchemes) { - this._documentSelector.push({ language, scheme }); - } + const documentSelector = []; + for (const language of this.description.modeIds) { + for (const scheme of fileSchemes.supportedSchemes) { + documentSelector.push({ language, scheme }); } } - return this._documentSelector; + return documentSelector; } private async registerProviders( @@ -196,7 +194,7 @@ export default class LanguageProvider { return !!base && base === this.description.configFile; } - public get id(): string { + private get id(): string { return this.description.id; } From ede2d64b2f28f353d1a2993ce0e8ddb2f8b8fd0f Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Thu, 8 Mar 2018 15:55:27 -0800 Subject: [PATCH 271/658] Vertically align closed/open icons in issue reporter, fixes #44660 --- .../electron-browser/issue/media/issueReporter.css | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/vs/code/electron-browser/issue/media/issueReporter.css b/src/vs/code/electron-browser/issue/media/issueReporter.css index 26e2e48b3dc..b5e43bd0d81 100644 --- a/src/vs/code/electron-browser/issue/media/issueReporter.css +++ b/src/vs/code/electron-browser/issue/media/issueReporter.css @@ -379,12 +379,11 @@ button { .issues-container > .issue { padding: 4px 0; + display: flex; } .issues-container > .issue > .issue-link { - display: inline-block; width: calc(100% - 82px); - vertical-align: top; overflow: hidden; padding-top: 3px; white-space: nowrap; @@ -392,7 +391,6 @@ button { } .issues-container > .issue > .issue-state { - display: inline-block; width: 77px; padding: 3px 6px; margin-right: 5px; @@ -401,14 +399,8 @@ button { border-radius: .25rem; } -.issues-container > .issue > .issue-state .octicon { - vertical-align: top; - width: 16px; -} - .issues-container > .issue .label { margin-left: 5px; - display: inline-block; width: 44px; text-overflow: ellipsis; overflow: hidden; From 54d1d532189cdb226a1a2d0d110cce3e0753f14c Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Thu, 8 Mar 2018 16:20:49 -0800 Subject: [PATCH 272/658] Move Feature Request before Performance Issue, fixes #45334 --- src/vs/code/electron-browser/issue/issueReporterMain.ts | 4 ++-- src/vs/code/electron-browser/issue/media/issueReporter.css | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts index 65e8e851a46..b885c6973a7 100644 --- a/src/vs/code/electron-browser/issue/issueReporterMain.ts +++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts @@ -541,8 +541,8 @@ export class IssueReporter extends Disposable { } else { typeSelect.innerHTML = [ makeOption(IssueType.Bug, localize('bugReporter', "Bug Report")), - makeOption(IssueType.PerformanceIssue, localize('performanceIssue', "Performance Issue")), - makeOption(IssueType.FeatureRequest, localize('featureRequest', "Feature Request")) + makeOption(IssueType.FeatureRequest, localize('featureRequest', "Feature Request")), + makeOption(IssueType.PerformanceIssue, localize('performanceIssue', "Performance Issue")) ].join('\n'); } diff --git a/src/vs/code/electron-browser/issue/media/issueReporter.css b/src/vs/code/electron-browser/issue/media/issueReporter.css index b5e43bd0d81..4b86b480b30 100644 --- a/src/vs/code/electron-browser/issue/media/issueReporter.css +++ b/src/vs/code/electron-browser/issue/media/issueReporter.css @@ -390,6 +390,10 @@ button { text-overflow: ellipsis; } +.issues-container > .issue > .issue-state .octicon { + width: 16px; +} + .issues-container > .issue > .issue-state { width: 77px; padding: 3px 6px; From 82be8c8b01735d1b3cf17e16cc0a92bafba0cc93 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:58:32 -0800 Subject: [PATCH 273/658] Build with TS 2.7 (#45348) * Pick up TS 2.7 * Fix formatter in build script * Fix build error for ts 2.7 * Pick up new ts format and tslint versions * Update lock * use 2.7.2 for build * Formatting --- build/monaco/api.js | 4 +- build/monaco/api.ts | 4 +- build/package.json | 2 +- build/yarn.lock | 6 +- package.json | 4 +- src/typings/gc-signals.d.ts | 2 +- src/typings/keytar.d.ts | 72 +- src/typings/lib.ie11_safe_es6.d.ts | 86 +- src/typings/mocha.d.ts | 300 +- src/typings/node.d.ts | 6380 ++++++++--------- src/typings/vscode-xterm.d.ts | 20 +- src/vs/base/common/marked/marked.d.ts | 2 +- src/vs/base/parts/ipc/test/node/ipc.perf.ts | 8 +- .../sharedProcess/sharedProcessMain.ts | 2 +- src/vs/code/node/cliProcessMain.ts | 18 +- .../browser/services/codeEditorServiceImpl.ts | 2 +- .../smartSelect/tokenSelectionSupport.ts | 2 +- .../contextkey/browser/contextKeyService.ts | 2 +- src/vs/platform/dialogs/common/dialogIpc.ts | 2 +- .../node/extensionManagementService.ts | 180 +- .../test/common/instantiationService.test.ts | 18 +- src/vs/platform/list/browser/listService.ts | 2 +- src/vs/platform/state/node/stateService.ts | 2 +- .../parts/editor/editor.contribution.ts | 2 +- .../browser/parts/editor/rangeDecorations.ts | 2 +- .../parts/notifications/notificationsList.ts | 2 +- .../debug/electron-browser/callStackView.ts | 2 +- .../extensions/browser/dependenciesViewer.ts | 4 +- .../extensions/browser/extensionsActions.ts | 2 +- .../extensions/browser/extensionsQuickOpen.ts | 2 +- .../parts/files/common/explorerModel.ts | 2 +- .../parts/output/browser/outputActions.ts | 2 +- .../preferences/browser/keybindingsEditor.ts | 18 +- .../quickopen/browser/gotoLineHandler.ts | 2 +- .../parts/quickopen/browser/helpHandler.ts | 2 +- .../parts/scm/electron-browser/scmViewlet.ts | 2 +- .../parts/search/browser/openSymbolHandler.ts | 2 +- .../parts/search/browser/searchResultsView.ts | 4 +- .../parts/search/common/searchModel.ts | 4 +- .../parts/tasks/browser/quickOpen.ts | 2 +- .../electron-browser/themes.contribution.ts | 12 +- .../walkThrough.contribution.ts | 6 +- .../node/configurationEditingService.ts | 12 +- .../node/configurationEditingService.test.ts | 18 +- .../test/node/keybindingEditing.test.ts | 8 +- .../services/scm/common/scmService.ts | 2 +- .../textfile/common/textFileEditorModel.ts | 2 +- .../textfile/test/textFileEditorModel.test.ts | 2 +- .../electron-browser/colorThemeStore.ts | 2 +- .../electron-browser/fileIconThemeStore.ts | 2 +- .../electron-browser/workbenchThemeService.ts | 2 +- .../browser/parts/editor/baseEditor.test.ts | 4 +- .../test/common/editor/editor.test.ts | 2 +- .../api/mainThreadSaveParticipant.test.ts | 2 +- yarn.lock | 80 +- 55 files changed, 3666 insertions(+), 3666 deletions(-) diff --git a/build/monaco/api.js b/build/monaco/api.js index 3b1f823649b..74e9273f35e 100644 --- a/build/monaco/api.js +++ b/build/monaco/api.js @@ -171,9 +171,7 @@ function format(text) { function getRuleProvider(options) { // Share this between multiple formatters using the same options. // This represents the bulk of the space the formatter uses. - var ruleProvider = new ts.formatting.RulesProvider(); - ruleProvider.ensureUpToDate(options); - return ruleProvider; + return ts.formatting.getFormatContext(options); } function applyEdits(text, edits) { // Apply edits in reverse on the existing text diff --git a/build/monaco/api.ts b/build/monaco/api.ts index 6ebe7f277e7..eff457c5121 100644 --- a/build/monaco/api.ts +++ b/build/monaco/api.ts @@ -196,9 +196,7 @@ function format(text: string): string { function getRuleProvider(options: ts.FormatCodeSettings) { // Share this between multiple formatters using the same options. // This represents the bulk of the space the formatter uses. - let ruleProvider = new (ts).formatting.RulesProvider(); - ruleProvider.ensureUpToDate(options); - return ruleProvider; + return (ts as any).formatting.getFormatContext(options); } function applyEdits(text: string, edits: ts.TextChange[]): string { diff --git a/build/package.json b/build/package.json index bcc32e8dec0..2d8dc9089f0 100644 --- a/build/package.json +++ b/build/package.json @@ -13,7 +13,7 @@ "documentdb": "1.13.0", "mime": "^1.3.4", "minimist": "^1.2.0", - "typescript": "2.6.1", + "typescript": "2.7.2", "xml2js": "^0.4.17" }, "scripts": { diff --git a/build/yarn.lock b/build/yarn.lock index 69671f9a06f..ec3bd73e853 100644 --- a/build/yarn.lock +++ b/build/yarn.lock @@ -427,9 +427,9 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -typescript@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" +typescript@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" underscore@1.8.3, underscore@~1.8.3: version "1.8.3" diff --git a/package.json b/package.json index 8eff1e209ac..8691d686bad 100644 --- a/package.json +++ b/package.json @@ -111,8 +111,8 @@ "sinon": "^1.17.2", "source-map": "^0.4.4", "tslint": "^5.9.1", - "typescript": "2.6.1", - "typescript-formatter": "4.0.1", + "typescript": "2.7.2", + "typescript-formatter": "7.1.0", "uglify-es": "^3.0.18", "underscore": "^1.8.2", "vinyl": "^0.4.5", diff --git a/src/typings/gc-signals.d.ts b/src/typings/gc-signals.d.ts index be8992af28c..15af0411773 100644 --- a/src/typings/gc-signals.d.ts +++ b/src/typings/gc-signals.d.ts @@ -6,7 +6,7 @@ declare module 'gc-signals' { * value is stored for later consumption. */ export const GCSignal: { - new (id: number): GCSignal; + new(id: number): GCSignal; }; /** * Consume ids of garbage collected signals. diff --git a/src/typings/keytar.d.ts b/src/typings/keytar.d.ts index be122b71ea7..e881644eb8d 100644 --- a/src/typings/keytar.d.ts +++ b/src/typings/keytar.d.ts @@ -5,44 +5,44 @@ declare module 'keytar' { -/** - * Get the stored password for the service and account. - * - * @param service The string service name. - * @param account The string account name. - * - * @returns A promise for the password string. - */ -export function getPassword(service: string, account: string): Promise; + /** + * Get the stored password for the service and account. + * + * @param service The string service name. + * @param account The string account name. + * + * @returns A promise for the password string. + */ + export function getPassword(service: string, account: string): Promise; -/** - * Add the password for the service and account to the keychain. - * - * @param service The string service name. - * @param account The string account name. - * @param password The string password. - * - * @returns A promise for the set password completion. - */ -export function setPassword(service: string, account: string, password: string): Promise; + /** + * Add the password for the service and account to the keychain. + * + * @param service The string service name. + * @param account The string account name. + * @param password The string password. + * + * @returns A promise for the set password completion. + */ + export function setPassword(service: string, account: string, password: string): Promise; -/** - * Delete the stored password for the service and account. - * - * @param service The string service name. - * @param account The string account name. - * - * @returns A promise for the deletion status. True on success. - */ -export function deletePassword(service: string, account: string): Promise; + /** + * Delete the stored password for the service and account. + * + * @param service The string service name. + * @param account The string account name. + * + * @returns A promise for the deletion status. True on success. + */ + export function deletePassword(service: string, account: string): Promise; -/** - * Find a password for the service in the keychain. - * - * @param service The string service name. - * - * @returns A promise for the password string. - */ -export function findPassword(service: string): Promise; + /** + * Find a password for the service in the keychain. + * + * @param service The string service name. + * + * @returns A promise for the password string. + */ + export function findPassword(service: string): Promise; } \ No newline at end of file diff --git a/src/typings/lib.ie11_safe_es6.d.ts b/src/typings/lib.ie11_safe_es6.d.ts index 528d61b7582..e4f8fc57e76 100644 --- a/src/typings/lib.ie11_safe_es6.d.ts +++ b/src/typings/lib.ie11_safe_es6.d.ts @@ -7,72 +7,72 @@ // CHECK WITH http://kangax.github.io/compat-table/es6/#ie11 interface Map { - clear(): void; - delete(key: K): boolean; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; - get(key: K): V; - has(key: K): boolean; - set(key: K, value?: V): Map; - readonly size: number; + clear(): void; + delete(key: K): boolean; + forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; + get(key: K): V; + has(key: K): boolean; + set(key: K, value?: V): Map; + readonly size: number; - // not supported on IE11: - // entries(): IterableIterator<[K, V]>; - // keys(): IterableIterator; - // values(): IterableIterator; - // [Symbol.iterator]():IterableIterator<[K,V]>; - // [Symbol.toStringTag]: string; + // not supported on IE11: + // entries(): IterableIterator<[K, V]>; + // keys(): IterableIterator; + // values(): IterableIterator; + // [Symbol.iterator]():IterableIterator<[K,V]>; + // [Symbol.toStringTag]: string; } interface MapConstructor { - new (): Map; - prototype: Map; + new (): Map; + prototype: Map; - // not supported on IE11: - // new (iterable: Iterable<[K, V]>): Map; + // not supported on IE11: + // new (iterable: Iterable<[K, V]>): Map; } declare var Map: MapConstructor; interface Set { - add(value: T): Set; - clear(): void; - delete(value: T): boolean; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; - has(value: T): boolean; - readonly size: number; + add(value: T): Set; + clear(): void; + delete(value: T): boolean; + forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; + has(value: T): boolean; + readonly size: number; - // not supported on IE11: - // entries(): IterableIterator<[T, T]>; - // keys(): IterableIterator; - // values(): IterableIterator; - // [Symbol.iterator]():IterableIterator; - // [Symbol.toStringTag]: string; + // not supported on IE11: + // entries(): IterableIterator<[T, T]>; + // keys(): IterableIterator; + // values(): IterableIterator; + // [Symbol.iterator]():IterableIterator; + // [Symbol.toStringTag]: string; } interface SetConstructor { - new (): Set; - prototype: Set; + new (): Set; + prototype: Set; - // not supported on IE11: - // new (iterable: Iterable): Set; + // not supported on IE11: + // new (iterable: Iterable): Set; } declare var Set: SetConstructor; interface WeakMap { - delete(key: K): boolean; - get(key: K): V | undefined; - has(key: K): boolean; - // IE11 doesn't return this - // set(key: K, value?: V): this; - set(key: K, value?: V): undefined; + delete(key: K): boolean; + get(key: K): V | undefined; + has(key: K): boolean; + // IE11 doesn't return this + // set(key: K, value?: V): this; + set(key: K, value?: V): undefined; } interface WeakMapConstructor { - new (): WeakMap; - new (): WeakMap; - // new (entries?: [K, V][]): WeakMap; - readonly prototype: WeakMap; + new(): WeakMap; + new (): WeakMap; + // new (entries?: [K, V][]): WeakMap; + readonly prototype: WeakMap; } declare var WeakMap: WeakMapConstructor; diff --git a/src/typings/mocha.d.ts b/src/typings/mocha.d.ts index e4bddbd49b9..dfc3367cece 100644 --- a/src/typings/mocha.d.ts +++ b/src/typings/mocha.d.ts @@ -4,29 +4,29 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped interface MochaSetupOptions { - //milliseconds to wait before considering a test slow - slow?: number; + //milliseconds to wait before considering a test slow + slow?: number; - // timeout in milliseconds - timeout?: number; + // timeout in milliseconds + timeout?: number; - // ui name "bdd", "tdd", "exports" etc - ui?: string; + // ui name "bdd", "tdd", "exports" etc + ui?: string; - //array of accepted globals - globals?: any[]; + //array of accepted globals + globals?: any[]; - // reporter instance (function or string), defaults to `mocha.reporters.Spec` - reporter?: any; + // reporter instance (function or string), defaults to `mocha.reporters.Spec` + reporter?: any; - // bail on the first test failure - bail?: boolean; + // bail on the first test failure + bail?: boolean; - // ignore global leaks - ignoreLeaks?: boolean; + // ignore global leaks + ignoreLeaks?: boolean; - // grep string or regexp to filter tests with - grep?: any; + // grep string or regexp to filter tests with + grep?: any; } declare var mocha: Mocha; @@ -46,7 +46,7 @@ declare var specify: Mocha.ITestDefinition; declare function run(): void; interface MochaDone { - (error?: any): any; + (error?: any): any; } declare function setup(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void; @@ -63,172 +63,172 @@ declare function afterEach(callback: (this: Mocha.IBeforeAndAfterContext, done: declare function afterEach(description: string, callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void; declare class Mocha { - currentTest: Mocha.ITestDefinition; - constructor(options?: { - grep?: RegExp; - ui?: string; - reporter?: string; - timeout?: number; - reporterOptions?: any; - slow?: number; - bail?: boolean; - }); + currentTest: Mocha.ITestDefinition; + constructor(options?: { + grep?: RegExp; + ui?: string; + reporter?: string; + timeout?: number; + reporterOptions?: any; + slow?: number; + bail?: boolean; + }); - /** Setup mocha with the given options. */ - setup(options: MochaSetupOptions): Mocha; - bail(value?: boolean): Mocha; - addFile(file: string): Mocha; - /** Sets reporter by name, defaults to "spec". */ - reporter(name: string): Mocha; - /** Sets reporter constructor, defaults to mocha.reporters.Spec. */ - reporter(reporter: (runner: Mocha.IRunner, options: any) => any): Mocha; - ui(value: string): Mocha; - grep(value: string): Mocha; - grep(value: RegExp): Mocha; - invert(): Mocha; - ignoreLeaks(value: boolean): Mocha; - checkLeaks(): Mocha; + /** Setup mocha with the given options. */ + setup(options: MochaSetupOptions): Mocha; + bail(value?: boolean): Mocha; + addFile(file: string): Mocha; + /** Sets reporter by name, defaults to "spec". */ + reporter(name: string): Mocha; + /** Sets reporter constructor, defaults to mocha.reporters.Spec. */ + reporter(reporter: (runner: Mocha.IRunner, options: any) => any): Mocha; + ui(value: string): Mocha; + grep(value: string): Mocha; + grep(value: RegExp): Mocha; + invert(): Mocha; + ignoreLeaks(value: boolean): Mocha; + checkLeaks(): Mocha; /** * Function to allow assertion libraries to throw errors directly into mocha. * This is useful when running tests in a browser because window.onerror will * only receive the 'message' attribute of the Error. */ - throwError(error: Error): void; - /** Enables growl support. */ - growl(): Mocha; - globals(value: string): Mocha; - globals(values: string[]): Mocha; - useColors(value: boolean): Mocha; - useInlineDiffs(value: boolean): Mocha; - timeout(value: number): Mocha; - slow(value: number): Mocha; - enableTimeouts(value: boolean): Mocha; - asyncOnly(value: boolean): Mocha; - noHighlighting(value: boolean): Mocha; - /** Runs tests and invokes `onComplete()` when finished. */ - run(onComplete?: (failures: number) => void): Mocha.IRunner; + throwError(error: Error): void; + /** Enables growl support. */ + growl(): Mocha; + globals(value: string): Mocha; + globals(values: string[]): Mocha; + useColors(value: boolean): Mocha; + useInlineDiffs(value: boolean): Mocha; + timeout(value: number): Mocha; + slow(value: number): Mocha; + enableTimeouts(value: boolean): Mocha; + asyncOnly(value: boolean): Mocha; + noHighlighting(value: boolean): Mocha; + /** Runs tests and invokes `onComplete()` when finished. */ + run(onComplete?: (failures: number) => void): Mocha.IRunner; } // merge the Mocha class declaration with a module declare namespace Mocha { - interface ISuiteCallbackContext { - timeout(ms: number): this; - retries(n: number): this; - slow(ms: number): this; - } + interface ISuiteCallbackContext { + timeout(ms: number): this; + retries(n: number): this; + slow(ms: number): this; + } - interface IHookCallbackContext { - skip(): this; - timeout(ms: number): this; - [index: string]: any; - } + interface IHookCallbackContext { + skip(): this; + timeout(ms: number): this; + [index: string]: any; + } - interface ITestCallbackContext { - skip(): this; - timeout(ms: number): this; - retries(n: number): this; - slow(ms: number): this; - [index: string]: any; - } + interface ITestCallbackContext { + skip(): this; + timeout(ms: number): this; + retries(n: number): this; + slow(ms: number): this; + [index: string]: any; + } - /** Partial interface for Mocha's `Runnable` class. */ - interface IRunnable { - title: string; - fn: Function; - async: boolean; - sync: boolean; - timedOut: boolean; - timeout(n: number): this; - } + /** Partial interface for Mocha's `Runnable` class. */ + interface IRunnable { + title: string; + fn: Function; + async: boolean; + sync: boolean; + timedOut: boolean; + timeout(n: number): this; + } - /** Partial interface for Mocha's `Suite` class. */ - interface ISuite { - parent: ISuite; - title: string; + /** Partial interface for Mocha's `Suite` class. */ + interface ISuite { + parent: ISuite; + title: string; - fullTitle(): string; - } + fullTitle(): string; + } - /** Partial interface for Mocha's `Test` class. */ - interface ITest extends IRunnable { - parent: ISuite; - pending: boolean; - state: 'failed'|'passed'|undefined; + /** Partial interface for Mocha's `Test` class. */ + interface ITest extends IRunnable { + parent: ISuite; + pending: boolean; + state: 'failed' | 'passed' | undefined; - fullTitle(): string; - } + fullTitle(): string; + } - interface IBeforeAndAfterContext extends IHookCallbackContext { - currentTest: ITest; - } + interface IBeforeAndAfterContext extends IHookCallbackContext { + currentTest: ITest; + } - /** Partial interface for Mocha's `Runner` class. */ - interface IRunner { } + /** Partial interface for Mocha's `Runner` class. */ + interface IRunner { } - interface IContextDefinition { - (description: string, callback: (this: ISuiteCallbackContext) => void): ISuite; - only(description: string, callback: (this: ISuiteCallbackContext) => void): ISuite; - skip(description: string, callback: (this: ISuiteCallbackContext) => void): void; - timeout(ms: number): void; - } + interface IContextDefinition { + (description: string, callback: (this: ISuiteCallbackContext) => void): ISuite; + only(description: string, callback: (this: ISuiteCallbackContext) => void): ISuite; + skip(description: string, callback: (this: ISuiteCallbackContext) => void): void; + timeout(ms: number): void; + } - interface ITestDefinition { - (expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest; - only(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest; - skip(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): void; - timeout(ms: number): void; - state: "failed" | "passed"; - } + interface ITestDefinition { + (expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest; + only(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest; + skip(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): void; + timeout(ms: number): void; + state: "failed" | "passed"; + } - export module reporters { - export class Base { - stats: { - suites: number; - tests: number; - passes: number; - pending: number; - failures: number; - }; + export module reporters { + export class Base { + stats: { + suites: number; + tests: number; + passes: number; + pending: number; + failures: number; + }; - constructor(runner: IRunner); - } + constructor(runner: IRunner); + } - export class Doc extends Base { } - export class Dot extends Base { } - export class HTML extends Base { } - export class HTMLCov extends Base { } - export class JSON extends Base { } - export class JSONCov extends Base { } - export class JSONStream extends Base { } - export class Landing extends Base { } - export class List extends Base { } - export class Markdown extends Base { } - export class Min extends Base { } - export class Nyan extends Base { } - export class Progress extends Base { + export class Doc extends Base { } + export class Dot extends Base { } + export class HTML extends Base { } + export class HTMLCov extends Base { } + export class JSON extends Base { } + export class JSONCov extends Base { } + export class JSONStream extends Base { } + export class Landing extends Base { } + export class List extends Base { } + export class Markdown extends Base { } + export class Min extends Base { } + export class Nyan extends Base { } + export class Progress extends Base { /** * @param options.open String used to indicate the start of the progress bar. * @param options.complete String used to indicate a complete test on the progress bar. * @param options.incomplete String used to indicate an incomplete test on the progress bar. * @param options.close String used to indicate the end of the progress bar. */ - constructor(runner: IRunner, options?: { - open?: string; - complete?: string; - incomplete?: string; - close?: string; - }); - } - export class Spec extends Base { } - export class TAP extends Base { } - export class XUnit extends Base { - constructor(runner: IRunner, options?: any); - } - } + constructor(runner: IRunner, options?: { + open?: string; + complete?: string; + incomplete?: string; + close?: string; + }); + } + export class Spec extends Base { } + export class TAP extends Base { } + export class XUnit extends Base { + constructor(runner: IRunner, options?: any); + } + } } declare module "mocha" { - export = Mocha; + export = Mocha; } \ No newline at end of file diff --git a/src/typings/node.d.ts b/src/typings/node.d.ts index 4fa18421982..1b6661edd71 100644 --- a/src/typings/node.d.ts +++ b/src/typings/node.d.ts @@ -17,25 +17,25 @@ // This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build interface Console { - Console: NodeJS.ConsoleConstructor; - assert(value: any, message?: string, ...optionalParams: any[]): void; - dir(obj: any, options?: NodeJS.InspectOptions): void; - error(message?: any, ...optionalParams: any[]): void; - info(message?: any, ...optionalParams: any[]): void; - log(message?: any, ...optionalParams: any[]): void; - time(label: string): void; - timeEnd(label: string): void; - trace(message?: any, ...optionalParams: any[]): void; - warn(message?: any, ...optionalParams: any[]): void; + Console: NodeJS.ConsoleConstructor; + assert(value: any, message?: string, ...optionalParams: any[]): void; + dir(obj: any, options?: NodeJS.InspectOptions): void; + error(message?: any, ...optionalParams: any[]): void; + info(message?: any, ...optionalParams: any[]): void; + log(message?: any, ...optionalParams: any[]): void; + time(label: string): void; + timeEnd(label: string): void; + trace(message?: any, ...optionalParams: any[]): void; + warn(message?: any, ...optionalParams: any[]): void; } interface Error { - stack?: string; + stack?: string; } interface ErrorConstructor { - captureStackTrace(targetObject: Object, constructorOpt?: Function): void; - stackTraceLimit: number; + captureStackTrace(targetObject: Object, constructorOpt?: Function): void; + stackTraceLimit: number; } // compat for TypeScript 1.8 @@ -49,11 +49,11 @@ interface WeakSetConstructor { } // Forward-declare needed types from lib.es2015.d.ts (in case users are using `--lib es5`) interface Iterable { } interface Iterator { - next(value?: any): IteratorResult; + next(value?: any): IteratorResult; } interface IteratorResult { } interface SymbolConstructor { - readonly iterator: symbol; + readonly iterator: symbol; } declare var Symbol: SymbolConstructor; @@ -78,7 +78,7 @@ declare function setImmediate(callback: (...args: any[]) => void, ...args: any[] declare function clearImmediate(immediateId: any): void; interface NodeRequireFunction { - (id: string): any; + (id: string): any; } // interface NodeRequire extends NodeRequireFunction { @@ -91,13 +91,13 @@ interface NodeRequireFunction { // declare var require: NodeRequire; interface NodeModule { - exports: any; - require: NodeRequireFunction; - id: string; - filename: string; - loaded: boolean; - parent: NodeModule | null; - children: NodeModule[]; + exports: any; + require: NodeRequireFunction; + id: string; + filename: string; + loaded: boolean; + parent: NodeModule | null; + children: NodeModule[]; } declare var module: NodeModule; @@ -105,14 +105,14 @@ declare var module: NodeModule; // Same as module.exports declare var exports: any; declare var SlowBuffer: { - new(str: string, encoding?: string): Buffer; - new(size: number): Buffer; - new(size: Uint8Array): Buffer; - new(array: any[]): Buffer; - prototype: Buffer; - isBuffer(obj: any): boolean; - byteLength(string: string, encoding?: string): number; - concat(list: Buffer[], totalLength?: number): Buffer; + new(str: string, encoding?: string): Buffer; + new(size: number): Buffer; + new(size: Uint8Array): Buffer; + new(array: any[]): Buffer; + prototype: Buffer; + isBuffer(obj: any): boolean; + byteLength(string: string, encoding?: string): number; + concat(list: Buffer[], totalLength?: number): Buffer; }; @@ -132,19 +132,19 @@ declare var Buffer: { * @param str String to store in buffer. * @param encoding encoding to use, optional. Default is 'utf8' */ - new(str: string, encoding?: string): Buffer; + new(str: string, encoding?: string): Buffer; /** * Allocates a new buffer of {size} octets. * * @param size count of octets to allocate. */ - new(size: number): Buffer; + new(size: number): Buffer; /** * Allocates a new buffer containing the given {array} of octets. * * @param array The octets to store. */ - new(array: Uint8Array): Buffer; + new(array: Uint8Array): Buffer; /** * Produces a Buffer backed by the same allocated memory as * the given {ArrayBuffer}. @@ -152,26 +152,26 @@ declare var Buffer: { * * @param arrayBuffer The ArrayBuffer with which to share memory. */ - new(arrayBuffer: ArrayBuffer): Buffer; + new(arrayBuffer: ArrayBuffer): Buffer; /** * Allocates a new buffer containing the given {array} of octets. * * @param array The octets to store. */ - new(array: any[]): Buffer; + new(array: any[]): Buffer; /** * Copies the passed {buffer} data onto a new {Buffer} instance. * * @param buffer The buffer to copy. */ - new(buffer: Buffer): Buffer; - prototype: Buffer; + new(buffer: Buffer): Buffer; + prototype: Buffer; /** * Allocates a new Buffer using an {array} of octets. * * @param array */ - from(array: any[]): Buffer; + from(array: any[]): Buffer; /** * When passed a reference to the .buffer property of a TypedArray instance, * the newly created Buffer will share the same allocated memory as the TypedArray. @@ -182,13 +182,13 @@ declare var Buffer: { * @param byteOffset * @param length */ - from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; /** * Copies the passed {buffer} data onto a new Buffer instance. * * @param buffer */ - from(buffer: Buffer): Buffer; + from(buffer: Buffer): Buffer; /** * Creates a new Buffer containing the given JavaScript string {str}. * If provided, the {encoding} parameter identifies the character encoding. @@ -196,20 +196,20 @@ declare var Buffer: { * * @param str */ - from(str: string, encoding?: string): Buffer; + from(str: string, encoding?: string): Buffer; /** * Returns true if {obj} is a Buffer * * @param obj object to test. */ - isBuffer(obj: any): obj is Buffer; + isBuffer(obj: any): obj is Buffer; /** * Returns true if {encoding} is a valid encoding argument. * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' * * @param encoding string to test. */ - isEncoding(encoding: string): boolean; + isEncoding(encoding: string): boolean; /** * Gives the actual byte length of a string. encoding defaults to 'utf8'. * This is not the same as String.prototype.length since that returns the number of characters in a string. @@ -217,7 +217,7 @@ declare var Buffer: { * @param string string to test. * @param encoding encoding used to evaluate (defaults to 'utf8') */ - byteLength(string: string, encoding?: string): number; + byteLength(string: string, encoding?: string): number; /** * Returns a buffer which is the result of concatenating all the buffers in the list together. * @@ -229,11 +229,11 @@ declare var Buffer: { * @param totalLength Total length of the buffers when concatenated. * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. */ - concat(list: Buffer[], totalLength?: number): Buffer; + concat(list: Buffer[], totalLength?: number): Buffer; /** * The same as buf1.compare(buf2). */ - compare(buf1: Buffer, buf2: Buffer): number; + compare(buf1: Buffer, buf2: Buffer): number; /** * Allocates a new buffer of {size} octets. * @@ -242,21 +242,21 @@ declare var Buffer: { * If parameter is omitted, buffer will be filled with zeros. * @param encoding encoding used for call to buf.fill while initalizing */ - alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; /** * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents * of the newly created Buffer are unknown and may contain sensitive data. * * @param size count of octets to allocate */ - allocUnsafe(size: number): Buffer; + allocUnsafe(size: number): Buffer; /** * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents * of the newly created Buffer are unknown and may contain sensitive data. * * @param size count of octets to allocate */ - allocUnsafeSlow(size: number): Buffer; + allocUnsafeSlow(size: number): Buffer; }; /************************************************ @@ -265,273 +265,273 @@ declare var Buffer: { * * ************************************************/ declare namespace NodeJS { - export interface InspectOptions { - showHidden?: boolean; - depth?: number | null; - colors?: boolean; - customInspect?: boolean; - showProxy?: boolean; - maxArrayLength?: number | null; - breakLength?: number; - } + export interface InspectOptions { + showHidden?: boolean; + depth?: number | null; + colors?: boolean; + customInspect?: boolean; + showProxy?: boolean; + maxArrayLength?: number | null; + breakLength?: number; + } - export interface ConsoleConstructor { - prototype: Console; - new(stdout: WritableStream, stderr?: WritableStream): Console; - } + export interface ConsoleConstructor { + prototype: Console; + new(stdout: WritableStream, stderr?: WritableStream): Console; + } - export interface ErrnoException extends Error { - errno?: number; - code?: string; - path?: string; - syscall?: string; - stack?: string; - } + export interface ErrnoException extends Error { + errno?: number; + code?: string; + path?: string; + syscall?: string; + stack?: string; + } - export class EventEmitter { - addListener(event: string | symbol, listener: Function): this; - on(event: string | symbol, listener: Function): this; - once(event: string | symbol, listener: Function): this; - removeListener(event: string | symbol, listener: Function): this; - removeAllListeners(event?: string | symbol): this; - setMaxListeners(n: number): this; - getMaxListeners(): number; - listeners(event: string | symbol): Function[]; - emit(event: string | symbol, ...args: any[]): boolean; - listenerCount(type: string | symbol): number; - // Added in Node 6... - prependListener(event: string | symbol, listener: Function): this; - prependOnceListener(event: string | symbol, listener: Function): this; - eventNames(): (string | symbol)[]; - } + export class EventEmitter { + addListener(event: string | symbol, listener: Function): this; + on(event: string | symbol, listener: Function): this; + once(event: string | symbol, listener: Function): this; + removeListener(event: string | symbol, listener: Function): this; + removeAllListeners(event?: string | symbol): this; + setMaxListeners(n: number): this; + getMaxListeners(): number; + listeners(event: string | symbol): Function[]; + emit(event: string | symbol, ...args: any[]): boolean; + listenerCount(type: string | symbol): number; + // Added in Node 6... + prependListener(event: string | symbol, listener: Function): this; + prependOnceListener(event: string | symbol, listener: Function): this; + eventNames(): (string | symbol)[]; + } - export interface ReadableStream extends EventEmitter { - readable: boolean; - read(size?: number): string | Buffer; - setEncoding(encoding: string | null): this; - pause(): this; - resume(): this; - isPaused(): boolean; - pipe(destination: T, options?: { end?: boolean; }): T; - unpipe(destination?: T): this; - unshift(chunk: string): void; - unshift(chunk: Buffer): void; - wrap(oldStream: ReadableStream): ReadableStream; - } + export interface ReadableStream extends EventEmitter { + readable: boolean; + read(size?: number): string | Buffer; + setEncoding(encoding: string | null): this; + pause(): this; + resume(): this; + isPaused(): boolean; + pipe(destination: T, options?: { end?: boolean; }): T; + unpipe(destination?: T): this; + unshift(chunk: string): void; + unshift(chunk: Buffer): void; + wrap(oldStream: ReadableStream): ReadableStream; + } - export interface WritableStream extends EventEmitter { - writable: boolean; - write(buffer: Buffer | string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - } + export interface WritableStream extends EventEmitter { + writable: boolean; + write(buffer: Buffer | string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + } - export interface ReadWriteStream extends ReadableStream, WritableStream { } + export interface ReadWriteStream extends ReadableStream, WritableStream { } - export interface Events extends EventEmitter { } + export interface Events extends EventEmitter { } - export interface Domain extends Events { - run(fn: Function): void; - add(emitter: Events): void; - remove(emitter: Events): void; - bind(cb: (err: Error, data: any) => any): any; - intercept(cb: (data: any) => any): any; - dispose(): void; + export interface Domain extends Events { + run(fn: Function): void; + add(emitter: Events): void; + remove(emitter: Events): void; + bind(cb: (err: Error, data: any) => any): any; + intercept(cb: (data: any) => any): any; + dispose(): void; - addListener(event: string, listener: Function): this; - on(event: string, listener: Function): this; - once(event: string, listener: Function): this; - removeListener(event: string, listener: Function): this; - removeAllListeners(event?: string): this; - } + addListener(event: string, listener: Function): this; + on(event: string, listener: Function): this; + once(event: string, listener: Function): this; + removeListener(event: string, listener: Function): this; + removeAllListeners(event?: string): this; + } - export interface MemoryUsage { - rss: number; - heapTotal: number; - heapUsed: number; - } + export interface MemoryUsage { + rss: number; + heapTotal: number; + heapUsed: number; + } - export interface CpuUsage { - user: number; - system: number; - } + export interface CpuUsage { + user: number; + system: number; + } - export interface ProcessVersions { - http_parser: string; - node: string; - v8: string; - ares: string; - uv: string; - zlib: string; - modules: string; - openssl: string; - } + export interface ProcessVersions { + http_parser: string; + node: string; + v8: string; + ares: string; + uv: string; + zlib: string; + modules: string; + openssl: string; + } - type Platform = 'aix' - | 'android' - | 'darwin' - | 'freebsd' - | 'linux' - | 'openbsd' - | 'sunos' - | 'win32'; + type Platform = 'aix' + | 'android' + | 'darwin' + | 'freebsd' + | 'linux' + | 'openbsd' + | 'sunos' + | 'win32'; - export interface Socket extends ReadWriteStream { - isTTY?: true; - } + export interface Socket extends ReadWriteStream { + isTTY?: true; + } - export interface WriteStream extends Socket { - columns?: number; - rows?: number; - } - export interface ReadStream extends Socket { - isRaw?: boolean; - setRawMode?(mode: boolean): void; - } + export interface WriteStream extends Socket { + columns?: number; + rows?: number; + } + export interface ReadStream extends Socket { + isRaw?: boolean; + setRawMode?(mode: boolean): void; + } - export interface Process extends EventEmitter { - stdout: WriteStream; - stderr: WriteStream; - stdin: ReadStream; - openStdin(): Socket; - argv: string[]; - argv0: string; - execArgv: string[]; - execPath: string; - abort(): void; - chdir(directory: string): void; - cwd(): string; - emitWarning(warning: string | Error, name?: string, ctor?: Function): void; - env: any; - exit(code?: number): void; - exitCode: number; - getgid(): number; - setgid(id: number): void; - setgid(id: string): void; - getuid(): number; - setuid(id: number): void; - setuid(id: string): void; - version: string; - versions: ProcessVersions; - config: { - target_defaults: { - cflags: any[]; - default_configuration: string; - defines: string[]; - include_dirs: string[]; - libraries: string[]; - }; - variables: { - clang: number; - host_arch: string; - node_install_npm: boolean; - node_install_waf: boolean; - node_prefix: string; - node_shared_openssl: boolean; - node_shared_v8: boolean; - node_shared_zlib: boolean; - node_use_dtrace: boolean; - node_use_etw: boolean; - node_use_openssl: boolean; - target_arch: string; - v8_no_strict_aliasing: number; - v8_use_snapshot: boolean; - visibility: string; - }; - }; - kill(pid: number, signal?: string | number): void; - pid: number; - title: string; - arch: string; - platform: Platform; - mainModule?: NodeModule; - memoryUsage(): MemoryUsage; - cpuUsage(previousValue?: CpuUsage): CpuUsage; - nextTick(callback: Function, ...args: any[]): void; - umask(mask?: number): number; - uptime(): number; - hrtime(time?: [number, number]): [number, number]; - domain: Domain; + export interface Process extends EventEmitter { + stdout: WriteStream; + stderr: WriteStream; + stdin: ReadStream; + openStdin(): Socket; + argv: string[]; + argv0: string; + execArgv: string[]; + execPath: string; + abort(): void; + chdir(directory: string): void; + cwd(): string; + emitWarning(warning: string | Error, name?: string, ctor?: Function): void; + env: any; + exit(code?: number): void; + exitCode: number; + getgid(): number; + setgid(id: number): void; + setgid(id: string): void; + getuid(): number; + setuid(id: number): void; + setuid(id: string): void; + version: string; + versions: ProcessVersions; + config: { + target_defaults: { + cflags: any[]; + default_configuration: string; + defines: string[]; + include_dirs: string[]; + libraries: string[]; + }; + variables: { + clang: number; + host_arch: string; + node_install_npm: boolean; + node_install_waf: boolean; + node_prefix: string; + node_shared_openssl: boolean; + node_shared_v8: boolean; + node_shared_zlib: boolean; + node_use_dtrace: boolean; + node_use_etw: boolean; + node_use_openssl: boolean; + target_arch: string; + v8_no_strict_aliasing: number; + v8_use_snapshot: boolean; + visibility: string; + }; + }; + kill(pid: number, signal?: string | number): void; + pid: number; + title: string; + arch: string; + platform: Platform; + mainModule?: NodeModule; + memoryUsage(): MemoryUsage; + cpuUsage(previousValue?: CpuUsage): CpuUsage; + nextTick(callback: Function, ...args: any[]): void; + umask(mask?: number): number; + uptime(): number; + hrtime(time?: [number, number]): [number, number]; + domain: Domain; - // Worker - send?(message: any, sendHandle?: any): void; - disconnect(): void; - connected: boolean; - } + // Worker + send?(message: any, sendHandle?: any): void; + disconnect(): void; + connected: boolean; + } - export interface Global { - Array: typeof Array; - ArrayBuffer: typeof ArrayBuffer; - Boolean: typeof Boolean; - Buffer: typeof Buffer; - DataView: typeof DataView; - Date: typeof Date; - Error: typeof Error; - EvalError: typeof EvalError; - Float32Array: typeof Float32Array; - Float64Array: typeof Float64Array; - Function: typeof Function; - GLOBAL: Global; - Infinity: typeof Infinity; - Int16Array: typeof Int16Array; - Int32Array: typeof Int32Array; - Int8Array: typeof Int8Array; - Intl: typeof Intl; - JSON: typeof JSON; - Map: MapConstructor; - Math: typeof Math; - NaN: typeof NaN; - Number: typeof Number; - Object: typeof Object; - Promise: Function; - RangeError: typeof RangeError; - ReferenceError: typeof ReferenceError; - RegExp: typeof RegExp; - Set: SetConstructor; - String: typeof String; - Symbol: Function; - SyntaxError: typeof SyntaxError; - TypeError: typeof TypeError; - URIError: typeof URIError; - Uint16Array: typeof Uint16Array; - Uint32Array: typeof Uint32Array; - Uint8Array: typeof Uint8Array; - Uint8ClampedArray: Function; - WeakMap: WeakMapConstructor; - WeakSet: WeakSetConstructor; - clearImmediate: (immediateId: any) => void; - clearInterval: (intervalId: NodeJS.Timer) => void; - clearTimeout: (timeoutId: NodeJS.Timer) => void; - console: typeof console; - decodeURI: typeof decodeURI; - decodeURIComponent: typeof decodeURIComponent; - encodeURI: typeof encodeURI; - encodeURIComponent: typeof encodeURIComponent; - escape: (str: string) => string; - eval: typeof eval; - global: Global; - isFinite: typeof isFinite; - isNaN: typeof isNaN; - parseFloat: typeof parseFloat; - parseInt: typeof parseInt; - process: Process; - root: Global; - setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any; - setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; - setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; - undefined: typeof undefined; - unescape: (str: string) => string; - gc: () => void; - v8debug?: any; - } + export interface Global { + Array: typeof Array; + ArrayBuffer: typeof ArrayBuffer; + Boolean: typeof Boolean; + Buffer: typeof Buffer; + DataView: typeof DataView; + Date: typeof Date; + Error: typeof Error; + EvalError: typeof EvalError; + Float32Array: typeof Float32Array; + Float64Array: typeof Float64Array; + Function: typeof Function; + GLOBAL: Global; + Infinity: typeof Infinity; + Int16Array: typeof Int16Array; + Int32Array: typeof Int32Array; + Int8Array: typeof Int8Array; + Intl: typeof Intl; + JSON: typeof JSON; + Map: MapConstructor; + Math: typeof Math; + NaN: typeof NaN; + Number: typeof Number; + Object: typeof Object; + Promise: Function; + RangeError: typeof RangeError; + ReferenceError: typeof ReferenceError; + RegExp: typeof RegExp; + Set: SetConstructor; + String: typeof String; + Symbol: Function; + SyntaxError: typeof SyntaxError; + TypeError: typeof TypeError; + URIError: typeof URIError; + Uint16Array: typeof Uint16Array; + Uint32Array: typeof Uint32Array; + Uint8Array: typeof Uint8Array; + Uint8ClampedArray: Function; + WeakMap: WeakMapConstructor; + WeakSet: WeakSetConstructor; + clearImmediate: (immediateId: any) => void; + clearInterval: (intervalId: NodeJS.Timer) => void; + clearTimeout: (timeoutId: NodeJS.Timer) => void; + console: typeof console; + decodeURI: typeof decodeURI; + decodeURIComponent: typeof decodeURIComponent; + encodeURI: typeof encodeURI; + encodeURIComponent: typeof encodeURIComponent; + escape: (str: string) => string; + eval: typeof eval; + global: Global; + isFinite: typeof isFinite; + isNaN: typeof isNaN; + parseFloat: typeof parseFloat; + parseInt: typeof parseInt; + process: Process; + root: Global; + setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any; + setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; + setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; + undefined: typeof undefined; + unescape: (str: string) => string; + gc: () => void; + v8debug?: any; + } - export interface Timer { - ref(): void; - unref(): void; - } + export interface Timer { + ref(): void; + unref(): void; + } } interface IterableIterator { } @@ -540,59 +540,59 @@ interface IterableIterator { } * @deprecated */ interface NodeBuffer extends Uint8Array { - write(string: string, offset?: number, length?: number, encoding?: string): number; - toString(encoding?: string, start?: number, end?: number): string; - toJSON(): { type: 'Buffer', data: any[] }; - equals(otherBuffer: Buffer): boolean; - compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; - copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - slice(start?: number, end?: number): Buffer; - writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readUInt8(offset: number, noAssert?: boolean): number; - readUInt16LE(offset: number, noAssert?: boolean): number; - readUInt16BE(offset: number, noAssert?: boolean): number; - readUInt32LE(offset: number, noAssert?: boolean): number; - readUInt32BE(offset: number, noAssert?: boolean): number; - readInt8(offset: number, noAssert?: boolean): number; - readInt16LE(offset: number, noAssert?: boolean): number; - readInt16BE(offset: number, noAssert?: boolean): number; - readInt32LE(offset: number, noAssert?: boolean): number; - readInt32BE(offset: number, noAssert?: boolean): number; - readFloatLE(offset: number, noAssert?: boolean): number; - readFloatBE(offset: number, noAssert?: boolean): number; - readDoubleLE(offset: number, noAssert?: boolean): number; - readDoubleBE(offset: number, noAssert?: boolean): number; - swap16(): Buffer; - swap32(): Buffer; - swap64(): Buffer; - writeUInt8(value: number, offset: number, noAssert?: boolean): number; - writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeInt8(value: number, offset: number, noAssert?: boolean): number; - writeInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeFloatLE(value: number, offset: number, noAssert?: boolean): number; - writeFloatBE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; - fill(value: any, offset?: number, end?: number): this; - indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - entries(): IterableIterator<[number, number]>; - includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; - keys(): IterableIterator; - values(): IterableIterator; + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): { type: 'Buffer', data: any[] }; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + swap16(): Buffer; + swap32(): Buffer; + swap64(): Buffer; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + entries(): IterableIterator<[number, number]>; + includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; + keys(): IterableIterator; + values(): IterableIterator; } /************************************************ @@ -601,205 +601,205 @@ interface NodeBuffer extends Uint8Array { * * ************************************************/ declare module "buffer" { - export var INSPECT_MAX_BYTES: number; - var BuffType: typeof Buffer; - var SlowBuffType: typeof SlowBuffer; - export { BuffType as Buffer, SlowBuffType as SlowBuffer }; + export var INSPECT_MAX_BYTES: number; + var BuffType: typeof Buffer; + var SlowBuffType: typeof SlowBuffer; + export { BuffType as Buffer, SlowBuffType as SlowBuffer }; } declare module "querystring" { - export interface StringifyOptions { - encodeURIComponent?: Function; - } + export interface StringifyOptions { + encodeURIComponent?: Function; + } - export interface ParseOptions { - maxKeys?: number; - decodeURIComponent?: Function; - } + export interface ParseOptions { + maxKeys?: number; + decodeURIComponent?: Function; + } - export function stringify(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string; - export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): any; - export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): T; - export function escape(str: string): string; - export function unescape(str: string): string; + export function stringify(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string; + export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): any; + export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): T; + export function escape(str: string): string; + export function unescape(str: string): string; } declare module "events" { - class internal extends NodeJS.EventEmitter { } + class internal extends NodeJS.EventEmitter { } - namespace internal { - export class EventEmitter extends internal { - static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated - static defaultMaxListeners: number; + namespace internal { + export class EventEmitter extends internal { + static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated + static defaultMaxListeners: number; - addListener(event: string | symbol, listener: Function): this; - on(event: string | symbol, listener: Function): this; - once(event: string | symbol, listener: Function): this; - prependListener(event: string | symbol, listener: Function): this; - prependOnceListener(event: string | symbol, listener: Function): this; - removeListener(event: string | symbol, listener: Function): this; - removeAllListeners(event?: string | symbol): this; - setMaxListeners(n: number): this; - getMaxListeners(): number; - listeners(event: string | symbol): Function[]; - emit(event: string | symbol, ...args: any[]): boolean; - eventNames(): (string | symbol)[]; - listenerCount(type: string | symbol): number; - } - } + addListener(event: string | symbol, listener: Function): this; + on(event: string | symbol, listener: Function): this; + once(event: string | symbol, listener: Function): this; + prependListener(event: string | symbol, listener: Function): this; + prependOnceListener(event: string | symbol, listener: Function): this; + removeListener(event: string | symbol, listener: Function): this; + removeAllListeners(event?: string | symbol): this; + setMaxListeners(n: number): this; + getMaxListeners(): number; + listeners(event: string | symbol): Function[]; + emit(event: string | symbol, ...args: any[]): boolean; + eventNames(): (string | symbol)[]; + listenerCount(type: string | symbol): number; + } + } - export = internal; + export = internal; } declare module "http" { - import * as events from "events"; - import * as net from "net"; - import * as stream from "stream"; + import * as events from "events"; + import * as net from "net"; + import * as stream from "stream"; - export interface RequestOptions { - protocol?: string; - host?: string; - hostname?: string; - family?: number; - port?: number; - localAddress?: string; - socketPath?: string; - method?: string; - path?: string; - headers?: { [key: string]: any }; - auth?: string; - agent?: Agent | boolean; - timeout?: number; - } + export interface RequestOptions { + protocol?: string; + host?: string; + hostname?: string; + family?: number; + port?: number; + localAddress?: string; + socketPath?: string; + method?: string; + path?: string; + headers?: { [key: string]: any }; + auth?: string; + agent?: Agent | boolean; + timeout?: number; + } - export interface Server extends net.Server { - setTimeout(msecs: number, callback: Function): void; - maxHeadersCount: number; - timeout: number; - listening: boolean; - } + export interface Server extends net.Server { + setTimeout(msecs: number, callback: Function): void; + maxHeadersCount: number; + timeout: number; + listening: boolean; + } /** * @deprecated Use IncomingMessage */ - export interface ServerRequest extends IncomingMessage { - connection: net.Socket; - } - export interface ServerResponse extends stream.Writable { - // Extended base methods - write(buffer: Buffer): boolean; - write(buffer: Buffer, cb?: Function): boolean; - write(str: string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - write(str: string, encoding?: string, fd?: string): boolean; + export interface ServerRequest extends IncomingMessage { + connection: net.Socket; + } + export interface ServerResponse extends stream.Writable { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; - writeContinue(): void; - writeHead(statusCode: number, reasonPhrase?: string, headers?: any): void; - writeHead(statusCode: number, headers?: any): void; - statusCode: number; - statusMessage: string; - headersSent: boolean; - setHeader(name: string, value: string | string[]): void; - setTimeout(msecs: number, callback: Function): ServerResponse; - sendDate: boolean; - getHeader(name: string): string; - removeHeader(name: string): void; - write(chunk: any, encoding?: string): any; - addTrailers(headers: any): void; - finished: boolean; + writeContinue(): void; + writeHead(statusCode: number, reasonPhrase?: string, headers?: any): void; + writeHead(statusCode: number, headers?: any): void; + statusCode: number; + statusMessage: string; + headersSent: boolean; + setHeader(name: string, value: string | string[]): void; + setTimeout(msecs: number, callback: Function): ServerResponse; + sendDate: boolean; + getHeader(name: string): string; + removeHeader(name: string): void; + write(chunk: any, encoding?: string): any; + addTrailers(headers: any): void; + finished: boolean; - // Extended base methods - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - end(data?: any, encoding?: string): void; - } - export interface ClientRequest extends stream.Writable { - // Extended base methods - write(buffer: Buffer): boolean; - write(buffer: Buffer, cb?: Function): boolean; - write(str: string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - write(str: string, encoding?: string, fd?: string): boolean; + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; + } + export interface ClientRequest extends stream.Writable { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; - write(chunk: any, encoding?: string): void; - abort(): void; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; + write(chunk: any, encoding?: string): void; + abort(): void; + setTimeout(timeout: number, callback?: Function): void; + setNoDelay(noDelay?: boolean): void; + setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; - setHeader(name: string, value: string | string[]): void; - getHeader(name: string): string; - removeHeader(name: string): void; - addTrailers(headers: any): void; + setHeader(name: string, value: string | string[]): void; + getHeader(name: string): string; + removeHeader(name: string): void; + addTrailers(headers: any): void; - // Extended base methods - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - end(data?: any, encoding?: string): void; - } - export interface IncomingMessage extends stream.Readable { - httpVersion: string; - httpVersionMajor: number; - httpVersionMinor: number; - connection: net.Socket; - headers: any; - rawHeaders: string[]; - trailers: any; - rawTrailers: any; - setTimeout(msecs: number, callback: Function): NodeJS.Timer; + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; + } + export interface IncomingMessage extends stream.Readable { + httpVersion: string; + httpVersionMajor: number; + httpVersionMinor: number; + connection: net.Socket; + headers: any; + rawHeaders: string[]; + trailers: any; + rawTrailers: any; + setTimeout(msecs: number, callback: Function): NodeJS.Timer; /** * Only valid for request obtained from http.Server. */ - method?: string; + method?: string; /** * Only valid for request obtained from http.Server. */ - url?: string; + url?: string; /** * Only valid for response obtained from http.ClientRequest. */ - statusCode?: number; + statusCode?: number; /** * Only valid for response obtained from http.ClientRequest. */ - statusMessage?: string; - socket: net.Socket; - destroy(error?: Error): void; - } + statusMessage?: string; + socket: net.Socket; + destroy(error?: Error): void; + } /** * @deprecated Use IncomingMessage */ - export interface ClientResponse extends IncomingMessage { } + export interface ClientResponse extends IncomingMessage { } - export interface AgentOptions { + export interface AgentOptions { /** * Keep sockets around in a pool to be used by other requests in the future. Default = false */ - keepAlive?: boolean; + keepAlive?: boolean; /** * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000. * Only relevant if keepAlive is set to true. */ - keepAliveMsecs?: number; + keepAliveMsecs?: number; /** * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity */ - maxSockets?: number; + maxSockets?: number; /** * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256. */ - maxFreeSockets?: number; - } + maxFreeSockets?: number; + } - export class Agent { - maxSockets: number; - sockets: any; - requests: any; + export class Agent { + maxSockets: number; + sockets: any; + requests: any; - constructor(opts?: AgentOptions); + constructor(opts?: AgentOptions); /** * Destroy any sockets that are currently in use by the agent. @@ -807,62 +807,62 @@ declare module "http" { * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise, * sockets may hang open for quite a long time before the server terminates them. */ - destroy(): void; - } + destroy(): void; + } - export var METHODS: string[]; + export var METHODS: string[]; - export var STATUS_CODES: { - [errorCode: number]: string; - [errorCode: string]: string; - }; - export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server; - export function createClient(port?: number, host?: string): any; - export function request(options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; - export function get(options: any, callback?: (res: IncomingMessage) => void): ClientRequest; - export var globalAgent: Agent; + export var STATUS_CODES: { + [errorCode: number]: string; + [errorCode: string]: string; + }; + export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server; + export function createClient(port?: number, host?: string): any; + export function request(options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; + export function get(options: any, callback?: (res: IncomingMessage) => void): ClientRequest; + export var globalAgent: Agent; } declare module "cluster" { - import * as child from "child_process"; - import * as events from "events"; - import * as net from "net"; + import * as child from "child_process"; + import * as events from "events"; + import * as net from "net"; - // interfaces - export interface ClusterSettings { - execArgv?: string[]; // default: process.execArgv - exec?: string; - args?: string[]; - silent?: boolean; - stdio?: any[]; - uid?: number; - gid?: number; - } + // interfaces + export interface ClusterSettings { + execArgv?: string[]; // default: process.execArgv + exec?: string; + args?: string[]; + silent?: boolean; + stdio?: any[]; + uid?: number; + gid?: number; + } - export interface ClusterSetupMasterSettings { - exec?: string; // default: process.argv[1] - args?: string[]; // default: process.argv.slice(2) - silent?: boolean; // default: false - stdio?: any[]; - } + export interface ClusterSetupMasterSettings { + exec?: string; // default: process.argv[1] + args?: string[]; // default: process.argv.slice(2) + silent?: boolean; // default: false + stdio?: any[]; + } - export interface Address { - address: string; - port: number; - addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" - } + export interface Address { + address: string; + port: number; + addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" + } - export class Worker extends events.EventEmitter { - id: string; - process: child.ChildProcess; - suicide: boolean; - send(message: any, sendHandle?: any, callback?: (error: Error) => void): boolean; - kill(signal?: string): void; - destroy(signal?: string): void; - disconnect(): void; - isConnected(): boolean; - isDead(): boolean; - exitedAfterDisconnect: boolean; + export class Worker extends events.EventEmitter { + id: string; + process: child.ChildProcess; + suicide: boolean; + send(message: any, sendHandle?: any, callback?: (error: Error) => void): boolean; + kill(signal?: string): void; + destroy(signal?: string): void; + disconnect(): void; + isConnected(): boolean; + isDead(): boolean; + exitedAfterDisconnect: boolean; /** * events.EventEmitter @@ -873,68 +873,68 @@ declare module "cluster" { * 5. message * 6. online */ - addListener(event: string, listener: Function): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "listening", listener: (address: Address) => void): this; - addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: "exit", listener: (code: number, signal: string) => void): this; + addListener(event: "listening", listener: (address: Address) => void): this; + addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect", listener: () => void): boolean - emit(event: "error", listener: (error: Error) => void): boolean - emit(event: "exit", listener: (code: number, signal: string) => void): boolean - emit(event: "listening", listener: (address: Address) => void): boolean - emit(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): boolean - emit(event: "online", listener: () => void): boolean + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect", listener: () => void): boolean + emit(event: "error", listener: (error: Error) => void): boolean + emit(event: "exit", listener: (code: number, signal: string) => void): boolean + emit(event: "listening", listener: (address: Address) => void): boolean + emit(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): boolean + emit(event: "online", listener: () => void): boolean - on(event: string, listener: Function): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "listening", listener: (address: Address) => void): this; - on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "exit", listener: (code: number, signal: string) => void): this; + on(event: "listening", listener: (address: Address) => void): this; + on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "listening", listener: (address: Address) => void): this; - once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (error: Error) => void): this; + once(event: "exit", listener: (code: number, signal: string) => void): this; + once(event: "listening", listener: (address: Address) => void): this; + once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "listening", listener: (address: Address) => void): this; - prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependListener(event: "listening", listener: (address: Address) => void): this; + prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependListener(event: "online", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "listening", listener: (address: Address) => void): this; - prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "listening", listener: (address: Address) => void): this; + prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener(event: "online", listener: () => void): this; + } - export interface Cluster extends events.EventEmitter { - Worker: Worker; - disconnect(callback?: Function): void; - fork(env?: any): Worker; - isMaster: boolean; - isWorker: boolean; - // TODO: cluster.schedulingPolicy - settings: ClusterSettings; - setupMaster(settings?: ClusterSetupMasterSettings): void; - worker: Worker; - workers: { - [index: string]: Worker - }; + export interface Cluster extends events.EventEmitter { + Worker: Worker; + disconnect(callback?: Function): void; + fork(env?: any): Worker; + isMaster: boolean; + isWorker: boolean; + // TODO: cluster.schedulingPolicy + settings: ClusterSettings; + setupMaster(settings?: ClusterSetupMasterSettings): void; + worker: Worker; + workers: { + [index: string]: Worker + }; /** * events.EventEmitter @@ -946,73 +946,73 @@ declare module "cluster" { * 6. online * 7. setup */ - addListener(event: string, listener: Function): this; - addListener(event: "disconnect", listener: (worker: Worker) => void): this; - addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - addListener(event: "fork", listener: (worker: Worker) => void): this; - addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: (worker: Worker) => void): this; - addListener(event: "setup", listener: (settings: any) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "disconnect", listener: (worker: Worker) => void): this; + addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + addListener(event: "fork", listener: (worker: Worker) => void): this; + addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: (worker: Worker) => void): this; + addListener(event: "setup", listener: (settings: any) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect", listener: (worker: Worker) => void): boolean; - emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; - emit(event: "fork", listener: (worker: Worker) => void): boolean; - emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; - emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; - emit(event: "online", listener: (worker: Worker) => void): boolean; - emit(event: "setup", listener: (settings: any) => void): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect", listener: (worker: Worker) => void): boolean; + emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; + emit(event: "fork", listener: (worker: Worker) => void): boolean; + emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; + emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; + emit(event: "online", listener: (worker: Worker) => void): boolean; + emit(event: "setup", listener: (settings: any) => void): boolean; - on(event: string, listener: Function): this; - on(event: "disconnect", listener: (worker: Worker) => void): this; - on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - on(event: "fork", listener: (worker: Worker) => void): this; - on(event: "listening", listener: (worker: Worker, address: Address) => void): this; - on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: (worker: Worker) => void): this; - on(event: "setup", listener: (settings: any) => void): this; + on(event: string, listener: Function): this; + on(event: "disconnect", listener: (worker: Worker) => void): this; + on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + on(event: "fork", listener: (worker: Worker) => void): this; + on(event: "listening", listener: (worker: Worker, address: Address) => void): this; + on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: (worker: Worker) => void): this; + on(event: "setup", listener: (settings: any) => void): this; - once(event: string, listener: Function): this; - once(event: "disconnect", listener: (worker: Worker) => void): this; - once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - once(event: "fork", listener: (worker: Worker) => void): this; - once(event: "listening", listener: (worker: Worker, address: Address) => void): this; - once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: (worker: Worker) => void): this; - once(event: "setup", listener: (settings: any) => void): this; + once(event: string, listener: Function): this; + once(event: "disconnect", listener: (worker: Worker) => void): this; + once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + once(event: "fork", listener: (worker: Worker) => void): this; + once(event: "listening", listener: (worker: Worker, address: Address) => void): this; + once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: (worker: Worker) => void): this; + once(event: "setup", listener: (settings: any) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependListener(event: "fork", listener: (worker: Worker) => void): this; - prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: (worker: Worker) => void): this; - prependListener(event: "setup", listener: (settings: any) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependListener(event: "fork", listener: (worker: Worker) => void): this; + prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependListener(event: "online", listener: (worker: Worker) => void): this; + prependListener(event: "setup", listener: (settings: any) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; - prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: (worker: Worker) => void): this; - prependOnceListener(event: "setup", listener: (settings: any) => void): this; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; + prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener(event: "online", listener: (worker: Worker) => void): this; + prependOnceListener(event: "setup", listener: (settings: any) => void): this; - } + } - export function disconnect(callback?: Function): void; - export function fork(env?: any): Worker; - export var isMaster: boolean; - export var isWorker: boolean; - // TODO: cluster.schedulingPolicy - export var settings: ClusterSettings; - export function setupMaster(settings?: ClusterSetupMasterSettings): void; - export var worker: Worker; - export var workers: { - [index: string]: Worker - }; + export function disconnect(callback?: Function): void; + export function fork(env?: any): Worker; + export var isMaster: boolean; + export var isWorker: boolean; + // TODO: cluster.schedulingPolicy + export var settings: ClusterSettings; + export function setupMaster(settings?: ClusterSetupMasterSettings): void; + export var worker: Worker; + export var workers: { + [index: string]: Worker + }; /** * events.EventEmitter @@ -1024,444 +1024,444 @@ declare module "cluster" { * 6. online * 7. setup */ - export function addListener(event: string, listener: Function): Cluster; - export function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function addListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function addListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "setup", listener: (settings: any) => void): Cluster; + export function addListener(event: string, listener: Function): Cluster; + export function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function addListener(event: "fork", listener: (worker: Worker) => void): Cluster; + export function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function addListener(event: "online", listener: (worker: Worker) => void): Cluster; + export function addListener(event: "setup", listener: (settings: any) => void): Cluster; - export function emit(event: string | symbol, ...args: any[]): boolean; - export function emit(event: "disconnect", listener: (worker: Worker) => void): boolean; - export function emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; - export function emit(event: "fork", listener: (worker: Worker) => void): boolean; - export function emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; - export function emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; - export function emit(event: "online", listener: (worker: Worker) => void): boolean; - export function emit(event: "setup", listener: (settings: any) => void): boolean; + export function emit(event: string | symbol, ...args: any[]): boolean; + export function emit(event: "disconnect", listener: (worker: Worker) => void): boolean; + export function emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; + export function emit(event: "fork", listener: (worker: Worker) => void): boolean; + export function emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; + export function emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; + export function emit(event: "online", listener: (worker: Worker) => void): boolean; + export function emit(event: "setup", listener: (settings: any) => void): boolean; - export function on(event: string, listener: Function): Cluster; - export function on(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function on(event: "fork", listener: (worker: Worker) => void): Cluster; - export function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function on(event: "online", listener: (worker: Worker) => void): Cluster; - export function on(event: "setup", listener: (settings: any) => void): Cluster; + export function on(event: string, listener: Function): Cluster; + export function on(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function on(event: "fork", listener: (worker: Worker) => void): Cluster; + export function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function on(event: "online", listener: (worker: Worker) => void): Cluster; + export function on(event: "setup", listener: (settings: any) => void): Cluster; - export function once(event: string, listener: Function): Cluster; - export function once(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function once(event: "fork", listener: (worker: Worker) => void): Cluster; - export function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function once(event: "online", listener: (worker: Worker) => void): Cluster; - export function once(event: "setup", listener: (settings: any) => void): Cluster; + export function once(event: string, listener: Function): Cluster; + export function once(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function once(event: "fork", listener: (worker: Worker) => void): Cluster; + export function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function once(event: "online", listener: (worker: Worker) => void): Cluster; + export function once(event: "setup", listener: (settings: any) => void): Cluster; - export function removeListener(event: string, listener: Function): Cluster; - export function removeAllListeners(event?: string): Cluster; - export function setMaxListeners(n: number): Cluster; - export function getMaxListeners(): number; - export function listeners(event: string): Function[]; - export function listenerCount(type: string): number; + export function removeListener(event: string, listener: Function): Cluster; + export function removeAllListeners(event?: string): Cluster; + export function setMaxListeners(n: number): Cluster; + export function getMaxListeners(): number; + export function listeners(event: string): Function[]; + export function listenerCount(type: string): number; - export function prependListener(event: string, listener: Function): Cluster; - export function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function prependListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "setup", listener: (settings: any) => void): Cluster; + export function prependListener(event: string, listener: Function): Cluster; + export function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster; + export function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function prependListener(event: "online", listener: (worker: Worker) => void): Cluster; + export function prependListener(event: "setup", listener: (settings: any) => void): Cluster; - export function prependOnceListener(event: string, listener: Function): Cluster; - export function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "setup", listener: (settings: any) => void): Cluster; + export function prependOnceListener(event: string, listener: Function): Cluster; + export function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster; + export function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster; + export function prependOnceListener(event: "setup", listener: (settings: any) => void): Cluster; - export function eventNames(): string[]; + export function eventNames(): string[]; } declare module "zlib" { - import * as stream from "stream"; + import * as stream from "stream"; - export interface ZlibOptions { - flush?: number; // default: zlib.constants.Z_NO_FLUSH - finishFlush?: number; // default: zlib.constants.Z_FINISH - chunkSize?: number; // default: 16*1024 - windowBits?: number; - level?: number; // compression only - memLevel?: number; // compression only - strategy?: number; // compression only - dictionary?: any; // deflate/inflate only, empty dictionary by default - } + export interface ZlibOptions { + flush?: number; // default: zlib.constants.Z_NO_FLUSH + finishFlush?: number; // default: zlib.constants.Z_FINISH + chunkSize?: number; // default: 16*1024 + windowBits?: number; + level?: number; // compression only + memLevel?: number; // compression only + strategy?: number; // compression only + dictionary?: any; // deflate/inflate only, empty dictionary by default + } - export interface Gzip extends stream.Transform { } - export interface Gunzip extends stream.Transform { } - export interface Deflate extends stream.Transform { } - export interface Inflate extends stream.Transform { } - export interface DeflateRaw extends stream.Transform { } - export interface InflateRaw extends stream.Transform { } - export interface Unzip extends stream.Transform { } + export interface Gzip extends stream.Transform { } + export interface Gunzip extends stream.Transform { } + export interface Deflate extends stream.Transform { } + export interface Inflate extends stream.Transform { } + export interface DeflateRaw extends stream.Transform { } + export interface InflateRaw extends stream.Transform { } + export interface Unzip extends stream.Transform { } - export function createGzip(options?: ZlibOptions): Gzip; - export function createGunzip(options?: ZlibOptions): Gunzip; - export function createDeflate(options?: ZlibOptions): Deflate; - export function createInflate(options?: ZlibOptions): Inflate; - export function createDeflateRaw(options?: ZlibOptions): DeflateRaw; - export function createInflateRaw(options?: ZlibOptions): InflateRaw; - export function createUnzip(options?: ZlibOptions): Unzip; + export function createGzip(options?: ZlibOptions): Gzip; + export function createGunzip(options?: ZlibOptions): Gunzip; + export function createDeflate(options?: ZlibOptions): Deflate; + export function createInflate(options?: ZlibOptions): Inflate; + export function createDeflateRaw(options?: ZlibOptions): DeflateRaw; + export function createInflateRaw(options?: ZlibOptions): InflateRaw; + export function createUnzip(options?: ZlibOptions): Unzip; - export function deflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function deflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function deflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function deflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function deflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function deflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function gzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function gzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function gzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function gunzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function gunzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function gunzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function inflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function inflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function inflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function inflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function inflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function inflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function unzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function unzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function unzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function deflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function deflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function deflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function deflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function deflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function deflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function gzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function gzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function gzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function gunzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function gunzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function gunzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function inflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function inflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function inflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function inflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function inflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function inflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function unzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function unzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function unzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export namespace constants { - // Allowed flush values. + export namespace constants { + // Allowed flush values. - export const Z_NO_FLUSH: number; - export const Z_PARTIAL_FLUSH: number; - export const Z_SYNC_FLUSH: number; - export const Z_FULL_FLUSH: number; - export const Z_FINISH: number; - export const Z_BLOCK: number; - export const Z_TREES: number; + export const Z_NO_FLUSH: number; + export const Z_PARTIAL_FLUSH: number; + export const Z_SYNC_FLUSH: number; + export const Z_FULL_FLUSH: number; + export const Z_FINISH: number; + export const Z_BLOCK: number; + export const Z_TREES: number; - // Return codes for the compression/decompression functions. Negative values are errors, positive values are used for special but normal events. + // Return codes for the compression/decompression functions. Negative values are errors, positive values are used for special but normal events. - export const Z_OK: number; - export const Z_STREAM_END: number; - export const Z_NEED_DICT: number; - export const Z_ERRNO: number; - export const Z_STREAM_ERROR: number; - export const Z_DATA_ERROR: number; - export const Z_MEM_ERROR: number; - export const Z_BUF_ERROR: number; - export const Z_VERSION_ERROR: number; + export const Z_OK: number; + export const Z_STREAM_END: number; + export const Z_NEED_DICT: number; + export const Z_ERRNO: number; + export const Z_STREAM_ERROR: number; + export const Z_DATA_ERROR: number; + export const Z_MEM_ERROR: number; + export const Z_BUF_ERROR: number; + export const Z_VERSION_ERROR: number; - // Compression levels. + // Compression levels. - export const Z_NO_COMPRESSION: number; - export const Z_BEST_SPEED: number; - export const Z_BEST_COMPRESSION: number; - export const Z_DEFAULT_COMPRESSION: number; + export const Z_NO_COMPRESSION: number; + export const Z_BEST_SPEED: number; + export const Z_BEST_COMPRESSION: number; + export const Z_DEFAULT_COMPRESSION: number; - // Compression strategy. + // Compression strategy. - export const Z_FILTERED: number; - export const Z_HUFFMAN_ONLY: number; - export const Z_RLE: number; - export const Z_FIXED: number; - export const Z_DEFAULT_STRATEGY: number; - } + export const Z_FILTERED: number; + export const Z_HUFFMAN_ONLY: number; + export const Z_RLE: number; + export const Z_FIXED: number; + export const Z_DEFAULT_STRATEGY: number; + } - // Constants - export var Z_NO_FLUSH: number; - export var Z_PARTIAL_FLUSH: number; - export var Z_SYNC_FLUSH: number; - export var Z_FULL_FLUSH: number; - export var Z_FINISH: number; - export var Z_BLOCK: number; - export var Z_TREES: number; - export var Z_OK: number; - export var Z_STREAM_END: number; - export var Z_NEED_DICT: number; - export var Z_ERRNO: number; - export var Z_STREAM_ERROR: number; - export var Z_DATA_ERROR: number; - export var Z_MEM_ERROR: number; - export var Z_BUF_ERROR: number; - export var Z_VERSION_ERROR: number; - export var Z_NO_COMPRESSION: number; - export var Z_BEST_SPEED: number; - export var Z_BEST_COMPRESSION: number; - export var Z_DEFAULT_COMPRESSION: number; - export var Z_FILTERED: number; - export var Z_HUFFMAN_ONLY: number; - export var Z_RLE: number; - export var Z_FIXED: number; - export var Z_DEFAULT_STRATEGY: number; - export var Z_BINARY: number; - export var Z_TEXT: number; - export var Z_ASCII: number; - export var Z_UNKNOWN: number; - export var Z_DEFLATED: number; + // Constants + export var Z_NO_FLUSH: number; + export var Z_PARTIAL_FLUSH: number; + export var Z_SYNC_FLUSH: number; + export var Z_FULL_FLUSH: number; + export var Z_FINISH: number; + export var Z_BLOCK: number; + export var Z_TREES: number; + export var Z_OK: number; + export var Z_STREAM_END: number; + export var Z_NEED_DICT: number; + export var Z_ERRNO: number; + export var Z_STREAM_ERROR: number; + export var Z_DATA_ERROR: number; + export var Z_MEM_ERROR: number; + export var Z_BUF_ERROR: number; + export var Z_VERSION_ERROR: number; + export var Z_NO_COMPRESSION: number; + export var Z_BEST_SPEED: number; + export var Z_BEST_COMPRESSION: number; + export var Z_DEFAULT_COMPRESSION: number; + export var Z_FILTERED: number; + export var Z_HUFFMAN_ONLY: number; + export var Z_RLE: number; + export var Z_FIXED: number; + export var Z_DEFAULT_STRATEGY: number; + export var Z_BINARY: number; + export var Z_TEXT: number; + export var Z_ASCII: number; + export var Z_UNKNOWN: number; + export var Z_DEFLATED: number; } declare module "os" { - export interface CpuInfo { - model: string; - speed: number; - times: { - user: number; - nice: number; - sys: number; - idle: number; - irq: number; - }; - } + export interface CpuInfo { + model: string; + speed: number; + times: { + user: number; + nice: number; + sys: number; + idle: number; + irq: number; + }; + } - export interface NetworkInterfaceInfo { - address: string; - netmask: string; - family: string; - mac: string; - internal: boolean; - } + export interface NetworkInterfaceInfo { + address: string; + netmask: string; + family: string; + mac: string; + internal: boolean; + } - export function hostname(): string; - export function loadavg(): number[]; - export function uptime(): number; - export function freemem(): number; - export function totalmem(): number; - export function cpus(): CpuInfo[]; - export function type(): string; - export function release(): string; - export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] }; - export function homedir(): string; - export function userInfo(options?: { encoding: string }): { username: string, uid: number, gid: number, shell: any, homedir: string } - export var constants: { - UV_UDP_REUSEADDR: number, - signals: { - SIGHUP: number; - SIGINT: number; - SIGQUIT: number; - SIGILL: number; - SIGTRAP: number; - SIGABRT: number; - SIGIOT: number; - SIGBUS: number; - SIGFPE: number; - SIGKILL: number; - SIGUSR1: number; - SIGSEGV: number; - SIGUSR2: number; - SIGPIPE: number; - SIGALRM: number; - SIGTERM: number; - SIGCHLD: number; - SIGSTKFLT: number; - SIGCONT: number; - SIGSTOP: number; - SIGTSTP: number; - SIGTTIN: number; - SIGTTOU: number; - SIGURG: number; - SIGXCPU: number; - SIGXFSZ: number; - SIGVTALRM: number; - SIGPROF: number; - SIGWINCH: number; - SIGIO: number; - SIGPOLL: number; - SIGPWR: number; - SIGSYS: number; - SIGUNUSED: number; - }, - errno: { - E2BIG: number; - EACCES: number; - EADDRINUSE: number; - EADDRNOTAVAIL: number; - EAFNOSUPPORT: number; - EAGAIN: number; - EALREADY: number; - EBADF: number; - EBADMSG: number; - EBUSY: number; - ECANCELED: number; - ECHILD: number; - ECONNABORTED: number; - ECONNREFUSED: number; - ECONNRESET: number; - EDEADLK: number; - EDESTADDRREQ: number; - EDOM: number; - EDQUOT: number; - EEXIST: number; - EFAULT: number; - EFBIG: number; - EHOSTUNREACH: number; - EIDRM: number; - EILSEQ: number; - EINPROGRESS: number; - EINTR: number; - EINVAL: number; - EIO: number; - EISCONN: number; - EISDIR: number; - ELOOP: number; - EMFILE: number; - EMLINK: number; - EMSGSIZE: number; - EMULTIHOP: number; - ENAMETOOLONG: number; - ENETDOWN: number; - ENETRESET: number; - ENETUNREACH: number; - ENFILE: number; - ENOBUFS: number; - ENODATA: number; - ENODEV: number; - ENOENT: number; - ENOEXEC: number; - ENOLCK: number; - ENOLINK: number; - ENOMEM: number; - ENOMSG: number; - ENOPROTOOPT: number; - ENOSPC: number; - ENOSR: number; - ENOSTR: number; - ENOSYS: number; - ENOTCONN: number; - ENOTDIR: number; - ENOTEMPTY: number; - ENOTSOCK: number; - ENOTSUP: number; - ENOTTY: number; - ENXIO: number; - EOPNOTSUPP: number; - EOVERFLOW: number; - EPERM: number; - EPIPE: number; - EPROTO: number; - EPROTONOSUPPORT: number; - EPROTOTYPE: number; - ERANGE: number; - EROFS: number; - ESPIPE: number; - ESRCH: number; - ESTALE: number; - ETIME: number; - ETIMEDOUT: number; - ETXTBSY: number; - EWOULDBLOCK: number; - EXDEV: number; - }, - }; - export function arch(): string; - export function platform(): NodeJS.Platform; - export function tmpdir(): string; - export var EOL: string; - export function endianness(): "BE" | "LE"; + export function hostname(): string; + export function loadavg(): number[]; + export function uptime(): number; + export function freemem(): number; + export function totalmem(): number; + export function cpus(): CpuInfo[]; + export function type(): string; + export function release(): string; + export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] }; + export function homedir(): string; + export function userInfo(options?: { encoding: string }): { username: string, uid: number, gid: number, shell: any, homedir: string } + export var constants: { + UV_UDP_REUSEADDR: number, + signals: { + SIGHUP: number; + SIGINT: number; + SIGQUIT: number; + SIGILL: number; + SIGTRAP: number; + SIGABRT: number; + SIGIOT: number; + SIGBUS: number; + SIGFPE: number; + SIGKILL: number; + SIGUSR1: number; + SIGSEGV: number; + SIGUSR2: number; + SIGPIPE: number; + SIGALRM: number; + SIGTERM: number; + SIGCHLD: number; + SIGSTKFLT: number; + SIGCONT: number; + SIGSTOP: number; + SIGTSTP: number; + SIGTTIN: number; + SIGTTOU: number; + SIGURG: number; + SIGXCPU: number; + SIGXFSZ: number; + SIGVTALRM: number; + SIGPROF: number; + SIGWINCH: number; + SIGIO: number; + SIGPOLL: number; + SIGPWR: number; + SIGSYS: number; + SIGUNUSED: number; + }, + errno: { + E2BIG: number; + EACCES: number; + EADDRINUSE: number; + EADDRNOTAVAIL: number; + EAFNOSUPPORT: number; + EAGAIN: number; + EALREADY: number; + EBADF: number; + EBADMSG: number; + EBUSY: number; + ECANCELED: number; + ECHILD: number; + ECONNABORTED: number; + ECONNREFUSED: number; + ECONNRESET: number; + EDEADLK: number; + EDESTADDRREQ: number; + EDOM: number; + EDQUOT: number; + EEXIST: number; + EFAULT: number; + EFBIG: number; + EHOSTUNREACH: number; + EIDRM: number; + EILSEQ: number; + EINPROGRESS: number; + EINTR: number; + EINVAL: number; + EIO: number; + EISCONN: number; + EISDIR: number; + ELOOP: number; + EMFILE: number; + EMLINK: number; + EMSGSIZE: number; + EMULTIHOP: number; + ENAMETOOLONG: number; + ENETDOWN: number; + ENETRESET: number; + ENETUNREACH: number; + ENFILE: number; + ENOBUFS: number; + ENODATA: number; + ENODEV: number; + ENOENT: number; + ENOEXEC: number; + ENOLCK: number; + ENOLINK: number; + ENOMEM: number; + ENOMSG: number; + ENOPROTOOPT: number; + ENOSPC: number; + ENOSR: number; + ENOSTR: number; + ENOSYS: number; + ENOTCONN: number; + ENOTDIR: number; + ENOTEMPTY: number; + ENOTSOCK: number; + ENOTSUP: number; + ENOTTY: number; + ENXIO: number; + EOPNOTSUPP: number; + EOVERFLOW: number; + EPERM: number; + EPIPE: number; + EPROTO: number; + EPROTONOSUPPORT: number; + EPROTOTYPE: number; + ERANGE: number; + EROFS: number; + ESPIPE: number; + ESRCH: number; + ESTALE: number; + ETIME: number; + ETIMEDOUT: number; + ETXTBSY: number; + EWOULDBLOCK: number; + EXDEV: number; + }, + }; + export function arch(): string; + export function platform(): NodeJS.Platform; + export function tmpdir(): string; + export var EOL: string; + export function endianness(): "BE" | "LE"; } declare module "https" { - import * as tls from "tls"; - import * as events from "events"; - import * as http from "http"; + import * as tls from "tls"; + import * as events from "events"; + import * as http from "http"; - export interface ServerOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - crl?: any; - ciphers?: string; - honorCipherOrder?: boolean; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: any; - SNICallback?: (servername: string, cb: (err: Error, ctx: tls.SecureContext) => any) => any; - } + export interface ServerOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + crl?: any; + ciphers?: string; + honorCipherOrder?: boolean; + requestCert?: boolean; + rejectUnauthorized?: boolean; + NPNProtocols?: any; + SNICallback?: (servername: string, cb: (err: Error, ctx: tls.SecureContext) => any) => any; + } - export interface RequestOptions extends http.RequestOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - ciphers?: string; - rejectUnauthorized?: boolean; - secureProtocol?: string; - } + export interface RequestOptions extends http.RequestOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + ciphers?: string; + rejectUnauthorized?: boolean; + secureProtocol?: string; + } - export interface Agent extends http.Agent { } + export interface Agent extends http.Agent { } - export interface AgentOptions extends http.AgentOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - ciphers?: string; - rejectUnauthorized?: boolean; - secureProtocol?: string; - maxCachedSessions?: number; - } + export interface AgentOptions extends http.AgentOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + ciphers?: string; + rejectUnauthorized?: boolean; + secureProtocol?: string; + maxCachedSessions?: number; + } - export var Agent: { - new(options?: AgentOptions): Agent; - }; - export interface Server extends tls.Server { } - export function createServer(options: ServerOptions, requestListener?: Function): Server; - export function request(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - export function get(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - export var globalAgent: Agent; + export var Agent: { + new(options?: AgentOptions): Agent; + }; + export interface Server extends tls.Server { } + export function createServer(options: ServerOptions, requestListener?: Function): Server; + export function request(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; + export function get(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; + export var globalAgent: Agent; } declare module "punycode" { - export function decode(string: string): string; - export function encode(string: string): string; - export function toUnicode(domain: string): string; - export function toASCII(domain: string): string; - export var ucs2: ucs2; - interface ucs2 { - decode(string: string): number[]; - encode(codePoints: number[]): string; - } - export var version: any; + export function decode(string: string): string; + export function encode(string: string): string; + export function toUnicode(domain: string): string; + export function toASCII(domain: string): string; + export var ucs2: ucs2; + interface ucs2 { + decode(string: string): number[]; + encode(codePoints: number[]): string; + } + export var version: any; } declare module "repl" { - import * as stream from "stream"; - import * as readline from "readline"; + import * as stream from "stream"; + import * as readline from "readline"; - export interface ReplOptions { - prompt?: string; - input?: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - terminal?: boolean; - eval?: Function; - useColors?: boolean; - useGlobal?: boolean; - ignoreUndefined?: boolean; - writer?: Function; - completer?: Function; - replMode?: any; - breakEvalOnSigint?: any; - } + export interface ReplOptions { + prompt?: string; + input?: NodeJS.ReadableStream; + output?: NodeJS.WritableStream; + terminal?: boolean; + eval?: Function; + useColors?: boolean; + useGlobal?: boolean; + ignoreUndefined?: boolean; + writer?: Function; + completer?: Function; + replMode?: any; + breakEvalOnSigint?: any; + } - export interface REPLServer extends readline.ReadLine { - context: any; - defineCommand(keyword: string, cmd: Function | { help: string, action: Function }): void; - displayPrompt(preserveCursor?: boolean): void; + export interface REPLServer extends readline.ReadLine { + context: any; + defineCommand(keyword: string, cmd: Function | { help: string, action: Function }): void; + displayPrompt(preserveCursor?: boolean): void; /** * events.EventEmitter @@ -1469,54 +1469,54 @@ declare module "repl" { * 2. reset **/ - addListener(event: string, listener: Function): this; - addListener(event: "exit", listener: () => void): this; - addListener(event: "reset", listener: Function): this; + addListener(event: string, listener: Function): this; + addListener(event: "exit", listener: () => void): this; + addListener(event: "reset", listener: Function): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "exit"): boolean; - emit(event: "reset", context: any): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "exit"): boolean; + emit(event: "reset", context: any): boolean; - on(event: string, listener: Function): this; - on(event: "exit", listener: () => void): this; - on(event: "reset", listener: Function): this; + on(event: string, listener: Function): this; + on(event: "exit", listener: () => void): this; + on(event: "reset", listener: Function): this; - once(event: string, listener: Function): this; - once(event: "exit", listener: () => void): this; - once(event: "reset", listener: Function): this; + once(event: string, listener: Function): this; + once(event: "exit", listener: () => void): this; + once(event: "reset", listener: Function): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "exit", listener: () => void): this; - prependListener(event: "reset", listener: Function): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "exit", listener: () => void): this; + prependListener(event: "reset", listener: Function): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "exit", listener: () => void): this; - prependOnceListener(event: "reset", listener: Function): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "exit", listener: () => void): this; + prependOnceListener(event: "reset", listener: Function): this; + } - export function start(options?: string | ReplOptions): REPLServer; + export function start(options?: string | ReplOptions): REPLServer; } declare module "readline" { - import * as events from "events"; - import * as stream from "stream"; + import * as events from "events"; + import * as stream from "stream"; - export interface Key { - sequence?: string; - name?: string; - ctrl?: boolean; - meta?: boolean; - shift?: boolean; - } + export interface Key { + sequence?: string; + name?: string; + ctrl?: boolean; + meta?: boolean; + shift?: boolean; + } - export interface ReadLine extends events.EventEmitter { - setPrompt(prompt: string): void; - prompt(preserveCursor?: boolean): void; - question(query: string, callback: (answer: string) => void): void; - pause(): ReadLine; - resume(): ReadLine; - close(): void; - write(data: string | Buffer, key?: Key): void; + export interface ReadLine extends events.EventEmitter { + setPrompt(prompt: string): void; + prompt(preserveCursor?: boolean): void; + question(query: string, callback: (answer: string) => void): void; + pause(): ReadLine; + resume(): ReadLine; + close(): void; + write(data: string | Buffer, key?: Key): void; /** * events.EventEmitter @@ -1529,136 +1529,136 @@ declare module "readline" { * 7. SIGTSTP **/ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "line", listener: (input: any) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: "SIGCONT", listener: () => void): this; - addListener(event: "SIGINT", listener: () => void): this; - addListener(event: "SIGTSTP", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "line", listener: (input: any) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "SIGCONT", listener: () => void): this; + addListener(event: "SIGINT", listener: () => void): this; + addListener(event: "SIGTSTP", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "line", input: any): boolean; - emit(event: "pause"): boolean; - emit(event: "resume"): boolean; - emit(event: "SIGCONT"): boolean; - emit(event: "SIGINT"): boolean; - emit(event: "SIGTSTP"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "line", input: any): boolean; + emit(event: "pause"): boolean; + emit(event: "resume"): boolean; + emit(event: "SIGCONT"): boolean; + emit(event: "SIGINT"): boolean; + emit(event: "SIGTSTP"): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "line", listener: (input: any) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: "SIGCONT", listener: () => void): this; - on(event: "SIGINT", listener: () => void): this; - on(event: "SIGTSTP", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "line", listener: (input: any) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "SIGCONT", listener: () => void): this; + on(event: "SIGINT", listener: () => void): this; + on(event: "SIGTSTP", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "line", listener: (input: any) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: "SIGCONT", listener: () => void): this; - once(event: "SIGINT", listener: () => void): this; - once(event: "SIGTSTP", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "line", listener: (input: any) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "SIGCONT", listener: () => void): this; + once(event: "SIGINT", listener: () => void): this; + once(event: "SIGTSTP", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "line", listener: (input: any) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: "SIGCONT", listener: () => void): this; - prependListener(event: "SIGINT", listener: () => void): this; - prependListener(event: "SIGTSTP", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "line", listener: (input: any) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "SIGCONT", listener: () => void): this; + prependListener(event: "SIGINT", listener: () => void): this; + prependListener(event: "SIGTSTP", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "line", listener: (input: any) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: "SIGCONT", listener: () => void): this; - prependOnceListener(event: "SIGINT", listener: () => void): this; - prependOnceListener(event: "SIGTSTP", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "line", listener: (input: any) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "SIGCONT", listener: () => void): this; + prependOnceListener(event: "SIGINT", listener: () => void): this; + prependOnceListener(event: "SIGTSTP", listener: () => void): this; + } - type Completer = (line: string) => CompleterResult; - type AsyncCompleter = (line: string, callback: (err: any, result: CompleterResult) => void) => any; + type Completer = (line: string) => CompleterResult; + type AsyncCompleter = (line: string, callback: (err: any, result: CompleterResult) => void) => any; - export type CompleterResult = [string[], string]; + export type CompleterResult = [string[], string]; - export interface ReadLineOptions { - input: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - completer?: Completer | AsyncCompleter; - terminal?: boolean; - historySize?: number; - prompt?: string; - crlfDelay?: number; - removeHistoryDuplicates?: boolean; - } + export interface ReadLineOptions { + input: NodeJS.ReadableStream; + output?: NodeJS.WritableStream; + completer?: Completer | AsyncCompleter; + terminal?: boolean; + historySize?: number; + prompt?: string; + crlfDelay?: number; + removeHistoryDuplicates?: boolean; + } - export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): ReadLine; - export function createInterface(options: ReadLineOptions): ReadLine; + export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): ReadLine; + export function createInterface(options: ReadLineOptions): ReadLine; - export function cursorTo(stream: NodeJS.WritableStream, x: number, y: number): void; - export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void; - export function clearLine(stream: NodeJS.WritableStream, dir: number): void; - export function clearScreenDown(stream: NodeJS.WritableStream): void; + export function cursorTo(stream: NodeJS.WritableStream, x: number, y: number): void; + export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void; + export function clearLine(stream: NodeJS.WritableStream, dir: number): void; + export function clearScreenDown(stream: NodeJS.WritableStream): void; } declare module "vm" { - export interface Context { } - export interface ScriptOptions { - filename?: string; - lineOffset?: number; - columnOffset?: number; - displayErrors?: boolean; - timeout?: number; - cachedData?: Buffer; - produceCachedData?: boolean; - } - export interface RunningScriptOptions { - filename?: string; - lineOffset?: number; - columnOffset?: number; - displayErrors?: boolean; - timeout?: number; - } - export class Script { - constructor(code: string, options?: ScriptOptions); - runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; - runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; - runInThisContext(options?: RunningScriptOptions): any; - } - export function createContext(sandbox?: Context): Context; - export function isContext(sandbox: Context): boolean; - export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions): any; - export function runInDebugContext(code: string): any; - export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions): any; - export function runInThisContext(code: string, options?: RunningScriptOptions): any; + export interface Context { } + export interface ScriptOptions { + filename?: string; + lineOffset?: number; + columnOffset?: number; + displayErrors?: boolean; + timeout?: number; + cachedData?: Buffer; + produceCachedData?: boolean; + } + export interface RunningScriptOptions { + filename?: string; + lineOffset?: number; + columnOffset?: number; + displayErrors?: boolean; + timeout?: number; + } + export class Script { + constructor(code: string, options?: ScriptOptions); + runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; + runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; + runInThisContext(options?: RunningScriptOptions): any; + } + export function createContext(sandbox?: Context): Context; + export function isContext(sandbox: Context): boolean; + export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions): any; + export function runInDebugContext(code: string): any; + export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions): any; + export function runInThisContext(code: string, options?: RunningScriptOptions): any; } declare module "child_process" { - import * as events from "events"; - import * as stream from "stream"; - import * as net from "net"; + import * as events from "events"; + import * as stream from "stream"; + import * as net from "net"; - export interface ChildProcess extends events.EventEmitter { - stdin: stream.Writable; - stdout: stream.Readable; - stderr: stream.Readable; - stdio: [stream.Writable, stream.Readable, stream.Readable]; - killed: boolean; - pid: number; - kill(signal?: string): void; - send(message: any, sendHandle?: any): boolean; - connected: boolean; - disconnect(): void; - unref(): void; - ref(): void; + export interface ChildProcess extends events.EventEmitter { + stdin: stream.Writable; + stdout: stream.Readable; + stderr: stream.Readable; + stdio: [stream.Writable, stream.Readable, stream.Readable]; + killed: boolean; + pid: number; + kill(signal?: string): void; + send(message: any, sendHandle?: any): boolean; + connected: boolean; + disconnect(): void; + unref(): void; + ref(): void; /** * events.EventEmitter @@ -1669,462 +1669,462 @@ declare module "child_process" { * 5. message **/ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: (code: number, signal: string) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: (code: number, signal: string) => void): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "exit", listener: (code: number, signal: string) => void): this; + addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", code: number, signal: string): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "exit", code: number, signal: string): boolean; - emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", code: number, signal: string): boolean; + emit(event: "disconnect"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "exit", code: number, signal: string): boolean; + emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: (code: number, signal: string) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: (code: number, signal: string) => void): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "exit", listener: (code: number, signal: string) => void): this; + on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: (code: number, signal: string) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: (code: number, signal: string) => void): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "exit", listener: (code: number, signal: string) => void): this; + once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: (code: number, signal: string) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: (code: number, signal: string) => void): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + } - export interface SpawnOptions { - cwd?: string; - env?: any; - stdio?: any; - detached?: boolean; - uid?: number; - gid?: number; - shell?: boolean | string; - windowsVerbatimArguments?: boolean; - } - export function spawn(command: string, args?: string[], options?: SpawnOptions): ChildProcess; + export interface SpawnOptions { + cwd?: string; + env?: any; + stdio?: any; + detached?: boolean; + uid?: number; + gid?: number; + shell?: boolean | string; + windowsVerbatimArguments?: boolean; + } + export function spawn(command: string, args?: string[], options?: SpawnOptions): ChildProcess; - export interface ExecOptions { - cwd?: string; - env?: any; - shell?: string; - timeout?: number; - maxBuffer?: number; - killSignal?: string; - uid?: number; - gid?: number; - } - export interface ExecOptionsWithStringEncoding extends ExecOptions { - encoding: BufferEncoding; - } - export interface ExecOptionsWithBufferEncoding extends ExecOptions { - encoding: string; // specify `null`. - } - export function exec(command: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export function exec(command: string, options: ExecOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - // usage. child_process.exec("tsc", {encoding: null as string}, (err, stdout, stderr) => {}); - export function exec(command: string, options: ExecOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - export function exec(command: string, options: ExecOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export interface ExecOptions { + cwd?: string; + env?: any; + shell?: string; + timeout?: number; + maxBuffer?: number; + killSignal?: string; + uid?: number; + gid?: number; + } + export interface ExecOptionsWithStringEncoding extends ExecOptions { + encoding: BufferEncoding; + } + export interface ExecOptionsWithBufferEncoding extends ExecOptions { + encoding: string; // specify `null`. + } + export function exec(command: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function exec(command: string, options: ExecOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.exec("tsc", {encoding: null as string}, (err, stdout, stderr) => {}); + export function exec(command: string, options: ExecOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function exec(command: string, options: ExecOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export interface ExecFileOptions { - cwd?: string; - env?: any; - timeout?: number; - maxBuffer?: number; - killSignal?: string; - uid?: number; - gid?: number; - } - export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { - encoding: BufferEncoding; - } - export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { - encoding: string; // specify `null`. - } - export function execFile(file: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - // usage. child_process.execFile("file.sh", {encoding: null as string}, (err, stdout, stderr) => {}); - export function execFile(file: string, options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - export function execFile(file: string, options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args?: string[], callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - // usage. child_process.execFile("file.sh", ["foo"], {encoding: null as string}, (err, stdout, stderr) => {}); - export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - export function execFile(file: string, args?: string[], options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export interface ExecFileOptions { + cwd?: string; + env?: any; + timeout?: number; + maxBuffer?: number; + killSignal?: string; + uid?: number; + gid?: number; + } + export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { + encoding: BufferEncoding; + } + export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { + encoding: string; // specify `null`. + } + export function execFile(file: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.execFile("file.sh", {encoding: null as string}, (err, stdout, stderr) => {}); + export function execFile(file: string, options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function execFile(file: string, options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, args?: string[], callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.execFile("file.sh", ["foo"], {encoding: null as string}, (err, stdout, stderr) => {}); + export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function execFile(file: string, args?: string[], options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export interface ForkOptions { - cwd?: string; - env?: any; - execPath?: string; - execArgv?: string[]; - silent?: boolean; - stdio?: any[]; - uid?: number; - gid?: number; - } - export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess; + export interface ForkOptions { + cwd?: string; + env?: any; + execPath?: string; + execArgv?: string[]; + silent?: boolean; + stdio?: any[]; + uid?: number; + gid?: number; + } + export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess; - export interface SpawnSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - shell?: boolean | string; - } - export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { - encoding: BufferEncoding; - } - export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { - encoding: string; // specify `null`. - } - export interface SpawnSyncReturns { - pid: number; - output: string[]; - stdout: T; - stderr: T; - status: number; - signal: string; - error: Error; - } - export function spawnSync(command: string): SpawnSyncReturns; - export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; - export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; - export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns; + export interface SpawnSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + shell?: boolean | string; + } + export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { + encoding: BufferEncoding; + } + export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { + encoding: string; // specify `null`. + } + export interface SpawnSyncReturns { + pid: number; + output: string[]; + stdout: T; + stderr: T; + status: number; + signal: string; + error: Error; + } + export function spawnSync(command: string): SpawnSyncReturns; + export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; + export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; + export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns; - export interface ExecSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - shell?: string; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - } - export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { - encoding: BufferEncoding; - } - export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { - encoding: string; // specify `null`. - } - export function execSync(command: string): Buffer; - export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string; - export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer; - export function execSync(command: string, options?: ExecSyncOptions): Buffer; + export interface ExecSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + shell?: string; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + } + export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { + encoding: BufferEncoding; + } + export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { + encoding: string; // specify `null`. + } + export function execSync(command: string): Buffer; + export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string; + export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer; + export function execSync(command: string, options?: ExecSyncOptions): Buffer; - export interface ExecFileSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - } - export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { - encoding: BufferEncoding; - } - export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { - encoding: string; // specify `null`. - } - export function execFileSync(command: string): Buffer; - export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string; - export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer; + export interface ExecFileSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + } + export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { + encoding: BufferEncoding; + } + export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { + encoding: string; // specify `null`. + } + export function execFileSync(command: string): Buffer; + export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string; + export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; + export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer; } declare module "url" { - export interface Url { - href?: string; - protocol?: string; - auth?: string; - hostname?: string; - port?: string; - host?: string; - pathname?: string; - search?: string; - query?: string | any; - slashes?: boolean; - hash?: string; - path?: string; - } + export interface Url { + href?: string; + protocol?: string; + auth?: string; + hostname?: string; + port?: string; + host?: string; + pathname?: string; + search?: string; + query?: string | any; + slashes?: boolean; + hash?: string; + path?: string; + } - export interface UrlObject { - protocol?: string; - slashes?: boolean; - auth?: string; - host?: string; - hostname?: string; - port?: string | number; - pathname?: string; - search?: string; - query?: { [key: string]: any; }; - hash?: string; - } + export interface UrlObject { + protocol?: string; + slashes?: boolean; + auth?: string; + host?: string; + hostname?: string; + port?: string | number; + pathname?: string; + search?: string; + query?: { [key: string]: any; }; + hash?: string; + } - export function parse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): Url; - export function format(URL: URL, options?: URLFormatOptions): string; - export function format(urlObject: UrlObject): string; - export function resolve(from: string, to: string): string; + export function parse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): Url; + export function format(URL: URL, options?: URLFormatOptions): string; + export function format(urlObject: UrlObject): string; + export function resolve(from: string, to: string): string; - export interface URLFormatOptions { - auth?: boolean; - fragment?: boolean; - search?: boolean; - unicode?: boolean; - } + export interface URLFormatOptions { + auth?: boolean; + fragment?: boolean; + search?: boolean; + unicode?: boolean; + } - export class URLSearchParams implements Iterable { - constructor(init?: URLSearchParams | string | { [key: string]: string | string[] } | Iterable); - append(name: string, value: string): void; - delete(name: string): void; - entries(): Iterator; - forEach(callback: (value: string, name: string) => void): void; - get(name: string): string | null; - getAll(name: string): string[]; - has(name: string): boolean; - keys(): Iterator; - set(name: string, value: string): void; - sort(): void; - toString(): string; - values(): Iterator; - [Symbol.iterator](): Iterator; - } + export class URLSearchParams implements Iterable { + constructor(init?: URLSearchParams | string | { [key: string]: string | string[] } | Iterable); + append(name: string, value: string): void; + delete(name: string): void; + entries(): Iterator; + forEach(callback: (value: string, name: string) => void): void; + get(name: string): string | null; + getAll(name: string): string[]; + has(name: string): boolean; + keys(): Iterator; + set(name: string, value: string): void; + sort(): void; + toString(): string; + values(): Iterator; + [Symbol.iterator](): Iterator; + } - export class URL { - constructor(input: string, base?: string | URL); - hash: string; - host: string; - hostname: string; - href: string; - readonly origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - search: string; - readonly searchParams: URLSearchParams; - username: string; - toString(): string; - toJSON(): string; - } + export class URL { + constructor(input: string, base?: string | URL); + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + readonly searchParams: URLSearchParams; + username: string; + toString(): string; + toJSON(): string; + } } declare module "dns" { - // Supported getaddrinfo flags. - export const ADDRCONFIG: number; - export const V4MAPPED: number; + // Supported getaddrinfo flags. + export const ADDRCONFIG: number; + export const V4MAPPED: number; - export interface LookupOptions { - family?: number; - hints?: number; - all?: boolean; - } + export interface LookupOptions { + family?: number; + hints?: number; + all?: boolean; + } - export interface LookupOneOptions extends LookupOptions { - all?: false; - } + export interface LookupOneOptions extends LookupOptions { + all?: false; + } - export interface LookupAllOptions extends LookupOptions { - all: true; - } + export interface LookupAllOptions extends LookupOptions { + all: true; + } - export interface LookupAddress { - address: string; - family: number; - } + export interface LookupAddress { + address: string; + family: number; + } - export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException, addresses: LookupAddress[]) => void): void; - export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException, address: string | LookupAddress[], family: number) => void): void; - export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; + export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; + export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; + export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException, addresses: LookupAddress[]) => void): void; + export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException, address: string | LookupAddress[], family: number) => void): void; + export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export interface ResolveOptions { - ttl: boolean; - } + export interface ResolveOptions { + ttl: boolean; + } - export interface ResolveWithTtlOptions extends ResolveOptions { - ttl: true; - } + export interface ResolveWithTtlOptions extends ResolveOptions { + ttl: true; + } - export interface RecordWithTtl { - address: string; - ttl: number; - } + export interface RecordWithTtl { + address: string; + ttl: number; + } - export interface MxRecord { - priority: number; - exchange: string; - } + export interface MxRecord { + priority: number; + exchange: string; + } - export interface NaptrRecord { - flags: string; - service: string; - regexp: string; - replacement: string; - order: number; - preference: number; - } + export interface NaptrRecord { + flags: string; + service: string; + regexp: string; + replacement: string; + order: number; + preference: number; + } - export interface SoaRecord { - nsname: string; - hostmaster: string; - serial: number; - refresh: number; - retry: number; - expire: number; - minttl: number; - } + export interface SoaRecord { + nsname: string; + hostmaster: string; + serial: number; + refresh: number; + retry: number; + expire: number; + minttl: number; + } - export interface SrvRecord { - priority: number; - weight: number; - port: number; - name: string; - } + export interface SrvRecord { + priority: number; + weight: number; + port: number; + name: string; + } - export function resolve(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException, addresses: SoaRecord) => void): void; - export function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; - export function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]) => void): void; + export function resolve(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; + export function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; + export function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException, addresses: SoaRecord) => void): void; + export function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; + export function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; + export function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]) => void): void; - export function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; - export function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; + export function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; + export function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; - export function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; - export function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; + export function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; + export function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; - export function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; - export function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; - export function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException, address: SoaRecord) => void): void; - export function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; - export function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; + export function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; + export function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; + export function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException, address: SoaRecord) => void): void; + export function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; + export function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; - export function reverse(ip: string, callback: (err: NodeJS.ErrnoException, hostnames: string[]) => void): void; - export function setServers(servers: string[]): void; + export function reverse(ip: string, callback: (err: NodeJS.ErrnoException, hostnames: string[]) => void): void; + export function setServers(servers: string[]): void; - //Error codes - export var NODATA: string; - export var FORMERR: string; - export var SERVFAIL: string; - export var NOTFOUND: string; - export var NOTIMP: string; - export var REFUSED: string; - export var BADQUERY: string; - export var BADNAME: string; - export var BADFAMILY: string; - export var BADRESP: string; - export var CONNREFUSED: string; - export var TIMEOUT: string; - export var EOF: string; - export var FILE: string; - export var NOMEM: string; - export var DESTRUCTION: string; - export var BADSTR: string; - export var BADFLAGS: string; - export var NONAME: string; - export var BADHINTS: string; - export var NOTINITIALIZED: string; - export var LOADIPHLPAPI: string; - export var ADDRGETNETWORKPARAMS: string; - export var CANCELLED: string; + //Error codes + export var NODATA: string; + export var FORMERR: string; + export var SERVFAIL: string; + export var NOTFOUND: string; + export var NOTIMP: string; + export var REFUSED: string; + export var BADQUERY: string; + export var BADNAME: string; + export var BADFAMILY: string; + export var BADRESP: string; + export var CONNREFUSED: string; + export var TIMEOUT: string; + export var EOF: string; + export var FILE: string; + export var NOMEM: string; + export var DESTRUCTION: string; + export var BADSTR: string; + export var BADFLAGS: string; + export var NONAME: string; + export var BADHINTS: string; + export var NOTINITIALIZED: string; + export var LOADIPHLPAPI: string; + export var ADDRGETNETWORKPARAMS: string; + export var CANCELLED: string; } declare module "net" { - import * as stream from "stream"; - import * as events from "events"; + import * as stream from "stream"; + import * as events from "events"; - export interface Socket extends stream.Duplex { - // Extended base methods - write(buffer: Buffer): boolean; - write(buffer: Buffer, cb?: Function): boolean; - write(str: string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - write(str: string, encoding?: string, fd?: string): boolean; + export interface Socket extends stream.Duplex { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; - connect(port: number, host?: string, connectionListener?: Function): void; - connect(path: string, connectionListener?: Function): void; - bufferSize: number; - setEncoding(encoding?: string): this; - write(data: any, encoding?: string, callback?: Function): void; - destroy(err?: any): void; - pause(): this; - resume(): this; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setKeepAlive(enable?: boolean, initialDelay?: number): void; - address(): { port: number; family: string; address: string; }; - unref(): void; - ref(): void; + connect(port: number, host?: string, connectionListener?: Function): void; + connect(path: string, connectionListener?: Function): void; + bufferSize: number; + setEncoding(encoding?: string): this; + write(data: any, encoding?: string, callback?: Function): void; + destroy(err?: any): void; + pause(): this; + resume(): this; + setTimeout(timeout: number, callback?: Function): void; + setNoDelay(noDelay?: boolean): void; + setKeepAlive(enable?: boolean, initialDelay?: number): void; + address(): { port: number; family: string; address: string; }; + unref(): void; + ref(): void; - remoteAddress: string; - remoteFamily: string; - remotePort: number; - localAddress: string; - localPort: number; - bytesRead: number; - bytesWritten: number; - connecting: boolean; - destroyed: boolean; + remoteAddress: string; + remoteFamily: string; + remotePort: number; + localAddress: string; + localPort: number; + bytesRead: number; + bytesWritten: number; + connecting: boolean; + destroyed: boolean; - // Extended base methods - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - end(data?: any, encoding?: string): void; + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; /** * events.EventEmitter @@ -2137,97 +2137,97 @@ declare module "net" { * 7. lookup * 8. timeout */ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: (had_error: boolean) => void): this; - addListener(event: "connect", listener: () => void): this; - addListener(event: "data", listener: (data: Buffer) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - addListener(event: "timeout", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: (had_error: boolean) => void): this; + addListener(event: "connect", listener: () => void): this; + addListener(event: "data", listener: (data: Buffer) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + addListener(event: "timeout", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", had_error: boolean): boolean; - emit(event: "connect"): boolean; - emit(event: "data", data: Buffer): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; - emit(event: "timeout"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", had_error: boolean): boolean; + emit(event: "connect"): boolean; + emit(event: "data", data: Buffer): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; + emit(event: "timeout"): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: (had_error: boolean) => void): this; - on(event: "connect", listener: () => void): this; - on(event: "data", listener: (data: Buffer) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - on(event: "timeout", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: (had_error: boolean) => void): this; + on(event: "connect", listener: () => void): this; + on(event: "data", listener: (data: Buffer) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + on(event: "timeout", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: (had_error: boolean) => void): this; - once(event: "connect", listener: () => void): this; - once(event: "data", listener: (data: Buffer) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - once(event: "timeout", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: (had_error: boolean) => void): this; + once(event: "connect", listener: () => void): this; + once(event: "data", listener: (data: Buffer) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + once(event: "timeout", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: (had_error: boolean) => void): this; - prependListener(event: "connect", listener: () => void): this; - prependListener(event: "data", listener: (data: Buffer) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependListener(event: "timeout", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: (had_error: boolean) => void): this; + prependListener(event: "connect", listener: () => void): this; + prependListener(event: "data", listener: (data: Buffer) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + prependListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: (had_error: boolean) => void): this; - prependOnceListener(event: "connect", listener: () => void): this; - prependOnceListener(event: "data", listener: (data: Buffer) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: (had_error: boolean) => void): this; + prependOnceListener(event: "connect", listener: () => void): this; + prependOnceListener(event: "data", listener: (data: Buffer) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + } - export var Socket: { - new(options?: { fd?: number; allowHalfOpen?: boolean; readable?: boolean; writable?: boolean; }): Socket; - }; + export var Socket: { + new(options?: { fd?: number; allowHalfOpen?: boolean; readable?: boolean; writable?: boolean; }): Socket; + }; - export interface ListenOptions { - port?: number; - host?: string; - backlog?: number; - path?: string; - exclusive?: boolean; - } + export interface ListenOptions { + port?: number; + host?: string; + backlog?: number; + path?: string; + exclusive?: boolean; + } - export interface Server extends events.EventEmitter { - listen(port: number, hostname?: string, backlog?: number, listeningListener?: Function): Server; - listen(port: number, hostname?: string, listeningListener?: Function): Server; - listen(port: number, backlog?: number, listeningListener?: Function): Server; - listen(port: number, listeningListener?: Function): Server; - listen(path: string, backlog?: number, listeningListener?: Function): Server; - listen(path: string, listeningListener?: Function): Server; - listen(options: ListenOptions, listeningListener?: Function): Server; - listen(handle: any, backlog?: number, listeningListener?: Function): Server; - listen(handle: any, listeningListener?: Function): Server; - close(callback?: Function): Server; - address(): { port: number; family: string; address: string; }; - getConnections(cb: (error: Error, count: number) => void): void; - ref(): Server; - unref(): Server; - maxConnections: number; - connections: number; - listening: boolean; + export interface Server extends events.EventEmitter { + listen(port: number, hostname?: string, backlog?: number, listeningListener?: Function): Server; + listen(port: number, hostname?: string, listeningListener?: Function): Server; + listen(port: number, backlog?: number, listeningListener?: Function): Server; + listen(port: number, listeningListener?: Function): Server; + listen(path: string, backlog?: number, listeningListener?: Function): Server; + listen(path: string, listeningListener?: Function): Server; + listen(options: ListenOptions, listeningListener?: Function): Server; + listen(handle: any, backlog?: number, listeningListener?: Function): Server; + listen(handle: any, listeningListener?: Function): Server; + close(callback?: Function): Server; + address(): { port: number; family: string; address: string; }; + getConnections(cb: (error: Error, count: number) => void): void; + ref(): Server; + unref(): Server; + maxConnections: number; + connections: number; + listening: boolean; /** * events.EventEmitter @@ -2236,101 +2236,101 @@ declare module "net" { * 3. error * 4. listening */ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connection", listener: (socket: Socket) => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connection", listener: (socket: Socket) => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "connection", socket: Socket): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "connection", socket: Socket): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "connection", listener: (socket: Socket) => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "connection", listener: (socket: Socket) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "connection", listener: (socket: Socket) => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "connection", listener: (socket: Socket) => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connection", listener: (socket: Socket) => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connection", listener: (socket: Socket) => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - } - export function createServer(connectionListener?: (socket: Socket) => void): Server; - export function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server; - export function connect(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; - export function connect(port: number, host?: string, connectionListener?: Function): Socket; - export function connect(path: string, connectionListener?: Function): Socket; - export function createConnection(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; - export function createConnection(port: number, host?: string, connectionListener?: Function): Socket; - export function createConnection(path: string, connectionListener?: Function): Socket; - export function isIP(input: string): number; - export function isIPv4(input: string): boolean; - export function isIPv6(input: string): boolean; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + } + export function createServer(connectionListener?: (socket: Socket) => void): Server; + export function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server; + export function connect(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; + export function connect(port: number, host?: string, connectionListener?: Function): Socket; + export function connect(path: string, connectionListener?: Function): Socket; + export function createConnection(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; + export function createConnection(port: number, host?: string, connectionListener?: Function): Socket; + export function createConnection(path: string, connectionListener?: Function): Socket; + export function isIP(input: string): number; + export function isIPv4(input: string): boolean; + export function isIPv6(input: string): boolean; } declare module "dgram" { - import * as events from "events"; + import * as events from "events"; - interface RemoteInfo { - address: string; - family: string; - port: number; - } + interface RemoteInfo { + address: string; + family: string; + port: number; + } - interface AddressInfo { - address: string; - family: string; - port: number; - } + interface AddressInfo { + address: string; + family: string; + port: number; + } - interface BindOptions { - port: number; - address?: string; - exclusive?: boolean; - } + interface BindOptions { + port: number; + address?: string; + exclusive?: boolean; + } - type SocketType = "udp4" | "udp6"; + type SocketType = "udp4" | "udp6"; - interface SocketOptions { - type: SocketType; - reuseAddr?: boolean; - } + interface SocketOptions { + type: SocketType; + reuseAddr?: boolean; + } - export function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - export function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + export function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + export function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - export interface Socket extends events.EventEmitter { - send(msg: Buffer | String | any[], port: number, address: string, callback?: (error: Error, bytes: number) => void): void; - send(msg: Buffer | String | any[], offset: number, length: number, port: number, address: string, callback?: (error: Error, bytes: number) => void): void; - bind(port?: number, address?: string, callback?: () => void): void; - bind(options: BindOptions, callback?: Function): void; - close(callback?: () => void): void; - address(): AddressInfo; - setBroadcast(flag: boolean): void; - setTTL(ttl: number): void; - setMulticastTTL(ttl: number): void; - setMulticastLoopback(flag: boolean): void; - addMembership(multicastAddress: string, multicastInterface?: string): void; - dropMembership(multicastAddress: string, multicastInterface?: string): void; - ref(): this; - unref(): this; + export interface Socket extends events.EventEmitter { + send(msg: Buffer | String | any[], port: number, address: string, callback?: (error: Error, bytes: number) => void): void; + send(msg: Buffer | String | any[], offset: number, length: number, port: number, address: string, callback?: (error: Error, bytes: number) => void): void; + bind(port?: number, address?: string, callback?: () => void): void; + bind(options: BindOptions, callback?: Function): void; + close(callback?: () => void): void; + address(): AddressInfo; + setBroadcast(flag: boolean): void; + setTTL(ttl: number): void; + setMulticastTTL(ttl: number): void; + setMulticastLoopback(flag: boolean): void; + addMembership(multicastAddress: string, multicastInterface?: string): void; + dropMembership(multicastAddress: string, multicastInterface?: string): void; + ref(): this; + unref(): this; /** * events.EventEmitter @@ -2339,163 +2339,163 @@ declare module "dgram" { * 3. listening * 4. message **/ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - addListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - emit(event: "message", msg: Buffer, rinfo: AddressInfo): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit(event: "message", msg: Buffer, rinfo: AddressInfo): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - on(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - once(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - prependListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + } } declare module "fs" { - import * as stream from "stream"; - import * as events from "events"; + import * as stream from "stream"; + import * as events from "events"; - interface Stats { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - dev: number; - ino: number; - mode: number; - nlink: number; - uid: number; - gid: number; - rdev: number; - size: number; - blksize: number; - blocks: number; - atime: Date; - mtime: Date; - ctime: Date; - birthtime: Date; - } + interface Stats { + isFile(): boolean; + isDirectory(): boolean; + isBlockDevice(): boolean; + isCharacterDevice(): boolean; + isSymbolicLink(): boolean; + isFIFO(): boolean; + isSocket(): boolean; + dev: number; + ino: number; + mode: number; + nlink: number; + uid: number; + gid: number; + rdev: number; + size: number; + blksize: number; + blocks: number; + atime: Date; + mtime: Date; + ctime: Date; + birthtime: Date; + } - interface FSWatcher extends events.EventEmitter { - close(): void; + interface FSWatcher extends events.EventEmitter { + close(): void; /** * events.EventEmitter * 1. change * 2. error */ - addListener(event: string, listener: Function): this; - addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + addListener(event: "error", listener: (error: Error) => void): this; - on(event: string, listener: Function): this; - on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - on(event: "error", listener: (error: Error) => void): this; + on(event: string, listener: Function): this; + on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + on(event: "error", listener: (error: Error) => void): this; - once(event: string, listener: Function): this; - once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - once(event: "error", listener: (error: Error) => void): this; + once(event: string, listener: Function): this; + once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + once(event: "error", listener: (error: Error) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + } - export interface ReadStream extends stream.Readable { - close(): void; - destroy(): void; - bytesRead: number; - path: string | Buffer; + export interface ReadStream extends stream.Readable { + close(): void; + destroy(): void; + bytesRead: number; + path: string | Buffer; /** * events.EventEmitter * 1. open * 2. close */ - addListener(event: string, listener: Function): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "close", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "close", listener: () => void): this; - on(event: string, listener: Function): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "close", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "close", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "close", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "close", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "close", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "close", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + } - export interface WriteStream extends stream.Writable { - close(): void; - bytesWritten: number; - path: string | Buffer; + export interface WriteStream extends stream.Writable { + close(): void; + bytesWritten: number; + path: string | Buffer; /** * events.EventEmitter * 1. open * 2. close */ - addListener(event: string, listener: Function): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "close", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "close", listener: () => void): this; - on(event: string, listener: Function): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "close", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "close", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "close", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "close", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "close", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "close", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + } /** * Asynchronous rename. @@ -2503,85 +2503,85 @@ declare module "fs" { * @param newPath * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function rename(oldPath: string, newPath: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function rename(oldPath: string, newPath: string, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Synchronous rename * @param oldPath * @param newPath */ - export function renameSync(oldPath: string, newPath: string): void; - export function truncate(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function truncate(path: string | Buffer, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function truncateSync(path: string | Buffer, len?: number): void; - export function ftruncate(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function ftruncate(fd: number, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function ftruncateSync(fd: number, len?: number): void; - export function chown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function chownSync(path: string | Buffer, uid: number, gid: number): void; - export function fchown(fd: number, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function fchownSync(fd: number, uid: number, gid: number): void; - export function lchown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function lchownSync(path: string | Buffer, uid: number, gid: number): void; - export function chmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function chmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function chmodSync(path: string | Buffer, mode: number): void; - export function chmodSync(path: string | Buffer, mode: string): void; - export function fchmod(fd: number, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function fchmod(fd: number, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function fchmodSync(fd: number, mode: number): void; - export function fchmodSync(fd: number, mode: string): void; - export function lchmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function lchmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function lchmodSync(path: string | Buffer, mode: number): void; - export function lchmodSync(path: string | Buffer, mode: string): void; - export function stat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; - export function lstat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; - export function fstat(fd: number, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; - export function statSync(path: string | Buffer): Stats; - export function lstatSync(path: string | Buffer): Stats; - export function fstatSync(fd: number): Stats; - export function link(srcpath: string | Buffer, dstpath: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function linkSync(srcpath: string | Buffer, dstpath: string | Buffer): void; - export function symlink(srcpath: string | Buffer, dstpath: string | Buffer, type?: string, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function symlinkSync(srcpath: string | Buffer, dstpath: string | Buffer, type?: string): void; - export function readlink(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, linkString: string) => any): void; - export function readlinkSync(path: string | Buffer): string; - export function realpath(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; - export function realpath(path: string | Buffer, cache: { [path: string]: string }, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; - export function realpathSync(path: string | Buffer, cache?: { [path: string]: string }): string; + export function renameSync(oldPath: string, newPath: string): void; + export function truncate(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function truncate(path: string | Buffer, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function truncateSync(path: string | Buffer, len?: number): void; + export function ftruncate(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function ftruncate(fd: number, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function ftruncateSync(fd: number, len?: number): void; + export function chown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chownSync(path: string | Buffer, uid: number, gid: number): void; + export function fchown(fd: number, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchownSync(fd: number, uid: number, gid: number): void; + export function lchown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchownSync(path: string | Buffer, uid: number, gid: number): void; + export function chmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chmodSync(path: string | Buffer, mode: number): void; + export function chmodSync(path: string | Buffer, mode: string): void; + export function fchmod(fd: number, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchmod(fd: number, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchmodSync(fd: number, mode: number): void; + export function fchmodSync(fd: number, mode: string): void; + export function lchmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchmodSync(path: string | Buffer, mode: number): void; + export function lchmodSync(path: string | Buffer, mode: string): void; + export function stat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function lstat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function fstat(fd: number, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function statSync(path: string | Buffer): Stats; + export function lstatSync(path: string | Buffer): Stats; + export function fstatSync(fd: number): Stats; + export function link(srcpath: string | Buffer, dstpath: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function linkSync(srcpath: string | Buffer, dstpath: string | Buffer): void; + export function symlink(srcpath: string | Buffer, dstpath: string | Buffer, type?: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function symlinkSync(srcpath: string | Buffer, dstpath: string | Buffer, type?: string): void; + export function readlink(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, linkString: string) => any): void; + export function readlinkSync(path: string | Buffer): string; + export function realpath(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; + export function realpath(path: string | Buffer, cache: { [path: string]: string }, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; + export function realpathSync(path: string | Buffer, cache?: { [path: string]: string }): string; /** * Asynchronous unlink - deletes the file specified in {path} * * @param path * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function unlink(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function unlink(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Synchronous unlink - deletes the file specified in {path} * * @param path */ - export function unlinkSync(path: string | Buffer): void; + export function unlinkSync(path: string | Buffer): void; /** * Asynchronous rmdir - removes the directory specified in {path} * * @param path * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function rmdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function rmdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Synchronous rmdir - removes the directory specified in {path} * * @param path */ - export function rmdirSync(path: string | Buffer): void; + export function rmdirSync(path: string | Buffer): void; /** * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * * @param path * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function mkdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * @@ -2589,7 +2589,7 @@ declare module "fs" { * @param mode * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdir(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function mkdir(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * @@ -2597,7 +2597,7 @@ declare module "fs" { * @param mode * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdir(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function mkdir(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Synchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * @@ -2605,7 +2605,7 @@ declare module "fs" { * @param mode * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdirSync(path: string | Buffer, mode?: number): void; + export function mkdirSync(path: string | Buffer, mode?: number): void; /** * Synchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * @@ -2613,48 +2613,48 @@ declare module "fs" { * @param mode * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdirSync(path: string | Buffer, mode?: string): void; + export function mkdirSync(path: string | Buffer, mode?: string): void; /** * Asynchronous mkdtemp - Creates a unique temporary directory. Generates six random characters to be appended behind a required prefix to create a unique temporary directory. * * @param prefix * @param callback The created folder path is passed as a string to the callback's second parameter. */ - export function mkdtemp(prefix: string, callback?: (err: NodeJS.ErrnoException, folder: string) => void): void; + export function mkdtemp(prefix: string, callback?: (err: NodeJS.ErrnoException, folder: string) => void): void; /** * Synchronous mkdtemp - Creates a unique temporary directory. Generates six random characters to be appended behind a required prefix to create a unique temporary directory. * * @param prefix * @returns Returns the created folder path. */ - export function mkdtempSync(prefix: string): string; - export function readdir(path: string | Buffer, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; - export function readdir(path: string | Buffer, options: string | {}, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; - export function readdirSync(path: string | Buffer, options?: string | {}): string[]; - export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function closeSync(fd: number): void; - export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; - export function open(path: string | Buffer, flags: string | number, mode: number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; - export function openSync(path: string | Buffer, flags: string | number, mode?: number): number; - export function utimes(path: string | Buffer, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function utimes(path: string | Buffer, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function utimesSync(path: string | Buffer, atime: number, mtime: number): void; - export function utimesSync(path: string | Buffer, atime: Date, mtime: Date): void; - export function futimes(fd: number, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function futimes(fd: number, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function futimesSync(fd: number, atime: number, mtime: number): void; - export function futimesSync(fd: number, atime: Date, mtime: Date): void; - export function fsync(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function fsyncSync(fd: number): void; - export function write(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; - export function write(fd: number, buffer: Buffer, offset: number, length: number, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; - export function write(fd: number, data: any, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - export function write(fd: number, data: any, offset: number, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - export function write(fd: number, data: any, offset: number, encoding: string, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - export function writeSync(fd: number, buffer: Buffer, offset: number, length: number, position?: number | null): number; - export function writeSync(fd: number, data: any, position?: number | null, enconding?: string): number; - export function read(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: Buffer) => void): void; - export function readSync(fd: number, buffer: Buffer, offset: number, length: number, position: number | null): number; + export function mkdtempSync(prefix: string): string; + export function readdir(path: string | Buffer, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; + export function readdir(path: string | Buffer, options: string | {}, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; + export function readdirSync(path: string | Buffer, options?: string | {}): string[]; + export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function closeSync(fd: number): void; + export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; + export function open(path: string | Buffer, flags: string | number, mode: number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; + export function openSync(path: string | Buffer, flags: string | number, mode?: number): number; + export function utimes(path: string | Buffer, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function utimes(path: string | Buffer, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function utimesSync(path: string | Buffer, atime: number, mtime: number): void; + export function utimesSync(path: string | Buffer, atime: Date, mtime: Date): void; + export function futimes(fd: number, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function futimes(fd: number, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function futimesSync(fd: number, atime: number, mtime: number): void; + export function futimesSync(fd: number, atime: Date, mtime: Date): void; + export function fsync(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fsyncSync(fd: number): void; + export function write(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; + export function write(fd: number, buffer: Buffer, offset: number, length: number, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; + export function write(fd: number, data: any, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function write(fd: number, data: any, offset: number, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function write(fd: number, data: any, offset: number, encoding: string, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function writeSync(fd: number, buffer: Buffer, offset: number, length: number, position?: number | null): number; + export function writeSync(fd: number, data: any, position?: number | null, enconding?: string): number; + export function read(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: Buffer) => void): void; + export function readSync(fd: number, buffer: Buffer, offset: number, length: number, position: number | null): number; /** * Asynchronous readFile - Asynchronously reads the entire contents of a file. * @@ -2662,9 +2662,9 @@ declare module "fs" { * @param encoding * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. */ - export function readFile(filename: string, encoding: null, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; - export function readFile(filename: string, encoding: string, callback: (err: NodeJS.ErrnoException, data: string) => void): void; - export function readFile(filename: string, encoding: string | null, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; + export function readFile(filename: string, encoding: null, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, encoding: string, callback: (err: NodeJS.ErrnoException, data: string) => void): void; + export function readFile(filename: string, encoding: string | null, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; /** * Asynchronous readFile - Asynchronously reads the entire contents of a file. * @@ -2672,9 +2672,9 @@ declare module "fs" { * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFile returns a string; otherwise it returns a Buffer. * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. */ - export function readFile(filename: string, options: { encoding: null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; - export function readFile(filename: string, options: { encoding: string; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string) => void): void; - export function readFile(filename: string, options: { encoding: string | null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; + export function readFile(filename: string, options: { encoding: null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, options: { encoding: string; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string) => void): void; + export function readFile(filename: string, options: { encoding: string | null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; /** * Asynchronous readFile - Asynchronously reads the entire contents of a file. * @@ -2682,213 +2682,213 @@ declare module "fs" { * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFile returns a string; otherwise it returns a Buffer. * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. */ - export function readFile(filename: string, options: { flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, options: { flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; /** * Asynchronous readFile - Asynchronously reads the entire contents of a file. * * @param fileName * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. */ - export function readFile(filename: string, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; /** * Synchronous readFile - Synchronously reads the entire contents of a file. * * @param fileName * @param encoding */ - export function readFileSync(filename: string, encoding: null): Buffer; - export function readFileSync(filename: string, encoding: string): string; - export function readFileSync(filename: string, encoding: string | null): string | Buffer; + export function readFileSync(filename: string, encoding: null): Buffer; + export function readFileSync(filename: string, encoding: string): string; + export function readFileSync(filename: string, encoding: string | null): string | Buffer; /** * Synchronous readFile - Synchronously reads the entire contents of a file. * * @param fileName * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFileSync returns a string; otherwise it returns a Buffer. */ - export function readFileSync(filename: string, options: { encoding: null; flag?: string; }): Buffer; - export function readFileSync(filename: string, options: { encoding: string; flag?: string; }): string; - export function readFileSync(filename: string, options: { encoding: string | null; flag?: string; }): string | Buffer; + export function readFileSync(filename: string, options: { encoding: null; flag?: string; }): Buffer; + export function readFileSync(filename: string, options: { encoding: string; flag?: string; }): string; + export function readFileSync(filename: string, options: { encoding: string | null; flag?: string; }): string | Buffer; /** * Synchronous readFile - Synchronously reads the entire contents of a file. * * @param fileName * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFileSync returns a string; otherwise it returns a Buffer. */ - export function readFileSync(filename: string, options?: { flag?: string; }): Buffer; - export function writeFile(filename: string | number, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; - export function writeFile(filename: string | number, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; - export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; - export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; - export function writeFileSync(filename: string | number, data: any, encoding: string): void; - export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; - export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; - export function appendFile(filename: string, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; - export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; - export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; - export function appendFile(filename: string, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; - export function appendFileSync(filename: string, data: any, encoding: string): void; - export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; - export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; - export function watchFile(filename: string, listener: (curr: Stats, prev: Stats) => void): void; - export function watchFile(filename: string, options: { persistent?: boolean; interval?: number; }, listener: (curr: Stats, prev: Stats) => void): void; - export function unwatchFile(filename: string, listener?: (curr: Stats, prev: Stats) => void): void; - export function watch(filename: string, listener?: (event: string, filename: string) => any): FSWatcher; - export function watch(filename: string, encoding: string, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; - export function watch(filename: string, options: { persistent?: boolean; recursive?: boolean; encoding?: string }, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; - export function exists(path: string | Buffer, callback?: (exists: boolean) => void): void; - export function existsSync(path: string | Buffer): boolean; + export function readFileSync(filename: string, options?: { flag?: string; }): Buffer; + export function writeFile(filename: string | number, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string | number, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFileSync(filename: string | number, data: any, encoding: string): void; + export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; + export function appendFile(filename: string, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFileSync(filename: string, data: any, encoding: string): void; + export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; + export function watchFile(filename: string, listener: (curr: Stats, prev: Stats) => void): void; + export function watchFile(filename: string, options: { persistent?: boolean; interval?: number; }, listener: (curr: Stats, prev: Stats) => void): void; + export function unwatchFile(filename: string, listener?: (curr: Stats, prev: Stats) => void): void; + export function watch(filename: string, listener?: (event: string, filename: string) => any): FSWatcher; + export function watch(filename: string, encoding: string, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; + export function watch(filename: string, options: { persistent?: boolean; recursive?: boolean; encoding?: string }, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; + export function exists(path: string | Buffer, callback?: (exists: boolean) => void): void; + export function existsSync(path: string | Buffer): boolean; - export namespace constants { - // File Access Constants + export namespace constants { + // File Access Constants - /** Constant for fs.access(). File is visible to the calling process. */ - export const F_OK: number; + /** Constant for fs.access(). File is visible to the calling process. */ + export const F_OK: number; - /** Constant for fs.access(). File can be read by the calling process. */ - export const R_OK: number; + /** Constant for fs.access(). File can be read by the calling process. */ + export const R_OK: number; - /** Constant for fs.access(). File can be written by the calling process. */ - export const W_OK: number; + /** Constant for fs.access(). File can be written by the calling process. */ + export const W_OK: number; - /** Constant for fs.access(). File can be executed by the calling process. */ - export const X_OK: number; + /** Constant for fs.access(). File can be executed by the calling process. */ + export const X_OK: number; - // File Open Constants + // File Open Constants - /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ - export const O_RDONLY: number; + /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ + export const O_RDONLY: number; - /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ - export const O_WRONLY: number; + /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ + export const O_WRONLY: number; - /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ - export const O_RDWR: number; + /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ + export const O_RDWR: number; - /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ - export const O_CREAT: number; + /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ + export const O_CREAT: number; - /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ - export const O_EXCL: number; + /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ + export const O_EXCL: number; - /** Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one). */ - export const O_NOCTTY: number; + /** Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one). */ + export const O_NOCTTY: number; - /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ - export const O_TRUNC: number; + /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ + export const O_TRUNC: number; - /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ - export const O_APPEND: number; + /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ + export const O_APPEND: number; - /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ - export const O_DIRECTORY: number; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ + export const O_DIRECTORY: number; - /** Constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only. */ - export const O_NOATIME: number; + /** Constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only. */ + export const O_NOATIME: number; - /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ - export const O_NOFOLLOW: number; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ + export const O_NOFOLLOW: number; - /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ - export const O_SYNC: number; + /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ + export const O_SYNC: number; - /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ - export const O_SYMLINK: number; + /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ + export const O_SYMLINK: number; - /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ - export const O_DIRECT: number; + /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ + export const O_DIRECT: number; - /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ - export const O_NONBLOCK: number; + /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ + export const O_NONBLOCK: number; - // File Type Constants + // File Type Constants - /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ - export const S_IFMT: number; + /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ + export const S_IFMT: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ - export const S_IFREG: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ + export const S_IFREG: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ - export const S_IFDIR: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ + export const S_IFDIR: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ - export const S_IFCHR: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ + export const S_IFCHR: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ - export const S_IFBLK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ + export const S_IFBLK: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ - export const S_IFIFO: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ + export const S_IFIFO: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ - export const S_IFLNK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ + export const S_IFLNK: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ - export const S_IFSOCK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ + export const S_IFSOCK: number; - // File Mode Constants + // File Mode Constants - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ - export const S_IRWXU: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ + export const S_IRWXU: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ - export const S_IRUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ + export const S_IRUSR: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ - export const S_IWUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ + export const S_IWUSR: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ - export const S_IXUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ + export const S_IXUSR: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ - export const S_IRWXG: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ + export const S_IRWXG: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ - export const S_IRGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ + export const S_IRGRP: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ - export const S_IWGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ + export const S_IWGRP: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ - export const S_IXGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ + export const S_IXGRP: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ - export const S_IRWXO: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ + export const S_IRWXO: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ - export const S_IROTH: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ + export const S_IROTH: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ - export const S_IWOTH: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ + export const S_IWOTH: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ - export const S_IXOTH: number; - } + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ + export const S_IXOTH: number; + } - /** Tests a user's permissions for the file specified by path. */ - export function access(path: string | Buffer, callback: (err: NodeJS.ErrnoException) => void): void; - export function access(path: string | Buffer, mode: number, callback: (err: NodeJS.ErrnoException) => void): void; - /** Synchronous version of fs.access. This throws if any accessibility checks fail, and does nothing otherwise. */ - export function accessSync(path: string | Buffer, mode?: number): void; - export function createReadStream(path: string | Buffer, options?: { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - end?: number; - }): ReadStream; - export function createWriteStream(path: string | Buffer, options?: { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - }): WriteStream; - export function fdatasync(fd: number, callback: Function): void; - export function fdatasyncSync(fd: number): void; + /** Tests a user's permissions for the file specified by path. */ + export function access(path: string | Buffer, callback: (err: NodeJS.ErrnoException) => void): void; + export function access(path: string | Buffer, mode: number, callback: (err: NodeJS.ErrnoException) => void): void; + /** Synchronous version of fs.access. This throws if any accessibility checks fail, and does nothing otherwise. */ + export function accessSync(path: string | Buffer, mode?: number): void; + export function createReadStream(path: string | Buffer, options?: { + flags?: string; + encoding?: string; + fd?: number; + mode?: number; + autoClose?: boolean; + start?: number; + end?: number; + }): ReadStream; + export function createWriteStream(path: string | Buffer, options?: { + flags?: string; + encoding?: string; + fd?: number; + mode?: number; + autoClose?: boolean; + start?: number; + }): WriteStream; + export function fdatasync(fd: number, callback: Function): void; + export function fdatasyncSync(fd: number): void; } declare module "path" { @@ -2896,28 +2896,28 @@ declare module "path" { /** * A parsed path object generated by path.parse() or consumed by path.format(). */ - export interface ParsedPath { + export interface ParsedPath { /** * The root of the path such as '/' or 'c:\' */ - root: string; + root: string; /** * The full directory path such as '/home/user/dir' or 'c:\path\dir' */ - dir: string; + dir: string; /** * The file name including extension (if any) such as 'index.html' */ - base: string; + base: string; /** * The file extension (if any) such as '.html' */ - ext: string; + ext: string; /** * The file name without extension (if any) such as 'index' */ - name: string; - } + name: string; + } /** * Normalize a string path, reducing '..' and '.' parts. @@ -2925,14 +2925,14 @@ declare module "path" { * * @param p string path to normalize. */ - export function normalize(p: string): string; + export function normalize(p: string): string; /** * Join all arguments together and normalize the resulting path. * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown. * * @param paths paths to join. */ - export function join(...paths: string[]): string; + export function join(...paths: string[]): string; /** * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. * @@ -2942,13 +2942,13 @@ declare module "path" { * * @param pathSegments string paths to join. Non-string arguments are ignored. */ - export function resolve(...pathSegments: any[]): string; + export function resolve(...pathSegments: any[]): string; /** * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. * * @param path path to test. */ - export function isAbsolute(path: string): boolean; + export function isAbsolute(path: string): boolean; /** * Solve the relative path from {from} to {to}. * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. @@ -2956,13 +2956,13 @@ declare module "path" { * @param from * @param to */ - export function relative(from: string, to: string): string; + export function relative(from: string, to: string): string; /** * Return the directory name of a path. Similar to the Unix dirname command. * * @param p the path to evaluate. */ - export function dirname(p: string): string; + export function dirname(p: string): string; /** * Return the last portion of a path. Similar to the Unix basename command. * Often used to extract the file name from a fully qualified path. @@ -2970,176 +2970,176 @@ declare module "path" { * @param p the path to evaluate. * @param ext optionally, an extension to remove from the result. */ - export function basename(p: string, ext?: string): string; + export function basename(p: string, ext?: string): string; /** * Return the extension of the path, from the last '.' to end of string in the last portion of the path. * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string * * @param p the path to evaluate. */ - export function extname(p: string): string; + export function extname(p: string): string; /** * The platform-specific file separator. '\\' or '/'. */ - export var sep: string; + export var sep: string; /** * The platform-specific file delimiter. ';' or ':'. */ - export var delimiter: string; + export var delimiter: string; /** * Returns an object from a path string - the opposite of format(). * * @param pathString path to evaluate. */ - export function parse(pathString: string): ParsedPath; + export function parse(pathString: string): ParsedPath; /** * Returns a path string from an object - the opposite of parse(). * * @param pathString path to evaluate. */ - export function format(pathObject: ParsedPath): string; + export function format(pathObject: ParsedPath): string; - export module posix { - export function normalize(p: string): string; - export function join(...paths: any[]): string; - export function resolve(...pathSegments: any[]): string; - export function isAbsolute(p: string): boolean; - export function relative(from: string, to: string): string; - export function dirname(p: string): string; - export function basename(p: string, ext?: string): string; - export function extname(p: string): string; - export var sep: string; - export var delimiter: string; - export function parse(p: string): ParsedPath; - export function format(pP: ParsedPath): string; - } + export module posix { + export function normalize(p: string): string; + export function join(...paths: any[]): string; + export function resolve(...pathSegments: any[]): string; + export function isAbsolute(p: string): boolean; + export function relative(from: string, to: string): string; + export function dirname(p: string): string; + export function basename(p: string, ext?: string): string; + export function extname(p: string): string; + export var sep: string; + export var delimiter: string; + export function parse(p: string): ParsedPath; + export function format(pP: ParsedPath): string; + } - export module win32 { - export function normalize(p: string): string; - export function join(...paths: any[]): string; - export function resolve(...pathSegments: any[]): string; - export function isAbsolute(p: string): boolean; - export function relative(from: string, to: string): string; - export function dirname(p: string): string; - export function basename(p: string, ext?: string): string; - export function extname(p: string): string; - export var sep: string; - export var delimiter: string; - export function parse(p: string): ParsedPath; - export function format(pP: ParsedPath): string; - } + export module win32 { + export function normalize(p: string): string; + export function join(...paths: any[]): string; + export function resolve(...pathSegments: any[]): string; + export function isAbsolute(p: string): boolean; + export function relative(from: string, to: string): string; + export function dirname(p: string): string; + export function basename(p: string, ext?: string): string; + export function extname(p: string): string; + export var sep: string; + export var delimiter: string; + export function parse(p: string): ParsedPath; + export function format(pP: ParsedPath): string; + } } declare module "string_decoder" { - export interface NodeStringDecoder { - write(buffer: Buffer): string; - end(buffer?: Buffer): string; - } - export var StringDecoder: { - new(encoding?: string): NodeStringDecoder; - }; + export interface NodeStringDecoder { + write(buffer: Buffer): string; + end(buffer?: Buffer): string; + } + export var StringDecoder: { + new(encoding?: string): NodeStringDecoder; + }; } declare module "tls" { - import * as crypto from "crypto"; - import * as net from "net"; - import * as stream from "stream"; + import * as crypto from "crypto"; + import * as net from "net"; + import * as stream from "stream"; - var CLIENT_RENEG_LIMIT: number; - var CLIENT_RENEG_WINDOW: number; + var CLIENT_RENEG_LIMIT: number; + var CLIENT_RENEG_WINDOW: number; - export interface Certificate { + export interface Certificate { /** * Country code. */ - C: string; + C: string; /** * Street. */ - ST: string; + ST: string; /** * Locality. */ - L: string; + L: string; /** * Organization. */ - O: string; + O: string; /** * Organizational unit. */ - OU: string; + OU: string; /** * Common name. */ - CN: string; - } + CN: string; + } - export interface PeerCertificate { - subject: Certificate; - issuer: Certificate; - subjectaltname: string; - infoAccess: { [index: string]: string[] }; - modulus: string; - exponent: string; - valid_from: string; - valid_to: string; - fingerprint: string; - ext_key_usage: string[]; - serialNumber: string; - raw: Buffer; - } + export interface PeerCertificate { + subject: Certificate; + issuer: Certificate; + subjectaltname: string; + infoAccess: { [index: string]: string[] }; + modulus: string; + exponent: string; + valid_from: string; + valid_to: string; + fingerprint: string; + ext_key_usage: string[]; + serialNumber: string; + raw: Buffer; + } - export interface DetailedPeerCertificate extends PeerCertificate { - issuerCertificate: DetailedPeerCertificate; - } + export interface DetailedPeerCertificate extends PeerCertificate { + issuerCertificate: DetailedPeerCertificate; + } - export interface CipherNameAndProtocol { + export interface CipherNameAndProtocol { /** * The cipher name. */ - name: string; + name: string; /** * SSL/TLS protocol version. */ - version: string; - } + version: string; + } - export class TLSSocket extends net.Socket { + export class TLSSocket extends net.Socket { /** * Construct a new tls.TLSSocket object from an existing TCP socket. */ - constructor(socket: net.Socket, options?: { + constructor(socket: net.Socket, options?: { /** * An optional TLS context object from tls.createSecureContext() */ - secureContext?: SecureContext, + secureContext?: SecureContext, /** * If true the TLS socket will be instantiated in server-mode. * Defaults to false. */ - isServer?: boolean, + isServer?: boolean, /** * An optional net.Server instance. */ - server?: net.Server, + server?: net.Server, /** * If true the server will request a certificate from clients that * connect and attempt to verify that certificate. Defaults to * false. */ - requestCert?: boolean, + requestCert?: boolean, /** * If true the server will reject any connection which is not * authorized with the list of supplied CAs. This option only has an * effect if requestCert is true. Defaults to false. */ - rejectUnauthorized?: boolean, + rejectUnauthorized?: boolean, /** * An array of strings or a Buffer naming possible NPN protocols. * (Protocols should be ordered by their priority.) */ - NPNProtocols?: string[] | Buffer, + NPNProtocols?: string[] | Buffer, /** * An array of strings or a Buffer naming possible ALPN protocols. * (Protocols should be ordered by their priority.) When the server @@ -3147,7 +3147,7 @@ declare module "tls" { * precedence over NPN and the server does not send an NPN extension * to the client. */ - ALPNProtocols?: string[] | Buffer, + ALPNProtocols?: string[] | Buffer, /** * SNICallback(servername, cb) A function that will be * called if the client supports SNI TLS extension. Two arguments @@ -3157,44 +3157,44 @@ declare module "tls" { * SecureContext.) If SNICallback wasn't provided the default callback * with high-level API will be used (see below). */ - SNICallback?: Function, + SNICallback?: Function, /** * An optional Buffer instance containing a TLS session. */ - session?: Buffer, + session?: Buffer, /** * If true, specifies that the OCSP status request extension will be * added to the client hello and an 'OCSPResponse' event will be * emitted on the socket before establishing a secure communication */ - requestOCSP?: boolean - }); + requestOCSP?: boolean + }); /** * Returns the bound address, the address family name and port of the underlying socket as reported by * the operating system. * @returns {any} - An object with three properties, e.g. { port: 12346, family: 'IPv4', address: '127.0.0.1' }. */ - address(): { port: number; family: string; address: string }; + address(): { port: number; family: string; address: string }; /** * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false. */ - authorized: boolean; + authorized: boolean; /** * The reason why the peer's certificate has not been verified. * This property becomes available only when tlsSocket.authorized === false. */ - authorizationError: Error; + authorizationError: Error; /** * Static boolean value, always true. * May be used to distinguish TLS sockets from regular ones. */ - encrypted: boolean; + encrypted: boolean; /** * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection. * @returns {CipherNameAndProtocol} - Returns an object representing the cipher name * and the SSL/TLS protocol version of the current connection. */ - getCipher(): CipherNameAndProtocol; + getCipher(): CipherNameAndProtocol; /** * Returns an object representing the peer's certificate. * The returned object has some properties corresponding to the field of the certificate. @@ -3204,41 +3204,41 @@ declare module "tls" { * @param {boolean} detailed - If true; the full chain with issuer property will be returned. * @returns {PeerCertificate | DetailedPeerCertificate} - An object representing the peer's certificate. */ - getPeerCertificate(detailed: true): DetailedPeerCertificate; - getPeerCertificate(detailed?: false): PeerCertificate; - getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; + getPeerCertificate(detailed: true): DetailedPeerCertificate; + getPeerCertificate(detailed?: false): PeerCertificate; + getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; /** * Could be used to speed up handshake establishment when reconnecting to the server. * @returns {any} - ASN.1 encoded TLS session or undefined if none was negotiated. */ - getSession(): any; + getSession(): any; /** * NOTE: Works only with client TLS sockets. * Useful only for debugging, for session reuse provide session option to tls.connect(). * @returns {any} - TLS session ticket or undefined if none was negotiated. */ - getTLSTicket(): any; + getTLSTicket(): any; /** * The string representation of the local IP address. */ - localAddress: string; + localAddress: string; /** * The numeric representation of the local port. */ - localPort: number; + localPort: number; /** * The string representation of the remote IP address. * For example, '74.125.127.100' or '2001:4860:a005::68'. */ - remoteAddress: string; + remoteAddress: string; /** * The string representation of the remote IP family. 'IPv4' or 'IPv6'. */ - remoteFamily: string; + remoteFamily: string; /** * The numeric representation of the remote port. For example, 443. */ - remotePort: number; + remotePort: number; /** * Initiate TLS renegotiation process. * @@ -3249,7 +3249,7 @@ declare module "tls" { * @param {Function} callback - callback(err) will be executed with null as err, once the renegotiation * is successfully completed. */ - renegotiate(options: TlsOptions, callback: (err: Error) => any): any; + renegotiate(options: TlsOptions, callback: (err: Error) => any): any; /** * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512). * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by @@ -3260,94 +3260,94 @@ declare module "tls" { * @param {number} size - TLS fragment size (default and maximum value is: 16384, minimum is: 512). * @returns {boolean} - Returns true on success, false otherwise. */ - setMaxSendFragment(size: number): boolean; + setMaxSendFragment(size: number): boolean; /** * events.EventEmitter * 1. OCSPResponse * 2. secureConnect **/ - addListener(event: string, listener: Function): this; - addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - addListener(event: "secureConnect", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + addListener(event: "secureConnect", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "OCSPResponse", response: Buffer): boolean; - emit(event: "secureConnect"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "OCSPResponse", response: Buffer): boolean; + emit(event: "secureConnect"): boolean; - on(event: string, listener: Function): this; - on(event: "OCSPResponse", listener: (response: Buffer) => void): this; - on(event: "secureConnect", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "OCSPResponse", listener: (response: Buffer) => void): this; + on(event: "secureConnect", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "OCSPResponse", listener: (response: Buffer) => void): this; - once(event: "secureConnect", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "OCSPResponse", listener: (response: Buffer) => void): this; + once(event: "secureConnect", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependListener(event: "secureConnect", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependListener(event: "secureConnect", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependOnceListener(event: "secureConnect", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependOnceListener(event: "secureConnect", listener: () => void): this; + } - export interface TlsOptions { - host?: string; - port?: number; - pfx?: string | Buffer[]; - key?: string | string[] | Buffer | any[]; - passphrase?: string; - cert?: string | string[] | Buffer | Buffer[]; - ca?: string | string[] | Buffer | Buffer[]; - crl?: string | string[]; - ciphers?: string; - honorCipherOrder?: boolean; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: string[] | Buffer; - SNICallback?: (servername: string, cb: (err: Error, ctx: SecureContext) => any) => any; - ecdhCurve?: string; - dhparam?: string | Buffer; - handshakeTimeout?: number; - ALPNProtocols?: string[] | Buffer; - sessionTimeout?: number; - ticketKeys?: any; - sessionIdContext?: string; - secureProtocol?: string; - } + export interface TlsOptions { + host?: string; + port?: number; + pfx?: string | Buffer[]; + key?: string | string[] | Buffer | any[]; + passphrase?: string; + cert?: string | string[] | Buffer | Buffer[]; + ca?: string | string[] | Buffer | Buffer[]; + crl?: string | string[]; + ciphers?: string; + honorCipherOrder?: boolean; + requestCert?: boolean; + rejectUnauthorized?: boolean; + NPNProtocols?: string[] | Buffer; + SNICallback?: (servername: string, cb: (err: Error, ctx: SecureContext) => any) => any; + ecdhCurve?: string; + dhparam?: string | Buffer; + handshakeTimeout?: number; + ALPNProtocols?: string[] | Buffer; + sessionTimeout?: number; + ticketKeys?: any; + sessionIdContext?: string; + secureProtocol?: string; + } - export interface ConnectionOptions { - host?: string; - port?: number; - socket?: net.Socket; - pfx?: string | Buffer - key?: string | string[] | Buffer | Buffer[]; - passphrase?: string; - cert?: string | string[] | Buffer | Buffer[]; - ca?: string | Buffer | (string | Buffer)[]; - rejectUnauthorized?: boolean; - NPNProtocols?: (string | Buffer)[]; - servername?: string; - path?: string; - ALPNProtocols?: (string | Buffer)[]; - checkServerIdentity?: (servername: string, cert: string | Buffer | (string | Buffer)[]) => any; - secureProtocol?: string; - secureContext?: Object; - session?: Buffer; - minDHSize?: number; - } + export interface ConnectionOptions { + host?: string; + port?: number; + socket?: net.Socket; + pfx?: string | Buffer + key?: string | string[] | Buffer | Buffer[]; + passphrase?: string; + cert?: string | string[] | Buffer | Buffer[]; + ca?: string | Buffer | (string | Buffer)[]; + rejectUnauthorized?: boolean; + NPNProtocols?: (string | Buffer)[]; + servername?: string; + path?: string; + ALPNProtocols?: (string | Buffer)[]; + checkServerIdentity?: (servername: string, cert: string | Buffer | (string | Buffer)[]) => any; + secureProtocol?: string; + secureContext?: Object; + session?: Buffer; + minDHSize?: number; + } - export interface Server extends net.Server { - close(callback?: Function): Server; - address(): { port: number; family: string; address: string; }; - addContext(hostName: string, credentials: { - key: string; - cert: string; - ca: string; - }): void; - maxConnections: number; - connections: number; + export interface Server extends net.Server { + close(callback?: Function): Server; + address(): { port: number; family: string; address: string; }; + addContext(hostName: string, credentials: { + key: string; + cert: string; + ca: string; + }): void; + maxConnections: number; + connections: number; /** * events.EventEmitter @@ -3357,286 +3357,286 @@ declare module "tls" { * 4. resumeSession * 5. secureConnection **/ - addListener(event: string, listener: Function): this; - addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - addListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - addListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + addListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + addListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; - emit(event: "newSession", sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void): boolean; - emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: Function): boolean; - emit(event: "resumeSession", sessionId: any, callback: (err: Error, sessionData: any) => void): boolean; - emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; + emit(event: "newSession", sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void): boolean; + emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: Function): boolean; + emit(event: "resumeSession", sessionId: any, callback: (err: Error, sessionData: any) => void): boolean; + emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; - on(event: string, listener: Function): this; - on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - on(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - on(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + on(event: string, listener: Function): this; + on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + on(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + on(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - once(event: string, listener: Function): this; - once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - once(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - once(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + once(event: string, listener: Function): this; + once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + once(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + once(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - prependListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + prependListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - prependOnceListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependOnceListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + prependOnceListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + } - export interface ClearTextStream extends stream.Duplex { - authorized: boolean; - authorizationError: Error; - getPeerCertificate(): any; - getCipher: { - name: string; - version: string; - }; - address: { - port: number; - family: string; - address: string; - }; - remoteAddress: string; - remotePort: number; - } + export interface ClearTextStream extends stream.Duplex { + authorized: boolean; + authorizationError: Error; + getPeerCertificate(): any; + getCipher: { + name: string; + version: string; + }; + address: { + port: number; + family: string; + address: string; + }; + remoteAddress: string; + remotePort: number; + } - export interface SecurePair { - encrypted: any; - cleartext: any; - } + export interface SecurePair { + encrypted: any; + cleartext: any; + } - export interface SecureContextOptions { - pfx?: string | Buffer; - key?: string | Buffer; - passphrase?: string; - cert?: string | Buffer; - ca?: string | Buffer; - crl?: string | string[] - ciphers?: string; - honorCipherOrder?: boolean; - } + export interface SecureContextOptions { + pfx?: string | Buffer; + key?: string | Buffer; + passphrase?: string; + cert?: string | Buffer; + ca?: string | Buffer; + crl?: string | string[] + ciphers?: string; + honorCipherOrder?: boolean; + } - export interface SecureContext { - context: any; - } + export interface SecureContext { + context: any; + } - export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; - export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket; - export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; - export function createSecureContext(details: SecureContextOptions): SecureContext; + export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; + export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket; + export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; + export function createSecureContext(details: SecureContextOptions): SecureContext; } declare module "crypto" { - export interface Certificate { - exportChallenge(spkac: string | Buffer): Buffer; - exportPublicKey(spkac: string | Buffer): Buffer; - verifySpkac(spkac: Buffer): boolean; - } - export var Certificate: { - new(): Certificate; - (): Certificate; - } + export interface Certificate { + exportChallenge(spkac: string | Buffer): Buffer; + exportPublicKey(spkac: string | Buffer): Buffer; + verifySpkac(spkac: Buffer): boolean; + } + export var Certificate: { + new(): Certificate; + (): Certificate; + } - export var fips: boolean; + export var fips: boolean; - export interface CredentialDetails { - pfx: string; - key: string; - passphrase: string; - cert: string; - ca: string | string[]; - crl: string | string[]; - ciphers: string; - } - export interface Credentials { context?: any; } - export function createCredentials(details: CredentialDetails): Credentials; - export function createHash(algorithm: string): Hash; - export function createHmac(algorithm: string, key: string | Buffer): Hmac; + export interface CredentialDetails { + pfx: string; + key: string; + passphrase: string; + cert: string; + ca: string | string[]; + crl: string | string[]; + ciphers: string; + } + export interface Credentials { context?: any; } + export function createCredentials(details: CredentialDetails): Credentials; + export function createHash(algorithm: string): Hash; + export function createHmac(algorithm: string, key: string | Buffer): Hmac; - type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1"; - type HexBase64Latin1Encoding = "latin1" | "hex" | "base64"; - type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary"; - type HexBase64BinaryEncoding = "binary" | "base64" | "hex"; - type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; + type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1"; + type HexBase64Latin1Encoding = "latin1" | "hex" | "base64"; + type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary"; + type HexBase64BinaryEncoding = "binary" | "base64" | "hex"; + type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; - export interface Hash extends NodeJS.ReadWriteStream { - update(data: string | Buffer): Hash; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hash; - digest(): Buffer; - digest(encoding: HexBase64Latin1Encoding): string; - } - export interface Hmac extends NodeJS.ReadWriteStream { - update(data: string | Buffer): Hmac; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hmac; - digest(): Buffer; - digest(encoding: HexBase64Latin1Encoding): string; - } - export function createCipher(algorithm: string, password: any): Cipher; - export function createCipheriv(algorithm: string, key: any, iv: any): Cipher; - export interface Cipher extends NodeJS.ReadWriteStream { - update(data: Buffer): Buffer; - update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer; - update(data: Buffer, input_encoding: any, output_encoding: HexBase64BinaryEncoding): string; - update(data: string, input_encoding: Utf8AsciiBinaryEncoding, output_encoding: HexBase64BinaryEncoding): string; - final(): Buffer; - final(output_encoding: string): string; - setAutoPadding(auto_padding?: boolean): void; - getAuthTag(): Buffer; - setAAD(buffer: Buffer): void; - } - export function createDecipher(algorithm: string, password: any): Decipher; - export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher; - export interface Decipher extends NodeJS.ReadWriteStream { - update(data: Buffer): Buffer; - update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer; - update(data: Buffer, input_encoding: any, output_encoding: Utf8AsciiBinaryEncoding): string; - update(data: string, input_encoding: HexBase64BinaryEncoding, output_encoding: Utf8AsciiBinaryEncoding): string; - final(): Buffer; - final(output_encoding: string): string; - setAutoPadding(auto_padding?: boolean): void; - setAuthTag(tag: Buffer): void; - setAAD(buffer: Buffer): void; - } - export function createSign(algorithm: string): Signer; - export interface Signer extends NodeJS.WritableStream { - update(data: string | Buffer): Signer; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Signer; - sign(private_key: string | { key: string; passphrase: string }): Buffer; - sign(private_key: string | { key: string; passphrase: string }, output_format: HexBase64Latin1Encoding): string; - } - export function createVerify(algorith: string): Verify; - export interface Verify extends NodeJS.WritableStream { - update(data: string | Buffer): Verify; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Verify; - verify(object: string, signature: Buffer): boolean; - verify(object: string, signature: string, signature_format: HexBase64Latin1Encoding): boolean; - } - export function createDiffieHellman(prime_length: number, generator?: number): DiffieHellman; - export function createDiffieHellman(prime: Buffer): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | Buffer): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman; - export interface DiffieHellman { - generateKeys(): Buffer; - generateKeys(encoding: HexBase64Latin1Encoding): string; - computeSecret(other_public_key: Buffer): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; - getPrime(): Buffer; - getPrime(encoding: HexBase64Latin1Encoding): string; - getGenerator(): Buffer; - getGenerator(encoding: HexBase64Latin1Encoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: HexBase64Latin1Encoding): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: HexBase64Latin1Encoding): string; - setPublicKey(public_key: Buffer): void; - setPublicKey(public_key: string, encoding: string): void; - setPrivateKey(private_key: Buffer): void; - setPrivateKey(private_key: string, encoding: string): void; - verifyError: number; - } - export function getDiffieHellman(group_name: string): DiffieHellman; - export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void; - export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer; - export function randomBytes(size: number): Buffer; - export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; - export function pseudoRandomBytes(size: number): Buffer; - export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFillSync(buffer: Buffer | Uint8Array, offset?: number, size?: number): Buffer; - export function randomFill(buffer: Buffer, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, callback: (err: Error, buf: Uint8Array) => void): void; - export function randomFill(buffer: Buffer, offset: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, offset: number, callback: (err: Error, buf: Uint8Array) => void): void; - export function randomFill(buffer: Buffer, offset: number, size: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, offset: number, size: number, callback: (err: Error, buf: Uint8Array) => void): void; - export interface RsaPublicKey { - key: string; - padding?: number; - } - export interface RsaPrivateKey { - key: string; - passphrase?: string, - padding?: number; - } - export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer - export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer - export function privateEncrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer - export function publicDecrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer - export function getCiphers(): string[]; - export function getCurves(): string[]; - export function getHashes(): string[]; - export interface ECDH { - generateKeys(): Buffer; - generateKeys(encoding: HexBase64Latin1Encoding): string; - generateKeys(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; - computeSecret(other_public_key: Buffer): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: HexBase64Latin1Encoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: HexBase64Latin1Encoding): string; - getPublicKey(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; - setPrivateKey(private_key: Buffer): void; - setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void; - } - export function createECDH(curve_name: string): ECDH; - export function timingSafeEqual(a: Buffer, b: Buffer): boolean; - export var DEFAULT_ENCODING: string; + export interface Hash extends NodeJS.ReadWriteStream { + update(data: string | Buffer): Hash; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hash; + digest(): Buffer; + digest(encoding: HexBase64Latin1Encoding): string; + } + export interface Hmac extends NodeJS.ReadWriteStream { + update(data: string | Buffer): Hmac; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hmac; + digest(): Buffer; + digest(encoding: HexBase64Latin1Encoding): string; + } + export function createCipher(algorithm: string, password: any): Cipher; + export function createCipheriv(algorithm: string, key: any, iv: any): Cipher; + export interface Cipher extends NodeJS.ReadWriteStream { + update(data: Buffer): Buffer; + update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer; + update(data: Buffer, input_encoding: any, output_encoding: HexBase64BinaryEncoding): string; + update(data: string, input_encoding: Utf8AsciiBinaryEncoding, output_encoding: HexBase64BinaryEncoding): string; + final(): Buffer; + final(output_encoding: string): string; + setAutoPadding(auto_padding?: boolean): void; + getAuthTag(): Buffer; + setAAD(buffer: Buffer): void; + } + export function createDecipher(algorithm: string, password: any): Decipher; + export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher; + export interface Decipher extends NodeJS.ReadWriteStream { + update(data: Buffer): Buffer; + update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer; + update(data: Buffer, input_encoding: any, output_encoding: Utf8AsciiBinaryEncoding): string; + update(data: string, input_encoding: HexBase64BinaryEncoding, output_encoding: Utf8AsciiBinaryEncoding): string; + final(): Buffer; + final(output_encoding: string): string; + setAutoPadding(auto_padding?: boolean): void; + setAuthTag(tag: Buffer): void; + setAAD(buffer: Buffer): void; + } + export function createSign(algorithm: string): Signer; + export interface Signer extends NodeJS.WritableStream { + update(data: string | Buffer): Signer; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Signer; + sign(private_key: string | { key: string; passphrase: string }): Buffer; + sign(private_key: string | { key: string; passphrase: string }, output_format: HexBase64Latin1Encoding): string; + } + export function createVerify(algorith: string): Verify; + export interface Verify extends NodeJS.WritableStream { + update(data: string | Buffer): Verify; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Verify; + verify(object: string, signature: Buffer): boolean; + verify(object: string, signature: string, signature_format: HexBase64Latin1Encoding): boolean; + } + export function createDiffieHellman(prime_length: number, generator?: number): DiffieHellman; + export function createDiffieHellman(prime: Buffer): DiffieHellman; + export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman; + export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | Buffer): DiffieHellman; + export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman; + export interface DiffieHellman { + generateKeys(): Buffer; + generateKeys(encoding: HexBase64Latin1Encoding): string; + computeSecret(other_public_key: Buffer): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; + getPrime(): Buffer; + getPrime(encoding: HexBase64Latin1Encoding): string; + getGenerator(): Buffer; + getGenerator(encoding: HexBase64Latin1Encoding): string; + getPublicKey(): Buffer; + getPublicKey(encoding: HexBase64Latin1Encoding): string; + getPrivateKey(): Buffer; + getPrivateKey(encoding: HexBase64Latin1Encoding): string; + setPublicKey(public_key: Buffer): void; + setPublicKey(public_key: string, encoding: string): void; + setPrivateKey(private_key: Buffer): void; + setPrivateKey(private_key: string, encoding: string): void; + verifyError: number; + } + export function getDiffieHellman(group_name: string): DiffieHellman; + export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void; + export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer; + export function randomBytes(size: number): Buffer; + export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; + export function pseudoRandomBytes(size: number): Buffer; + export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; + export function randomFillSync(buffer: Buffer | Uint8Array, offset?: number, size?: number): Buffer; + export function randomFill(buffer: Buffer, callback: (err: Error, buf: Buffer) => void): void; + export function randomFill(buffer: Uint8Array, callback: (err: Error, buf: Uint8Array) => void): void; + export function randomFill(buffer: Buffer, offset: number, callback: (err: Error, buf: Buffer) => void): void; + export function randomFill(buffer: Uint8Array, offset: number, callback: (err: Error, buf: Uint8Array) => void): void; + export function randomFill(buffer: Buffer, offset: number, size: number, callback: (err: Error, buf: Buffer) => void): void; + export function randomFill(buffer: Uint8Array, offset: number, size: number, callback: (err: Error, buf: Uint8Array) => void): void; + export interface RsaPublicKey { + key: string; + padding?: number; + } + export interface RsaPrivateKey { + key: string; + passphrase?: string, + padding?: number; + } + export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer + export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer + export function privateEncrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer + export function publicDecrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer + export function getCiphers(): string[]; + export function getCurves(): string[]; + export function getHashes(): string[]; + export interface ECDH { + generateKeys(): Buffer; + generateKeys(encoding: HexBase64Latin1Encoding): string; + generateKeys(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; + computeSecret(other_public_key: Buffer): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; + getPrivateKey(): Buffer; + getPrivateKey(encoding: HexBase64Latin1Encoding): string; + getPublicKey(): Buffer; + getPublicKey(encoding: HexBase64Latin1Encoding): string; + getPublicKey(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; + setPrivateKey(private_key: Buffer): void; + setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void; + } + export function createECDH(curve_name: string): ECDH; + export function timingSafeEqual(a: Buffer, b: Buffer): boolean; + export var DEFAULT_ENCODING: string; } declare module "stream" { - import * as events from "events"; + import * as events from "events"; - class internal extends events.EventEmitter { - pipe(destination: T, options?: { end?: boolean; }): T; - } + class internal extends events.EventEmitter { + pipe(destination: T, options?: { end?: boolean; }): T; + } - namespace internal { + namespace internal { - export class Stream extends internal { } + export class Stream extends internal { } - export interface ReadableOptions { - highWaterMark?: number; - encoding?: string; - objectMode?: boolean; - read?: (this: Readable, size?: number) => any; - } + export interface ReadableOptions { + highWaterMark?: number; + encoding?: string; + objectMode?: boolean; + read?: (this: Readable, size?: number) => any; + } - export class Readable extends Stream implements NodeJS.ReadableStream { - readable: boolean; - constructor(opts?: ReadableOptions); - _read(size: number): void; - read(size?: number): any; - setEncoding(encoding: string): this; - pause(): this; - resume(): this; - isPaused(): boolean; - pipe(destination: T, options?: { end?: boolean; }): T; - unpipe(destination?: T): this; - unshift(chunk: any): void; - wrap(oldStream: NodeJS.ReadableStream): Readable; - push(chunk: any, encoding?: string): boolean; + export class Readable extends Stream implements NodeJS.ReadableStream { + readable: boolean; + constructor(opts?: ReadableOptions); + _read(size: number): void; + read(size?: number): any; + setEncoding(encoding: string): this; + pause(): this; + resume(): this; + isPaused(): boolean; + pipe(destination: T, options?: { end?: boolean; }): T; + unpipe(destination?: T): this; + unshift(chunk: any): void; + wrap(oldStream: NodeJS.ReadableStream): Readable; + push(chunk: any, encoding?: string): boolean; /** * Event emitter @@ -3647,75 +3647,75 @@ declare module "stream" { * 4. readable * 5. error **/ - addListener(event: string, listener: Function): this; - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "end"): boolean; - emit(event: "readable"): boolean; - emit(event: "error", err: Error): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "data", chunk: Buffer | string): boolean; + emit(event: "end"): boolean; + emit(event: "readable"): boolean; + emit(event: "error", err: Error): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "end", listener: () => void): this; - on(event: "readable", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "end", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "end", listener: () => void): this; - once(event: "readable", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "end", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: string, listener: Function): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "data", listener: (chunk: Buffer | string) => void): this; - removeListener(event: "end", listener: () => void): this; - removeListener(event: "readable", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - } + removeListener(event: string, listener: Function): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "data", listener: (chunk: Buffer | string) => void): this; + removeListener(event: "end", listener: () => void): this; + removeListener(event: "readable", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + } - export interface WritableOptions { - highWaterMark?: number; - decodeStrings?: boolean; - objectMode?: boolean; - write?: (chunk: string | Buffer, encoding: string, callback: Function) => any; - writev?: (chunks: { chunk: string | Buffer, encoding: string }[], callback: Function) => any; - } + export interface WritableOptions { + highWaterMark?: number; + decodeStrings?: boolean; + objectMode?: boolean; + write?: (chunk: string | Buffer, encoding: string, callback: Function) => any; + writev?: (chunks: { chunk: string | Buffer, encoding: string }[], callback: Function) => any; + } - export class Writable extends Stream implements NodeJS.WritableStream { - writable: boolean; - constructor(opts?: WritableOptions); - _write(chunk: any, encoding: string, callback: Function): void; - write(chunk: any, cb?: Function): boolean; - write(chunk: any, encoding?: string, cb?: Function): boolean; - setDefaultEncoding(encoding: string): this; - end(): void; - end(chunk: any, cb?: Function): void; - end(chunk: any, encoding?: string, cb?: Function): void; + export class Writable extends Stream implements NodeJS.WritableStream { + writable: boolean; + constructor(opts?: WritableOptions); + _write(chunk: any, encoding: string, callback: Function): void; + write(chunk: any, cb?: Function): boolean; + write(chunk: any, encoding?: string, cb?: Function): boolean; + setDefaultEncoding(encoding: string): this; + end(): void; + end(chunk: any, cb?: Function): void; + end(chunk: any, encoding?: string, cb?: Function): void; /** * Event emitter @@ -3727,526 +3727,526 @@ declare module "stream" { * 5. pipe * 6. unpipe **/ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pipe", listener: (src: Readable) => void): this; - addListener(event: "unpipe", listener: (src: Readable) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: Readable) => void): this; + addListener(event: "unpipe", listener: (src: Readable) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "drain", chunk: Buffer | string): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "pipe", src: Readable): boolean; - emit(event: "unpipe", src: Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "drain", chunk: Buffer | string): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pipe", src: Readable): boolean; + emit(event: "unpipe", src: Readable): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pipe", listener: (src: Readable) => void): this; - on(event: "unpipe", listener: (src: Readable) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: Readable) => void): this; + on(event: "unpipe", listener: (src: Readable) => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pipe", listener: (src: Readable) => void): this; - once(event: "unpipe", listener: (src: Readable) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: Readable) => void): this; + once(event: "unpipe", listener: (src: Readable) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pipe", listener: (src: Readable) => void): this; - prependListener(event: "unpipe", listener: (src: Readable) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: Readable) => void): this; + prependListener(event: "unpipe", listener: (src: Readable) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; - removeListener(event: string, listener: Function): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "drain", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "finish", listener: () => void): this; - removeListener(event: "pipe", listener: (src: Readable) => void): this; - removeListener(event: "unpipe", listener: (src: Readable) => void): this; - } + removeListener(event: string, listener: Function): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "drain", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "finish", listener: () => void): this; + removeListener(event: "pipe", listener: (src: Readable) => void): this; + removeListener(event: "unpipe", listener: (src: Readable) => void): this; + } - export interface DuplexOptions extends ReadableOptions, WritableOptions { - allowHalfOpen?: boolean; - readableObjectMode?: boolean; - writableObjectMode?: boolean; - } + export interface DuplexOptions extends ReadableOptions, WritableOptions { + allowHalfOpen?: boolean; + readableObjectMode?: boolean; + writableObjectMode?: boolean; + } - // Note: Duplex extends both Readable and Writable. - export class Duplex extends Readable implements Writable { - writable: boolean; - constructor(opts?: DuplexOptions); - _write(chunk: any, encoding: string, callback: Function): void; - write(chunk: any, cb?: Function): boolean; - write(chunk: any, encoding?: string, cb?: Function): boolean; - setDefaultEncoding(encoding: string): this; - end(): void; - end(chunk: any, cb?: Function): void; - end(chunk: any, encoding?: string, cb?: Function): void; - } + // Note: Duplex extends both Readable and Writable. + export class Duplex extends Readable implements Writable { + writable: boolean; + constructor(opts?: DuplexOptions); + _write(chunk: any, encoding: string, callback: Function): void; + write(chunk: any, cb?: Function): boolean; + write(chunk: any, encoding?: string, cb?: Function): boolean; + setDefaultEncoding(encoding: string): this; + end(): void; + end(chunk: any, cb?: Function): void; + end(chunk: any, encoding?: string, cb?: Function): void; + } - export interface TransformOptions extends DuplexOptions { - transform?: (chunk: string | Buffer, encoding: string, callback: Function) => any; - flush?: (callback: Function) => any; - } + export interface TransformOptions extends DuplexOptions { + transform?: (chunk: string | Buffer, encoding: string, callback: Function) => any; + flush?: (callback: Function) => any; + } - export class Transform extends Duplex { - constructor(opts?: TransformOptions); - _transform(chunk: any, encoding: string, callback: Function): void; - } + export class Transform extends Duplex { + constructor(opts?: TransformOptions); + _transform(chunk: any, encoding: string, callback: Function): void; + } - export class PassThrough extends Transform { } - } + export class PassThrough extends Transform { } + } - export = internal; + export = internal; } declare module "util" { - export interface InspectOptions extends NodeJS.InspectOptions { } - export function format(format: any, ...param: any[]): string; - export function debug(string: string): void; - export function error(...param: any[]): void; - export function puts(...param: any[]): void; - export function print(...param: any[]): void; - export function log(string: string): void; - export function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; - export function inspect(object: any, options: InspectOptions): string; - export function isArray(object: any): object is any[]; - export function isRegExp(object: any): object is RegExp; - export function isDate(object: any): object is Date; - export function isError(object: any): object is Error; - export function inherits(constructor: any, superConstructor: any): void; - export function debuglog(key: string): (msg: string, ...param: any[]) => void; - export function isBoolean(object: any): object is boolean; - export function isBuffer(object: any): object is Buffer; - export function isFunction(object: any): boolean; - export function isNull(object: any): object is null; - export function isNullOrUndefined(object: any): object is null | undefined; - export function isNumber(object: any): object is number; - export function isObject(object: any): boolean; - export function isPrimitive(object: any): boolean; - export function isString(object: any): object is string; - export function isSymbol(object: any): object is symbol; - export function isUndefined(object: any): object is undefined; - export function deprecate(fn: T, message: string): T; + export interface InspectOptions extends NodeJS.InspectOptions { } + export function format(format: any, ...param: any[]): string; + export function debug(string: string): void; + export function error(...param: any[]): void; + export function puts(...param: any[]): void; + export function print(...param: any[]): void; + export function log(string: string): void; + export function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; + export function inspect(object: any, options: InspectOptions): string; + export function isArray(object: any): object is any[]; + export function isRegExp(object: any): object is RegExp; + export function isDate(object: any): object is Date; + export function isError(object: any): object is Error; + export function inherits(constructor: any, superConstructor: any): void; + export function debuglog(key: string): (msg: string, ...param: any[]) => void; + export function isBoolean(object: any): object is boolean; + export function isBuffer(object: any): object is Buffer; + export function isFunction(object: any): boolean; + export function isNull(object: any): object is null; + export function isNullOrUndefined(object: any): object is null | undefined; + export function isNumber(object: any): object is number; + export function isObject(object: any): boolean; + export function isPrimitive(object: any): boolean; + export function isString(object: any): object is string; + export function isSymbol(object: any): object is symbol; + export function isUndefined(object: any): object is undefined; + export function deprecate(fn: T, message: string): T; } declare module "assert" { - function internal(value: any, message?: string): void; - namespace internal { - export class AssertionError implements Error { - name: string; - message: string; - actual: any; - expected: any; - operator: string; - generatedMessage: boolean; + function internal(value: any, message?: string): void; + namespace internal { + export class AssertionError implements Error { + name: string; + message: string; + actual: any; + expected: any; + operator: string; + generatedMessage: boolean; - constructor(options?: { - message?: string; actual?: any; expected?: any; - operator?: string; stackStartFunction?: Function - }); - } + constructor(options?: { + message?: string; actual?: any; expected?: any; + operator?: string; stackStartFunction?: Function + }); + } - export function fail(actual?: any, expected?: any, message?: string, operator?: string): void; - export function ok(value: any, message?: string): void; - export function equal(actual: any, expected: any, message?: string): void; - export function notEqual(actual: any, expected: any, message?: string): void; - export function deepEqual(actual: any, expected: any, message?: string): void; - export function notDeepEqual(acutal: any, expected: any, message?: string): void; - export function strictEqual(actual: any, expected: any, message?: string): void; - export function notStrictEqual(actual: any, expected: any, message?: string): void; - export function deepStrictEqual(actual: any, expected: any, message?: string): void; - export function notDeepStrictEqual(actual: any, expected: any, message?: string): void; + export function fail(actual?: any, expected?: any, message?: string, operator?: string): void; + export function ok(value: any, message?: string): void; + export function equal(actual: any, expected: any, message?: string): void; + export function notEqual(actual: any, expected: any, message?: string): void; + export function deepEqual(actual: any, expected: any, message?: string): void; + export function notDeepEqual(acutal: any, expected: any, message?: string): void; + export function strictEqual(actual: any, expected: any, message?: string): void; + export function notStrictEqual(actual: any, expected: any, message?: string): void; + export function deepStrictEqual(actual: any, expected: any, message?: string): void; + export function notDeepStrictEqual(actual: any, expected: any, message?: string): void; - export function throws(block: Function, message?: string): void; - export function throws(block: Function, error: Function, message?: string): void; - export function throws(block: Function, error: RegExp, message?: string): void; - export function throws(block: Function, error: (err: any) => boolean, message?: string): void; + export function throws(block: Function, message?: string): void; + export function throws(block: Function, error: Function, message?: string): void; + export function throws(block: Function, error: RegExp, message?: string): void; + export function throws(block: Function, error: (err: any) => boolean, message?: string): void; - export function doesNotThrow(block: Function, message?: string): void; - export function doesNotThrow(block: Function, error: Function, message?: string): void; - export function doesNotThrow(block: Function, error: RegExp, message?: string): void; - export function doesNotThrow(block: Function, error: (err: any) => boolean, message?: string): void; + export function doesNotThrow(block: Function, message?: string): void; + export function doesNotThrow(block: Function, error: Function, message?: string): void; + export function doesNotThrow(block: Function, error: RegExp, message?: string): void; + export function doesNotThrow(block: Function, error: (err: any) => boolean, message?: string): void; - export function ifError(value: any): void; - } + export function ifError(value: any): void; + } - export = internal; + export = internal; } declare module "tty" { - import * as net from "net"; + import * as net from "net"; - export function isatty(fd: number): boolean; - export interface ReadStream extends net.Socket { - isRaw: boolean; - setRawMode(mode: boolean): void; - isTTY: boolean; - } - export interface WriteStream extends net.Socket { - columns: number; - rows: number; - isTTY: boolean; - } + export function isatty(fd: number): boolean; + export interface ReadStream extends net.Socket { + isRaw: boolean; + setRawMode(mode: boolean): void; + isTTY: boolean; + } + export interface WriteStream extends net.Socket { + columns: number; + rows: number; + isTTY: boolean; + } } declare module "domain" { - import * as events from "events"; + import * as events from "events"; - export class Domain extends events.EventEmitter implements NodeJS.Domain { - run(fn: Function): void; - add(emitter: events.EventEmitter): void; - remove(emitter: events.EventEmitter): void; - bind(cb: (err: Error, data: any) => any): any; - intercept(cb: (data: any) => any): any; - dispose(): void; - members: any[]; - enter(): void; - exit(): void; - } + export class Domain extends events.EventEmitter implements NodeJS.Domain { + run(fn: Function): void; + add(emitter: events.EventEmitter): void; + remove(emitter: events.EventEmitter): void; + bind(cb: (err: Error, data: any) => any): any; + intercept(cb: (data: any) => any): any; + dispose(): void; + members: any[]; + enter(): void; + exit(): void; + } - export function create(): Domain; + export function create(): Domain; } declare module "constants" { - export var E2BIG: number; - export var EACCES: number; - export var EADDRINUSE: number; - export var EADDRNOTAVAIL: number; - export var EAFNOSUPPORT: number; - export var EAGAIN: number; - export var EALREADY: number; - export var EBADF: number; - export var EBADMSG: number; - export var EBUSY: number; - export var ECANCELED: number; - export var ECHILD: number; - export var ECONNABORTED: number; - export var ECONNREFUSED: number; - export var ECONNRESET: number; - export var EDEADLK: number; - export var EDESTADDRREQ: number; - export var EDOM: number; - export var EEXIST: number; - export var EFAULT: number; - export var EFBIG: number; - export var EHOSTUNREACH: number; - export var EIDRM: number; - export var EILSEQ: number; - export var EINPROGRESS: number; - export var EINTR: number; - export var EINVAL: number; - export var EIO: number; - export var EISCONN: number; - export var EISDIR: number; - export var ELOOP: number; - export var EMFILE: number; - export var EMLINK: number; - export var EMSGSIZE: number; - export var ENAMETOOLONG: number; - export var ENETDOWN: number; - export var ENETRESET: number; - export var ENETUNREACH: number; - export var ENFILE: number; - export var ENOBUFS: number; - export var ENODATA: number; - export var ENODEV: number; - export var ENOENT: number; - export var ENOEXEC: number; - export var ENOLCK: number; - export var ENOLINK: number; - export var ENOMEM: number; - export var ENOMSG: number; - export var ENOPROTOOPT: number; - export var ENOSPC: number; - export var ENOSR: number; - export var ENOSTR: number; - export var ENOSYS: number; - export var ENOTCONN: number; - export var ENOTDIR: number; - export var ENOTEMPTY: number; - export var ENOTSOCK: number; - export var ENOTSUP: number; - export var ENOTTY: number; - export var ENXIO: number; - export var EOPNOTSUPP: number; - export var EOVERFLOW: number; - export var EPERM: number; - export var EPIPE: number; - export var EPROTO: number; - export var EPROTONOSUPPORT: number; - export var EPROTOTYPE: number; - export var ERANGE: number; - export var EROFS: number; - export var ESPIPE: number; - export var ESRCH: number; - export var ETIME: number; - export var ETIMEDOUT: number; - export var ETXTBSY: number; - export var EWOULDBLOCK: number; - export var EXDEV: number; - export var WSAEINTR: number; - export var WSAEBADF: number; - export var WSAEACCES: number; - export var WSAEFAULT: number; - export var WSAEINVAL: number; - export var WSAEMFILE: number; - export var WSAEWOULDBLOCK: number; - export var WSAEINPROGRESS: number; - export var WSAEALREADY: number; - export var WSAENOTSOCK: number; - export var WSAEDESTADDRREQ: number; - export var WSAEMSGSIZE: number; - export var WSAEPROTOTYPE: number; - export var WSAENOPROTOOPT: number; - export var WSAEPROTONOSUPPORT: number; - export var WSAESOCKTNOSUPPORT: number; - export var WSAEOPNOTSUPP: number; - export var WSAEPFNOSUPPORT: number; - export var WSAEAFNOSUPPORT: number; - export var WSAEADDRINUSE: number; - export var WSAEADDRNOTAVAIL: number; - export var WSAENETDOWN: number; - export var WSAENETUNREACH: number; - export var WSAENETRESET: number; - export var WSAECONNABORTED: number; - export var WSAECONNRESET: number; - export var WSAENOBUFS: number; - export var WSAEISCONN: number; - export var WSAENOTCONN: number; - export var WSAESHUTDOWN: number; - export var WSAETOOMANYREFS: number; - export var WSAETIMEDOUT: number; - export var WSAECONNREFUSED: number; - export var WSAELOOP: number; - export var WSAENAMETOOLONG: number; - export var WSAEHOSTDOWN: number; - export var WSAEHOSTUNREACH: number; - export var WSAENOTEMPTY: number; - export var WSAEPROCLIM: number; - export var WSAEUSERS: number; - export var WSAEDQUOT: number; - export var WSAESTALE: number; - export var WSAEREMOTE: number; - export var WSASYSNOTREADY: number; - export var WSAVERNOTSUPPORTED: number; - export var WSANOTINITIALISED: number; - export var WSAEDISCON: number; - export var WSAENOMORE: number; - export var WSAECANCELLED: number; - export var WSAEINVALIDPROCTABLE: number; - export var WSAEINVALIDPROVIDER: number; - export var WSAEPROVIDERFAILEDINIT: number; - export var WSASYSCALLFAILURE: number; - export var WSASERVICE_NOT_FOUND: number; - export var WSATYPE_NOT_FOUND: number; - export var WSA_E_NO_MORE: number; - export var WSA_E_CANCELLED: number; - export var WSAEREFUSED: number; - export var SIGHUP: number; - export var SIGINT: number; - export var SIGILL: number; - export var SIGABRT: number; - export var SIGFPE: number; - export var SIGKILL: number; - export var SIGSEGV: number; - export var SIGTERM: number; - export var SIGBREAK: number; - export var SIGWINCH: number; - export var SSL_OP_ALL: number; - export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; - export var SSL_OP_CIPHER_SERVER_PREFERENCE: number; - export var SSL_OP_CISCO_ANYCONNECT: number; - export var SSL_OP_COOKIE_EXCHANGE: number; - export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; - export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; - export var SSL_OP_EPHEMERAL_RSA: number; - export var SSL_OP_LEGACY_SERVER_CONNECT: number; - export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number; - export var SSL_OP_MICROSOFT_SESS_ID_BUG: number; - export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number; - export var SSL_OP_NETSCAPE_CA_DN_BUG: number; - export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number; - export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number; - export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number; - export var SSL_OP_NO_COMPRESSION: number; - export var SSL_OP_NO_QUERY_MTU: number; - export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; - export var SSL_OP_NO_SSLv2: number; - export var SSL_OP_NO_SSLv3: number; - export var SSL_OP_NO_TICKET: number; - export var SSL_OP_NO_TLSv1: number; - export var SSL_OP_NO_TLSv1_1: number; - export var SSL_OP_NO_TLSv1_2: number; - export var SSL_OP_PKCS1_CHECK_1: number; - export var SSL_OP_PKCS1_CHECK_2: number; - export var SSL_OP_SINGLE_DH_USE: number; - export var SSL_OP_SINGLE_ECDH_USE: number; - export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number; - export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number; - export var SSL_OP_TLS_BLOCK_PADDING_BUG: number; - export var SSL_OP_TLS_D5_BUG: number; - export var SSL_OP_TLS_ROLLBACK_BUG: number; - export var ENGINE_METHOD_DSA: number; - export var ENGINE_METHOD_DH: number; - export var ENGINE_METHOD_RAND: number; - export var ENGINE_METHOD_ECDH: number; - export var ENGINE_METHOD_ECDSA: number; - export var ENGINE_METHOD_CIPHERS: number; - export var ENGINE_METHOD_DIGESTS: number; - export var ENGINE_METHOD_STORE: number; - export var ENGINE_METHOD_PKEY_METHS: number; - export var ENGINE_METHOD_PKEY_ASN1_METHS: number; - export var ENGINE_METHOD_ALL: number; - export var ENGINE_METHOD_NONE: number; - export var DH_CHECK_P_NOT_SAFE_PRIME: number; - export var DH_CHECK_P_NOT_PRIME: number; - export var DH_UNABLE_TO_CHECK_GENERATOR: number; - export var DH_NOT_SUITABLE_GENERATOR: number; - export var NPN_ENABLED: number; - export var RSA_PKCS1_PADDING: number; - export var RSA_SSLV23_PADDING: number; - export var RSA_NO_PADDING: number; - export var RSA_PKCS1_OAEP_PADDING: number; - export var RSA_X931_PADDING: number; - export var RSA_PKCS1_PSS_PADDING: number; - export var POINT_CONVERSION_COMPRESSED: number; - export var POINT_CONVERSION_UNCOMPRESSED: number; - export var POINT_CONVERSION_HYBRID: number; - export var O_RDONLY: number; - export var O_WRONLY: number; - export var O_RDWR: number; - export var S_IFMT: number; - export var S_IFREG: number; - export var S_IFDIR: number; - export var S_IFCHR: number; - export var S_IFBLK: number; - export var S_IFIFO: number; - export var S_IFSOCK: number; - export var S_IRWXU: number; - export var S_IRUSR: number; - export var S_IWUSR: number; - export var S_IXUSR: number; - export var S_IRWXG: number; - export var S_IRGRP: number; - export var S_IWGRP: number; - export var S_IXGRP: number; - export var S_IRWXO: number; - export var S_IROTH: number; - export var S_IWOTH: number; - export var S_IXOTH: number; - export var S_IFLNK: number; - export var O_CREAT: number; - export var O_EXCL: number; - export var O_NOCTTY: number; - export var O_DIRECTORY: number; - export var O_NOATIME: number; - export var O_NOFOLLOW: number; - export var O_SYNC: number; - export var O_SYMLINK: number; - export var O_DIRECT: number; - export var O_NONBLOCK: number; - export var O_TRUNC: number; - export var O_APPEND: number; - export var F_OK: number; - export var R_OK: number; - export var W_OK: number; - export var X_OK: number; - export var UV_UDP_REUSEADDR: number; - export var SIGQUIT: number; - export var SIGTRAP: number; - export var SIGIOT: number; - export var SIGBUS: number; - export var SIGUSR1: number; - export var SIGUSR2: number; - export var SIGPIPE: number; - export var SIGALRM: number; - export var SIGCHLD: number; - export var SIGSTKFLT: number; - export var SIGCONT: number; - export var SIGSTOP: number; - export var SIGTSTP: number; - export var SIGTTIN: number; - export var SIGTTOU: number; - export var SIGURG: number; - export var SIGXCPU: number; - export var SIGXFSZ: number; - export var SIGVTALRM: number; - export var SIGPROF: number; - export var SIGIO: number; - export var SIGPOLL: number; - export var SIGPWR: number; - export var SIGSYS: number; - export var SIGUNUSED: number; - export var defaultCoreCipherList: string; - export var defaultCipherList: string; - export var ENGINE_METHOD_RSA: number; - export var ALPN_ENABLED: number; + export var E2BIG: number; + export var EACCES: number; + export var EADDRINUSE: number; + export var EADDRNOTAVAIL: number; + export var EAFNOSUPPORT: number; + export var EAGAIN: number; + export var EALREADY: number; + export var EBADF: number; + export var EBADMSG: number; + export var EBUSY: number; + export var ECANCELED: number; + export var ECHILD: number; + export var ECONNABORTED: number; + export var ECONNREFUSED: number; + export var ECONNRESET: number; + export var EDEADLK: number; + export var EDESTADDRREQ: number; + export var EDOM: number; + export var EEXIST: number; + export var EFAULT: number; + export var EFBIG: number; + export var EHOSTUNREACH: number; + export var EIDRM: number; + export var EILSEQ: number; + export var EINPROGRESS: number; + export var EINTR: number; + export var EINVAL: number; + export var EIO: number; + export var EISCONN: number; + export var EISDIR: number; + export var ELOOP: number; + export var EMFILE: number; + export var EMLINK: number; + export var EMSGSIZE: number; + export var ENAMETOOLONG: number; + export var ENETDOWN: number; + export var ENETRESET: number; + export var ENETUNREACH: number; + export var ENFILE: number; + export var ENOBUFS: number; + export var ENODATA: number; + export var ENODEV: number; + export var ENOENT: number; + export var ENOEXEC: number; + export var ENOLCK: number; + export var ENOLINK: number; + export var ENOMEM: number; + export var ENOMSG: number; + export var ENOPROTOOPT: number; + export var ENOSPC: number; + export var ENOSR: number; + export var ENOSTR: number; + export var ENOSYS: number; + export var ENOTCONN: number; + export var ENOTDIR: number; + export var ENOTEMPTY: number; + export var ENOTSOCK: number; + export var ENOTSUP: number; + export var ENOTTY: number; + export var ENXIO: number; + export var EOPNOTSUPP: number; + export var EOVERFLOW: number; + export var EPERM: number; + export var EPIPE: number; + export var EPROTO: number; + export var EPROTONOSUPPORT: number; + export var EPROTOTYPE: number; + export var ERANGE: number; + export var EROFS: number; + export var ESPIPE: number; + export var ESRCH: number; + export var ETIME: number; + export var ETIMEDOUT: number; + export var ETXTBSY: number; + export var EWOULDBLOCK: number; + export var EXDEV: number; + export var WSAEINTR: number; + export var WSAEBADF: number; + export var WSAEACCES: number; + export var WSAEFAULT: number; + export var WSAEINVAL: number; + export var WSAEMFILE: number; + export var WSAEWOULDBLOCK: number; + export var WSAEINPROGRESS: number; + export var WSAEALREADY: number; + export var WSAENOTSOCK: number; + export var WSAEDESTADDRREQ: number; + export var WSAEMSGSIZE: number; + export var WSAEPROTOTYPE: number; + export var WSAENOPROTOOPT: number; + export var WSAEPROTONOSUPPORT: number; + export var WSAESOCKTNOSUPPORT: number; + export var WSAEOPNOTSUPP: number; + export var WSAEPFNOSUPPORT: number; + export var WSAEAFNOSUPPORT: number; + export var WSAEADDRINUSE: number; + export var WSAEADDRNOTAVAIL: number; + export var WSAENETDOWN: number; + export var WSAENETUNREACH: number; + export var WSAENETRESET: number; + export var WSAECONNABORTED: number; + export var WSAECONNRESET: number; + export var WSAENOBUFS: number; + export var WSAEISCONN: number; + export var WSAENOTCONN: number; + export var WSAESHUTDOWN: number; + export var WSAETOOMANYREFS: number; + export var WSAETIMEDOUT: number; + export var WSAECONNREFUSED: number; + export var WSAELOOP: number; + export var WSAENAMETOOLONG: number; + export var WSAEHOSTDOWN: number; + export var WSAEHOSTUNREACH: number; + export var WSAENOTEMPTY: number; + export var WSAEPROCLIM: number; + export var WSAEUSERS: number; + export var WSAEDQUOT: number; + export var WSAESTALE: number; + export var WSAEREMOTE: number; + export var WSASYSNOTREADY: number; + export var WSAVERNOTSUPPORTED: number; + export var WSANOTINITIALISED: number; + export var WSAEDISCON: number; + export var WSAENOMORE: number; + export var WSAECANCELLED: number; + export var WSAEINVALIDPROCTABLE: number; + export var WSAEINVALIDPROVIDER: number; + export var WSAEPROVIDERFAILEDINIT: number; + export var WSASYSCALLFAILURE: number; + export var WSASERVICE_NOT_FOUND: number; + export var WSATYPE_NOT_FOUND: number; + export var WSA_E_NO_MORE: number; + export var WSA_E_CANCELLED: number; + export var WSAEREFUSED: number; + export var SIGHUP: number; + export var SIGINT: number; + export var SIGILL: number; + export var SIGABRT: number; + export var SIGFPE: number; + export var SIGKILL: number; + export var SIGSEGV: number; + export var SIGTERM: number; + export var SIGBREAK: number; + export var SIGWINCH: number; + export var SSL_OP_ALL: number; + export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; + export var SSL_OP_CIPHER_SERVER_PREFERENCE: number; + export var SSL_OP_CISCO_ANYCONNECT: number; + export var SSL_OP_COOKIE_EXCHANGE: number; + export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; + export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; + export var SSL_OP_EPHEMERAL_RSA: number; + export var SSL_OP_LEGACY_SERVER_CONNECT: number; + export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number; + export var SSL_OP_MICROSOFT_SESS_ID_BUG: number; + export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number; + export var SSL_OP_NETSCAPE_CA_DN_BUG: number; + export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number; + export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number; + export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number; + export var SSL_OP_NO_COMPRESSION: number; + export var SSL_OP_NO_QUERY_MTU: number; + export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; + export var SSL_OP_NO_SSLv2: number; + export var SSL_OP_NO_SSLv3: number; + export var SSL_OP_NO_TICKET: number; + export var SSL_OP_NO_TLSv1: number; + export var SSL_OP_NO_TLSv1_1: number; + export var SSL_OP_NO_TLSv1_2: number; + export var SSL_OP_PKCS1_CHECK_1: number; + export var SSL_OP_PKCS1_CHECK_2: number; + export var SSL_OP_SINGLE_DH_USE: number; + export var SSL_OP_SINGLE_ECDH_USE: number; + export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number; + export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number; + export var SSL_OP_TLS_BLOCK_PADDING_BUG: number; + export var SSL_OP_TLS_D5_BUG: number; + export var SSL_OP_TLS_ROLLBACK_BUG: number; + export var ENGINE_METHOD_DSA: number; + export var ENGINE_METHOD_DH: number; + export var ENGINE_METHOD_RAND: number; + export var ENGINE_METHOD_ECDH: number; + export var ENGINE_METHOD_ECDSA: number; + export var ENGINE_METHOD_CIPHERS: number; + export var ENGINE_METHOD_DIGESTS: number; + export var ENGINE_METHOD_STORE: number; + export var ENGINE_METHOD_PKEY_METHS: number; + export var ENGINE_METHOD_PKEY_ASN1_METHS: number; + export var ENGINE_METHOD_ALL: number; + export var ENGINE_METHOD_NONE: number; + export var DH_CHECK_P_NOT_SAFE_PRIME: number; + export var DH_CHECK_P_NOT_PRIME: number; + export var DH_UNABLE_TO_CHECK_GENERATOR: number; + export var DH_NOT_SUITABLE_GENERATOR: number; + export var NPN_ENABLED: number; + export var RSA_PKCS1_PADDING: number; + export var RSA_SSLV23_PADDING: number; + export var RSA_NO_PADDING: number; + export var RSA_PKCS1_OAEP_PADDING: number; + export var RSA_X931_PADDING: number; + export var RSA_PKCS1_PSS_PADDING: number; + export var POINT_CONVERSION_COMPRESSED: number; + export var POINT_CONVERSION_UNCOMPRESSED: number; + export var POINT_CONVERSION_HYBRID: number; + export var O_RDONLY: number; + export var O_WRONLY: number; + export var O_RDWR: number; + export var S_IFMT: number; + export var S_IFREG: number; + export var S_IFDIR: number; + export var S_IFCHR: number; + export var S_IFBLK: number; + export var S_IFIFO: number; + export var S_IFSOCK: number; + export var S_IRWXU: number; + export var S_IRUSR: number; + export var S_IWUSR: number; + export var S_IXUSR: number; + export var S_IRWXG: number; + export var S_IRGRP: number; + export var S_IWGRP: number; + export var S_IXGRP: number; + export var S_IRWXO: number; + export var S_IROTH: number; + export var S_IWOTH: number; + export var S_IXOTH: number; + export var S_IFLNK: number; + export var O_CREAT: number; + export var O_EXCL: number; + export var O_NOCTTY: number; + export var O_DIRECTORY: number; + export var O_NOATIME: number; + export var O_NOFOLLOW: number; + export var O_SYNC: number; + export var O_SYMLINK: number; + export var O_DIRECT: number; + export var O_NONBLOCK: number; + export var O_TRUNC: number; + export var O_APPEND: number; + export var F_OK: number; + export var R_OK: number; + export var W_OK: number; + export var X_OK: number; + export var UV_UDP_REUSEADDR: number; + export var SIGQUIT: number; + export var SIGTRAP: number; + export var SIGIOT: number; + export var SIGBUS: number; + export var SIGUSR1: number; + export var SIGUSR2: number; + export var SIGPIPE: number; + export var SIGALRM: number; + export var SIGCHLD: number; + export var SIGSTKFLT: number; + export var SIGCONT: number; + export var SIGSTOP: number; + export var SIGTSTP: number; + export var SIGTTIN: number; + export var SIGTTOU: number; + export var SIGURG: number; + export var SIGXCPU: number; + export var SIGXFSZ: number; + export var SIGVTALRM: number; + export var SIGPROF: number; + export var SIGIO: number; + export var SIGPOLL: number; + export var SIGPWR: number; + export var SIGSYS: number; + export var SIGUNUSED: number; + export var defaultCoreCipherList: string; + export var defaultCipherList: string; + export var ENGINE_METHOD_RSA: number; + export var ALPN_ENABLED: number; } declare module "process" { - export = process; + export = process; } declare module "v8" { - interface HeapSpaceInfo { - space_name: string; - space_size: number; - space_used_size: number; - space_available_size: number; - physical_space_size: number; - } + interface HeapSpaceInfo { + space_name: string; + space_size: number; + space_used_size: number; + space_available_size: number; + physical_space_size: number; + } - //** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ - type DoesZapCodeSpaceFlag = 0 | 1; + //** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ + type DoesZapCodeSpaceFlag = 0 | 1; - interface HeapInfo { - total_heap_size: number; - total_heap_size_executable: number; - total_physical_size: number; - total_available_size: number; - used_heap_size: number; - heap_size_limit: number; - malloced_memory: number; - peak_malloced_memory: number; - does_zap_garbage: DoesZapCodeSpaceFlag; - } + interface HeapInfo { + total_heap_size: number; + total_heap_size_executable: number; + total_physical_size: number; + total_available_size: number; + used_heap_size: number; + heap_size_limit: number; + malloced_memory: number; + peak_malloced_memory: number; + does_zap_garbage: DoesZapCodeSpaceFlag; + } - export function getHeapStatistics(): HeapInfo; - export function getHeapSpaceStatistics(): HeapSpaceInfo[]; - export function setFlagsFromString(flags: string): void; + export function getHeapStatistics(): HeapInfo; + export function getHeapSpaceStatistics(): HeapSpaceInfo[]; + export function setFlagsFromString(flags: string): void; } declare module "timers" { - export function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; - export function clearTimeout(timeoutId: NodeJS.Timer): void; - export function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; - export function clearInterval(intervalId: NodeJS.Timer): void; - export function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; - export function clearImmediate(immediateId: any): void; + export function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; + export function clearTimeout(timeoutId: NodeJS.Timer): void; + export function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; + export function clearInterval(intervalId: NodeJS.Timer): void; + export function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; + export function clearImmediate(immediateId: any): void; } declare module "console" { - export = console; + export = console; } /** @@ -4254,124 +4254,124 @@ declare module "console" { * Source code is at https://github.com/nodejs/node/blob/master/lib/_debugger.js */ declare module "_debugger" { - export interface Packet { - raw: string; - headers: string[]; - body: Message; - } + export interface Packet { + raw: string; + headers: string[]; + body: Message; + } - export interface Message { - seq: number; - type: string; - } + export interface Message { + seq: number; + type: string; + } - export interface RequestInfo { - command: string; - arguments: any; - } + export interface RequestInfo { + command: string; + arguments: any; + } - export interface Request extends Message, RequestInfo { - } + export interface Request extends Message, RequestInfo { + } - export interface Event extends Message { - event: string; - body?: any; - } + export interface Event extends Message { + event: string; + body?: any; + } - export interface Response extends Message { - request_seq: number; - success: boolean; - /** Contains error message if success === false. */ - message?: string; - /** Contains message body if success === true. */ - body?: any; - } + export interface Response extends Message { + request_seq: number; + success: boolean; + /** Contains error message if success === false. */ + message?: string; + /** Contains message body if success === true. */ + body?: any; + } - export interface BreakpointMessageBody { - type: string; - target: number; - line: number; - } + export interface BreakpointMessageBody { + type: string; + target: number; + line: number; + } - export class Protocol { - res: Packet; - state: string; - execute(data: string): void; - serialize(rq: Request): string; - onResponse: (pkt: Packet) => void; - } + export class Protocol { + res: Packet; + state: string; + execute(data: string): void; + serialize(rq: Request): string; + onResponse: (pkt: Packet) => void; + } - export var NO_FRAME: number; - export var port: number; + export var NO_FRAME: number; + export var port: number; - export interface ScriptDesc { - name: string; - id: number; - isNative?: boolean; - handle?: number; - type: string; - lineOffset?: number; - columnOffset?: number; - lineCount?: number; - } + export interface ScriptDesc { + name: string; + id: number; + isNative?: boolean; + handle?: number; + type: string; + lineOffset?: number; + columnOffset?: number; + lineCount?: number; + } - export interface Breakpoint { - id: number; - scriptId: number; - script: ScriptDesc; - line: number; - condition?: string; - scriptReq?: string; - } + export interface Breakpoint { + id: number; + scriptId: number; + script: ScriptDesc; + line: number; + condition?: string; + scriptReq?: string; + } - export interface RequestHandler { - (err: boolean, body: Message, res: Packet): void; - request_seq?: number; - } + export interface RequestHandler { + (err: boolean, body: Message, res: Packet): void; + request_seq?: number; + } - export interface ResponseBodyHandler { - (err: boolean, body?: any): void; - request_seq?: number; - } + export interface ResponseBodyHandler { + (err: boolean, body?: any): void; + request_seq?: number; + } - export interface ExceptionInfo { - text: string; - } + export interface ExceptionInfo { + text: string; + } - export interface BreakResponse { - script?: ScriptDesc; - exception?: ExceptionInfo; - sourceLine: number; - sourceLineText: string; - sourceColumn: number; - } + export interface BreakResponse { + script?: ScriptDesc; + exception?: ExceptionInfo; + sourceLine: number; + sourceLineText: string; + sourceColumn: number; + } - export function SourceInfo(body: BreakResponse): string; + export function SourceInfo(body: BreakResponse): string; - export interface ClientInstance extends NodeJS.EventEmitter { - protocol: Protocol; - scripts: ScriptDesc[]; - handles: ScriptDesc[]; - breakpoints: Breakpoint[]; - currentSourceLine: number; - currentSourceColumn: number; - currentSourceLineText: string; - currentFrame: number; - currentScript: string; + export interface ClientInstance extends NodeJS.EventEmitter { + protocol: Protocol; + scripts: ScriptDesc[]; + handles: ScriptDesc[]; + breakpoints: Breakpoint[]; + currentSourceLine: number; + currentSourceColumn: number; + currentSourceLineText: string; + currentFrame: number; + currentScript: string; - connect(port: number, host: string): void; - req(req: any, cb: RequestHandler): void; - reqFrameEval(code: string, frame: number, cb: RequestHandler): void; - mirrorObject(obj: any, depth: number, cb: ResponseBodyHandler): void; - setBreakpoint(rq: BreakpointMessageBody, cb: RequestHandler): void; - clearBreakpoint(rq: Request, cb: RequestHandler): void; - listbreakpoints(cb: RequestHandler): void; - reqSource(from: number, to: number, cb: RequestHandler): void; - reqScripts(cb: any): void; - reqContinue(cb: RequestHandler): void; - } + connect(port: number, host: string): void; + req(req: any, cb: RequestHandler): void; + reqFrameEval(code: string, frame: number, cb: RequestHandler): void; + mirrorObject(obj: any, depth: number, cb: ResponseBodyHandler): void; + setBreakpoint(rq: BreakpointMessageBody, cb: RequestHandler): void; + clearBreakpoint(rq: Request, cb: RequestHandler): void; + listbreakpoints(cb: RequestHandler): void; + reqSource(from: number, to: number, cb: RequestHandler): void; + reqScripts(cb: any): void; + reqContinue(cb: RequestHandler): void; + } - export var Client: { - new(): ClientInstance - } + export var Client: { + new(): ClientInstance + } } diff --git a/src/typings/vscode-xterm.d.ts b/src/typings/vscode-xterm.d.ts index 09252b3e5cb..48937b53df2 100644 --- a/src/typings/vscode-xterm.d.ts +++ b/src/typings/vscode-xterm.d.ts @@ -214,23 +214,23 @@ declare module 'vscode-xterm' { } export interface IEventEmitter { - on(type: string, listener: (...args: any[]) => void): void; - off(type: string, listener: (...args: any[]) => void): void; - emit(type: string, data?: any): void; - addDisposableListener(type: string, handler: (...args: any[]) => void): IDisposable; + on(type: string, listener: (...args: any[]) => void): void; + off(type: string, listener: (...args: any[]) => void): void; + emit(type: string, data?: any): void; + addDisposableListener(type: string, handler: (...args: any[]) => void): IDisposable; } /** * An object that can be disposed via a dispose function. */ export interface IDisposable { - dispose(): void; + dispose(): void; } export interface ILocalizableStrings { - blankLine: string; - promptLabel: string; - tooMuchOutput: string; + blankLine: string; + promptLabel: string; + tooMuchOutput: string; } /** @@ -308,13 +308,13 @@ declare module 'vscode-xterm' { * @param type The type of the event. * @param listener The listener. */ - on(type: 'refresh', listener: (data?: {start: number, end: number}) => void): void; + on(type: 'refresh', listener: (data?: { start: number, end: number }) => void): void; /** * Registers an event listener. * @param type The type of the event. * @param listener The listener. */ - on(type: 'resize', listener: (data?: {cols: number, rows: number}) => void): void; + on(type: 'resize', listener: (data?: { cols: number, rows: number }) => void): void; /** * Registers an event listener. * @param type The type of the event. diff --git a/src/vs/base/common/marked/marked.d.ts b/src/vs/base/common/marked/marked.d.ts index ee4c622d085..6d09ea02631 100644 --- a/src/vs/base/common/marked/marked.d.ts +++ b/src/vs/base/common/marked/marked.d.ts @@ -73,7 +73,7 @@ export interface MarkedStatic { export interface Renderer { prototype: MarkedRenderer; - new (): MarkedRenderer; + new(): MarkedRenderer; } export interface MarkedRenderer { diff --git a/src/vs/base/parts/ipc/test/node/ipc.perf.ts b/src/vs/base/parts/ipc/test/node/ipc.perf.ts index c02ea404dcb..2e1fcbcbd83 100644 --- a/src/vs/base/parts/ipc/test/node/ipc.perf.ts +++ b/src/vs/base/parts/ipc/test/node/ipc.perf.ts @@ -106,9 +106,9 @@ suite('IPC performance', () => { assert.strictEqual(hits, batches); assert.strictEqual(count, batches * size); }, err => assert.fail(err), - batch => { - hits++; - count += batch.length; - }); + batch => { + hits++; + count += batch.length; + }); } }); \ No newline at end of file diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts index 8e94210a280..da6f906ce46 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts @@ -62,7 +62,7 @@ class ActiveWindowManager implements IDisposable { private disposables: IDisposable[] = []; private _activeWindowId: number; - constructor( @IWindowsService windowsService: IWindowsService) { + constructor(@IWindowsService windowsService: IWindowsService) { windowsService.onWindowOpen(this.setActiveWindow, this, this.disposables); windowsService.onWindowFocus(this.setActiveWindow, this, this.disposables); } diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 942f0024cd7..92f05cb628f 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -144,15 +144,15 @@ class Main { return this.extensionManagementService.installFromGallery(extension) .then( - () => console.log(localize('successInstall', "Extension '{0}' v{1} was successfully installed!", id, extension.version)), - error => { - if (isPromiseCanceledError(error)) { - console.log(localize('cancelVsixInstall', "Cancelled installing Extension '{0}'.", id)); - return null; - } else { - return TPromise.wrapError(error); - } - }); + () => console.log(localize('successInstall', "Extension '{0}' v{1} was successfully installed!", id, extension.version)), + error => { + if (isPromiseCanceledError(error)) { + console.log(localize('cancelVsixInstall', "Cancelled installing Extension '{0}'.", id)); + return null; + } else { + return TPromise.wrapError(error); + } + }); }); }); }); diff --git a/src/vs/editor/browser/services/codeEditorServiceImpl.ts b/src/vs/editor/browser/services/codeEditorServiceImpl.ts index 218be5ac673..6f2bde8d93c 100644 --- a/src/vs/editor/browser/services/codeEditorServiceImpl.ts +++ b/src/vs/editor/browser/services/codeEditorServiceImpl.ts @@ -19,7 +19,7 @@ export class CodeEditorServiceImpl extends AbstractCodeEditorService { private _decorationOptionProviders: { [key: string]: IModelDecorationOptionsProvider }; private _themeService: IThemeService; - constructor( @IThemeService themeService: IThemeService, styleSheet = dom.createStyleSheet()) { + constructor(@IThemeService themeService: IThemeService, styleSheet = dom.createStyleSheet()) { super(); this._styleSheet = styleSheet; this._decorationOptionProviders = Object.create(null); diff --git a/src/vs/editor/contrib/smartSelect/tokenSelectionSupport.ts b/src/vs/editor/contrib/smartSelect/tokenSelectionSupport.ts index 695806b36ac..b1606febf32 100644 --- a/src/vs/editor/contrib/smartSelect/tokenSelectionSupport.ts +++ b/src/vs/editor/contrib/smartSelect/tokenSelectionSupport.ts @@ -24,7 +24,7 @@ export class TokenSelectionSupport { private _modelService: IModelService; - constructor( @IModelService modelService: IModelService) { + constructor(@IModelService modelService: IModelService) { this._modelService = modelService; } diff --git a/src/vs/platform/contextkey/browser/contextKeyService.ts b/src/vs/platform/contextkey/browser/contextKeyService.ts index aa8c0054ff5..32b16db4b8c 100644 --- a/src/vs/platform/contextkey/browser/contextKeyService.ts +++ b/src/vs/platform/contextkey/browser/contextKeyService.ts @@ -271,7 +271,7 @@ export class ContextKeyService extends AbstractContextKeyService implements ICon private _toDispose: IDisposable[] = []; - constructor( @IConfigurationService configurationService: IConfigurationService) { + constructor(@IConfigurationService configurationService: IConfigurationService) { super(0); this._lastContextId = 0; this._contexts = Object.create(null); diff --git a/src/vs/platform/dialogs/common/dialogIpc.ts b/src/vs/platform/dialogs/common/dialogIpc.ts index 2f49e44bf26..7d260b4e8f8 100644 --- a/src/vs/platform/dialogs/common/dialogIpc.ts +++ b/src/vs/platform/dialogs/common/dialogIpc.ts @@ -18,7 +18,7 @@ export interface IDialogChannel extends IChannel { export class DialogChannel implements IDialogChannel { - constructor( @IDialogService private dialogService: IDialogService) { + constructor(@IDialogService private dialogService: IDialogService) { } call(command: string, args?: any[]): TPromise { diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 52d5d3f56bb..91a36de8443 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -149,25 +149,25 @@ export class ExtensionManagementService extends Disposable implements IExtension const identifier = { id: getLocalExtensionIdFromManifest(manifest) }; return this.unsetUninstalledAndRemove(identifier.id) .then( - () => this.checkOutdated(manifest) - .then(validated => { - if (validated) { - this.logService.info('Installing the extension:', identifier.id); - this._onInstallExtension.fire({ identifier, zipPath }); - return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) - .then( - metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), - error => this.installFromZipPath(identifier, zipPath, null, manifest)) - .then( - local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, - e => { - this.logService.error('Failed to install the extension:', identifier.id, e.message); - return TPromise.wrapError(e); - }); - } - return null; - }), - e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); + () => this.checkOutdated(manifest) + .then(validated => { + if (validated) { + this.logService.info('Installing the extension:', identifier.id); + this._onInstallExtension.fire({ identifier, zipPath }); + return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) + .then( + metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), + error => this.installFromZipPath(identifier, zipPath, null, manifest)) + .then( + local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, + e => { + this.logService.error('Failed to install the extension:', identifier.id, e.message); + return TPromise.wrapError(e); + }); + } + return null; + }), + e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); }); } @@ -222,8 +222,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return local; }) .then( - local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, - error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } + local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, + error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } ); } @@ -231,17 +231,17 @@ export class ExtensionManagementService extends Disposable implements IExtension this.onInstallExtensions([extension]); return this.collectExtensionsToInstall(extension) .then( - extensionsToInstall => { - if (extensionsToInstall.length > 1) { - this.onInstallExtensions(extensionsToInstall.slice(1)); - } - return this.downloadAndInstallExtensions(extensionsToInstall) - .then( - locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) - .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), - errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); - }, - error => this.onDidInstallExtensions([extension], [], [error])); + extensionsToInstall => { + if (extensionsToInstall.length > 1) { + this.onInstallExtensions(extensionsToInstall.slice(1)); + } + return this.downloadAndInstallExtensions(extensionsToInstall) + .then( + locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) + .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), + errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); + }, + error => this.onDidInstallExtensions([extension], [], [error])); } reinstall(extension: ILocalExtension): TPromise { @@ -254,8 +254,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.uninstallExtension(extension) .then(() => this.removeUninstalledExtension(extension) .then( - () => this.installFromGallery(galleryExtension), - e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); + () => this.installFromGallery(galleryExtension), + e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); } return TPromise.wrapError(new Error(nls.localize('Not a Marketplace extension', "Only Marketplace Extensions can be reinstalled"))); }); @@ -269,10 +269,10 @@ export class ExtensionManagementService extends Disposable implements IExtension } return this.getDependenciesToInstall(compatible.properties.dependencies) .then( - dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private downloadAndInstallExtensions(extensions: IGalleryExtension[]): TPromise { @@ -294,8 +294,8 @@ export class ExtensionManagementService extends Disposable implements IExtension .then(extension => this.downloadInstallableExtension(extension)) .then(installableExtension => this.installExtension(installableExtension)) .then( - local => { this.installingExtensions.delete(extension.identifier.id); return local; }, - e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } + local => { this.installingExtensions.delete(extension.identifier.id); return local; }, + e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } ); this.installingExtensions.set(extension.identifier.id, installingExtension); @@ -312,25 +312,25 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.galleryService.loadCompatibleVersion(extension) .then( - compatible => { - if (compatible) { - this.logService.trace('Started downloading extension:', extension.name); - return this.galleryService.download(extension) - .then( - zipPath => { - this.logService.info('Downloaded extension:', extension.name); - return validateLocalExtension(zipPath) - .then( - manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) - ); - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); - } else { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); - } - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + compatible => { + if (compatible) { + this.logService.trace('Started downloading extension:', extension.name); + return this.galleryService.download(extension) + .then( + zipPath => { + this.logService.info('Downloaded extension:', extension.name); + return validateLocalExtension(zipPath) + .then( + manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) + ); + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); + } else { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); + } + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private onInstallExtensions(extensions: IGalleryExtension[]): void { @@ -379,18 +379,18 @@ export class ExtensionManagementService extends Disposable implements IExtension private installExtension(installableExtension: InstallableExtension): TPromise { return this.unsetUninstalledAndGetLocal(installableExtension.id) .then( - local => { - if (local) { - return local; - } - return this.extractAndInstall(installableExtension); - }, - e => { - if (isMacintosh) { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - } - return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - }); + local => { + if (local) { + return local; + } + return this.extractAndInstall(installableExtension); + }, + e => { + if (isMacintosh) { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + } + return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + }); } private unsetUninstalledAndGetLocal(id: string): TPromise { @@ -428,23 +428,23 @@ export class ExtensionManagementService extends Disposable implements IExtension this.logService.trace(`Started extracting the extension from ${zipPath} to ${extractPath}`); return pfs.rimraf(extractPath) .then( - () => extract(zipPath, extractPath, options) - .then( - () => this.logService.info(`Extracted extension to ${extractPath}:`, id), - e => always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), - e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); + () => extract(zipPath, extractPath, options) + .then( + () => this.logService.info(`Extracted extension to ${extractPath}:`, id), + e => always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), + e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); } private completeInstall(id: string, extractPath: string): TPromise { return this.renameWithRetry(id, extractPath) .then( - () => this.logService.info('Installation compelted.', id), - e => { - this.logService.info('Deleting the extracted extension', id); - return always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(e)); - }); + () => this.logService.info('Installation compelted.', id), + e => { + this.logService.info('Deleting the extracted extension', id); + return always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(e)); + }); } private renameWithRetry(id: string, extractPath: string): TPromise { @@ -540,10 +540,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.hasDependencies(extension, installed) ? this.promptForDependenciesAndUninstall(extension, installed, force) : this.promptAndUninstall(extension, installed, force)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private hasDependencies(extension: ILocalExtension, installed: ILocalExtension[]): boolean { @@ -660,10 +660,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.uninstallExtension(extension)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private preUninstallExtension(extension: ILocalExtension): TPromise { diff --git a/src/vs/platform/instantiation/test/common/instantiationService.test.ts b/src/vs/platform/instantiation/test/common/instantiationService.test.ts index 21234877c10..a3230c93f55 100644 --- a/src/vs/platform/instantiation/test/common/instantiationService.test.ts +++ b/src/vs/platform/instantiation/test/common/instantiationService.test.ts @@ -56,7 +56,7 @@ interface IDependentService { class DependentService implements IDependentService { _serviceBrand: any; - constructor( @IService1 service: IService1) { + constructor(@IService1 service: IService1) { assert.equal(service.c, 1); } @@ -65,7 +65,7 @@ class DependentService implements IDependentService { class Service1Consumer { - constructor( @IService1 service1: IService1) { + constructor(@IService1 service1: IService1) { assert.ok(service1); assert.equal(service1.c, 1); } @@ -73,7 +73,7 @@ class Service1Consumer { class Target2Dep { - constructor( @IService1 service1: IService1, @IService2 service2) { + constructor(@IService1 service1: IService1, @IService2 service2) { assert.ok(service1 instanceof Service1); assert.ok(service2 instanceof Service2); } @@ -88,12 +88,12 @@ class TargetWithStaticParam { } class TargetNotOptional { - constructor( @IService1 service1: IService1, @IService2 service2: IService2) { + constructor(@IService1 service1: IService1, @IService2 service2: IService2) { } } class TargetOptional { - constructor( @IService1 service1: IService1, @optional(IService2) service2: IService2) { + constructor(@IService1 service1: IService1, @optional(IService2) service2: IService2) { assert.ok(service1); assert.equal(service1.c, 1); assert.ok(service2 === void 0); @@ -101,14 +101,14 @@ class TargetOptional { } class DependentServiceTarget { - constructor( @IDependentService d) { + constructor(@IDependentService d) { assert.ok(d); assert.equal(d.name, 'farboo'); } } class DependentServiceTarget2 { - constructor( @IDependentService d: IDependentService, @IService1 s: IService1) { + constructor(@IDependentService d: IDependentService, @IService1 s: IService1) { assert.ok(d); assert.equal(d.name, 'farboo'); assert.ok(s); @@ -121,7 +121,7 @@ class ServiceLoop1 implements IService1 { _serviceBrand: any; c = 1; - constructor( @IService2 s: IService2) { + constructor(@IService2 s: IService2) { } } @@ -130,7 +130,7 @@ class ServiceLoop2 implements IService2 { _serviceBrand: any; d = true; - constructor( @IService1 s: IService1) { + constructor(@IService1 s: IService1) { } } diff --git a/src/vs/platform/list/browser/listService.ts b/src/vs/platform/list/browser/listService.ts index c3982e98716..955b1b34b56 100644 --- a/src/vs/platform/list/browser/listService.ts +++ b/src/vs/platform/list/browser/listService.ts @@ -55,7 +55,7 @@ export class ListService implements IListService { return this._lastFocusedWidget; } - constructor( @IContextKeyService contextKeyService: IContextKeyService) { } + constructor(@IContextKeyService contextKeyService: IContextKeyService) { } register(widget: ListWidget, extraContextKeys?: (IContextKey)[]): IDisposable { if (this.lists.some(l => l.widget === widget)) { diff --git a/src/vs/platform/state/node/stateService.ts b/src/vs/platform/state/node/stateService.ts index 6d49892b033..12e1682db58 100644 --- a/src/vs/platform/state/node/stateService.ts +++ b/src/vs/platform/state/node/stateService.ts @@ -92,7 +92,7 @@ export class StateService implements IStateService { private fileStorage: FileStorage; - constructor( @IEnvironmentService environmentService: IEnvironmentService, @ILogService logService: ILogService) { + constructor(@IEnvironmentService environmentService: IEnvironmentService, @ILogService logService: ILogService) { this.fileStorage = new FileStorage(path.join(environmentService.userDataPath, 'storage.json'), error => logService.error(error)); } diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts index e57a87a3d81..f23667c9b62 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -220,7 +220,7 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(ChangeEncodingAction, export class QuickOpenActionContributor extends ActionBarContributor { private openToSideActionInstance: OpenToSideAction; - constructor( @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@IInstantiationService private instantiationService: IInstantiationService) { super(); } diff --git a/src/vs/workbench/browser/parts/editor/rangeDecorations.ts b/src/vs/workbench/browser/parts/editor/rangeDecorations.ts index b59a0abd867..482aa2db83a 100644 --- a/src/vs/workbench/browser/parts/editor/rangeDecorations.ts +++ b/src/vs/workbench/browser/parts/editor/rangeDecorations.ts @@ -28,7 +28,7 @@ export class RangeHighlightDecorations implements IDisposable { private _onHighlightRemoved: Emitter = new Emitter(); public readonly onHighlghtRemoved: Event = this._onHighlightRemoved.event; - constructor( @IWorkbenchEditorService private editorService: IWorkbenchEditorService) { + constructor(@IWorkbenchEditorService private editorService: IWorkbenchEditorService) { } public removeHighlightRange() { diff --git a/src/vs/workbench/browser/parts/notifications/notificationsList.ts b/src/vs/workbench/browser/parts/notifications/notificationsList.ts index 045b56a5f51..3f4cb3ad968 100644 --- a/src/vs/workbench/browser/parts/notifications/notificationsList.ts +++ b/src/vs/workbench/browser/parts/notifications/notificationsList.ts @@ -74,7 +74,7 @@ export class NotificationsList extends Themable { const renderer = this.instantiationService.createInstance(NotificationRenderer, actionRunner); // List - this.list = this.instantiationService.createInstance( + this.list = >this.instantiationService.createInstance( WorkbenchList, this.listContainer, new NotificationsListDelegate(this.listContainer), diff --git a/src/vs/workbench/parts/debug/electron-browser/callStackView.ts b/src/vs/workbench/parts/debug/electron-browser/callStackView.ts index 8602ce48066..8e3b75e7f39 100644 --- a/src/vs/workbench/parts/debug/electron-browser/callStackView.ts +++ b/src/vs/workbench/parts/debug/electron-browser/callStackView.ts @@ -523,7 +523,7 @@ class CallStackRenderer implements IRenderer { class CallstackAccessibilityProvider implements IAccessibilityProvider { - constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { // noop } diff --git a/src/vs/workbench/parts/extensions/browser/dependenciesViewer.ts b/src/vs/workbench/parts/extensions/browser/dependenciesViewer.ts index 18baa41f67c..0e0c2715ee8 100644 --- a/src/vs/workbench/parts/extensions/browser/dependenciesViewer.ts +++ b/src/vs/workbench/parts/extensions/browser/dependenciesViewer.ts @@ -59,7 +59,7 @@ export class Renderer implements IRenderer { private static readonly EXTENSION_TEMPLATE_ID = 'extension-template'; private static readonly UNKNOWN_EXTENSION_TEMPLATE_ID = 'unknown-extension-template'; - constructor( @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@IInstantiationService private instantiationService: IInstantiationService) { } public getHeight(tree: ITree, element: IExtensionDependencies): number { @@ -198,7 +198,7 @@ class OpenExtensionAction extends Action { private _extensionDependencies: IExtensionDependencies; - constructor( @IExtensionsWorkbenchService private extensionsWorkdbenchService: IExtensionsWorkbenchService) { + constructor(@IExtensionsWorkbenchService private extensionsWorkdbenchService: IExtensionsWorkbenchService) { super('extensions.action.openDependency', ''); } diff --git a/src/vs/workbench/parts/extensions/browser/extensionsActions.ts b/src/vs/workbench/parts/extensions/browser/extensionsActions.ts index e93363d84e9..1e0e926346e 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionsActions.ts @@ -1541,7 +1541,7 @@ export abstract class AbstractConfigureRecommendedExtensionsAction extends Actio selection } })), - error => TPromise.wrapError(new Error(localize('OpenExtensionsFile.failed', "Unable to create 'extensions.json' file inside the '.vscode' folder ({0}).", error)))); + error => TPromise.wrapError(new Error(localize('OpenExtensionsFile.failed', "Unable to create 'extensions.json' file inside the '.vscode' folder ({0}).", error)))); } protected openWorkspaceConfigurationFile(workspaceConfigurationFile: URI): TPromise { diff --git a/src/vs/workbench/parts/extensions/browser/extensionsQuickOpen.ts b/src/vs/workbench/parts/extensions/browser/extensionsQuickOpen.ts index 13df5927501..392a25bbd72 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionsQuickOpen.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionsQuickOpen.ts @@ -42,7 +42,7 @@ export class ExtensionsHandler extends QuickOpenHandler { public static readonly ID = 'workbench.picker.extensions'; - constructor( @IViewletService private viewletService: IViewletService) { + constructor(@IViewletService private viewletService: IViewletService) { super(); } diff --git a/src/vs/workbench/parts/files/common/explorerModel.ts b/src/vs/workbench/parts/files/common/explorerModel.ts index a9813fe39f0..04ae7fc3b7a 100644 --- a/src/vs/workbench/parts/files/common/explorerModel.ts +++ b/src/vs/workbench/parts/files/common/explorerModel.ts @@ -23,7 +23,7 @@ export class Model { private _roots: FileStat[]; private _listener: IDisposable; - constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { const setRoots = () => this._roots = this.contextService.getWorkspace().folders.map(folder => { const root = new FileStat(folder.uri, undefined); root.name = folder.name; diff --git a/src/vs/workbench/parts/output/browser/outputActions.ts b/src/vs/workbench/parts/output/browser/outputActions.ts index 81c9db909cd..7092b271363 100644 --- a/src/vs/workbench/parts/output/browser/outputActions.ts +++ b/src/vs/workbench/parts/output/browser/outputActions.ts @@ -94,7 +94,7 @@ export class SwitchOutputAction extends Action { public static readonly ID = 'workbench.output.action.switchBetweenOutputs'; - constructor( @IOutputService private outputService: IOutputService) { + constructor(@IOutputService private outputService: IOutputService) { super(SwitchOutputAction.ID, nls.localize('switchToOutput.label', "Switch to Output")); this.class = 'output-action switch-to-output'; diff --git a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts index 585dd29da3e..41f228d088a 100644 --- a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts @@ -50,7 +50,7 @@ export class KeybindingsEditorInput extends EditorInput { public static readonly ID: string = 'workbench.input.keybindings'; public readonly keybindingsModel: KeybindingsEditorModel; - constructor( @IInstantiationService instantiationService: IInstantiationService) { + constructor(@IInstantiationService instantiationService: IInstantiationService) { super(); this.keybindingsModel = instantiationService.createInstance(KeybindingsEditorModel, OS); } @@ -210,10 +210,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor this.reportKeybindingAction(KEYBINDINGS_EDITOR_COMMAND_REMOVE, keybindingEntry.keybindingItem.command, keybindingEntry.keybindingItem.keybinding); return this.keybindingEditingService.removeKeybinding(keybindingEntry.keybindingItem.keybindingItem) .then(() => this.focus(), - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } return TPromise.as(null); } @@ -228,10 +228,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor } this.selectEntry(keybindingEntry); }, - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } copyKeybinding(keybinding: IKeybindingItemEntry): TPromise { diff --git a/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts b/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts index d98bc679c4b..fd4abde0cb9 100644 --- a/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts +++ b/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts @@ -211,7 +211,7 @@ export class GotoLineHandler extends QuickOpenHandler { private rangeHighlightDecorationId: IEditorLineDecoration; private lastKnownEditorViewState: IEditorViewState; - constructor( @IWorkbenchEditorService private editorService: IWorkbenchEditorService) { + constructor(@IWorkbenchEditorService private editorService: IWorkbenchEditorService) { super(); } diff --git a/src/vs/workbench/parts/quickopen/browser/helpHandler.ts b/src/vs/workbench/parts/quickopen/browser/helpHandler.ts index 283a487dc96..767ba568416 100644 --- a/src/vs/workbench/parts/quickopen/browser/helpHandler.ts +++ b/src/vs/workbench/parts/quickopen/browser/helpHandler.ts @@ -62,7 +62,7 @@ export class HelpHandler extends QuickOpenHandler { public static readonly ID = 'workbench.picker.help'; - constructor( @IQuickOpenService private quickOpenService: IQuickOpenService) { + constructor(@IQuickOpenService private quickOpenService: IQuickOpenService) { super(); } diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index ba38ee61c97..571bbcea85a 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -1010,7 +1010,7 @@ export class RepositoryPanel extends ViewletPanel { class InstallAdditionalSCMProvidersAction extends Action { - constructor( @IViewletService private viewletService: IViewletService) { + constructor(@IViewletService private viewletService: IViewletService) { super('scm.installAdditionalSCMProviders', localize('installAdditionalSCMProviders', "Install Additional SCM Providers..."), '', true); } diff --git a/src/vs/workbench/parts/search/browser/openSymbolHandler.ts b/src/vs/workbench/parts/search/browser/openSymbolHandler.ts index 4f1a912594e..084985f0d68 100644 --- a/src/vs/workbench/parts/search/browser/openSymbolHandler.ts +++ b/src/vs/workbench/parts/search/browser/openSymbolHandler.ts @@ -137,7 +137,7 @@ export class OpenSymbolHandler extends QuickOpenHandler { private delayer: ThrottledDelayer; private options: IOpenSymbolOptions; - constructor( @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@IInstantiationService private instantiationService: IInstantiationService) { super(); this.delayer = new ThrottledDelayer(OpenSymbolHandler.SEARCH_DELAY); diff --git a/src/vs/workbench/parts/search/browser/searchResultsView.ts b/src/vs/workbench/parts/search/browser/searchResultsView.ts index 7f40ced20fd..188f2c1c147 100644 --- a/src/vs/workbench/parts/search/browser/searchResultsView.ts +++ b/src/vs/workbench/parts/search/browser/searchResultsView.ts @@ -31,7 +31,7 @@ export class SearchDataSource implements IDataSource { private includeFolderMatch: boolean; private listener: IDisposable; - constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { this.updateIncludeFolderMatch(); this.listener = this.contextService.onDidChangeWorkbenchState(() => this.updateIncludeFolderMatch()); } @@ -319,7 +319,7 @@ export class SearchRenderer extends Disposable implements IRenderer { export class SearchAccessibilityProvider implements IAccessibilityProvider { - constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { } public getAriaLabel(tree: ITree, element: FileMatchOrMatch): string { diff --git a/src/vs/workbench/parts/search/common/searchModel.ts b/src/vs/workbench/parts/search/common/searchModel.ts index 45ce2fc208e..a6d04f8387b 100644 --- a/src/vs/workbench/parts/search/common/searchModel.ts +++ b/src/vs/workbench/parts/search/common/searchModel.ts @@ -687,7 +687,7 @@ export class SearchModel extends Disposable { private currentRequest: PPromise; - constructor( @ISearchService private searchService: ISearchService, @ITelemetryService private telemetryService: ITelemetryService, @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@ISearchService private searchService: ISearchService, @ITelemetryService private telemetryService: ITelemetryService, @IInstantiationService private instantiationService: IInstantiationService) { super(); this._searchResult = this.instantiationService.createInstance(SearchResult, this); } @@ -829,7 +829,7 @@ export class SearchWorkbenchService implements ISearchWorkbenchService { _serviceBrand: any; private _searchModel: SearchModel; - constructor( @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@IInstantiationService private instantiationService: IInstantiationService) { } get searchModel(): SearchModel { diff --git a/src/vs/workbench/parts/tasks/browser/quickOpen.ts b/src/vs/workbench/parts/tasks/browser/quickOpen.ts index e760a7201f8..18c84f752e2 100644 --- a/src/vs/workbench/parts/tasks/browser/quickOpen.ts +++ b/src/vs/workbench/parts/tasks/browser/quickOpen.ts @@ -200,7 +200,7 @@ export class QuickOpenActionContributor extends ActionBarContributor { private action: CustomizeTaskAction; - constructor( @ITaskService taskService: ITaskService, @IQuickOpenService quickOpenService: IQuickOpenService) { + constructor(@ITaskService taskService: ITaskService, @IQuickOpenService quickOpenService: IQuickOpenService) { super(); this.action = new CustomizeTaskAction(taskService, quickOpenService); } diff --git a/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts b/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts index 11334a526a4..c1d0db6e0ee 100644 --- a/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts +++ b/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts @@ -77,9 +77,9 @@ export class SelectColorThemeAction extends Action { return this.quickOpenService.pick(picks, { placeHolder, autoFocus: { autoFocusIndex } }) .then( - theme => delayer.trigger(() => selectTheme(theme || currentTheme, true), 0), - null, - theme => delayer.trigger(() => selectTheme(theme, false)) + theme => delayer.trigger(() => selectTheme(theme || currentTheme, true), 0), + null, + theme => delayer.trigger(() => selectTheme(theme, false)) ); }); } @@ -135,9 +135,9 @@ class SelectIconThemeAction extends Action { return this.quickOpenService.pick(picks, { placeHolder, autoFocus: { autoFocusIndex } }) .then( - theme => delayer.trigger(() => selectTheme(theme || currentTheme, true), 0), - null, - theme => delayer.trigger(() => selectTheme(theme, false)) + theme => delayer.trigger(() => selectTheme(theme || currentTheme, true), 0), + null, + theme => delayer.trigger(() => selectTheme(theme, false)) ); }); } diff --git a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution.ts b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution.ts index 34735d73d31..09d1a695acd 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution.ts +++ b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution.ts @@ -28,12 +28,12 @@ Registry.as(EditorExtensions.Editors) WalkThroughPart.ID, localize('walkThrough.editor.label', "Interactive Playground"), ), - [new SyncDescriptor(WalkThroughInput)]); + [new SyncDescriptor(WalkThroughInput)]); Registry.as(Extensions.WorkbenchActions) .registerWorkbenchAction( - new SyncActionDescriptor(EditorWalkThroughAction, EditorWalkThroughAction.ID, EditorWalkThroughAction.LABEL), - 'Help: Interactive Playground', localize('help', "Help")); + new SyncActionDescriptor(EditorWalkThroughAction, EditorWalkThroughAction.ID, EditorWalkThroughAction.LABEL), + 'Help: Interactive Playground', localize('help', "Help")); Registry.as(EditorInputExtensions.EditorInputFactories).registerEditorInputFactory(EditorWalkThroughInputFactory.ID, EditorWalkThroughInputFactory); diff --git a/src/vs/workbench/services/configuration/node/configurationEditingService.ts b/src/vs/workbench/services/configuration/node/configurationEditingService.ts index edcd13dd67d..b242c7188c6 100644 --- a/src/vs/workbench/services/configuration/node/configurationEditingService.ts +++ b/src/vs/workbench/services/configuration/node/configurationEditingService.ts @@ -137,12 +137,12 @@ export class ConfigurationEditingService { const operation = this.getConfigurationEditOperation(target, value, options.scopes || {}); return this.queue.queue(() => this.doWriteConfiguration(operation, options) // queue up writes to prevent race conditions .then(() => null, - error => { - if (!options.donotNotifyError) { - this.onError(error, operation, options.scopes); - } - return TPromise.wrapError(error); - })); + error => { + if (!options.donotNotifyError) { + this.onError(error, operation, options.scopes); + } + return TPromise.wrapError(error); + })); } private doWriteConfiguration(operation: IConfigurationEditOperation, options: ConfigurationEditingOptions): TPromise { diff --git a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts index 777f1c1b149..274824596d4 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts +++ b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts @@ -140,34 +140,34 @@ suite('ConfigurationEditingService', () => { test('errors cases - invalid key', () => { return testObject.writeConfiguration(ConfigurationTarget.WORKSPACE, { key: 'unknown.key', value: 'value' }) .then(() => assert.fail('Should fail with ERROR_UNKNOWN_KEY'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_UNKNOWN_KEY)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_UNKNOWN_KEY)); }); test('errors cases - invalid target', () => { return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'tasks.something', value: 'value' }) .then(() => assert.fail('Should fail with ERROR_INVALID_TARGET'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_INVALID_USER_TARGET)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_INVALID_USER_TARGET)); }); test('errors cases - no workspace', () => { return setUpServices(true) .then(() => testObject.writeConfiguration(ConfigurationTarget.WORKSPACE, { key: 'configurationEditing.service.testSetting', value: 'value' })) .then(() => assert.fail('Should fail with ERROR_NO_WORKSPACE_OPENED'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_NO_WORKSPACE_OPENED)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_NO_WORKSPACE_OPENED)); }); test('errors cases - invalid configuration', () => { fs.writeFileSync(globalSettingsFile, ',,,,,,,,,,,,,,'); return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'configurationEditing.service.testSetting', value: 'value' }) .then(() => assert.fail('Should fail with ERROR_INVALID_CONFIGURATION'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_INVALID_CONFIGURATION)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_INVALID_CONFIGURATION)); }); test('errors cases - dirty', () => { instantiationService.stub(ITextFileService, 'isDirty', true); return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'configurationEditing.service.testSetting', value: 'value' }) .then(() => assert.fail('Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_DIRTY)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_DIRTY)); }); test('dirty error is not thrown if not asked to save', () => { @@ -182,10 +182,10 @@ suite('ConfigurationEditingService', () => { instantiationService.stub(INotificationService, { prompt: target, _serviceBrand: null, notify: null, error: null, info: null, warn: null }); return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'configurationEditing.service.testSetting', value: 'value' }, { donotNotifyError: true }) .then(() => assert.fail('Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.'), - (error: ConfigurationEditingError) => { - assert.equal(false, target.calledOnce); - assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_DIRTY); - }); + (error: ConfigurationEditingError) => { + assert.equal(false, target.calledOnce); + assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_DIRTY); + }); }); test('write one setting - empty file', () => { diff --git a/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts b/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts index 9228229b7d6..2279103e197 100644 --- a/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts +++ b/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts @@ -109,28 +109,28 @@ suite('Keybindings Editing', () => { fs.writeFileSync(keybindingsFile, ',,,,,,,,,,,,,,'); return testObject.editKeybinding('alt+c', aResolvedKeybindingItem({ firstPart: { keyCode: KeyCode.Escape } })) .then(() => assert.fail('Should fail with parse errors'), - error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. Please open it to correct errors/warnings in the file and try again.')); + error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. Please open it to correct errors/warnings in the file and try again.')); }); test('errors cases - parse errors 2', () => { fs.writeFileSync(keybindingsFile, '[{"key": }]'); return testObject.editKeybinding('alt+c', aResolvedKeybindingItem({ firstPart: { keyCode: KeyCode.Escape } })) .then(() => assert.fail('Should fail with parse errors'), - error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. Please open it to correct errors/warnings in the file and try again.')); + error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. Please open it to correct errors/warnings in the file and try again.')); }); test('errors cases - dirty', () => { instantiationService.stub(ITextFileService, 'isDirty', true); return testObject.editKeybinding('alt+c', aResolvedKeybindingItem({ firstPart: { keyCode: KeyCode.Escape } })) .then(() => assert.fail('Should fail with dirty error'), - error => assert.equal(error.message, 'Unable to write because the keybindings configuration file is dirty. Please save it first and then try again.')); + error => assert.equal(error.message, 'Unable to write because the keybindings configuration file is dirty. Please save it first and then try again.')); }); test('errors cases - did not find an array', () => { fs.writeFileSync(keybindingsFile, '{"key": "alt+c", "command": "hello"}'); return testObject.editKeybinding('alt+c', aResolvedKeybindingItem({ firstPart: { keyCode: KeyCode.Escape } })) .then(() => assert.fail('Should fail with dirty error'), - error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. It has an object which is not of type Array. Please open the file to clean up and try again.')); + error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. It has an object which is not of type Array. Please open the file to clean up and try again.')); }); test('edit a default keybinding to an empty file', () => { diff --git a/src/vs/workbench/services/scm/common/scmService.ts b/src/vs/workbench/services/scm/common/scmService.ts index e1ca99a7729..59f0bb7e668 100644 --- a/src/vs/workbench/services/scm/common/scmService.ts +++ b/src/vs/workbench/services/scm/common/scmService.ts @@ -92,7 +92,7 @@ export class SCMService implements ISCMService { private _onDidRemoveProvider = new Emitter(); get onDidRemoveRepository(): Event { return this._onDidRemoveProvider.event; } - constructor( @ILogService private logService: ILogService) { } + constructor(@ILogService private logService: ILogService) { } registerSCMProvider(provider: ISCMProvider): ISCMRepository { this.logService.trace('SCMService#registerSCMProvider'); diff --git a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts index ff4e0414531..8c892684f97 100644 --- a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts +++ b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts @@ -1082,7 +1082,7 @@ export class SaveSequentializer { class DefaultSaveErrorHandler implements ISaveErrorHandler { - constructor( @INotificationService private notificationService: INotificationService) { } + constructor(@INotificationService private notificationService: INotificationService) { } public onSaveError(error: any, model: TextFileEditorModel): void { this.notificationService.error(nls.localize('genericSaveError', "Failed to save '{0}': {1}", paths.basename(model.getResource().fsPath), toErrorMessage(error, false))); diff --git a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts index 9ce74a61c1c..5eec935b1f3 100644 --- a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts @@ -19,7 +19,7 @@ import { IModelService } from 'vs/editor/common/services/modelService'; import { timeout } from 'vs/base/common/async'; class ServiceAccessor { - constructor( @ITextFileService public textFileService: TestTextFileService, @IModelService public modelService: IModelService, @IFileService public fileService: TestFileService) { + constructor(@ITextFileService public textFileService: TestTextFileService, @IModelService public modelService: IModelService, @IFileService public fileService: TestFileService) { } } diff --git a/src/vs/workbench/services/themes/electron-browser/colorThemeStore.ts b/src/vs/workbench/services/themes/electron-browser/colorThemeStore.ts index 045952b494a..c7062184e69 100644 --- a/src/vs/workbench/services/themes/electron-browser/colorThemeStore.ts +++ b/src/vs/workbench/services/themes/electron-browser/colorThemeStore.ts @@ -51,7 +51,7 @@ export class ColorThemeStore { public get onDidChange(): Event { return this.onDidChangeEmitter.event; } - constructor( @IExtensionService private extensionService: IExtensionService, defaultTheme: ColorThemeData) { + constructor(@IExtensionService private extensionService: IExtensionService, defaultTheme: ColorThemeData) { this.extensionsColorThemes = [defaultTheme]; this.onDidChangeEmitter = new Emitter(); this.initialize(); diff --git a/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.ts b/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.ts index 7f997baf20c..518e23f8272 100644 --- a/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.ts +++ b/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.ts @@ -45,7 +45,7 @@ export class FileIconThemeStore { public get onDidChange(): Event { return this.onDidChangeEmitter.event; } - constructor( @IExtensionService private extensionService: IExtensionService) { + constructor(@IExtensionService private extensionService: IExtensionService) { this.knownIconThemes = []; this.onDidChangeEmitter = new Emitter(); this.initialize(); diff --git a/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts b/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts index aef3da6d601..5948058a757 100644 --- a/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts +++ b/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts @@ -465,7 +465,7 @@ colorThemeSchema.register(); fileIconThemeSchema.register(); class ConfigurationWriter { - constructor( @IConfigurationService private configurationService: IConfigurationService) { + constructor(@IConfigurationService private configurationService: IConfigurationService) { } public writeConfiguration(key: string, value: any, settingsTarget: ConfigurationTarget): TPromise { diff --git a/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts b/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts index eb05c9676b1..4a3e23ffe67 100644 --- a/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts @@ -27,7 +27,7 @@ let EditorInputRegistry: IEditorInputFactoryRegistry = Platform.Registry.as(Edit export class MyEditor extends BaseEditor { - constructor( @ITelemetryService telemetryService: ITelemetryService) { + constructor(@ITelemetryService telemetryService: ITelemetryService) { super('MyEditor', NullTelemetryService, NullThemeService); } @@ -46,7 +46,7 @@ export class MyEditor extends BaseEditor { export class MyOtherEditor extends BaseEditor { - constructor( @ITelemetryService telemetryService: ITelemetryService) { + constructor(@ITelemetryService telemetryService: ITelemetryService) { super('myOtherEditor', NullTelemetryService, NullThemeService); } diff --git a/src/vs/workbench/test/common/editor/editor.test.ts b/src/vs/workbench/test/common/editor/editor.test.ts index f1f983df23b..218ff420427 100644 --- a/src/vs/workbench/test/common/editor/editor.test.ts +++ b/src/vs/workbench/test/common/editor/editor.test.ts @@ -17,7 +17,7 @@ import { workbenchInstantiationService } from 'vs/workbench/test/workbenchTestSe import { Schemas } from 'vs/base/common/network'; class ServiceAccessor { - constructor( @IUntitledEditorService public untitledEditorService: UntitledEditorService) { + constructor(@IUntitledEditorService public untitledEditorService: UntitledEditorService) { } } diff --git a/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts b/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts index f3131cc37c7..995c2d814a8 100644 --- a/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts +++ b/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts @@ -20,7 +20,7 @@ import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/commo import { snapshotToString } from 'vs/platform/files/common/files'; class ServiceAccessor { - constructor( @ITextFileService public textFileService: TestTextFileService, @IModelService public modelService: IModelService) { + constructor(@ITextFileService public textFileService: TestTextFileService, @IModelService public modelService: IModelService) { } } diff --git a/yarn.lock b/yarn.lock index e8d23ef9467..fc77c136aea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13,6 +13,12 @@ normalize-path "^2.0.1" through2 "^2.0.3" +"@types/commander@^2.11.0": + version "2.12.2" + resolved "https://registry.yarnpkg.com/@types/commander/-/commander-2.12.2.tgz#183041a23842d4281478fa5d23c5ca78e6fd08ae" + dependencies: + commander "*" + "@types/keytar@4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/keytar/-/keytar-4.0.1.tgz#e2cf6405dc33861424e59b67516c66d2cf7bc21b" @@ -29,6 +35,10 @@ version "4.2.22" resolved "https://registry.yarnpkg.com/@types/node/-/node-4.2.22.tgz#cf488a0f6b4a9c245d09927f4f757ca278b9c8ce" +"@types/semver@^5.4.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45" + "@types/sinon@1.16.34": version "1.16.34" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-1.16.34.tgz#a9761fff33d0f7b3fe61875b577778a2576a9a03" @@ -417,10 +427,6 @@ bl@~1.1.2: dependencies: readable-stream "~2.0.5" -bluebird@^3.0.5: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - body-parser@1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" @@ -786,6 +792,10 @@ combined-stream@~0.0.4: dependencies: delayed-stream "0.0.5" +commander@*, commander@^2.11.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" + commander@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" @@ -1241,14 +1251,15 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -editorconfig@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.3.tgz#e5219e587951d60958fd94ea9a9a008cdeff1b34" +editorconfig@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.0.tgz#b6dd4a0b6b9e76ce48e066bdc15381aebb8804fd" dependencies: - bluebird "^3.0.5" - commander "^2.9.0" - lru-cache "^3.2.0" - semver "^5.1.0" + "@types/commander" "^2.11.0" + "@types/semver" "^5.4.0" + commander "^2.11.0" + lru-cache "^4.1.1" + semver "^5.4.1" sigmund "^1.0.1" ee-first@1.1.1: @@ -1970,13 +1981,6 @@ glob-base@^0.3.0: glob-parent "^2.0.0" is-glob "^2.0.0" -glob-expand@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/glob-expand/-/glob-expand-0.2.1.tgz#1b088ac272b57158870b76816111da4618a66a0f" - dependencies: - glob "~4.5.x" - lodash "~4.13.x" - glob-parent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" @@ -2043,7 +2047,7 @@ glob@5.x, glob@^5.0.13, glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^4.3.1, glob@~4.5.x: +glob@^4.3.1: version "4.5.3" resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" dependencies: @@ -3523,10 +3527,6 @@ lodash@~2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" -lodash@~4.13.x: - version "4.13.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.13.1.tgz#83e4b10913f48496d4d16fec4a560af2ee744b68" - log-driver@1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" @@ -3550,12 +3550,6 @@ lru-cache@2: version "2.7.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" - dependencies: - pseudomap "^1.0.1" - lru-cache@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" @@ -3563,6 +3557,13 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" @@ -4576,7 +4577,7 @@ proxy-addr@~2.0.2: forwarded "~0.1.2" ipaddr.js "1.5.2" -pseudomap@^1.0.1, pseudomap@^1.0.2: +pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -5032,6 +5033,10 @@ semver@4.3.6, semver@^4.1.0, semver@^4.3.4: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" +semver@^5.4.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + send@0.16.1: version "0.16.1" resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" @@ -5628,17 +5633,16 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript-formatter@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/typescript-formatter/-/typescript-formatter-4.0.1.tgz#ed82daf856cc9a379bb16b7f1aac9affee2974cd" +typescript-formatter@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/typescript-formatter/-/typescript-formatter-7.1.0.tgz#dd1b5547de211065221f765263e15f18c84c66b8" dependencies: commandpost "^1.0.0" - editorconfig "^0.13.2" - glob-expand "^0.2.1" + editorconfig "^0.15.0" -typescript@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" +typescript@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" typescript@^2.6.2: version "2.6.2" From 3ec9d1485a2d4355899b3c5dd37b3e6d17e2e020 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 15:57:56 -0800 Subject: [PATCH 274/658] For let -> For const --- extensions/typescript/src/features/documentSymbolProvider.ts | 2 +- extensions/typescript/src/features/formattingProvider.ts | 2 +- extensions/typescript/src/typeScriptServiceClientHost.ts | 2 +- extensions/typescript/src/utils/projectStatus.ts | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extensions/typescript/src/features/documentSymbolProvider.ts b/extensions/typescript/src/features/documentSymbolProvider.ts index bb052549a5c..c910b5381c0 100644 --- a/extensions/typescript/src/features/documentSymbolProvider.ts +++ b/extensions/typescript/src/features/documentSymbolProvider.ts @@ -76,7 +76,7 @@ export default class TypeScriptDocumentSymbolProvider implements DocumentSymbolP bucket.push(result); } if (item.childItems && item.childItems.length > 0) { - for (let child of item.childItems) { + for (const child of item.childItems) { TypeScriptDocumentSymbolProvider.convertNavBar(resource, realIndent + 1, foldingMap, bucket, child, item.text); } } diff --git a/extensions/typescript/src/features/formattingProvider.ts b/extensions/typescript/src/features/formattingProvider.ts index 390ae6dc91b..ed5a4a0e9ae 100644 --- a/extensions/typescript/src/features/formattingProvider.ts +++ b/extensions/typescript/src/features/formattingProvider.ts @@ -89,7 +89,7 @@ export class TypeScriptFormattingProvider implements DocumentRangeFormattingEdit if (!edits) { return result; } - for (let edit of edits) { + for (const edit of edits) { let textEdit = this.codeEdit2SingleEditOperation(edit); let range = textEdit.range; // Work around for https://github.com/Microsoft/TypeScript/issues/6700. diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index f8a2b046c14..c410d30623f 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -246,7 +246,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl private createMarkerDatas(diagnostics: Proto.Diagnostic[], source: string): Diagnostic[] { const result: Diagnostic[] = []; - for (let diagnostic of diagnostics) { + for (const diagnostic of diagnostics) { const { start, end, text } = diagnostic; const range = new Range(tsLocationToVsPosition(start), tsLocationToVsPosition(end)); const converted = new Diagnostic(range, text); diff --git a/extensions/typescript/src/utils/projectStatus.ts b/extensions/typescript/src/utils/projectStatus.ts index 186c1437ced..3458a21f28a 100644 --- a/extensions/typescript/src/utils/projectStatus.ts +++ b/extensions/typescript/src/utils/projectStatus.ts @@ -205,7 +205,7 @@ function computeLargeRoots(configFileName: string, fileNames: string[]): string[ // console.log(dir, fileNames); - for (let fileName of fileNames) { + for (const fileName of fileNames) { if (fileName.indexOf(dir) === 0) { let first = fileName.substring(dir.length + 1); first = first.substring(0, first.indexOf('/')); @@ -226,7 +226,7 @@ function computeLargeRoots(configFileName: string, fileNames: string[]): string[ let result: string[] = []; let sum = 0; - for (let e of data) { + for (const e of data) { sum += e.count; result.push(e.root); if (fileNames.length - sum < fileLimit) { From e7d3746a5602c0b79c814f665fe4d57a4ad11e64 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:05:56 -0800 Subject: [PATCH 275/658] Use memorize for channel --- extensions/typescript/src/utils/logger.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/extensions/typescript/src/utils/logger.ts b/extensions/typescript/src/utils/logger.ts index 53f09faa4f6..cc57346efbf 100644 --- a/extensions/typescript/src/utils/logger.ts +++ b/extensions/typescript/src/utils/logger.ts @@ -5,18 +5,16 @@ import { OutputChannel, window } from 'vscode'; import * as is from './is'; +import { memoize } from './memoize'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); export default class Logger { - private _output?: OutputChannel; + @memoize private get output(): OutputChannel { - if (!this._output) { - this._output = window.createOutputChannel(localize('channelName', 'TypeScript')); - } - return this._output; + return window.createOutputChannel(localize('channelName', 'TypeScript')); } private data2String(data: any): string { From ba44dc249aec015fe89c4e0e16e3e4faf9449d28 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:08:12 -0800 Subject: [PATCH 276/658] Extract duplicated disposeall code --- .../src/features/bufferSyncSupport.ts | 8 ++----- extensions/typescript/src/languageProvider.ts | 23 ++++--------------- .../src/typeScriptServiceClientHost.ts | 9 ++------ .../typescript/src/typescriptServiceClient.ts | 8 ++----- extensions/typescript/src/utils/dipose.ts | 15 ++++++++++++ 5 files changed, 25 insertions(+), 38 deletions(-) create mode 100644 extensions/typescript/src/utils/dipose.ts diff --git a/extensions/typescript/src/features/bufferSyncSupport.ts b/extensions/typescript/src/features/bufferSyncSupport.ts index 186cd02ba6b..aa190e66746 100644 --- a/extensions/typescript/src/features/bufferSyncSupport.ts +++ b/extensions/typescript/src/features/bufferSyncSupport.ts @@ -10,6 +10,7 @@ import * as Proto from '../protocol'; import { ITypeScriptServiceClient } from '../typescriptService'; import { Delayer } from '../utils/async'; import * as languageModeIds from '../utils/languageModeIds'; +import { disposeAll } from '../utils/dipose'; interface IDiagnosticRequestor { requestDiagnostic(filepath: string): void; @@ -152,12 +153,7 @@ export default class BufferSyncSupport { } public dispose(): void { - while (this.disposables.length) { - const obj = this.disposables.pop(); - if (obj) { - obj.dispose(); - } - } + disposeAll(this.disposables); } private onDidOpenTextDocument(document: TextDocument): void { diff --git a/extensions/typescript/src/languageProvider.ts b/extensions/typescript/src/languageProvider.ts index afdcf4fcbbd..c1d707ea42e 100644 --- a/extensions/typescript/src/languageProvider.ts +++ b/extensions/typescript/src/languageProvider.ts @@ -19,6 +19,7 @@ import { LanguageDescription } from './utils/languageDescription'; import * as fileSchemes from './utils/fileSchemes'; import { CachedNavTreeResponse } from './features/baseCodeLensProvider'; import { memoize } from './utils/memoize'; +import { disposeAll } from './utils/dipose'; const validateSetting = 'validate.enable'; const foldingSetting = 'typescript.experimental.syntaxFolding'; @@ -62,19 +63,8 @@ export default class LanguageProvider { } public dispose(): void { - while (this.disposables.length) { - const obj = this.disposables.pop(); - if (obj) { - obj.dispose(); - } - } - - while (this.versionDependentDisposables.length) { - const obj = this.versionDependentDisposables.pop(); - if (obj) { - obj.dispose(); - } - } + disposeAll(this.disposables); + disposeAll(this.versionDependentDisposables); this.diagnosticsManager.dispose(); this.bufferSyncSupport.dispose(); @@ -223,12 +213,7 @@ export default class LanguageProvider { } private async registerVersionDependentProviders(): Promise { - while (this.versionDependentDisposables.length) { - const obj = this.versionDependentDisposables.pop(); - if (obj) { - obj.dispose(); - } - } + disposeAll(this.versionDependentDisposables); if (!this.client) { return; diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index c410d30623f..29a50158bb4 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -24,6 +24,7 @@ import { tsLocationToVsPosition } from './utils/convert'; import { CommandManager } from './utils/commandManager'; import { LanguageDescription } from './utils/languageDescription'; import LogDirectoryProvider from './utils/logDirectoryProvider'; +import { disposeAll } from './utils/dipose'; // Style check diagnostics that can be reported as warnings const styleCheckDiagnostics = [ @@ -118,13 +119,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl } public dispose(): void { - while (this.disposables.length) { - const obj = this.disposables.pop(); - if (obj) { - obj.dispose(); - } - } - + disposeAll(this.disposables); this.typingsStatus.dispose(); this.ataProgressReporter.dispose(); } diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index cd97803c6f5..dc3a753210a 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -28,6 +28,7 @@ import { TypeScriptVersionPicker } from './utils/versionPicker'; import * as fileSchemes from './utils/fileSchemes'; import { inferredProjectConfig } from './utils/tsconfig'; import LogDirectoryProvider from './utils/logDirectoryProvider'; +import { disposeAll } from './utils/dipose'; const localize = nls.loadMessageBundle(); @@ -243,12 +244,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient }).then(undefined, () => void 0); } - while (this.disposables.length) { - const obj = this.disposables.pop(); - if (obj) { - obj.dispose(); - } - } + disposeAll(this.disposables); } public restartTsServer(): void { diff --git a/extensions/typescript/src/utils/dipose.ts b/extensions/typescript/src/utils/dipose.ts new file mode 100644 index 00000000000..b7c72f8b8b4 --- /dev/null +++ b/extensions/typescript/src/utils/dipose.ts @@ -0,0 +1,15 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; + +export function disposeAll(disposables: vscode.Disposable[]) { + while (disposables.length) { + const item = disposables.pop(); + if (item) { + item.dispose(); + } + } +} From a3562fa1656f26ac39d02316ca150689e392f7f7 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:18:18 -0800 Subject: [PATCH 277/658] Use events to tell host about syntax diagnostics Better decouple the language host from the language clients by using events instead of direct calls --- .../src/typeScriptServiceClientHost.ts | 10 +++++++--- extensions/typescript/src/typescriptService.ts | 3 --- .../typescript/src/typescriptServiceClient.ts | 18 +++++++++++++++--- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index 29a50158bb4..fb4bded8896 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -71,6 +71,10 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl this.client = new TypeScriptServiceClient(this, workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); this.disposables.push(this.client); + this.client.onSyntaxDiagnosticsReceived(diag => this.syntaxDiagnosticsReceived(diag), null, this.disposables); + this.client.onSemanticDiagnosticsReceived(diag => this.semanticDiagnosticsReceived(diag), null, this.disposables); + this.client.onConfigDiagnosticsReceived(diag => this.configFileDiagnosticsReceived(diag), null, this.disposables); + this.versionStatus = new VersionStatus(resource => this.client.normalizePath(resource)); this.disposables.push(this.versionStatus); @@ -166,7 +170,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl }); } - /* internal */ syntaxDiagnosticsReceived(event: Proto.DiagnosticEvent): void { + private syntaxDiagnosticsReceived(event: Proto.DiagnosticEvent): void { const body = event.body; if (body && body.diagnostics) { this.findLanguage(body.file).then(language => { @@ -177,7 +181,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl } } - /* internal */ semanticDiagnosticsReceived(event: Proto.DiagnosticEvent): void { + private semanticDiagnosticsReceived(event: Proto.DiagnosticEvent): void { const body = event.body; if (body && body.diagnostics) { this.findLanguage(body.file).then(language => { @@ -188,7 +192,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl } } - /* internal */ configFileDiagnosticsReceived(event: Proto.ConfigFileDiagnosticEvent): void { + private configFileDiagnosticsReceived(event: Proto.ConfigFileDiagnosticEvent): void { // See https://github.com/Microsoft/TypeScript/issues/10384 const body = event.body; if (!body || !body.diagnostics || !body.configFile) { diff --git a/extensions/typescript/src/typescriptService.ts b/extensions/typescript/src/typescriptService.ts index db51d60464c..a18b071e73d 100644 --- a/extensions/typescript/src/typescriptService.ts +++ b/extensions/typescript/src/typescriptService.ts @@ -12,9 +12,6 @@ import { TypeScriptServiceConfiguration } from './utils/configuration'; import Logger from './utils/logger'; export interface ITypeScriptServiceClientHost { - syntaxDiagnosticsReceived(event: Proto.DiagnosticEvent): void; - semanticDiagnosticsReceived(event: Proto.DiagnosticEvent): void; - configFileDiagnosticsReceived(event: Proto.ConfigFileDiagnosticEvent): void; populateService(): void; } diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index dc3a753210a..a10baa5ea61 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -233,6 +233,15 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this.disposables.push(this.telemetryReporter); } + private _onSyntaxDiagnosticsReceived = new EventEmitter(); + public get onSyntaxDiagnosticsReceived(): Event { return this._onSyntaxDiagnosticsReceived.event; } + + private _onSemanticDiagnosticsReceived = new EventEmitter(); + public get onSemanticDiagnosticsReceived(): Event { return this._onSemanticDiagnosticsReceived.event; } + + private _onConfigDiagnosticsReceived = new EventEmitter(); + public get onConfigDiagnosticsReceived(): Event { return this._onConfigDiagnosticsReceived.event; } + public get configuration() { return this._configuration; } @@ -245,6 +254,9 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient } disposeAll(this.disposables); + this._onSyntaxDiagnosticsReceived.dispose(); + this._onSemanticDiagnosticsReceived.dispose(); + this._onConfigDiagnosticsReceived.dispose(); } public restartTsServer(): void { @@ -782,15 +794,15 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient private dispatchEvent(event: Proto.Event) { switch (event.event) { case 'syntaxDiag': - this.host.syntaxDiagnosticsReceived(event as Proto.DiagnosticEvent); + this._onSyntaxDiagnosticsReceived.fire(event as Proto.DiagnosticEvent); break; case 'semanticDiag': - this.host.semanticDiagnosticsReceived(event as Proto.DiagnosticEvent); + this._onSemanticDiagnosticsReceived.fire(event as Proto.DiagnosticEvent); break; case 'configFileDiag': - this.host.configFileDiagnosticsReceived(event as Proto.ConfigFileDiagnosticEvent); + this._onConfigDiagnosticsReceived.fire(event as Proto.ConfigFileDiagnosticEvent); break; case 'telemetry': From e7672347fa92e7a4aaa0d85c514f68afd5b2583e Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:29:35 -0800 Subject: [PATCH 278/658] Remove ITypeScriptServiceClientHost Better decouple host from client --- extensions/typescript/src/typeScriptServiceClientHost.ts | 8 ++++---- extensions/typescript/src/typescriptService.ts | 5 ----- extensions/typescript/src/typescriptServiceClient.ts | 9 ++++++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index fb4bded8896..2c324840fe3 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -14,7 +14,6 @@ import * as Proto from './protocol'; import * as PConst from './protocol.const'; import TypeScriptServiceClient from './typescriptServiceClient'; -import { ITypeScriptServiceClientHost } from './typescriptService'; import LanguageProvider from './languageProvider'; import TypingsStatus, { AtaProgressReporter } from './utils/typingsStatus'; @@ -36,7 +35,7 @@ const styleCheckDiagnostics = [ 7030 // not all code paths return a value ]; -export default class TypeScriptServiceClientHost implements ITypeScriptServiceClientHost { +export default class TypeScriptServiceClientHost { private readonly ataProgressReporter: AtaProgressReporter; private readonly typingsStatus: TypingsStatus; private readonly client: TypeScriptServiceClient; @@ -68,12 +67,13 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl configFileWatcher.onDidDelete(handleProjectCreateOrDelete, this, this.disposables); configFileWatcher.onDidChange(handleProjectChange, this, this.disposables); - this.client = new TypeScriptServiceClient(this, workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); + this.client = new TypeScriptServiceClient(workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); this.disposables.push(this.client); this.client.onSyntaxDiagnosticsReceived(diag => this.syntaxDiagnosticsReceived(diag), null, this.disposables); this.client.onSemanticDiagnosticsReceived(diag => this.semanticDiagnosticsReceived(diag), null, this.disposables); this.client.onConfigDiagnosticsReceived(diag => this.configFileDiagnosticsReceived(diag), null, this.disposables); + this.client.onResendModelsRequested(() => this.populateService(), null, this.disposables); this.versionStatus = new VersionStatus(resource => this.client.normalizePath(resource)); this.disposables.push(this.versionStatus); @@ -161,7 +161,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl } } - /* internal */ populateService(): void { + private populateService(): void { // See https://github.com/Microsoft/TypeScript/issues/5530 workspace.saveAll(false).then(() => { for (const language of this.languagePerId.values()) { diff --git a/extensions/typescript/src/typescriptService.ts b/extensions/typescript/src/typescriptService.ts index a18b071e73d..1bf8f12789d 100644 --- a/extensions/typescript/src/typescriptService.ts +++ b/extensions/typescript/src/typescriptService.ts @@ -11,11 +11,6 @@ import { TypeScriptServerPlugin } from './utils/plugins'; import { TypeScriptServiceConfiguration } from './utils/configuration'; import Logger from './utils/logger'; -export interface ITypeScriptServiceClientHost { - populateService(): void; -} - - export interface ITypeScriptServiceClient { normalizePath(resource: Uri): string | null; asUrl(filepath: string): Uri; diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index a10baa5ea61..3eb451cf633 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -12,7 +12,7 @@ import { Reader, ICallback } from './utils/wireProtocol'; import { workspace, window, Uri, CancellationToken, Disposable, Memento, MessageItem, EventEmitter, Event, commands, env } from 'vscode'; import * as Proto from './protocol'; -import { ITypeScriptServiceClient, ITypeScriptServiceClientHost } from './typescriptService'; +import { ITypeScriptServiceClient } from './typescriptService'; import { TypeScriptServerPlugin } from './utils/plugins'; import Logger from './utils/logger'; @@ -182,7 +182,6 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient private readonly disposables: Disposable[] = []; constructor( - private readonly host: ITypeScriptServiceClientHost, private readonly workspaceState: Memento, private readonly onDidChangeTypeScriptVersion: (version: TypeScriptVersion) => void, public readonly plugins: TypeScriptServerPlugin[], @@ -242,6 +241,9 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient private _onConfigDiagnosticsReceived = new EventEmitter(); public get onConfigDiagnosticsReceived(): Event { return this._onConfigDiagnosticsReceived.event; } + private _onResendModelsRequested = new EventEmitter(); + public get onResendModelsRequested(): Event { return this._onResendModelsRequested.event; } + public get configuration() { return this._configuration; } @@ -257,6 +259,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this._onSyntaxDiagnosticsReceived.dispose(); this._onSemanticDiagnosticsReceived.dispose(); this._onConfigDiagnosticsReceived.dispose(); + this._onResendModelsRequested.dispose(); } public restartTsServer(): void { @@ -499,7 +502,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this.execute('configure', configureOptions); this.setCompilerOptionsForInferredProjects(this._configuration); if (resendModels) { - this.host.populateService(); + this._onResendModelsRequested.fire(); } } From 974d1084cdaac8ed80331c6cf0e6c6b68a450e49 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:47:18 -0800 Subject: [PATCH 279/658] Make logging methods private --- extensions/typescript/src/typescriptServiceClient.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index 3eb451cf633..f6de01c7414 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -312,15 +312,11 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this.logger.info(message, data); } - public warn(message: string, data?: any): void { - this.logger.warn(message, data); - } - private error(message: string, data?: any): void { this.logger.error(message, data); } - public logTelemetry(eventName: string, properties?: { [prop: string]: string }) { + private logTelemetry(eventName: string, properties?: { [prop: string]: string }) { this.telemetryReporter.logTelemetry(eventName, properties); } From 516381065d6cf1ff393ef2e1ed620cd848e964bd Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:47:48 -0800 Subject: [PATCH 280/658] Moving syntax and semantic event null checks into dispatcher --- .../src/typeScriptServiceClientHost.ts | 56 +++++++++---------- .../typescript/src/typescriptServiceClient.ts | 39 +++++++++---- 2 files changed, 55 insertions(+), 40 deletions(-) diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index 2c324840fe3..89fd3cb9333 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -70,8 +70,8 @@ export default class TypeScriptServiceClientHost { this.client = new TypeScriptServiceClient(workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); this.disposables.push(this.client); - this.client.onSyntaxDiagnosticsReceived(diag => this.syntaxDiagnosticsReceived(diag), null, this.disposables); - this.client.onSemanticDiagnosticsReceived(diag => this.semanticDiagnosticsReceived(diag), null, this.disposables); + this.client.onSyntaxDiagnosticsReceived(({ file, diagnostics }) => this.syntaxDiagnosticsReceived(file, diagnostics), null, this.disposables); + this.client.onSemanticDiagnosticsReceived(({ file, diagnostics }) => this.semanticDiagnosticsReceived(file, diagnostics), null, this.disposables); this.client.onConfigDiagnosticsReceived(diag => this.configFileDiagnosticsReceived(diag), null, this.disposables); this.client.onResendModelsRequested(() => this.populateService(), null, this.disposables); @@ -170,25 +170,21 @@ export default class TypeScriptServiceClientHost { }); } - private syntaxDiagnosticsReceived(event: Proto.DiagnosticEvent): void { - const body = event.body; - if (body && body.diagnostics) { - this.findLanguage(body.file).then(language => { - if (language) { - language.syntaxDiagnosticsReceived(this.client.asUrl(body.file), this.createMarkerDatas(body.diagnostics, language.diagnosticSource)); - } - }); + private async syntaxDiagnosticsReceived(file: string, diagnostics: Proto.Diagnostic[]): Promise { + const language = await this.findLanguage(file); + if (language) { + language.syntaxDiagnosticsReceived( + this.client.asUrl(file), + this.createMarkerDatas(diagnostics, language.diagnosticSource)); } } - private semanticDiagnosticsReceived(event: Proto.DiagnosticEvent): void { - const body = event.body; - if (body && body.diagnostics) { - this.findLanguage(body.file).then(language => { - if (language) { - language.semanticDiagnosticsReceived(this.client.asUrl(body.file), this.createMarkerDatas(body.diagnostics, language.diagnosticSource)); - } - }); + private async semanticDiagnosticsReceived(file: string, diagnostics: Proto.Diagnostic[]): Promise { + const language = await this.findLanguage(file); + if (language) { + language.semanticDiagnosticsReceived( + this.client.asUrl(file), + this.createMarkerDatas(diagnostics, language.diagnosticSource)); } } @@ -244,19 +240,19 @@ export default class TypeScriptServiceClientHost { } private createMarkerDatas(diagnostics: Proto.Diagnostic[], source: string): Diagnostic[] { - const result: Diagnostic[] = []; - for (const diagnostic of diagnostics) { - const { start, end, text } = diagnostic; - const range = new Range(tsLocationToVsPosition(start), tsLocationToVsPosition(end)); - const converted = new Diagnostic(range, text); - converted.severity = this.getDiagnosticSeverity(diagnostic); - converted.source = diagnostic.source || source; - if (diagnostic.code) { - converted.code = diagnostic.code; - } - result.push(converted); + return diagnostics.map(tsDiag => this.tsDiagnosticToVsDiagnostic(tsDiag, source)); + } + + private tsDiagnosticToVsDiagnostic(diagnostic: Proto.Diagnostic, source: string) { + const { start, end, text } = diagnostic; + const range = new Range(tsLocationToVsPosition(start), tsLocationToVsPosition(end)); + const converted = new Diagnostic(range, text); + converted.severity = this.getDiagnosticSeverity(diagnostic); + converted.source = diagnostic.source || source; + if (diagnostic.code) { + converted.code = diagnostic.code; } - return result; + return converted; } private getDiagnosticSeverity(diagnostic: Proto.Diagnostic): DiagnosticSeverity { diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index f6de01c7414..56ff74c2afe 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -139,6 +139,11 @@ class ForkedTsServerProcess { } } +export interface TsDiagnostics { + file: string; + diagnostics: Proto.Diagnostic[]; +} + export default class TypeScriptServiceClient implements ITypeScriptServiceClient { private static readonly WALK_THROUGH_SNIPPET_SCHEME_COLON = `${fileSchemes.walkThroughSnippet}:`; @@ -232,11 +237,11 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this.disposables.push(this.telemetryReporter); } - private _onSyntaxDiagnosticsReceived = new EventEmitter(); - public get onSyntaxDiagnosticsReceived(): Event { return this._onSyntaxDiagnosticsReceived.event; } + private _onSyntaxDiagnosticsReceived = new EventEmitter(); + public get onSyntaxDiagnosticsReceived(): Event { return this._onSyntaxDiagnosticsReceived.event; } - private _onSemanticDiagnosticsReceived = new EventEmitter(); - public get onSemanticDiagnosticsReceived(): Event { return this._onSemanticDiagnosticsReceived.event; } + private _onSemanticDiagnosticsReceived = new EventEmitter(); + public get onSemanticDiagnosticsReceived(): Event { return this._onSemanticDiagnosticsReceived.event; } private _onConfigDiagnosticsReceived = new EventEmitter(); public get onConfigDiagnosticsReceived(): Event { return this._onConfigDiagnosticsReceived.event; } @@ -793,13 +798,27 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient private dispatchEvent(event: Proto.Event) { switch (event.event) { case 'syntaxDiag': - this._onSyntaxDiagnosticsReceived.fire(event as Proto.DiagnosticEvent); - break; - + { + const diagnosticEvent: Proto.DiagnosticEvent = event; + if (diagnosticEvent.body && diagnosticEvent.body.diagnostics) { + this._onSyntaxDiagnosticsReceived.fire({ + file: diagnosticEvent.body.file, + diagnostics: diagnosticEvent.body.diagnostics + }); + } + break; + } case 'semanticDiag': - this._onSemanticDiagnosticsReceived.fire(event as Proto.DiagnosticEvent); - break; - + { + const diagnosticEvent: Proto.DiagnosticEvent = event; + if (diagnosticEvent.body && diagnosticEvent.body.diagnostics) { + this._onSemanticDiagnosticsReceived.fire({ + file: diagnosticEvent.body.file, + diagnostics: diagnosticEvent.body.diagnostics + }); + } + break; + } case 'configFileDiag': this._onConfigDiagnosticsReceived.fire(event as Proto.ConfigFileDiagnosticEvent); break; From 1ba9d83f259a62e7307599bd2ae361f54338d570 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:56:24 -0800 Subject: [PATCH 281/658] Use uris instead of string paths in more locations String paths should only be used when talking to the ts server --- extensions/typescript/src/commands.ts | 2 +- .../src/features/bufferSyncSupport.ts | 7 +++-- extensions/typescript/src/languageProvider.ts | 6 ++-- .../src/typeScriptServiceClientHost.ts | 28 +++++++++---------- .../typescript/src/typescriptServiceClient.ts | 8 +++--- .../typescript/src/utils/projectStatus.ts | 6 ++-- 6 files changed, 29 insertions(+), 28 deletions(-) diff --git a/extensions/typescript/src/commands.ts b/extensions/typescript/src/commands.ts index 0d3a9075a6c..1996a092692 100644 --- a/extensions/typescript/src/commands.ts +++ b/extensions/typescript/src/commands.ts @@ -121,7 +121,7 @@ async function goToProjectConfig( const file = client.normalizePath(resource); // TSServer errors when 'projectInfo' is invoked on a non js/ts file - if (!file || !clientHost.handles(file)) { + if (!file || !clientHost.handles(resource)) { vscode.window.showWarningMessage( localize( 'typescript.projectConfigUnsupportedFile', diff --git a/extensions/typescript/src/features/bufferSyncSupport.ts b/extensions/typescript/src/features/bufferSyncSupport.ts index aa190e66746..512d85b12ae 100644 --- a/extensions/typescript/src/features/bufferSyncSupport.ts +++ b/extensions/typescript/src/features/bufferSyncSupport.ts @@ -5,7 +5,7 @@ import * as fs from 'fs'; -import { workspace, TextDocument, TextDocumentChangeEvent, TextDocumentContentChangeEvent, Disposable } from 'vscode'; +import { workspace, TextDocument, TextDocumentChangeEvent, TextDocumentContentChangeEvent, Disposable, Uri } from 'vscode'; import * as Proto from '../protocol'; import { ITypeScriptServiceClient } from '../typescriptService'; import { Delayer } from '../utils/async'; @@ -142,8 +142,9 @@ export default class BufferSyncSupport { this._validate = value; } - public handles(file: string): boolean { - return this.syncedBuffers.has(file); + public handles(resource: Uri): boolean { + const file = this.client.normalizePath(resource); + return !!file && this.syncedBuffers.has(file); } public reOpenDocuments(): void { diff --git a/extensions/typescript/src/languageProvider.ts b/extensions/typescript/src/languageProvider.ts index c1d707ea42e..156858d7b6c 100644 --- a/extensions/typescript/src/languageProvider.ts +++ b/extensions/typescript/src/languageProvider.ts @@ -171,16 +171,16 @@ export default class LanguageProvider { } } - public handles(file: string, doc: TextDocument): boolean { + public handles(resource: Uri, doc: TextDocument): boolean { if (doc && this.description.modeIds.indexOf(doc.languageId) >= 0) { return true; } - if (this.bufferSyncSupport.handles(file)) { + if (this.bufferSyncSupport.handles(resource)) { return true; } - const base = basename(file); + const base = basename(resource.fsPath); return !!base && base === this.description.configFile; } diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index 89fd3cb9333..9d552927c72 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -70,8 +70,8 @@ export default class TypeScriptServiceClientHost { this.client = new TypeScriptServiceClient(workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); this.disposables.push(this.client); - this.client.onSyntaxDiagnosticsReceived(({ file, diagnostics }) => this.syntaxDiagnosticsReceived(file, diagnostics), null, this.disposables); - this.client.onSemanticDiagnosticsReceived(({ file, diagnostics }) => this.semanticDiagnosticsReceived(file, diagnostics), null, this.disposables); + this.client.onSyntaxDiagnosticsReceived(({ resource, diagnostics }) => this.syntaxDiagnosticsReceived(resource, diagnostics), null, this.disposables); + this.client.onSemanticDiagnosticsReceived(({ resource, diagnostics }) => this.semanticDiagnosticsReceived(resource, diagnostics), null, this.disposables); this.client.onConfigDiagnosticsReceived(diag => this.configFileDiagnosticsReceived(diag), null, this.disposables); this.client.onResendModelsRequested(() => this.populateService(), null, this.disposables); @@ -137,8 +137,8 @@ export default class TypeScriptServiceClientHost { this.triggerAllDiagnostics(); } - public handles(file: string): boolean { - return !!this.findLanguage(file); + public handles(resource: Uri): boolean { + return !!this.findLanguage(resource); } private configurationChanged(): void { @@ -146,10 +146,10 @@ export default class TypeScriptServiceClientHost { this.reportStyleCheckAsWarnings = config.get('reportStyleChecksAsWarnings', true); } - private async findLanguage(file: string): Promise { + private async findLanguage(resource: Uri): Promise { try { - const doc = await workspace.openTextDocument(this.client.asUrl(file)); - return this.languages.find(language => language.handles(file, doc)); + const doc = await workspace.openTextDocument(resource); + return this.languages.find(language => language.handles(resource, doc)); } catch { return undefined; } @@ -170,20 +170,20 @@ export default class TypeScriptServiceClientHost { }); } - private async syntaxDiagnosticsReceived(file: string, diagnostics: Proto.Diagnostic[]): Promise { - const language = await this.findLanguage(file); + private async syntaxDiagnosticsReceived(resource: Uri, diagnostics: Proto.Diagnostic[]): Promise { + const language = await this.findLanguage(resource); if (language) { language.syntaxDiagnosticsReceived( - this.client.asUrl(file), + resource, this.createMarkerDatas(diagnostics, language.diagnosticSource)); } } - private async semanticDiagnosticsReceived(file: string, diagnostics: Proto.Diagnostic[]): Promise { - const language = await this.findLanguage(file); + private async semanticDiagnosticsReceived(resource: Uri, diagnostics: Proto.Diagnostic[]): Promise { + const language = await this.findLanguage(resource); if (language) { language.semanticDiagnosticsReceived( - this.client.asUrl(file), + resource, this.createMarkerDatas(diagnostics, language.diagnosticSource)); } } @@ -195,7 +195,7 @@ export default class TypeScriptServiceClientHost { return; } - (this.findLanguage(body.configFile)).then(language => { + (this.findLanguage(this.client.asUrl(body.configFile))).then(language => { if (!language) { return; } diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index 56ff74c2afe..b788c8c42e6 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -140,8 +140,8 @@ class ForkedTsServerProcess { } export interface TsDiagnostics { - file: string; - diagnostics: Proto.Diagnostic[]; + readonly resource: Uri; + readonly diagnostics: Proto.Diagnostic[]; } export default class TypeScriptServiceClient implements ITypeScriptServiceClient { @@ -802,7 +802,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient const diagnosticEvent: Proto.DiagnosticEvent = event; if (diagnosticEvent.body && diagnosticEvent.body.diagnostics) { this._onSyntaxDiagnosticsReceived.fire({ - file: diagnosticEvent.body.file, + resource: this.asUrl(diagnosticEvent.body.file), diagnostics: diagnosticEvent.body.diagnostics }); } @@ -813,7 +813,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient const diagnosticEvent: Proto.DiagnosticEvent = event; if (diagnosticEvent.body && diagnosticEvent.body.diagnostics) { this._onSemanticDiagnosticsReceived.fire({ - file: diagnosticEvent.body.file, + resource: this.asUrl(diagnosticEvent.body.file), diagnostics: diagnosticEvent.body.diagnostics }); } diff --git a/extensions/typescript/src/utils/projectStatus.ts b/extensions/typescript/src/utils/projectStatus.ts index 3458a21f28a..64c8f72390a 100644 --- a/extensions/typescript/src/utils/projectStatus.ts +++ b/extensions/typescript/src/utils/projectStatus.ts @@ -63,7 +63,7 @@ class ExcludeHintItem { } } -function createLargeProjectMonitorForProject(item: ExcludeHintItem, client: ITypeScriptServiceClient, isOpen: (path: string) => Promise, memento: vscode.Memento): vscode.Disposable[] { +function createLargeProjectMonitorForProject(item: ExcludeHintItem, client: ITypeScriptServiceClient, isOpen: (resource: vscode.Uri) => Promise, memento: vscode.Memento): vscode.Disposable[] { const toDispose: vscode.Disposable[] = []; const projectHinted: ProjectHintedMap = Object.create(null); @@ -88,7 +88,7 @@ function createLargeProjectMonitorForProject(item: ExcludeHintItem, client: ITyp if (!file) { return; } - isOpen(file).then(value => { + isOpen(editor.document.uri).then(value => { if (!value) { return; } @@ -175,7 +175,7 @@ function onConfigureExcludesSelected( export function create( client: ITypeScriptServiceClient, telemetryReporter: TelemetryReporter, - isOpen: (path: string) => Promise, + isOpen: (resource: vscode.Uri) => Promise, memento: vscode.Memento ) { const toDispose: vscode.Disposable[] = []; From 3817c899cae312e0e989da8bfbc61308cfbf45f1 Mon Sep 17 00:00:00 2001 From: Gus Hurovich Date: Thu, 8 Mar 2018 18:02:33 -0800 Subject: [PATCH 282/658] Adding Emmet preference for changing fuzzySearchMinScore (#45240) * Adding Emmet preference for changing fuzzySearchMinScore * Changing name and description of the new setting. * Updating version of vscode-emmet-helper --- extensions/emmet/package.json | 7 ++++++- extensions/emmet/package.nls.json | 3 ++- extensions/emmet/yarn.lock | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json index eb8cf684566..8e90e075b94 100644 --- a/extensions/emmet/package.json +++ b/extensions/emmet/package.json @@ -199,6 +199,11 @@ "type": "string", "default": null, "description": "%emmetPreferencesCssMsProperties%" + }, + "css.fuzzySearchMinScore": { + "type": "number", + "default": 0.3, + "description": "%emmetPreferencesCssFuzzySearchMinScore%" } } }, @@ -338,7 +343,7 @@ "@emmetio/html-matcher": "^0.3.3", "@emmetio/css-parser": "ramya-rao-a/css-parser#vscode", "@emmetio/math-expression": "^0.1.1", - "vscode-emmet-helper": "^1.2.0", + "vscode-emmet-helper": "^1.2.1", "vscode-languageserver-types": "^3.5.0", "image-size": "^0.5.2", "vscode-nls": "3.2.1" diff --git a/extensions/emmet/package.nls.json b/extensions/emmet/package.nls.json index 0cc141009cb..36a62bd2694 100644 --- a/extensions/emmet/package.nls.json +++ b/extensions/emmet/package.nls.json @@ -52,5 +52,6 @@ "emmetPreferencesCssWebkitProperties": "Comma separated CSS properties that get the 'webkit' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'webkit' prefix.", "emmetPreferencesCssMozProperties": "Comma separated CSS properties that get the 'moz' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'moz' prefix.", "emmetPreferencesCssOProperties": "Comma separated CSS properties that get the 'o' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'o' prefix.", - "emmetPreferencesCssMsProperties": "Comma separated CSS properties that get the 'ms' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'ms' prefix." + "emmetPreferencesCssMsProperties": "Comma separated CSS properties that get the 'ms' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'ms' prefix.", + "emmetPreferencesCssFuzzySearchMinScore": "The minimum score (from 0 to 1) that fuzzy-matched abbreviation should achieve. Lower values may produce many false-positive matches, higher values may reduce possible matches." } diff --git a/extensions/emmet/yarn.lock b/extensions/emmet/yarn.lock index 89c4029be2d..48a909d225e 100644 --- a/extensions/emmet/yarn.lock +++ b/extensions/emmet/yarn.lock @@ -2052,9 +2052,9 @@ vinyl@~2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vscode-emmet-helper@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.0.tgz#6b9311be065c9c99d5de2dae18ea0730d9cfb734" +vscode-emmet-helper@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.1.tgz#dc4a3c83a3f1d48f4e9e1a5cce0e63f24b6eb843" dependencies: "@emmetio/extract-abbreviation" "0.1.6" jsonc-parser "^1.0.0" From 5ab754ee28b94fc9fe1e1bf4d320575fb1e51ee9 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 07:14:45 +0100 Subject: [PATCH 283/658] Linux: ENOSPC error message tweak --- src/vs/workbench/services/files/electron-browser/fileService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/services/files/electron-browser/fileService.ts b/src/vs/workbench/services/files/electron-browser/fileService.ts index 6c09819220b..8a3daf5a5b9 100644 --- a/src/vs/workbench/services/files/electron-browser/fileService.ts +++ b/src/vs/workbench/services/files/electron-browser/fileService.ts @@ -124,7 +124,7 @@ export class FileService implements IFileService { // Detect if we run into ENOSPC issues if (msg.indexOf(FileService.ENOSPC_ERROR) >= 0 && !this.storageService.getBoolean(FileService.ENOSPC_ERROR_IGNORE_KEY, StorageScope.WORKSPACE)) { const choices: PromptOption[] = [nls.localize('learnMore', "Instructions"), { label: nls.localize('neverShowAgain', "Don't Show Again") }]; - this.notificationService.prompt(Severity.Warning, nls.localize('enospcError', "{0} is running out of file handles. Please follow the instructions link to resolve this issue.", product.nameLong), choices).then(choice => { + this.notificationService.prompt(Severity.Warning, nls.localize('enospcError', "{0} is unable to watch for file changes in this large workspace. Please follow the instructions link to resolve this issue.", product.nameLong), choices).then(choice => { switch (choice) { case 0 /* Read More */: window.open('https://go.microsoft.com/fwlink/?linkid=867693'); From 3937e576863d22ab92c78e6e8a126eaa402a6b74 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 07:34:43 +0100 Subject: [PATCH 284/658] add window.openWithoutArgumentsInNewWindow (#45322) * add window.openWithoutArgumentsInNewWindow * remove relaunch command --- src/vs/code/electron-main/launch.ts | 56 ++++++++++++++++--- src/vs/code/electron-main/window.ts | 9 --- src/vs/platform/windows/common/windows.ts | 1 + .../electron-browser/main.contribution.ts | 11 +++- 4 files changed, 59 insertions(+), 18 deletions(-) diff --git a/src/vs/code/electron-main/launch.ts b/src/vs/code/electron-main/launch.ts index 3d2556b785d..5fc6bbe98a2 100644 --- a/src/vs/code/electron-main/launch.ts +++ b/src/vs/code/electron-main/launch.ts @@ -9,14 +9,15 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IChannel } from 'vs/base/parts/ipc/common/ipc'; import { ILogService } from 'vs/platform/log/common/log'; import { IURLService } from 'vs/platform/url/common/url'; -import { IProcessEnvironment } from 'vs/base/common/platform'; +import { IProcessEnvironment, isMacintosh } from 'vs/base/common/platform'; import { ParsedArgs, IEnvironmentService } from 'vs/platform/environment/common/environment'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { OpenContext } from 'vs/platform/windows/common/windows'; +import { OpenContext, IWindowSettings } from 'vs/platform/windows/common/windows'; import { IWindowsMainService, ICodeWindow } from 'vs/platform/windows/electron-main/windows'; import { whenDeleted } from 'vs/base/node/pfs'; import { IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces'; import { Schemas } from 'vs/base/common/network'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; export const ID = 'launchService'; export const ILaunchService = createDecorator(ID); @@ -110,7 +111,8 @@ export class LaunchService implements ILaunchService { @IWindowsMainService private windowsMainService: IWindowsMainService, @IURLService private urlService: IURLService, @IWorkspacesMainService private workspacesMainService: IWorkspacesMainService, - @IEnvironmentService private readonly environmentService: IEnvironmentService + @IEnvironmentService private readonly environmentService: IEnvironmentService, + @IConfigurationService private readonly configurationService: IConfigurationService ) { } public start(args: ParsedArgs, userEnv: IProcessEnvironment): TPromise { @@ -140,13 +142,51 @@ export class LaunchService implements ILaunchService { private startOpenWindow(args: ParsedArgs, userEnv: IProcessEnvironment): TPromise { const context = !!userEnv['VSCODE_CLI'] ? OpenContext.CLI : OpenContext.DESKTOP; let usedWindows: ICodeWindow[]; + + // Special case extension development if (!!args.extensionDevelopmentPath) { this.windowsMainService.openExtensionDevelopmentHostWindow({ context, cli: args, userEnv }); - } else if (args._.length === 0 && (args['new-window'] || args['unity-launch'])) { - usedWindows = this.windowsMainService.open({ context, cli: args, userEnv, forceNewWindow: true, forceEmpty: true }); - } else if (args._.length === 0) { - usedWindows = [this.windowsMainService.focusLastActive(args, context)]; - } else { + } + + // Start without file/folder arguments + else if (args._.length === 0) { + let openNewWindow = false; + + // Force new window + if (args['new-window'] || args['unity-launch']) { + openNewWindow = true; + } + + // Force reuse window + else if (args['reuse-window']) { + openNewWindow = false; + } + + // Otherwise check for settings + else { + const windowConfig = this.configurationService.getValue('window'); + const openWithoutArgumentsInNewWindowConfig = (windowConfig && windowConfig.openWithoutArgumentsInNewWindow) || 'default' /* default */; + switch (openWithoutArgumentsInNewWindowConfig) { + case 'on': + openNewWindow = true; + break; + case 'off': + openNewWindow = false; + break; + default: + openNewWindow = !isMacintosh; // prefer to restore running instance on macOS + } + } + + if (openNewWindow) { + usedWindows = this.windowsMainService.open({ context, cli: args, userEnv, forceNewWindow: true, forceEmpty: true }); + } else { + usedWindows = [this.windowsMainService.focusLastActive(args, context)]; + } + } + + // Start with file/folder arguments + else { usedWindows = this.windowsMainService.open({ context, cli: args, diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 6e1dbe926b8..ec9e28a2525 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -215,15 +215,6 @@ export class CodeWindow implements ICodeWindow { this._win.setSheetOffset(22); // offset dialogs by the height of the custom title bar if we have any } - // Set relaunch command - if (isWindows && product.win32AppUserModelId && typeof this._win.setAppDetails === 'function') { - this._win.setAppDetails({ - appId: product.win32AppUserModelId, - relaunchCommand: `"${process.execPath}" -n`, - relaunchDisplayName: product.nameLong - }); - } - if (isFullscreenOrMaximized) { this._win.maximize(); diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts index 03c83a946b4..f000115e2d8 100644 --- a/src/vs/platform/windows/common/windows.ts +++ b/src/vs/platform/windows/common/windows.ts @@ -213,6 +213,7 @@ export interface IWindowsConfiguration { export interface IWindowSettings { openFilesInNewWindow: 'on' | 'off' | 'default'; openFoldersInNewWindow: 'on' | 'off' | 'default'; + openWithoutArgumentsInNewWindow: 'on' | 'off'; restoreWindows: 'all' | 'folders' | 'one' | 'none'; restoreFullscreen: boolean; zoomLevel: number; diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index 09a3d529a56..9835b2a8f27 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -302,7 +302,6 @@ configurationRegistry.registerConfiguration({ isMacintosh ? nls.localize('openFilesInNewWindowMac', "Controls if files should open in a new window.\n- default: files will open in the window with the files' folder open or the last active window unless opened via the Dock or from Finder\n- on: files will open in a new window\n- off: files will open in the window with the files' folder open or the last active window\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") : nls.localize('openFilesInNewWindow', "Controls if files should open in a new window.\n- default: files will open in a new window unless picked from within the application (e.g. via the File menu)\n- on: files will open in a new window\n- off: files will open in the window with the files' folder open or the last active window\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") - }, 'window.openFoldersInNewWindow': { 'type': 'string', @@ -315,6 +314,16 @@ configurationRegistry.registerConfiguration({ 'default': 'default', 'description': nls.localize('openFoldersInNewWindow', "Controls if folders should open in a new window or replace the last active window.\n- default: folders will open in a new window unless a folder is picked from within the application (e.g. via the File menu)\n- on: folders will open in a new window\n- off: folders will replace the last active window\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") }, + 'window.openWithoutArgumentsInNewWindow': { + 'type': 'string', + 'enum': ['on', 'off'], + 'enumDescriptions': [ + nls.localize('window.openWithoutArgumentsInNewWindow.on', "Open a new empty window"), + nls.localize('window.openWithoutArgumentsInNewWindow.off', "Focus the last active running instance") + ], + 'default': isMacintosh ? 'off' : 'on', + 'description': nls.localize('openWithoutArgumentsInNewWindow', "Controls if a new empty window should open when starting a second instance without arguments or if the last running instance should get focus.\n- on: open a new empty window\n- off: the last active running instance will get focus\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") + }, 'window.restoreWindows': { 'type': 'string', 'enum': ['all', 'folders', 'one', 'none'], From 80be02c64ee72e061c955086e4975ee9093bd13e Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 22:54:26 -0800 Subject: [PATCH 285/658] Bump node-debug2 --- build/builtInExtensions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/builtInExtensions.json b/build/builtInExtensions.json index 09994e3df68..11ce40effd1 100644 --- a/build/builtInExtensions.json +++ b/build/builtInExtensions.json @@ -6,7 +6,7 @@ }, { "name": "ms-vscode.node-debug2", - "version": "1.21.2", + "version": "1.22.0", "repo": "https://github.com/Microsoft/vscode-node-debug2" } ] \ No newline at end of file From 5ef4e4e4ede841ccd605a6011d3d930cd9dac558 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 9 Mar 2018 08:47:47 +0100 Subject: [PATCH 286/658] fix #29210 --- src/vs/editor/contrib/suggest/suggestModel.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/vs/editor/contrib/suggest/suggestModel.ts b/src/vs/editor/contrib/suggest/suggestModel.ts index 0c04bb05161..b1943cfeb8e 100644 --- a/src/vs/editor/contrib/suggest/suggestModel.ts +++ b/src/vs/editor/contrib/suggest/suggestModel.ts @@ -405,6 +405,12 @@ export class SuggestModel implements IDisposable { return; } + if (ctx.leadingWord.startColumn < this._context.leadingWord.startColumn) { + // happens when the current word gets outdented + this.cancel(); + return; + } + if (ctx.column < this._context.column) { // typed -> moved cursor LEFT -> retrigger if still on a word if (ctx.leadingWord.word) { From aa97f6190201cecf159292d07a2f78edc2bc54c7 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 9 Mar 2018 08:57:31 +0100 Subject: [PATCH 287/658] fix #42878 --- src/vs/editor/contrib/suggest/completionModel.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vs/editor/contrib/suggest/completionModel.ts b/src/vs/editor/contrib/suggest/completionModel.ts index 3241e05a495..6157cf74fc9 100644 --- a/src/vs/editor/contrib/suggest/completionModel.ts +++ b/src/vs/editor/contrib/suggest/completionModel.ts @@ -174,6 +174,7 @@ export class CompletionModel { // use a score of `-100` because that is out of the // bound of values `fuzzyScore` will return item.score = -100; + item.matches = undefined; } else if (typeof suggestion.filterText === 'string') { // when there is a `filterText` it must match the `word`. From a699d082776a5f8dd029f7b5975c030d0ff7a7d5 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 10:29:20 +0100 Subject: [PATCH 288/658] linux build --- build/tfs/linux/build.yml | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 223674586f0..13b8b0160de 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -4,13 +4,29 @@ variables: steps: - script: | + # dependencies apt-get update - apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 libgconf-2-4 dbus xvfb + apt-get install -y \ + libxkbfile-dev \ + pkg-config \ + libsecret-1-dev \ + libxss1 \ + libgconf-2-4 \ + dbus \ + xvfb \ + fakeroot \ + bc \ + bsdmainutils \ + rpm + + # setup xvfb cp build/tfs/linux/$(VSCODE_ARCH)/xvfb.init /etc/init.d/xvfb chmod +x /etc/init.d/xvfb update-rc.d xvfb defaults - ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon service xvfb start + + # setup dbus + ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon service dbus start - task: NodeTool@0 @@ -41,4 +57,4 @@ steps: npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-deb" npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-rpm" #npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-snap" - ./build/tfs/linux/release2.sh $(VSCODE_ARCH) $(LINUX_REPO_PASSWORD) \ No newline at end of file + ./build/tfs/linux/release2.sh "$(VSCODE_ARCH)" "$(LINUX_REPO_PASSWORD)" \ No newline at end of file From 52767e52aa61403d779d76cfbcaa8a6cfad361e9 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 10:30:29 +0100 Subject: [PATCH 289/658] fail release script on erro --- build/tfs/linux/release2.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build/tfs/linux/release2.sh b/build/tfs/linux/release2.sh index 47379836922..ad74ce0a385 100755 --- a/build/tfs/linux/release2.sh +++ b/build/tfs/linux/release2.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e # Arguments ARCH="$1" From 5a4187a1613c59deaf1241cc8d56061f7bd9d7f1 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 10:40:40 +0100 Subject: [PATCH 290/658] linux build: skip tests --- build/tfs/darwin/build.yml | 6 +++--- build/tfs/linux/build.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build/tfs/darwin/build.yml b/build/tfs/darwin/build.yml index 64b8f678e1d..88f1bf5e8e7 100644 --- a/build/tfs/darwin/build.yml +++ b/build/tfs/darwin/build.yml @@ -23,9 +23,9 @@ steps: VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-darwin-min name: build -# - script: | -# ./scripts/test.sh --build --tfs -# name: test +- script: | + ./scripts/test.sh --build --tfs + name: test - script: | # archive the unsigned build diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 13b8b0160de..8d79f43daa4 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -49,9 +49,9 @@ steps: VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-$(VSCODE_ARCH)-min name: build -- script: | - DISPLAY=:10 ./scripts/test.sh --build --tfs - name: test +# - script: | +# DISPLAY=:10 ./scripts/test.sh --build --tfs +# name: test - script: | npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-deb" From 4cc18eca7f620bb464011bb027d699e5b0b5ea84 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 10:44:16 +0100 Subject: [PATCH 291/658] update inno_updater fixes #44911 --- build/win32/OSSREADME.json | 722 +++++++++++++++++------------------ build/win32/inno_updater.exe | Bin 394240 -> 395264 bytes 2 files changed, 361 insertions(+), 361 deletions(-) mode change 100644 => 100755 build/win32/OSSREADME.json diff --git a/build/win32/OSSREADME.json b/build/win32/OSSREADME.json old mode 100644 new mode 100755 index f66fde6fb6d..cbcef582e54 --- a/build/win32/OSSREADME.json +++ b/build/win32/OSSREADME.json @@ -1,70 +1,4 @@ [ - { - "name": "dtolnay/isatty", - "version": "0.1.6", - "repositoryUrl": "https://github.com/dtolnay/isatty", - "licenseDetail": [ - "Copyright (c) 2016", - "", - "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-num/num-integer", - "version": "0.1.35", - "repositoryUrl": "https://github.com/rust-num/num-integer", - "licenseDetail": [ - "Copyright (c) 2014 The Rust Project 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", @@ -99,9 +33,9 @@ "isProd": true }, { - "name": "rust-lang/libc", - "version": "0.2.36", - "repositoryUrl": "https://github.com/rust-lang/libc", + "name": "rust-num/num", + "version": "0.1.41", + "repositoryUrl": "https://github.com/rust-num/num", "licenseDetail": [ "Copyright (c) 2014 The Rust Project Developers", "", @@ -131,6 +65,39 @@ ], "isProd": true }, + { + "name": "dtolnay/isatty", + "version": "0.1.6", + "repositoryUrl": "https://github.com/dtolnay/isatty", + "licenseDetail": [ + "Copyright (c) 2016", + "", + "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.2", @@ -158,68 +125,6 @@ ], "isProd": true }, - { - "name": "mrhooray/crc-rs", - "version": "1.7.0", - "repositoryUrl": "https://github.com/mrhooray/crc-rs.git", - "licenseDetail": [ - "MIT License", - "", - "Copyright (c) 2017 crc-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-num/num", - "version": "0.1.41", - "repositoryUrl": "https://github.com/rust-num/num", - "licenseDetail": [ - "Copyright (c) 2014 The Rust Project 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": "BurntSushi/byteorder", "version": "1.2.1", @@ -250,9 +155,9 @@ "isProd": true }, { - "name": "rust-num/num-traits", - "version": "0.1.42", - "repositoryUrl": "https://github.com/rust-num/num-traits", + "name": "rust-num/num-integer", + "version": "0.1.35", + "repositoryUrl": "https://github.com/rust-num/num-integer", "licenseDetail": [ "Copyright (c) 2014 The Rust Project Developers", "", @@ -283,9 +188,71 @@ "isProd": true }, { - "name": "slog-rs/slog", - "version": "2.1.1", - "repositoryUrl": "https://github.com/slog-rs/slog", + "name": "mrhooray/crc-rs", + "version": "1.7.0", + "repositoryUrl": "https://github.com/mrhooray/crc-rs.git", + "licenseDetail": [ + "MIT License", + "", + "Copyright (c) 2017 crc-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/libc", + "version": "0.2.36", + "repositoryUrl": "https://github.com/rust-lang/libc", + "licenseDetail": [ + "Copyright (c) 2014 The Rust Project 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-num/num-traits", + "version": "0.1.42", + "repositoryUrl": "https://github.com/rust-num/num-traits", "licenseDetail": [ "Copyright (c) 2014 The Rust Project Developers", "", @@ -349,60 +316,35 @@ "isProd": true }, { - "name": "vitiral/build_const", - "version": "0.2.0", - "repositoryUrl": "https://github.com/vitiral/build_const", + "name": "slog-rs/slog", + "version": "2.1.1", + "repositoryUrl": "https://github.com/slog-rs/slog", "licenseDetail": [ - "The MIT License (MIT)", + "Copyright (c) 2014 The Rust Project Developers", "", - "Copyright (c) 2017 Garrett Berg, vitiral@gmail.com", + "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:", "", - "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 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": "redox-os/termios", - "version": "0.1.1", - "repositoryUrl": "https://github.com/redox-os/termios", - "licenseDetail": [ - "MIT License", - "", - "Copyright (c) 2017 Redox OS", - "", - "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." + "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 }, @@ -469,6 +411,188 @@ ], "isProd": true }, + { + "name": "redox-os/termios", + "version": "0.1.1", + "repositoryUrl": "https://github.com/redox-os/termios", + "licenseDetail": [ + "MIT License", + "", + "Copyright (c) 2017 Redox OS", + "", + "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": "Sgeo/take_mut", + "version": "0.2.0", + "repositoryUrl": "https://github.com/Sgeo/take_mut", + "licenseDetail": [ + "The MIT License (MIT)", + "", + "Copyright (c) 2016 Sgeo", + "", + "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": "Amanieu/thread_local-rs", + "version": "0.3.5", + "repositoryUrl": "https://github.com/Amanieu/thread_local-rs", + "licenseDetail": [ + "Copyright (c) 2016 The Rust Project 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": "vitiral/build_const", + "version": "0.2.0", + "repositoryUrl": "https://github.com/vitiral/build_const", + "licenseDetail": [ + "The MIT License (MIT)", + "", + "Copyright (c) 2017 Garrett Berg, vitiral@gmail.com", + "", + "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": "ticki/termion", + "version": "1.5.1", + "repositoryUrl": "https://github.com/ticki/termion", + "licenseDetail": [ + "The MIT License (MIT)", + "", + "Copyright (c) 2016 Ticki", + "", + "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/time", + "version": "0.1.39", + "repositoryUrl": "https://github.com/rust-lang/time", + "licenseDetail": [ + "Copyright (c) 2014 The Rust Project 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": "chronotope/chrono", "version": "0.4.0", @@ -716,95 +840,6 @@ ], "isProd": true }, - { - "name": "Amanieu/thread_local-rs", - "version": "0.3.5", - "repositoryUrl": "https://github.com/Amanieu/thread_local-rs", - "licenseDetail": [ - "Copyright (c) 2016 The Rust Project 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": "Sgeo/take_mut", - "version": "0.2.0", - "repositoryUrl": "https://github.com/Sgeo/take_mut", - "licenseDetail": [ - "The MIT License (MIT)", - "", - "Copyright (c) 2016 Sgeo", - "", - "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": "reem/rust-void", - "version": "1.0.2", - "repositoryUrl": "https://github.com/reem/rust-void.git", - "licenseDetail": [ - "Copyright (c) 2015 The rust-void 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": "reem/rust-unreachable", "version": "1.0.0", @@ -833,46 +868,38 @@ "isProd": true }, { - "name": "rust-lang/time", - "version": "0.1.39", - "repositoryUrl": "https://github.com/rust-lang/time", + "name": "retep998/winapi-rs", + "version": "0.1.1", + "repositoryUrl": "https://github.com/retep998/winapi-rs", "licenseDetail": [ - "Copyright (c) 2014 The Rust Project Developers", + "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:", + "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 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." + "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": "ticki/termion", - "version": "1.5.1", - "repositoryUrl": "https://github.com/ticki/termion", + "name": "reem/rust-void", + "version": "1.0.2", + "repositoryUrl": "https://github.com/reem/rust-void.git", "licenseDetail": [ - "The MIT License (MIT)", - "", - "Copyright (c) 2016 Ticki", + "Copyright (c) 2015 The rust-void 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", @@ -921,60 +948,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.1.1", - "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.4.0", @@ -1002,6 +975,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": "retep998/winapi-rs", "version": "0.4.0", diff --git a/build/win32/inno_updater.exe b/build/win32/inno_updater.exe index a896061751d4bcc3a187c924fc3c184e923d0916..c216c4043324f683e3155ab9d699768e1d0054b7 100755 GIT binary patch delta 93838 zcmbrn31C!3w)oxMX`mquw}B7>1QMWuuqT3;0Ahf!iWmd~DhiGc#<)f82s#YikdD%Z z7WCqvGmJ8Cm^V7=42}!}A|!wWTo4o#MOj?N>KB(F%Btl1ow~QPAo}Kg|0wsKTXm}H z)Y=xi^8`ofc6U}q`AmOm>3n~RGd2*~BGdfiBQyPz)amKelO*N7 zpKi8n+Qs{JUBVmF%}bgNGM150=zu$d6q)|g{Y@Wtx;8&$`aB(-i_N~Cg|6aH%)fiO z_dfeamt%b`e>FyBv(i(}lIGD#{(QCip#(=(ZR~gSRzH8%!93#`>YDdEb4c@UuI)$7 zYn%6TK4d=BeC2>=SJv0iRBE_Qm$>S|1V{Dk(n^n7e-fyG#1s`xF{iW`;_C6Z8EG-X z_4#shSBp-=cM4{9d7eLYgH4F1^t7|2CnZu<`D0{u`bnlxnW{D~GSd^gCH0)($>o#$ZlT6=BEdYFnB@waW*={-;kT68jk|x+xLfsk z)NZ_SrZnzW*Do{|dV4f&N(Hff<{odm#LZ`GYss3Xwk|W@^mccK%o=Y8*Pp{?V#}_s z*~`oUExVC6rDgB2?`ZiNi5uQD#yC`9YJ$T^jC`P8$#eryMT)8jO4^3v4r3e}Mdu1D zfT~|>knltYv!dlx@3LetIts?~$!1!s)Mn3ss5V_?j%roln)bc<`&RQ^d)k{RMq0~? zPjf|wQmSC}s+aPNRHrl7ywNu+c~AQ>4idd$O(?+ z$uLvfq`UIJFh{iM?0x!j7;cDy{o!)+mNtIZ-Ve=an;X1_q-!ltyxct5ri=IUiSdM^ z6V0w|1Fm0BG*`48;9AketZJKnSzEHT5hMeYuk8^l3r{>XBJ{x5jhHW1c@FlIPD%a^YV7RoS&KZwj0Uy zU+waf-+$F1CGv+S7-g?feU;mv-D!-u_q}%TFDtpdE2*P7F?mkUnU6ainDcmtQT8po z2F!B=(lPQ}HE^8W-;2hX?x475dr#rD5F#7B7ZkTo5_1jdl9_F}|?!iW4p61WqxVV*; z`|!}xQH}_Ti{@q1>wI8ef!5{sxz+tV6-e^@JoEVusU3tk6$K{zvJ9Kef zG2V1`T-2}m7#AdaY-K~emO-_%B)fc*rCxJKqp=>T_1@9uKRR~mP@FQx5liyYwXtLs zI?^rAdf906(~g%WFTV*Q-m+8#`U>3Xd|M=rqzb za+G^~z?i4~M?$BD1nb*Xv^sin6UF#U}HQfNBXBP3BSnj4NqNXVB1Q zUp^$49W=`J(7V`2(#6@J*kx}7RQX(V*{Q?L{ayQ*eR{Stle)F{elsjicl9vyl5T@s zZQjuIc9nGP>pBlJn{@Ykj}46{d^Oa(xcimOen-O8>N|wq*|CVwTS$uC=B)G@IUH=*3CQ#$SX{gxE6ChTiqX`$+K)@#3jNO|QR?bI)Vl+L@F59lZa_iPQXI zj(N9#kn6xsP4gGoaS}hxHZSYp_r6@0@KUyUSC7kGv$M@jJ$iS#m~@-aA%Lm}7fonJ z_G3N!xEvnS*$wIS>=4{~377%@3{gLUHPM0A>Tg#1Oi35G>>!DcTZ!7G3QU)MDghItyNzRsw?vqp!$f5E^~O0IiXKaSFXpryH7t?`_V5w-N);68KcY>`d%|GL?xxC zx(9lco=Pn#V0_E$Kbxe$B}J))0#tX|(uO8psStRG&Oajg?Tfk>3V@ulRmn*6ihdm! zGjHiP#MOSJ`EZ3TFv9hxKfTm{U{9wj(%rl|^AcC?D)W)dUd|)ty3E0@%>L$=nLC`b&6lz+ z4fg3L?WC)2-0gO{1FAM$rdN+pE$Y(~CH+ia@B)6fsJ_5uwFt&-d!p=+6GpXG`z@rK z1xetC^ZYFq=lO>iFX#C^a~O&TtACP=VKf2b?|sd{McrNb9n2>$8W5aHhF16jfYPd@ z(rsUse8N!nOcFw&?m;BS2@n`-Ns{zVR=PGnf#bHCV5MtY6`1sX4kK(HM}fZRqwCW4 zEpY6&$IY>W+PS)3YhFL7eLFQ*hWicMYx5jg?-Z`0Z>q=hW@J!i+O}&FBxhL~L27I0 zQlkdygw-UdvHf2{<<58Ri;A{q^HIY0=^Z`$VI!TRMH=YPsj3abCptDAJUhsq0jS1t(bJcS0MWJnkKladOyn50=T%=W(lfn{ z>(S@Pu_CYf!+*u)Ab1FCcC#SrzF4cf2x2EvAo-UypY8?d>1WbZo_`*o=rS@;+;|c@ z;OR?lQBVPGmACa*G`_;p_?xADG*L=kSdVSdf^%WBD9`iHrexeEYKz^qnQDKnbX-)v zPTgV1U@8%VsZ;oA{y;QnsXN*8)Y89N+Wvj_xV9ey60zJgM0d&V!2hD{DKEvj{1a_& zr0fG22up+7@c!SleXP){wS5$jrR`T;dLeDMls&l)zfJcb1$LC3Fv8s^5E)T5*3$N| z_1ZqRfwqrrj(oMYS0MV#h8jP-e5|{6h^6skEsY;hK0<4JPxY5>GEVi3to1LkBrWq` z@vYI|T3ui4b}`!^Xti_o6fy*;?&6|HnR@`rr};CZ0snlh+{0D7kXG*UEIDXoA{BOSsA39N-KMR|UgGh!Kt~`Mt-dg?u zrF#Bc_&jk(1^FtYyHMdNU#m5afl<<(CEXxNJQrm|6(|-IQxWmQ8_}!kZnoo$e5+Rb zT`VVsyP_tWEPSKv-%K3JE$>NPQUYJPgvO~xm@1vc1yLZxlOxcf9G0mJ>L?&fypwow zKhMlRDG+po&a!Y&2`;P@w-B}3ikya{V&iJ_N42&1G3_x2(;&bSe?JRY?)L*wQn~|O zLXfD4&c$12(nTEX63uR1FxARh?ia3pYXp7E^^jV6#;Nf{0vb;&TBit~0hVhnm&`&9 zW=2{>M!D(Y5y)eD@=7wX<{MmK_Y$FaSULuwXV8}bi2+X-3Wri6#f^O`RRrxi=1Cok zx#(_MWYbO25*RF;g~3ue`4;VTdN?%F>0EC37C|Bgo-G2EQJ@BL^2oA<{bqesL8V%4 z$h6i)7&n0JWD(Mux2=f4DlWW`OxO_iueX3D{xuqaNQ-B1=ou@;Vim*xa3T}GX5y+i zu5i=V*dqiek>Do1@!|ZR40SAoQKzKZOyx;KzpkqWDxX6j^WyufiFYp6&7|34WjHffg0j5VLC@i*(u*7tS{vdHT#?;<0E@z8Er zR9HaGQ)6!cYU9g*XO@*&016JU-iPP2y<2xn=DJ&Ap#X7zf~%=>A)*($B5_Bhr+lC- z@%w%iFCbpqD0>&J)zXj!!I>uFLJdmYIGX~eI-q^aJTm;%wrPkr6 z0MVUbxDV)&%&J@~NXaEgSz?9c;|WqM0nUkxZ@$CguFK9fUbe=k#Y_C<^m$HXxnI`8 z=)e+gv3pO!?lm0+)ik3MQ7O`;D8d)1e} zvor_CMf5&AiYvw}qwbLKQbP-2xoDoaClYXaVzJ`4xXGU?#Jh$zX*G_PBxUVdkK)S; zVmh%hEom`gh_uw+6u7Uq?cM?s<(QjAMHC~~rZY0$ zXH!=vWnHsfQ*gWokL*P_4)xmUdLoUoo{0{}Mw)kQmP;&3m9~~^Oq8^tKzME+~qp0Rro1=24A#8Qmim7)}t|ChKs6>_8FQ!oaBP(F{@dDeh7H{DfoyWJVBcpm49 z%KZuLi4B%f75Zk`v%0Na+=JW#WKDE7_n{&SF+O;SXQfaxHLMQ*62aH&s*ix*XjWf# zf_Z%l$g$`3!f2V-8)4Uc!@U2NF2RqIWcK1w`?%ZFll_2dI~P6qt^z>c{TTBe+8$<2 ze&NqPo=SQ^o&w0(VT8Zt&Jg2gVCd)9`Y+r(Kq>=--(f6H6^|Y8`vRTRuccOSgW3n( zz*AX8Nvl|%beLp42H7&8;Rdk|wbk>#K!yI?i2bRV7>;JYWoFJ(1yGcfuYSk0u$1Yj zRafcRCM8`Xr(SaQ4<-}71-chCnO-Q6DzWe&re$@@(z8wPX&MSP*%I8Bb+GJ2pp{zF z)?WL32_SqhkWJ50_2Mv5qL($mrKHnhKhY+S{H3x;U zk;;X!PD0EJMNJ9?U|W=#Aw-u|1fG=YHB;Za0Q);p}Xc_Z&*2QqG8($Y(HbsLwsDd~=k!*q5y9kGpw>f%OZ zFEXOu-c#~Rq1+#(-DzMZZf zPjPW-!blU({gcd;j+QbKOVMuRL#7f&8Ixtk(8w7zk>OLe5k!>#ObBBdA4vZj^D9u# zFRF<1OV1{(DZZpetp;qarOQ-D7{fob|9tM*d;+K=L#$HpFrD;~oQU1`G4~kfsx7RSNj8@U{ts8pGozwax zN`YT=m1m8(t2_y0xys2sw5p5J{KQqhQHNgzBr*_!Qz;S2ZV+$%(-o;Q)-AF8r4@8( ze;Fj|!d`buCjv9H;vbH@tL~#N?Y-_7B0h|q6~R_#%P`}ptoEQb;quhA&(LZiHhiju@zAF6f%_>!k*)fj(z9Ls~kTe_m`FWMFrAWfrzbYI?nNtJ7FCy*t+H zZl1H%7`=6)-GcArC+J=7StH~k7y7)VwLcoAOS{UtyRrCU5^=|q)U#e>qKD*Hfy!Ai zEUVbyrfwr|FY6(hq$C-6?*pRVCAq;^MK=it>taFd-5WV9Cs3;W>Uyb6%=cOVu?ABk zH;f(a@EL+qke_DQq?BKbp(mxpV`z6uc@VCQRoS>)2=kS0ONxj6D11ufY-F!d_T0JJ zT20knVIf18OcUU_SBNCM`;9Q2BnH`ZeZER$6Oav2Z*-oATYA)8Cc=rPhH%NHm!Xj5 zbAM0^6H)G<^ezlkw}Us|?-Px^nKU$3FBAw&Jt>%3(kr3@@z$#egQH=+W{3+DIeH$f z+ddFPQYGNGJ#&1SC%Q@FN@ftOTv_Js*6i#vb1Ea?e+zq|W&2l&w$DHd|6@ zNgB0W^w@vbx#;+Ympz6_)$uVbC>!mv!A~7C>7Q4`5b;FvWpUB+W$o-iOigWJyRrfR z@G}TGE&_jeq_Xm;D>^(9y~m^dTImR3@eMzyt{`e%^aGUcNGh$8JyHqt;INytTI4@m zL?92exCHX$nAuuA(yLFJ+bw<$K=u=L*)mG0ZSm|KR`%+;>{XJzI-dPkEBi=Ywk-0h zGRfBRUknsKvS2TEp;MoMWIHpME5emOKv@y7L6N8pieclY1VI*S>{OA74R)yqJKErm zaM0fw*vWJ~UG8XoCUBaDk4?{4(^^Qd&|sL5vBp`_4-Sb3Q(HX@a(bP2Gmx0*9!xYM z$H->0)*D;v(iDlvGlw7NHptZX^wKd*j zc6p$+2iG?k7;A3rofE`_WN}pp#Qs>?z{Vq$MJ^;SLq&laQ>yI`5uS6}O$Nza}2^_o)evBE0H&0h@ zS}64x>%qW!QXI@N-fC*Q<~;xy;o!*0(yd83)BOF6vSWD6*j=m-uqGpVt6mozk)s}R zwK(^VpA1_*qHTTe!wU4+5*9)LRfM6>t_{WCwa6 zwIkfPy{Kd|EDdb~gg6N%kw3~QI$DLKpfkV;qNZe9632Pti7JoaQ$o?ZJq<>uI?qzs z#P%%P0pgwow)r;8PO&VwzS9}1eot=Piwhjv)Y*|It$1UJNY@U88;tf)E^`bNPPn6E zm+4j=da@=kjAXfj*rlV6UFPR;7}VzTcq_XhpRXia^VtZ${3!vF#o*@wFTmjDqOmrE z|Bd|A7Pm0?Qvufk+A-L_0By0UKLTqPy9xk3m>;!Qao0}thv|hn?1|5PMKU;1k&F}G zXVVceN->}Hi124ua}Ty{xSG3#`6{-l`xNL6E3*++DrO{n!|Im^>o)mA+=yx_K0y`t zaS=q2q;WvO7jmqXu&5Ol<*S>lx-oI_P|@WYJ#t!II?(0lENdmCmY#N%l*AeSYJ!%B z#qh3LvA2)18D1Xnry5}=EVY?_qQ#2V-#FXN+zUI)hghrcFA8fjsih$HcR+aIj}2|A zHAAF}KFdT|2amEXVlAnyYNJ`ucu8#;5_zJz`L8QVTFk>I)URsgeai80q+)kTmf!MK z+gazWYGoh|@zPKr3tZwR#q}+Pi*zKzd~$N8>r=P+#^h^RlajO1eszZv%hGF7w*m=v zetRmg+&hXa)um7#Pp{|L-%b=U6JRwo?8IWX-V75%p8$ z1!q{lsl%Tu_rk+R@nRZo8iR2!kif#o*CMF7*jW!`4Cu z`?X?WAYXXp<3C>Jc;G|n{Dn@4Nd58nFmf6z)PAn$oKq%R9_P(koA-beIRhJ$_?L=3 z$_TFBYa*QUV*fhgV4S+=T!J-)C;=!v%gpsKC5?5~`VS}e!*BB}{+@$(_WTuQng?&3 z(fQ*ac?+iEyqRgPOb6Eb_pQj?=S&O!6%^5hr@7m@unJHu<)WwEj{(Gv|45m-7RwGG z3rMuW+t%tPDN8^gaj3w!wtfq(Ae?CUqKdg?W)o`)TRc2L&J8s7TYt!4 zCR^{el4IALuC29Zvd^-^#Z0z@NppM_YlU=ZRo!G&cv?S`y^cv3%xyH2ovy|Ntz@Y7 zGKsy97EmAUjIBj7R9}LW7;m}gkuRF(OM>6&Scf<2jYJ1OoKq9%8Jg#d2GVhgj_AB3 zqW2kYHR*>0%buIb`(xX(VOy8Z@^S@99)D@yvq zJ@L=B=Pszt=VX|?0U)#?Pnq3-7f6elq7POA9ntYsU3SU+$W3@mco)D;vu>So36HFk zmHnD$+^mc+P$5XF)#J7TwIYa;3|2NqfJXIhuO19C+sLCnq+>jE0vgnWvuIT8xPT)7 zt3q>_9c4s3b;Ohz;K#z!2k7JGf>X1NMf-*4LcMP6qG#pN-uI0H ztADZ4H8u7yVB>P@8<$(spj@$(yHl6D<0s|*(5T#iyBd@e@vC0CTz-Rc#v-E31~di> z8k89-Wj^$c1R^{rYGO5P7AR zk8{^vVx8X_r_XO0;RUEs`6X7YFkMvYl~XvD*fdF=csZOb;l4=dC2z z!%RrV49hz)UWk(-Ljsp&tQU~M+*B_iOTFa87YfJ`H_cEvn^YN@&O7~Ltt8z3E=;@N zNFk-;BL$tA&-f66R;*C_pKpETyo09U0RFXez^}$%;lv--RlPcVjoD-%|JGD zehnxBv6-qS@N6wK0-!q52%L4k2WQ)HQ5jO!+Pm%zs8YD->N^2!?g@7Al|7t`uAZ;X zov1^t1yo;i(Wu7&HnaESc*WrY^D4Ek9&^87ZjWPD31&aR%oNNF^|yM==LGZjam+so zW-q}E&IVO2;@R>j3xLFMBlQD-IWXdg0u?-Ru zACZO~(lBX_8vgFM)$sq+H4H{w!|Fw{3mxg!GR@y?+!uq$FDlDGlh|A$QYBg)FG$=c zN#i?ssnJ?y(v8Y-k4V*YRqN6L4IWfzwu!9(Y^;Dq5(MjYdv$THc15-xvKYhb({v-~ z7sfX(RT!dS78cJh@ef_XFQT|$fp;%EuZc)I z1J|Bc@{}%FOv%q1H)R*orSi@%brB;i>r?TGyxo#C(BXX4xuDK5it~d0*;r|9+q^=GSmR&5>I!?(J1#3H)q+A_OEaE!xP zR6rW>oYv3tkNz9sK9ZY=g3PuCQxqd0;;Z8 z(QRL%+DX6kifC&fak1T50*GX47dy|bBRAUXGEL}Uk%C7lpsrgneamQ&a`arr=7k&XA|{a)(41<GEvn*gZ3Wlu|2 z`#pd~>K>`~Ls9kpq}j;t0jk&H$U6nOuh8IV0rCri{7gOavx5A@R}6T%>OTm!L^oS9 z1v><`ZN3c*NIf@HzYYE?kjt?@`!)MnQq^QGddXypJmqrH^^OM6B(soOCYD?1;9~i1 zm8Fd{sC#?)Ic`LdmrR*SUJH10KnMJB1@i+jy0~bh{7Tv5@A)-QP4m z3a}%b5Z5Y(n&+sM04*1fu?BF%;&udd-M<#zQrwX8ES+DgU}*> zYRDy8y}pXosr1)?>SHcinT`N#_Jg@)nJDRNKpPJ5CZT%uODR|`o6@rBVxMwf?hnew zJzD7chOM}=hPVM z-Zh>-=3%xnTeNNUPLE94Ug!1ZNV4|c)mH>ncM96(=?7G8x#+$m18h#0zEsc`bymfj zIte60LUU;*zWcV>$G1SVU}VGy1T4Xn+}=@1H=%SYMYzYYI`*ya3`}o@wi#L zh&UI6rDs=yZmyo!?^kE?*^oJ5EKZmr_rP#<{bx2WuLY33kCOhe^&l~W)0N*(@)jAV zvMQi)HGurZZo)z6WaN|)ImE0fod`cfmO1eL0sZ1lGmn!rwI=}*buF zK8^9Aaru;!niyh>Bj;>_B6(@n`v_7sZMf5-_dA7PP7%yd?KNc+gtW4mRLn9(v92lL zpEkO>iQX=O7s5%^^HWsjY(nG!Q%~W9QO2Q0-uz5zW|So|s^FrF&AT5+4iIZp^DMiqQ zkK|@`m~Jsw<;u)eUd3DD|Bg(a`92R-EcbuLqxEJUUntU*erX}F`lr#-jquHgo!XPE z)^vS7>cfYoT1iyKj81>oNx#;%+`m#tSnlVXsEl;FE1VS0^O%!Zk_>-9I@(?w_2x1fBgp9BrAGKY+DF~IS-TpYDF!j6Jk=w| zlKx^oKfhCOROmOZiuuDM2m0Ss%em(k#>)wp_V16b_vY+ZvM8*|KVrM4sQ~4qlva65 zE4?`?A>^{qk$RlWzQ0a_|4He4M9zx*G<9hHcVRm-Lj*Ms1}!Q{+_p59o3MF?Fkh zLMSfZ8+8ZAaWXM=5ytC@%v|J=eN66dq?E+63_a)Ey7aMZ06mV~jpvEZ_XuYbt9#5@ zW`-6d1$P{>>DvWR{V@(zJ3AH|pC^GaOmD0SZ2Rg}C`dyVTO5XGk}CR{+ev@OK@3g) z?7pZV%BmfpD!W|1h-I;w6GZVQjj}hH>c{qT$=My~ug|>a$XSrTl2Up<%cN~0Z>aWA zqNApc0Fe(wQI3_oFTJdl(7e!M~e~kX=aO@92qJPaMnr{X>1XF5Q7k^}!;M^iO`q1G`HqP4< zs6LZ#A>ctg(Uq1DgQ*0w#U2r2;hR5-!EL!(P84`h5D!uo{iQqNSe!;US@b;Yf0HMu z-YJPf^b-Fb?vWPkrgCRi_py0r2sgrm`kR5$@cITYpC-)YfNY5u*D25Hkxp;~epM&M zzw)c`N8* z)E$ZDIoh(1xXEF@urQBHmkiKnQg7`ZmEZfu1 zP@J{3oq1d;zDB@F<~57PIDO{Ri#oT)Nbp<-B4=62t0FJed}~pU4nF7Z*4vEL97}Cy ztgdXw>(6ZPWMNWfV(Gx%se{-ocfKbW)BLF|jn!LQ>RMRdj~oZnm-V6ZZ81FarqZnD zNr>Ag<;_2q4r-Sw`H`B|Cz-JLjMc~FjCYdxd1TSh`h|wvlx!NDGIvJc>c7n z@*CeEsTT#~F)?xyn!ILtI3<`=dgNSm(i85k?`FMII{XPywXiT>h9G+@$l4Gz9^cBC z6e16lW!#K#OIpaPZ6H%@%qp%2+a)0Bacewy+QRmbLIf?(=%YNjnF~)cePzjc|K@4f zG=EabP{vl-W~4hle4~d)k*D-|PEOKsBm9LtVLYVxsyj72&}_~w>o{qN?ts`5=jI#t z0m?%ZrXRWkWxa5W)xC|hJks)L%{tt)6O;{TvLp64b6r__4|&F%ge`&vxYz>a&={c}mq3EA{7QGEN-E+Zm71hX z=x9Rdv@_5nbegvar;et1+KuMzaLeq3iee^6ar+hX{*CBZIeQhUrL{oP9Vo z%&`v^%pvz-av@3Nb6;X;qQ?n~<$<6_dM0(1Zgof8o9XH^B+QApPgmugb^}VS72IN8 zO+g4y=%VNxWil^K%exi^t#htrpYrx@HE*R50Eo{FWX;jq7z%QtL*|T*=v+C` z5p=7Es9O(x4+G@bjhrmm&q%SBl58WYn=NW2J{4+iEBwtLD+gor4*mqpKk>imlOIG@YrAq%P(rN1md~65+kLBOtoV#VW|};S?A1Ugj6HmwdZmp0mxP)TG+pep8=pi#fUuE4ygy%onS0l$1wz~LVAt0q|~qL z66zuDy+^^^?%g6Bw&f|j1{8V9pDj-f63ANjpkJn3j)k>OZue$Z`z#G~*4imuqE_63 zP>ZGN>dSPGt=xM)(I#`s7IE)A`RZNxMzqQxF1o|GBp>c7E??;n$s2{Vx};sv ziTXVGdanF&aQ_sbyuR?geLpF8=~n?h4KZ?{YOfWT2K;_m$sim(IGp5)w`C`pqp`xa z4LnFd+>x9O^UUE<|5PL;0lW?eL}zq3AX++>Fui@~ZJ9G{V}K2j zQB#{>JaUTf%c7Ag6R|f%>c64{&KeYhh<%oGwQPZ zlBK`J^+>k)_Ogz_Q*XrU{|-p%pPh|L*43R_C5_0AN4Gk`5x>_-ZGBz&wRZXR2IZ|~ zIlGFm-xhyI`e=(ksO6tR0!-FI4*R><*&*7Mc2Xr5-qU_JodxS9J>4oLX^5tq)F??J znsjQDYU)U~YKc=#uFycKY%Nh~-;!wc>#!qNnD_;d#l$Imil!<76bIkwlbghOX3NLY zd#6T5r|cM=T1Wfnw77!ua)0Nl(di&dh_u?wf2_|`#2*gDOd|v}}DqxTGYJ)Vv|)p2yOzd0r61`cqBgTaA$+f320W zo?9^~#)DVUh0&V2b`ILB#4}_ti^6#wHhh{Z z&4>ewT2@SbU-BfCfanJ)L!Wfxti8N2UMPf3Rj;m=!LQMYXvzz<`Bd$XA9Q1!%BC{j z=9y36p)z{W<&`>#I4@Tkwbx!goUYD})?*7270Y4Der9;n!2OH2moL$)N}hA`bgRqKq7p$~Y&zusN<%EU`=zQL(jl6@ylMl^drVk}}9c`{{JG zs0vlmBk2MlOX1WYO;`p&ga{+{B(+k7G#>i2*||4DXWerrvv17cCQWPR*|_C{|20o| zXa(}M{|-hcI?LWM@?MWl@_2IIzISBo`is%M3U_sio~@BIAU4rTva5(xlGq`3F^LTd zyZC;{qOPPNNzn${7SXH6FL$w?5x4;%q%g=oLt5mRTFTNWh-;iIRzbO>3YSYyH!;G? z@sp*eS#Et1Kvq*zi3CV)LOhinxToaTM%fB-YH~F zzdy)j~(z{1q-#Wnv!n*23mf*bvO*K>zSHsdeuOJowr)o&$>Anf&`k?H0l*6>8 zQglyF*o$3&F|B3@2pBtXBNst1vj%MYrWUO-2kz_=M5YqW!6zN!y4p{Oycc;FJLVfSIeP;)jATctZ)n8RkvHzUDmIS+ zIyx2%BX37^hBIf6k#`_;y5^qj=xAroyT+IU)dM1LRQF+zE|?ak5k{+ZiQ!%Inn#XT zx6^TT==9;aE21~(Dh~0=Gc8jv@3@h7xa?rbUQr&QD#|v3&C}EiF3Fy6+ROEFOTANQ zx{t>Bp^9TqCI!XvqB4iGT&+k(B~R7?s?6=u^}8Z7)J?6$$I7Z5VXNl)Mn7#AHB%Gp z9LpmW`KB^uQtxaBJw9D)rABYFXGUWI;sNde-~#>S{VXeWnuNU_fc4}jb({J0@4E!I z2u1oUv^~&4k-VHko9j{UZ>2b!>u+5)cQ@9EM2BqNXmsfbU zm0VPS9{Fn9N>KkB7O}e_K(9@GM=1pLZG>d&rzhG1^3L2v1NE;);84=>2SFozn%3B! zktcqWhItATJsGEuk{*fAzHH%Qe$)}&pNRDWjR;Xi6S@>;ajSd7Kf4_cREJdWZtid6`idO)@D^y zx7x51-=V6v$*F)f&hkx`>s}ilwL@@%m`nn~$e99le3&&cw3aF#UhbECJ(I8jdu{Wy zUO1H{c@{@PXPQQ8aD3MGAU-EhC|&PI(an}VRFe`{ zb-U72Zu(nX;v>&5ZcmGg6g6iH@=Ozn{0c}^tk(cIS{I55IcfAA9g#6y{%l{sr?S&j z1h0Xri^fQHbbK0g3&gjwMInpQ3iG{VsQqasV(74qXHD_Qry*H2&>af_{DS7ax;d_S z8-Og$>rPB1UAd~!Fs95p)TKbusk41(tKpaUB0Kono}NTlpM?=(Dv!emcX6%I zM+f~VuYUU!=QEJH#C&^kx6L;LFmgz>lN{k;3IH_}Q^RA@89eyJ+_|6@{x#lCPuf5Kz95)|408nUm`@BaZ><80#(zRne=k zQGXkK4v_GsFZ$kC;60&T3!D&0{^}*(Q$;6fiPs5SK91f{;5`eAwZQ+(^zi>p;FX(L ztFhwCS2u~o?H~_V8&2LecM@zd`?XGTs2 zZQ&=WAyimUofJ7^Z4~rs%OKE=G+Pn614hm%pJ0h1v;{!&@`?U8EglMsy(pRJ1E3EO zFV|CR3+sgMy+U26ixd_Z{!);4C9F6)7ZFHlT!z#awPyF!E_(X}3%*u5<-yj zrCsHDBk=RT6X7?SolT8e>yq)A8Kd4xKy-k zHLXXgD!*{!Uz2jIz-_+7U)T6bt7>H7vHUkRvi2R2viF`Uzx+Ga=7rHEy~{`cfZLO; z9N}V4RUoe*e>$B{QB7qQ41likiIo1)duv$nZKWn`l#oPDlT89*n(Qgv!6$E|rC|X) z>7%hMS|Ql25UO^oj$m2S>SQ2My}4KsrwfbSOf9tFmsq&tC7$y|#(Nvv9ApV!r8@X3 z%;0}s#IpR6lLrJLopC^g-O(R-Dj)rwcIcO%8fLv2!}msXXT{grot-#^&hA#7ccG-m zASZ=tto~-|`sp-Xp22F9j>4`3uzDMmzS{Jcl*itZ_NGC+wI?!+FK|;6Udx_DlclbH zQ7f;AQKMR2Vyk7j)%~3#E04G%!(Ea0$tL`6Ca-jFqGCY3Mb2G+ElB)|d~qj-wJW2n zIbmG&lsXp7=WV@`3DwsPBQr3xd=N2te;seNQs#Qw27dp6CpB<-gsf!-!|u7{2!hHG#~6$T{ixL_ksV9W^C~VpkH7$#4=m6YI&Z zNJie!yyP^A&DKDw=6tf|e6?~(HBw0vfa-&qx6z>Gz~~X5q0vfQ%uRN$_OXTEfaiO8 zw539KL*Upvtf+TyzsN(oh)lD@oe2;3c*k58_g4SEc=+z4!oys;QmjXF%%ll)>Rx&P z5QBUk!vl)}i}~k;YEdKki)E7z*Hc#u7@N>DGqNIa0L=1T!!l5^rR0WJhJp6Z2umSd@0_)`At(i5FqlR!Sfxaaxr}gKp&_+#{Om`v zOy)M}9ZmJoOSa=X41mYu44qNd|=6QJi`a3_t}(L>`aW8o^SF`;uc-*&zBq8&~Wyl&)GoJOr{+Z zefoGDvy;{nIY!#r#RTJK$}qwBH8;7>;m-2pRJE}`eecwU5M(e(!hy&ECQ{Lr=CWrp zJ!|c5nLD4!OwzNWU0tnNkzD`+FLoxGqn;h$Ofm0%HoKots#MuS^I3i;1iGqrPhwK#*}4AYnBIKO#u0{Z3sN0Y#g2=QW-kh zEWoM`>vw}tLncMMFeCa17L9@|L61?!H$O$a=9323#h>KtHNp-s^RJqsV$73Dw_l^D z<6oiwF>%R=t?Y;xgH;TcOELBPF0#VN4_yl0cJNRj_A%8v@>x;#*P8G`o1})dB8tb# zOk6R^>F#JAdahZQ@e*puk{AETv!?7E=LMd*?5x@1`ShUu4){kjc7YL~dAX3P!?2as za!~vOptLB99Qjl2UsEd5I|0*G=|3oOiceFp&)SfzLMssTYX{7PO9z*E{uRsabT%~) zKi9O!yg034trm6UVhJ|+{~5_S57&|WbF>mB`_w~!2hTb;CS%EL9`TG~FX9=m=aDcB z10Dp$xf9UXa$oY9}{Y%QO;=cn)->hueQdCAhm_dpWn zz1Z12@qC&q<5IKz3v+{4NWNYYp8yo8iceXHO1q?L2Qb6>mMJ1dOPi_Gx&kS7g(vvo zq(&bxjZ|(Fw(EVfk@8k%vGFpRGAA-pzF}HH7CO5|G_01NXK<8zqQyROi?>J^obN5? z#B8ny2bO_IaS7u5@JE?)Tdsw56`z%BExr5fd7-(K^DE&8skKl}HuECcO6{4aszfF= zgpGx6igM;*y4oatJgt{I(v2|o5_DYJMCv8LHA;s{M@~mR%vZOav*wI5*|BHcLo^>1 zyOE#jN5)Q@U7G1_$d0j`!Oz1z7ianjAeytnO(VRP9cj8E!w;h_qezy6 zpG1jAS;80=DUwy^VU4G($uL948f^T4dDTA#w~z;12sN3@{?RRXnY5>cI1H$f5TD|s zO?dH)xDeB|5L?w1XrT!-!uNr9o)Fnr((4T)^$!#Y&9U#HaEelYm?Z4wfYn}&C<&c=9D!l9v^nc?(s(R?lnV$mq{fS;XsWD_jS;OpQnAT z>I$^58&xSkC0sUag=%OKX^G-#jTDJ#QSIkrtf*p8kE;?~=y#Gt-_#4w+GFb)00~xP ze1(I=&doTOT|Po4Y(H|)MSmF~S^YMSAF}ZUw{(XtRh>O(?vl!XR37m(uZ+AMI?Wq|oYxQs zDC>)M9NO=H+fp;AM{G)Qr_7gT#fwRUZ1u!_uj({f#Nd69y+A6kHqRdg5@LUBLj$}po=t0B`A}hG2b4Uo+dUj;u&RA6 z1?*Mr>i|I-E=V>?Hn6&+9wi&lTKJBwJfh8Jlk7A)SgYdaM_FlJF9n)Of!HBZ)ZZb$ z+9zGY?@c0;@i`Df{vvVP6%Ka>uH#G4VL7rXpXs_rwjC|i;8lj`ERS?(3T4X^c&Wh% zS6kKaLku96RRsAAWjiFxphSk;Wk__qBA3{2Wf-yQiq6gDDAR%gx|5bn%C>?-mvO!h z!YK(V)E(4fY0Yn_RSo|OtkowDvVnw>)qF?1%AuRemBEBx6`SGNk?Z9w4QK165IU4c z260ppxALXSs29tUc{aK(o~2(hdyl*Dr#W$g&6C+b5=!-@nWJ;_OjK)9-6dAEZzvL`Zu3xvmC_3xn8!S zzp|h7))j=yu9Z>N$qFom;cD9TPDiW-3B1lzKFe1%4#MEcIIr9!atnKW=FxQ-gYN`e z1c`thugE2KGb!w+FWwFDy5Y9nMMwXDBH!a$<6IFzb2w87?1}9u9@!E!?w(rwh=h8wWrcW!IgYkhSIqGS!Vpo%Zx0!|ypF#UJ z@r}r6X_L`O$bePlll(JiUaXc*k2epjPYV(ft+i6DS(=(Rhd0+hP0;j(&SIVAEW3ox zIs@Ip2TO)GHhiOO0hy}Zr_d7sIzM-|IKmgEKZ8qc?b%)x0=Dzk)BQ?CSE;Ja6HMV;jqjw!}ps zKFNlK9(rh${f`F|#3zS)G27ly%q!R%CB`Y7(UG^$C&;|sYG-=+WUqQ`meZl$8s&66 zJlPlCWt9EFr-!@z(1Kh?pjXzen0%)sa$vKxYAfk{X^9PkvYnVf?6^FC9?B&XCZGOA4??u-ON*hq{E1#T# zrxO>4rxWd~^K_ESM+1H4m#+*BK6Vp6=YX{g^CC2f6}%<1RTyP4?qZRRG`ehqxDgam z^%DJ%FSRqJ$R}R#sIm!hk8NUOYT8qAYV(1tZfvB#Rn3I8RpZ=F2ggSuvphTSJ2kb< zj7Ku)M)}y(s=X5Q#ot#7uWy5cZ4BwU{8}mKeawH;RHI*i`8ucSF)*6k&M|&JYAu)EzVf@Pns_P6V zG2ii(Fy3nE;c*NNC2iG=!#`)8X+n^S@lu(X$-?U}lT9P)%;aIO`Re8#u7^jM1GjcG z&uwnnJ^C|3STnkj5Uw`Ly%px3N8c=#zxd8T{&fB!$jkC#xu(^-k5;;Zmo_o1wc* z7Pw+}NvUJ%Ggz6g*8QG|*>o;N-6ag43M5@f!MbdpiG@l#-Gwx3kdqoOx3!hYXLt1g zKf*4DXsqn$`0fxTqhWl5ynA6T^NM`6j9CejYa6dF3^7A%`Ue00BsA!G-QR$$t?wip zrr3CV2UM05nyPReW=Jp_u0MQ=vPCYzc=hi?kJG=Ht0$!6>L#RfBIBB?ky3@;hrHBo ztSc{NQg}UsnNQd|TPyC!A1szQKyuLF|3ZFx0JAs%T~-L%%Jz zp^kO$qY)aKbw3N?ry6B$+1ft%JQ|s=7CeC{Y6HV;3whBgVb+=}<;S3;z7kJ#vPbQO z&GA8BPY3D-{kg9*=yULkt@UB}S}9^zF|lzKkDOmcL0uh#sUsTJhf-{Dnak zl}2Opb@ELOlCOV{x+*dVlDxr=5C%>}Qew7IfDauZ^?*a%4;-lIWsU+Rt}kzo5y+p>s8oXCYlkxql? zSlo4zq^ZXyJGJuBChrlSG`sFd@})@4GR8f)lWJRhFNwx?EHvoEQ4+@e+f3ilF1RP2 zcIS4|w#rl3AEGAgSZY7=|9{h|hNARBQ44iSWz_j4H~x<=0CcH4uy}!G+m&}&2Nv0J z!WTYRT*zt(x97Oo z-6B0c{Hl+(%F!zMufeB!ravKx@~Ivs#nZ3nMyL6=s@B1;AJ^WS&!f~yQV1V^!6TToAfgt*>$l=r zr8x4iKL0Axmp|zb{<2Q^7g+w8e~0kSK009z-I>H`xP!4{yD_^ns%Enm$n9NV^6KT9 zp~uv3bRsKr>B2Y^J$@Q+T0NEGx*<(icK+tGu$T=NBqM}FojzAvud+c$?CpON(U#pM zB9Q;Y&;`|EiS$d&I3&WO?R0fVh0qoM!q4GXHI-w#ny`XZHb62MM>~g zFSeA@vvIL?rTX7<3Q(-T))m`F#Cj6LsyCOJlXrEMFVWn+Yd~<-L!4BxzoDV-93)g} zlC5(t>6+MEKGvExjaFxB@@QA6(iCnM(vXt}uuvCr!UyFAGb&#g74L zs_bZka7_*j#4cxkv|-O%DA5hVn`gD4csI~kw};r`fjfnd8;+oG)?CMPF3%CWop?|a zYM;%qW&jO@`B|H~lLRct#Dy7uzk+7<=*;IzMT*dG?HI{RnY^HBOKjs0Qi=VtrY&J9 zrp8?)9NFM#jkV4op>PIJ>;vYA8D+Fc>F!ngaZkQ(-hpddciCeI6yv*EI zQBr!-U`CfM>5HYt`ktpq&t)3BVX@2s9 zew=?E;4>HDYP${Mfqw@7IuA0}y?JHA%Qv`IBtGLTGox>LTh)Yf9fiIxN3vg|URz@R z^{u|GS`5~aR_SoRb3=YB^T=DBI$pK}=W=SEQFa18DJM@wZV7FFEH~Tj_B#ieLw8@C z`6}-KMyk|0ibsyZ6F0byDmT=jSj^_s?H4(nq-sxN?zcaPd`S?-F#Bn#h)4%(p57|f1mjkeZ#rM|Ql+WZ_Ve{e{ zzcIb&jxt-mb`cHKDU- z0jp3vZZnhj4R7HASHBqC#GJWrHUz)AZ>IC8*>Qi*RGVxs3hRh`0>P8gmoQ9Vvz*VL zxqp-RvV}*JT|8a-!%T`UeNTG4^u09mj!#m}ZtthIX;=jXQ$fvt|JL+vHxp-$^TiI} zf%MW`O7*%8`s-?uGO=K@!@isr;}_YKjWJUX2xY%LFw@obQM1$j9v2|3Up;B5AN+5m zee&VYkXF>`#-F2X*Fy90gLy3$F0iRuV19b=R;aq-quI_Y%)fusPuTI%M_pX2I+;Iw zw7#R=b(v0!Z_|SwEZ_*Ex%=ZADA@ndHTs%n{`aAaeiohDF8ca5^ZLUbT>t*9Iq&eu z#6LY?Q}EOS=Jvz0sN>arqs?26bZ|akE_2R-rgoHWZl!tj-yNF%>OS4vs)IQ#x)R)Ih3sOE{z4f1!WXk$UoABM@loG6haG3l znd<+_;kXt4L?Di{qs-%nZgo{mF`xRnLz8AZOtZ;1mVLH2fBVfC zXSTWR8)5#6%BIeC&9k+E&Zs$Owyaqzd^&ne8|J|pG0bJh(#+|{vNd#NJQv*4$8JsS zIPpAJ3BiwJ3G5;)F7VhIYSkwA7`C-rQV;_VHuNk zpi&z9KUQKH(<|X!r0V}viEHtcl8-gDPm4A1Kb0=!lQodsjYj2XMR~98pVh)<0^Q2b z{*QfNGePx%S7YcU|BVGFYFU7_a!8LcFkp$H9}6%L06EwLy|XFNo>|A6w+7EmNo%lhCkRq(EWF0$;uu4U@HmWO45#!M|XvngOQfjsl zH|DvsvJQR?fCJ?+QHiR!v*M*=he?7ByLM2ff;W6oC}93j#7yFHeYj901u13ma(x=_ zuFy~0-Pr;@vm8Zxuqwr~>KQ%!GXU!qoqJfKk#s>w3pJ_5Zn64HKf<~pS@CCQrNeWac}aNH?9 zyup{n+`K1?**jo0Y6I)9jYw-KYq9tFN(4yn8ZlZAIA;w=>)fSd zLIx&-v#D<}7QkQlQd%+QNAHWVFg$J+W4^Qzu+v#sXj3x%Gft^L8s)_%l-gVyE;Vo; zUW2D`GVWS{=F#YDKM;rA) zWiqISH~YR0lm|I?bOQxSBd@32_knkBygTCE-*^wlyR>6O$eC!2cmoX|dT;g^O7mt# zse}(J)${+Yq;K?+QZj3H?vin;O?+I+6UWrwQqPLBHLXVJlYp=yR3P<^@TP4(%%i}? zV^%HP)fWR|5l!%Az4-WOdgRN>K#8XJ0T^%~kP3dRBzs74eypaiC)Rc1;04q}BFh6W zAS^p$ZYeOP{8;NM?J#=S<(%8nMQIUSPt0{vKOWBUJN&UA45~fij)apubS%y$$V$YSJkbRa9wzNa4pS*V8j4c!c6J4!-d zv`MWQgzjtr)DKR*4MZmy=p1Q|lKn9Hc@9~E*!3^c#;CNhM%s3I+D=Hjw*;%tZd*Q- zU}M=huuIveE=C`_sXm1T2IXQJq2l~iK|w}ArI9ibv1%6(a)x3iz7-8dP`E)55vi~7 zR#U#28+)2#yi+gZ?2t2xEP&*$6Tx7I$<_ObLG-p1n^)IpBue|ADs3$ZA8(9gxkn4@ zB-fwLmu6!NJuj>3D?MZzqXM!1E$FK<%#CHy@G|U&JYV^r(3s~diU0meHnk3BP1#_} z;$XHZAFD^rLRnuFzB`n?arc26%$J?tq#PX$12=wR38=`HGAGDq>7=A=G3f6zl~`Ll z6$XPFvEs~)>Vz{psbNv5AM>J~;Vev(LVZCvtEqqpKjy<59i~^|tgNdwtGTVDf>@MT zsWM3Vcj{1?1*_zfE3@8`vYuCF(6<{=k1DK^ec>R3F}u_9Dr_WADNSBgS%q5PK2Ylv za&kV$%G*K!i9Rs)Vn8E8%)o2)l8RN%Ujk#&)x?=#xgx8iWpY&(%`h9H-y&G~XoFTF z&=Zm~)HL2B@h+$D4UG3(P6FA0ZCR@GSfLSJS9A9lljxkPRxUmlGIgwg{wK{|#KsTS1rmt%eD6$%p>$WI7W)EJx2=+L>5!j< zQ%ylI6WgWUff>gn9O(tV&-RgPZPw1Z1JDh8&^!Gc@}Mg`W6IQ*Pw6LQBZl}R?S>Yem;9rmrA42ThBcas*$+7wjLu)oR# zKU4Qe*7UQWVU!-pVhR~Xbg4Yx_NN$8Xcu|cWsB-7=Fut0gwKZ@3<;tcz^_T~{NN?(~W+le=1fMbm z0t+p;o&oBkd17#S6(NPP>9 zV%l-))|QnX*Ug$R^-XJBi*9{W1){jwxtTyAacx8;YXbFF!ulpxbCA8r7w`GLc>g=g zsBd}TVITf8ECu4&LB?KMPQ2 zPnayp?O6=tRZW!Dfi3cCZ&JKJRw~4aHa{<{0o~XW|BhlDjqS*W@fsiKua2xbAH=9a zCsxEG4j%COqIzpU292yNM;$vc--tF-40fw)dDh=N>QBxGYxZ}5jO@+nFqjiJO`)ru zSXJ)@h|zbB0qC3|Qt>c$mrbQ|39NFp#t2cotr>unv2HfWp4p{DMVU^&V4;!`j&;W2 zE}|&jRDs^~LjtQ3{8LZ4^d65;=@FFVBz@FI%O zIhXB<4a*<5%Nm@c%H3H6pD}<2b!S11%QTnjKSrsG7^nng>Uk{mi0@VK-p0GYegAo* zOyG7qL1;LuV)9$Xh2-pG2bi^59?f`1*SfQkw%2x{IqnO{t_Mr7kNSt}L$@9c>H$@8 zEiLK6qJs|pZFI~L0NFul;ZH&J&_%==8KIa-Iyv`b?hca>pu65qu!Qzx`B>?AxuGq8 zUI!&CaJ>-AfF^TQ5&zOCxdSEiV%}^eebWn6eEf%8d^yprUd+jP#t)z2i{AHQULHlZ zNc24XOL~ALg_)yquDYG*T7b&;X70}GP(|?-;uJ6HL2Y`o3c(vN6$2W^Z@0><0{y%Xp|Bx5P*h&Im9_uK&S_8Vjz*!QrwEz>?kPT(` zV_}s(J~t9GnRwK5@zfgd96-vb*K(zQ)JyT3HTcSNYT2I^F|CtDB=%>%K69*51R&c> zOvJ+&#gm@X%Kj|SA=a8C{yClR&paK%5TFKh_;Y&MpVbXhXST|Fx9_BfY*7+FTn0hf zxZy)s_WNFTPwvX)I;=O%(aL*H!I6^an3#>|wP2)6oQTY#+Y8z_fO+|qK*-)mgrsBr z3WpQQxUd(7rio7at`93)UY>m*)3Gf?slfK+6xTu?sgU?TH&IcQCC z1b}(0H+Ag?rK>xQ!-JwvYPRt*ujpk>)<;h!+FAqJsemBSz#7m9fYn2&A&&c(6)A-< zg`{8rYNnn+zx83U8<0xn%+(6vyqV z=ZThibY9y6;FsSnk1+M^FaUA}jK4hv3akxH|8A^zWX37#G?2vxs!1A@C$Jp&OOqsk!!`3rDOQ|z#TyUYgeM*nR1E>Tz+m)4a%>F3g zY@R9$uFNmZpo3GGH>C_?Ud~Hqd{!`R8pb?)N~=QNK9v5Upx314*)b@(kP5v=chH!k zbwj`KHj_RA-Xi!lxh1hG{Lfd^Jc*TNf|8S1^OC9$Au^Cgu2{MqLia&6FO7FO5tr`l zHsS$2Ok(Z-5B=Sjx+k+xhfDXt?bW`W3$!GeHO+qy!x*GEFqxHbjF*vW7e<@=l~lPf=nrY=IB&S@Zr*(}%N0`Ck=QdHW@^(vH1zBfH-t=Mk)0{)u|5EZN}|oYD2q z{zYR);IpPrk&YvBBZvJ?IU`t;{1Xf1R?6Yk-8@-GvYPn|>5+qzS)k+O+{l!>^v6h6 zBmW9ll~u)h~|QzPS;_?ohjLFpq={ z_ZwExaqVs7P`6*KyiI4nVUcV858aRDwv*o5Wb_X38&8o{e!e~~(zaGNX@T>y>DxMtQay~3) z%HV2csqq*V#Jdilfn%6AAODo5jX~{xyn)ixF0r*Y=;RpI$gu-lS(H9v5?jc3EQ{t7 zdeeZh%){Zqb!*zYG-E7l5dFqMR!edj{Kdzmo>6=0TyQ<{7$jAd84o~;v;NkAK>(!g z2njV7r+rw1+g&IBanMFfJfmvkn7@xJA`~-m0|0Kx@Gy7>zfQx)u{r#1PjVd3syUXp zhHClC8F9chYBip;vg(yxWdfz776hbwwl{${IEwya zYvjYr)|40!-?Flf+hl<9i`{gYj(*Gh`Kxc};kPWD2aK2Mkq=c*0Smh~&dNV@)wOpD z``xznJal2&*VJkvt7Ml5sTw1yU$RV_$gVOzd;}$a2QIX9v@E5DbGOl-7x3siHiC_& z-rvE-|LtT}gsr9}-$CN-p3Hp15=VWOxZdY_tMq=C5&^2qAJgSW4_}~=so?Cs-sC@p z72&q`sOl8xvZsHiAyW|EI+>tA|RRR7ZLJJfk9Yf^6R9e7v$Iq?_gi9_JL_2@Vp6+q`Mq9FX2 zbS)Yr4}TZn>#7f3oXUapdt(H8y_Pb9_S zkjf146rN;yM?C_h_i+hlV4>=iE~cMM+i9_xmEh~nQl^>JO;a{lZG+1^1 zJY&uMj8dktAa;$`O+)&F7~|7epx0w;+LLzUNAIA!ioQr~2=snus9+ikwCxXUh_!>M zY8tCn%=>G6_n346Zd4G#*{4ysV!{t;Y8q?COHHOrX|e+bk?V9;#q@U)6udj{w4&5w zI`eL`53l+>$e)2kgZ8RD4pE2m$hmCKJm=^`C{@E`GDbMyLoo9A>w5=0tyf2ge$G^6 z4hwS5_Z?`ynWI>2My)Onr2I2jWB%+q#mrz6xWhmSm<8L{Uo)U`h7Z$gEtZt!(NjAEKK~~ zebhWm0Y>Jcq^4zczGp?t-y8f{2|E1+SzB+NmJNjYJw`;HpzpqCf!?!SzYxUI&w808 zsIRZk(eGKX*J3nD@08;>4@C4oZtaxB<77XZHR9&J)Mhr?vvZKOH&)MP-p-@&nzudY zW;2iS`BLP^FJ(#9APmPB%Hj4x{PC>}J&e##z2G9s*z4HO7_Vc$BYHv1>tks=2Znj> zo=C^%vM^Kq0oJdo3GtW(m~Yu5Ebpi5&SM^Sb5Kl-=yjC3&ch^a#jmtz9y{W?A`=Yy zHI^(!X*M=-qDUqUB36gryhvM#x%qhhrqi!n)MyTcNX&(ArOtk5WzZeM#3r*f+0SQF z94;S0jAE7-Y4LpK=eRjHV8anQKA*MVu}8>r0jq9$+{aqyK?{JXZFtRF-GvKSu~rdd zWOeOP#-l%EcdR*_J9gFr6!Y+-kK6A7>Erec5~gC*-rEK>*A}>y#~`?4J4``wr90(Y z$ihup?x*7x;?qATe*WnR3z=Wz=HRI@!WYG&*^~a3KJq>FYZ$Q z9Oc0{^GB$$(=z0{*g;|;SOJ!joPS{9#nl?4)z`Fncf$CHqjj`-C{-6~lqXFrAYO(*# zx)WPJLtJ!_sT5axA+&4-Ye`F&V#Q|LDnR~g zSXijzpp&!HGbU!A*6Y6K-RRNp)0-V}{a%0H+f^DNa7uzYhEF8)q6urT-oLd2ZC=CX zvIW#&Ez5+iR$v`_%6ieOb!?c!p>0;g@1x}PtOWa$ept^swh5QvYT$$d(z^|YMX6=@ zr`E^rdu*EZ#C{!3*ypCq4@mkUoI?#BT|ytHo)%BGq8taQ&IoF<0hH$(NrN}AxGFtl zg!({NK>7#5k>}qZsGgg$%2s;6fqiGcZi}JX{YcY(WMSh5Slr;Gf8DGvC9||BPGf0sQsAz<83IF6$(dfM#AWGG2t4y0N7$}b8spdxJ zZEG5c@lvN1b=k;z@GCKNbR*_7wsDGlVCpf^@?)^qUz@@TlK&>~!!vEIquit>inTU@ zAGQN0h!Me?snaHKu{VJcRi`C%&P`}s~_pk7Fa~e&D+YtSv#t{^^>tcU)HhNt&9bp{)Ls3e5mB7;tp-x z%6ioO%&K4{^bS3g$Ewg_lWd9VK>X|tMPZ-DOIk;2wT&I)yY5iY?W}2uESRdKlfpqf z4Qe_B&^*>oY?M(Fhg)dMc6MF6oR3lO9jspHgteeF9Skr}Zf6-|poSWCV#lDu}q9cl6nYP6d*F7d-Ey&1FdG@3C7plrr?86_){LOXY3hX4I*`goT` zm3XsK&+-CKBg>xvWtN*VN@lr3aTXS?ZD)*f?y?3Y+Z%aWeah3?$Wz;zr|wF6Wnq$s8rpydzQ*gcfx>J}vq=ZrF|3 zE(a+t^31M)(`e0YFCurmF#V6|?Y3JoQ6gv6Eq|r6b&Q98q{aJ~x9;^Bg|!%Ps;EtQxGN<0-z%mI)I63>@SwD4zPwAPyEHQ z{xDm>yn>bBO~-Tz2P%ktnflmykFj%(5;EYF)+~++XTo@!UYiyigX%c*d(EEuWHOg7 zxROZ;n=wzU7Tl=kc{N2jQ*mxBD|iRnn*PHE{!0sBupiiyX{HXE=Q`S*d%5PvSw%bNv-!g2G zNj=cHJwzEK(U&wz%%y_Im}jY~_kf&?oFX-mF7+5p?bX%MEvF;_Jep%oeV>{i!vv#e zO^K(GJzD7IHjDW;R!a2vA^l^&#VUDTi#OSB-_RulBOFYa>#Vc`BQ8>W8s$8XW&JY z|0nEagzfCoIp$*@@e=MmkP?^8^zj^XxA&CqD0YvTe9yB61H@E)$lu1(81i=jnyZL2 zc&P3^51@0G1gUGF>hW>rF?M;xQ0ia$2g;a16bq45af!vU46CH-C6nNr`N{bl3$m|f ze=_B_*8bzIxAz4vE$)at+wEqGNaO^Z01g6AlyUFzU0xRP?{`b0a zq=>_af$Ve0!psdc*T|F|Cu&Tlu#2pG@oV4d-EaX-mdBk(YI5NPtG?DUx<&(IX~$d&Jpc1 z$v}PoNp$^JRxU7120;9k!PBUIFhEfhKdSoPlPKgjR*7x0bp4Gz&d&>#q2@POD>)xo zdV_iLvh`{24d(3uqs?bJyKjcMJSC;ANsir z0D~(h*)b&;SW#-vLv9aF@CBnWvOI z4S6*}N6R008fbYAP|DNmGD;4LTQUHqbegdp?mFKIUfA9DQ*}SNJcdw(yUd^dxXTK% z!SvxSYgp1lmI16g<7pJ{B1=Q@?}r=3=M1Mlzq69m@-B0*?Y2dgOfPn`$Z=oGB*;Ak zPb2qGfHHSyYwoXP04j&0C0dwLJKI^Oo;oXt1E$qg7cS;d5saj&tIGlCoRA?o@h2xp zM+EAl!VZum(tK&rLPSv1JvOXikDHRy*&rr0L#|Pj!Sx{_so_C5mb`Z|GOFo9cR+Gx zo$R3|b~BGiCMVj5%126uDLaCgg$FvlyMeLw4goN+QZiMz4{z2;>VKcb^5^gA$bD9# zdSxWR9fV2N&y~XGf>Ub-iRuW_KUPIX%8z;Lv&fZFnu`z$c)%(aJaPTgCwfxX2ar|Q z-_xcCP++&wsRyie;n4eF6|q5$(@*`Z)Yj(9FwP&c1@?o78dw@e7ay`d1^TZ4;Y#IW zry{#iLjex;mpAnjY-FWsS7i-<9b&EFH>hEttYK{g>Gt{RGE&yCENU1jdXxJj=Fb*W z)kmy^+ac`QNBh4*8gtDcWVRJIXz(K#x$pl%sgGEP;_-vg>p0IYyRaFaHFDArg%H`- zIYZt{x~xa}9<#}OW*M6P80!Or=+t9YHlPGV3yed9tQG5wvfGGqc-L!HhCH)b#qeJ) zft6zJgE2M;aY*EnZHqopHMw6#by*F#U~s5iaD$4B5zo)j*lae`qv=3ZFPH2gqK*Xh zyGA0(_6by5mk(6w2`lG%b%3g>i&51}18B$-R;$u91fxx+?4Z39_e1Y;!cr}46MG~) zbg=5dK6*}*k+T=wdBSdml!dF~w4io!7TQ7{g4_v^zYLrh)KvyHbU|PbJ&>L}Wkq$* z(~0V86+}r_Zg?&hea0FEU+rf!z)_q92rO8uc?z%MC;TY2=|Df4`V1;XB>nb`eN|IK zc>JSv5Dk0xfYst?8xIkH73xHPn8I+7CEUsjNYp1|6BbyOxX>3Ux0fAtwy$N_AFPZ9 zi^JkSVcOr+n-2cTyzRU6Honx2?*9qaJBNz?#j3#85c3zS4I})Fzu=Y;MhE_4-*H$& z8@^-#wrvCCH%igKmn^Kq4?RJvU=XwMH2Pry|e!v3-JFqPTxxrQS}X{sHOEqDAsCnD+m} zN)&6?9Us+~o7)2vjq#({OEY@^4<i{8Q^ad{yS64MpB-2cy7`)U zf-S##&1Qi2O@71r^PEBS_Zv3Ie`;55^Am82L$Th#oH#nDIY=fXCpIV?&v4O?CcZ^2 zrqJrQtab3Djf#TgzUr`FgvT^VL+L%F^nM`9rdX)qJ1mQJq6zO<6x&T% z?^tL+i7Yi{I!iRAd}K+DaG6CTQ4a69W9B^zE`AltAja${glF4^{gbVw95bap2L`1Y zlNS9%z_9+Fb+>DabWqe2=DDFz#VG#R5|CsFNxgMO`0*&J`4NSn(1i&U@&RUv z=N_^>vM_h*{Q-M}oao>O*3>hsleLs`fFyfPi@qnupj97P+d}yf7IrA%h{*;_z3)iz zPe+>ak(q-^VUrNN_wLC)tp+%EV()|(o!i?})f}KRf!gI@+r`VZG&P5nC}HmKDdS?m zxfzGzMK|aU>_8DYkiSh6=w%Le7NpKC$pb6CXb;j;!zZ80mRuI<7rMhHbgK}6=mN|DXuNu@ex17#^K6$9t6rnOkHmDrAG4Ah& zGwZ-YHXZ;A`GCWT;At2oQlpD544x%+sk^sTbnJSNIzGyDP2bJRo3bywR9s0GO@FmCs}$I^s=@rOxz- z^Ey1KFa>M8NrO|0te z7vjcPMFN?y8Hri3wBL@$u!H1OfH#1Vx=jHd$5*z&wlMA$)N8LCnY@)EX#22#z>J)u zo@dt={bHnku=wpS8%oeBG`t0MR1{?8-JeqP-Aj0#LK%*{UUrkwUxomtijoO z;dNywr_x;x%X#c`WmJuVvj_(0lSXPF=FX{rCaK1Irk*udh2Ux@`ZNGBD>HFVdQya! zj<7@V>a5VJsaZ+xabhrF(|R_-q^d##J$aq~AzA2bBwK|;8o}PDd+;dVe>E*~0k#1cO{+;S zJh&URb>~$BRYI`wa|RAxj-LU;vR(yoAxf3#=fNZW{#9bvJS7f}qOl(6^n9MYK}nTT zq(vV$ihOb?T^4y=q4l2z23l#0JC7_b(<&)~wk`|(0tMK)!ffcPeY`M*7v(MmmQ)(I zKfTD3Vhbp`C@+q6guz9@8-~$_qP&VzO`#|&WsEclIMOqCNQAi8#jqM{vPpJ0hO2WG zg(PIeiwThsO_4{y!u=Er2ZTelB8u@8KBErpFUBYH(l*r4iatp!TA!P4bp&k+;N=|$Ap|m07CD$62JkYzA)S@bYPs zXlNm}sSQoI+R9BtQ~Bapviexn7-{fxKt)5;NRt!SM!jWs0y6Xu;SS#b-N1(dqu)$m zO30w|KG-NVv#aJnKNN>Z#3aEBcBtZN6A3nc$+-`flA7B*Rf`od>oU}IQErb~AIMv= z50-bB6q=Zm<&V<*JY)Wr!@+zvV@E9`LwE*fe_Co*;9eTPZ?Uwm$S>KltrS+BH^-{t zSov_Llht`M_A`0Zz}pz=Q3G#bw6zA0V^_(xCU46oQbJAMiIt*s`F5UMYVj^?h-Gjs zzMKd87+u>s{*g3mZ)eWCe->-KuL-TW}?KKZL%{%Xo=aqpf~5e8$px6Npgl@xDVLYU)OLh=J0K@))O4h2{ zO&G|EP+W6foUiIj-!$iy`A-FDTXXJSa9BYQ2@Y+MRDub5bBOrjR5Y5G!F-^8G#_3y zv}ZjVP41U?kb6h(Xgj;?x+2jLIrX_}AAs<(aTKut6q}Bx=h3L^cQl~|@5USSwA^pO z?=#nW@Q{Is4#n2ZJ;1K0NY`TcD)tqPZ^eUQl>D(3e~C_8)|wxbd)2;b!&?=Td;`aH zAvtD*n2XE3(NFLIwobL-jSH5{uUg`LT}@F#Xu(xWMQ(IA5UZ6XA4mL z!wiP=hEdCQJeFOcGb#LAD%qYVvvahlJuk}6S$4NaAMsk9=uQXjZeJf>R|@fw#5(fA ziRI;3-6JOl=C-%NUQ)+k*h;LyW_mAPlz~Dk8B^2~tZql$19wWjni_Quj3nxKoai@N z#iooo1TJ&V9DQ9TI-Xir9z@Sz3qA3X>B_~ak2Ja?_X@#%XVx>su85Ik4Ysda%#=ke zDD@2FPEN9&m}<%B$Z>z}hYuKNuX8@Jp9lotbWBy}tcE68RWtOW{FCJUZrSgR<~@5) z9TIp6_LRmaKrtTqfi@=qqo=4qXI`$6z-v~1i3AjEl$l*qI8j1p z-rs)6JErsXfpnoWFUvYpPG?@yzKAur5LM{H%Rwq7bm67EBSspm{JJ^$cG}|6@Pw0# zWS9zyO|+~FuV|l$eIlw0`qA|+JTU0j0+N3^wn-gxIbH;zRCQNJ(m+uh3H52PF9mkx zt=xL)DZ{R%jJb&W*|4gA?+s1q%6+TP!B&)<ldUiaDapRCi^(cfX*;??nDPYbD(FJ?Pq81>{04S% zmh2$=U7*wRXIIlr=JBYRLUDm(`88O!+_L>eeuO}VWaXD#rflVzuMJG_tk*Q*D;~f$ z(8{lX%h7cHD<0IS(HCVD7u}H~Zy7Ek03kWasx8F<%9$MIacI09-c;iqsAe}_vgPCT z|9gcGAw6g!PlbPb_4&t~#2kdEuA^79ts7s>-~U6f#=K%?OH2=bM{}=+JrpUg3pr0* zgAF-h*A7UU5(u3BKw0WbsfqJIL%%G-2t~J%Y=VCq-R69AL~V!>o#;vK!*725!Tp|M(iKt zG>q47^z4C*EiE44X>gH;0L5?kQFyunAiI({_9h$a3wFg6Gl-_$pWA$Y{$ zy6Fu&=;CnRIH>&ZMh(IMOnIG>>GrRsi&NBf1TPtW@2+eERtWGk+HeCPR^)!hL$%^G zfKQ8CAYNLCB}mE|!Ta-5sZ@C+4{;1FQxCdyW>(a3Y(5?^l1Do%!*u{EJN(Lzj^y{G zX#MeP4lT}uj(-haUX4uO@I`!4O+DdG zW{u^6mYHMuP{yZjAk%n0Hu&-t(1&4SdJK54BsPd~uSdYXjo2%rB}3SK1@6|oR?i{U zfFuCf9yklG3xGI9&%*$zTDDAmo%*MB9*Cv&^5b9#>|!#Hu*;six1BW1guucNUf~Z| z-;nHp6$&f!aJICV!0R*CjK2RCI@8}IzU39!5%NmmUgg(}QO%K8SHRu7rJZIQmy;}F z#70n8N~X8I%5-F}G(d{#ChC#G+jz8Hrx2X_B6ZBYw6^yWBXP8-h+JoZpc~H|9e>Ro z`~|7QB;Kb4UDPRL2A&3m%mip2ZYM_Lsrq=FMNHzSv_g@$)womlwYSNsDpsAh981NZ z#*$Y5X&9fHWy&<}Y+E|xnEc8;Otkj`g0L|r+7`TtHTY4bu0KWxXY&rhDOkeQtu<1j zNt036)HAI`?JSAmuxl_vI^rs(WPj0^>d%2PV@m_)@BsewJDN2I7NK3=(TO>bGT+hP zb9i+=rZR=i1!F8vZRYYQ{%0mFoXdSZSHOh=+L)SZO8C(j@YB|=r0W7GuJjXHhFb?-W@m$tcu5G}{%mg3&aH)1dDGC*}zonV;_^Ku) z;X@FYU04$MOU2^@L}3IODxDiZbMk9pBU4Fo(*UHvU(C8F4lL|x41OV8XbkaUJ_)}l ztcU&clMQTKuQ2nmaY^z`{00@p2^~8L17KB#tD0Gkf#E~PkXd(Au zJ1Bi2Z_1uiz8^4|C`s`@@G>R6aYRlW#?*De59tE}`tjf3;$b-$SdrCUK|g+QfY$uL z{c4Z!(y2Ki(>&(5IrdyBY#0l8L| zE?3Q{;9>~TdQ@XEFH@}a=$xG8c33w-3+(qwKpZV0jd5Sm*u~t(@!&oytNLjltz8UW z$LaUQe3ENsciBKpKyNe9{GRbn^z{<{6O^jIm6V+YHquCOgv6NQ{>D?{2P-82IyhbNK! zGG45LX9Ib}FBRO@Q=v zPDQt7)mN%#mgH78!Yos%9m%{Ob zUw+t~uC9O;JY$&A(!J+oZ(STJE3?J|4&U`Gm~K^kFmXO0QLHWnt;Dp|hX$|Yo-B@1 zS8_kc?Ypf#vw1h|T*+(jzjqVd)`o_RLX2!dQemtlJ5R((1UP6KH^#E0PT9RuUx`b* ztT`|2q8Y0|3dQK;D&CemCg=#OwVD?T{k2nWz2S-WAA1)b9hFM&3(;w?tay2vyqZUs zu}9eoFNM_x^CcJ>Adr+gEU8U)f=JwH{c;cbu$tH8Kkk%dQ-{7;!=3o5j{4`7SJ;*{ z+$Cf{$J{zt$w+)jMsEhn&!5~u*=u+?C$~H~mN`+$wLCB?5Gf=*!9mwbPc}moJ#{?; zM0-m_j|L=uu4(iLlwaY4U{KhD0WzhyMbp>vFsUaTUJK*U_}BDkEst=lwq1_(+p^cI zQ@M3e(jqB(9U8W>Jq^eN?X6kIi@El1Z!|+NOtFAUI=_yWuzS#7)_l)4`nZm_bSwx@ zS3|>fqW0^#Kek1Ev!0jne}n_+%|53f zeP4WDywTVVJfK~ze)4P1$cQOIa9oZDCVa|i);DFGogM7I3%5uCU?;xE)8P8E0h*&= zxHNo2u86EyRHnY&BNNn9iKVQYmRB2Kqu^(@Qs^dLqvRhOb;bfac*QaS=}? zJ1%XcS(|v_zKI?=V7N&IO&n?JDA z-ezjl-6>JeoGnqed!!6XzmXyznEZ&D`H1L?%$CjnY(YGw;Vd zY4v7)kyWyMvjvk#*iM#h1`vGo^vwvz{W!K2>h3t8cTl_{*;t)_CjxOWlP)mHK<2uSCKuC#SAFIjL8c0yU1 zek{$}#jo?HD{0Vf?(2JcC917kfX)CkV=kPIr)uf`mGt9o9)yLlbGx~Z!vKWqigO=& zy_-kyohzxLg_rYhi-?rWP$e9NO=sE0wCGGx5}Q6S3jau;F8g>;^98slAg_5|%y-JA zq^-G>l(N=JNz!^RzFlD@kFkK%3efO4QJcz@8UX!k>uCe?NdG0~l~cox zWd`P#SrJnZ(C3(!T8<%ZV`)e_pTMtHC%4_;6o;s?MB>vWMn{0{S~~)u>Igjbj#wf) z!q3)L_P6s=I=`EHI}Sjs(H%?Z&2Ao25Yg6^^PNkm&^}(yuPqXN>Kd>#qieGDuA$ER zFnOJ`k5}_@MasMj{bLrRc(tYWYZCjwMo%s#ul;5UgLfn3YfeO8+nb@_+nt0nH z+P0sE^PENWa6cbs|MCYpJiZo7^3&i0ynXS%+NevALgk%#uaNywK1dre3aO02Gn%pw z@I>CH4YfVUPrB-6K!2D45z1Y7pc&&mTW*C4)pgDNjJi&tqjLrh{_LD0=2CA zXb~kJ!kTcM8j9dXq(rdfp(3mXecaEB(t|_1rG1G7dNrN%$!gZ&V_(y@1Kcyh)cU`w zyK#PQbvFS_sf}fT0cc0sSV&Eqqz>>}I(L{yc)xt5WYcG^fxV!_dx~#b{cp{yHKMwz z{ik73a*=9Y9aKkZ%hEL{aG`aiDD#|S>e;=wrA|_VT4#W{udFSFSut9j!Tp>PYv&3x zxrK0RCNEN2VIK2Gv4Zpt1?Po*Nt%DEi@14K;%ZIKnXt4Urv8~wjHUwbO7Rp*BSS#} z#T;5mA$4OeX0C2}72d=s@jjQbGkF*orO#15pLe=!u^i>286SL^DrfN-eBxy~mc_Re z&(gJZ^xpmhvPqZ~xG7B$I-a~W2oAV(oG0_aSIFrE_r;E&awo8!w2fj;U_Lv*GUo(e zz?rk9{3*VM@k2N1x6@dDzj%}CpW(|r_rOREHXHRM^=(RKJ6(Z)E9&jByg$QnHsF)H z@b2ZY+~#*n&vSeecbmFX)#0j`paU<&$eosw7x)IoyFR2}F7hm%^w9FduNc96%0t@! z8_)3G=cxJ_E!YlMMLZm~$_J{xVhb(0#HaBdA1L@TFKc)CNj)2RA36D6!N41KnK$82 zp3s5I99}R_$>$312)oVKS1{3Xc}nZA@L_!LJMz5>Ye$=RRO2f5=9S-3`>U9YHh)U9 zu42I<=qX*i%1iTzr}XhE&*VS9q0DQ%8t?j)a;{;5|07kr&fD=M>|Vdl#}t^oK~-?t z1}b!epXSlm>CO#amXCi$PB(dj{MVn=v&nfd`}DdpG~p)yo~N#(BDeTAkg_vx@o>B2 zFcZXyb>GmbTRgO6=WpboaooyaL2M1!7{P4-ihB4_yeo=|-{w1A=Hnf{0`gv*IJno% zr3bh9$bv2il|k|FDsZv%yThL_oPg8rcfQQN+i;_Ro&=juTVD1iA-#)wa ztz^WX`|KViPr=)00Zumb><$Yq3S&WT=1(59PbM%5gL^L7KHx5~fkTZp;h>Ixq2Zw9 z4w%wF4#3?fLHZWS#sX7ezqAoejpC!8%QH#gOdKWTp`=45P`?N8K*h3-z7nW}H0=|- zx?BNEi+X8p>S=E6ofUO4^rCF{W%&Ut5JRsn@`yL6$cCV2lsT&iAmI5wyqijhYlG3% zY8rNFFqt25Z;v9&6zUb8*AL76`rHG&VoYD8*2^3VNHGEw>;}t!jEs?LWi$XNqQQC2 z;)6~ai7M*0ucFDHipQy}kNHb}d?;1P<}2v(6Rb))(uSveZ4q_wqDxxO_ppkjk4MYE zeyS3Vw0X_!smmYyM|a42DAQ>@Uw6g{veqPH$p1Ni!|bTo3ozM>*PVoEaA{23R8h~*{a2^t9+3u=MVil5M3Rf$ixO23fAsmo_K(hGeGyc9B=xIOGnLXh;1RDxdrG)o;wh zlIX2fGSyRS)6qNA+RjOfUX>NK=TIOP5Zhvp)S>Zx0Yzt~MQ==Ny9nc7xyZIXl^TsT zvy17cewQ?T4uN#TU#nK$T8>KX+~^pJ(lhKcGT7aP=^$zj3YK{q1ZdSOsyuCXBB`Ex zpY>ZZ32KpPWIc|odIc<71GF8Sk7;P>8KhOq&+A26mIZ4in4?S|bsHWXvhed|waWb1 z&lbB7?G9(ZTOOC!+)eyyRSU1AC1`w9xaF%V+D8DPmanR7Si9^{&hl+7&0XX5f-MUp zwQ`&nE=?!uY2R^kDQZ<;o6g?R?fO~>KVFiY8fY82e@V-}23l{`kyeR+8%Q1G zGdj>Rqmfp|#Ebh`(wk}R^YN^rRHT(wmd`0l^;&6tdHJHWxs?`Ec)Bxs69!7qxIC8+ zhxEQD*VbB3H+MY(1{x?RSk7}36P+wmTWhBoPjRRAvG__0cbXoHYWlfb_Qz_cOuU(^ z#oS&C=8ifdUuQ+V2f-iis8!*=F0{PqsEy#5tqIjOX-2kI`Y#@Nl`TJLv$kmZ4p>1{&|R%Ce`scHhLuEwwC7)NX5h@eh^> z{k5+7c#V0M--l>-9X$r)Ku-9?4~E({GCkxKIuM5g4=!W5K2|%X@y9nUtG?BC=hHo_ z+bYkTIWJ`|qb@XXiq<@DjOlM9#&Twg_JS$P#8fnY{A+qXRrBVD`jL}a^Pu~)G`CNu zs(Ct3T8M_oQ`P)te9RFYhLYR&T6t6O(2qHk)t8my?MG1PNliajtwP|4k4i=R&n@8A zbJaFa{Ro|H{8?xs3H?|Azc5^u;G-P80{S6X{B{QXO7ht&0L+~o#Zha(@iP=TTMG@I zY7Iz}DQuPF%yZ|%jZN|nCnwPlp-KZ7c!n0v)*`KEpM}8mJ<(0w{S*4x*=H4TK1rUl z&oVaZXP;$YZ#%H7lD>rt0lFXqlMbFG?*Wy_F<(<{_Bvl2ux9ww5S09 z%AeYKP9A2hl*{{5MgwyIz=KU4ZpN1-eL_SLJo+n~1D=wWhDt`4O`Od_M95#%a&D2T+*yC#=*%~_%fVoSM=wS`$eNxrVAqoMi zc8yQc)|r|o4|S(|g zI$AU9_g?9lW2~9=qwVy}8wdQ4nS=6X?)qPuTMYO}+cs+M^pLbd5{vIh^Y+fgmA~^O zcuU}Xl}}itO7pdn{IBNJalTg8R0Xs}+lJz-^rj~@`+(CYfT;-l=(GXAJSs?(vIYd7 z&@p9)05t|2PDo67*xRX_uh43ZzKVyazr8>!P)DN3z?mF8vFP>Lt1Mqk;>;GfK_Xf^FgMVPmczN%m=4G4GLCMyp2w zNXZPB)SEUc5-X08DKveqR@eVSPEPhTbNvR^A+KMWK0=xon>7%182vF<^N0U3xz5w- zlr`$2Z-~DKO#)=&X^i|(g`W+5B!1+Au){sASSz_zKy^$z0P-lT2G)Q^06rasRn8h5 zD$_Oe&Rd;i2XhN=bDY2E3o9hm7>5HK9~?Cp(jx#kl;bx%42#R9qqOZF{9CI`*W4v_ zEt#iz@ep_VX`WVr4_!)6=4r(WhRgK27k1^NYUEH^(#n+j)cua>A>d8_8aA(b%jS^} zX;n*o>S4$9n%2a5hsgpx@s(Mc|7RiqHZ~;!x}-n^EbK+G3n2pf_OgnA1^x1ffbO6Y zIZOXvMZmMMQUn~rf}Ab_3ab(f5%42|g*$!}`4QK`F5Eu8Qy08mt;t)FC~Ll zsd(Hlx_6nB8evjuTm&TQ*OwHHlV5TTkvQRTn%1mxo5Mzx;sAg)>f>S1MgxHIsL3f( z?37cVG;-4uvlce)=^=w!p94VF8+aHq;hO-h#vkixmj@808h;poapI(Y5S*hr;muAg zLWCm!rT>wAoHhHmMs^CBjIAKiSA(EE4LP8X*Tvl^Y=&07pytm zm>q+Rh5g}pLk}uDj@~65V7|rZx;#y5?wud8ied|>WCrVU1M52TEk&kjkx`v+E~?~R zo_U#t^CX>jc?ut}wnu%z$o`cAhDC5UPtgo6@pLpzt5y25*8eA8i|DEb{?x@<82z+d zbFyEFyL{7Hn8Xhw>A+Hmr;L~MZn;*JC;mxn8J>&(p|BNNQTw|v9Oevn6EXWJc7^8e z+!wTN(UeL646)I0pvmgbn_zHwkuvA7sm( zRAHqS&cE(Qe#^D8K5x?vjC}xrk{{z?kVAGlZCa@X6kYNL{tFg_D_TkikdhgxRGO?M zS_x@rdbUKXhxv5aQZ0dR<}`DuR>V0T_Z4RsF}JXjM-rze(9We=D35rjx7X*X-rl>f zReP&@JOaiWy5#MX0JN(bx>T|_bgZGL92v^lQ3;^~e zH7;mYZ5-Y6a-~*6OG$w*Sbyf``W|#|_7!cc>Eo#GDy>*>1-vV6R8i(12Nq%{JBXVnx9Hoom?s`8Mw{1a{`UK}8}-^tm)B~3{O>#TW-a((yJFjH~Y^Wt+omQDSyoSwIHQ?{9w0OOCgRfX?8NER(z=LPv>$*+p>2@V?RCQi# zl`z`mhH>U5#~Ie8wrtcM@rwm$;U>)=zEwYM(t;gUZ^SyNatB&Y&o^O`e~H{TYyBJw z$Z)kQARkTJtd(-S^rJQ4!jE)tvsSa<41@q*%0poW*=^Cfl$>-`eijZwe~P!46qtL3 zR@2vp8U;nF)-kP4r2{bb>eK3?FPR4Jg$-N9gG9@fu!PT zW1cHgDUC#`Ps^?&pA%YfUTYcEJ)yNNv1+Xmu@*q~HJoWL4^I_ocmp!kT5{T2`ssvL zE+3BOgX~D#0^a1ej1F$WWZb4YJ=>ynt~-4VlIxOa2Egnfd3q1{f;=(|{w_J$ZA3qW ze-cf7@Fv>fN1eCcaSf$y)#^8GenEcXlfJRXAoSFZ<%b!6-A@HKc9 zbMd2)Gk+DuYzH-0NYeB5SecuzJ-|Hq;_xb>@T2lIUP;S#z*00PhsxK0jbTV_`mh5d zYoqZVP@AH6YMzyB%y#A&JGpQ!YI3P|n)G_3#lV(H#+p>DZ*DBj->LcdlvrU9XK?^9 z?iTrUa9RKJ)M}UJ%N=ilTZ*1n0{A@3({p;3wBss^Z&5Ajk#R*PS0xEN(~*d zwf6q9=w)9P?TK3ZLlxO+6E*w%Z$^V-`_h`j6G@h=m zWn~J?F+l`OhFc9euEX}9w7r^#hU({uw7_L3Pb4akC-Na&g7nC8KWPQW9Y^hQ27BhT zas*TPgzAHDY+j`oELhq`5887fs*HcS?WS%E^mj$jc?jMyTCMx#=KrE=o}kK~ca3^? zV>Yv|j41Tqy+5tW7rpP6554aK%Fw^^#V3Lg`}rp%Va5J;7kycDgD;D2hX!_ndrDVy zQ>v-oX&^1PX_4UwX>6=8VN2O_8<<;h>VmQ0A8Wk3s7sFA>m>*3s0B26zZS%|m8MPmwc(DJ=I2V)`BdS6=IgjAH)Q>M zYJWg$#h9+&0!OvJr1rKTgj;9D^sk6V26IDNmuY4>?T@PwQ z9ZSm?CCr0}ZXVQ%72>%eALmJKl~j#3`ttLT;|HBNZagF~vG z!O|!fStv(sJ8_-}S15TTMa{(0h?Z@&g|q;{L)jnukhUJy znnW_>P-4ymASJ^k<=FG&yAZS{T(abfOyc$&qwL=SJo<==i_?Jg-I2Htq}ma!RKWW{ zHGV*KposuU8aQP}4RM%FuQIeqe(igzmZ=3* z%25+aD0YtGr4>}@1?}NDtXs0DWGpc5sDd`%qM693VW{dHr?eAzRTiARbdEFND0meH zTb{^Q@U_(=pPtZs{J1*cRc=_e!yY_0IB43O{~-M|`yBd^W3H{6rYlEC6Hid^>6xfT z1b$TC)c}Cw<4arL%gXl_IMXTth8_Q9S`oKpC*|Zy&T259X>$cHV_ozTmsC|HmaKw2 zV)+cC#8m*~N%J$U0kc(rVIU9J^RzyNKvC72q`IC&l(Ytv0Wh^;(8NPYjx~8wot)vN zMRA#?VThXK9fSgvgT(@AIZU=oYY`&O9441jng`!?n#!EgdSaDl#wpxfR*TM^((3Ye z+o@G^gONk`Pgh!J5Rl($P_<>S_h9(vkbPd=Cn4xVCFO>^HtAhQl&FmdEZn7 zL3lbE28HkNDw6S|$ay4nLsYPE%FIxd{&NnVnvbf6FZCU1v@W-C$6 zqmE}aFNdVufWb83tX9{nFRVYx9ce=P=i|NAWy_7TS|D?H{QnjA(Q@v2W+zd-m-n#IA&@t(MqBEwNUW-l(NWDJ`99RYSFg2W}auBZRVUaA9d7bBzu-tI^b&LjEke<0oUiw z*I%Q59&q)lv}zs-*evHw+T);S9zC?Myg$-^j=3f|6PD2N$6Z;8k8fZFLmmBNeP}F>2ad0& ze;s#y>N@cf_ex%qX7u<8*RPHr=@&n{wl?jF=ktOlLCMZ7_Py1C&jBiXGy9W>LAhn$ zTm6u3Jc+Rx8eZ_-N!J30V=aB+w5x^x>FFhmeHtRU17iZiLkS}hndMJpp2UGQ16@PO z-C4PIDP{aCm2$hL+&&Ed){fjC-aTote(Y3n&xJ?FrW>6vq`y5(};M*daWHGurYfU80|`8_1;2qvT= z!Fgj7?G%97l7v0B0eGi2!xN2>#UkeZYEb4{gYL6pn0M;Un{*WlIA`CaTLZ3P&dAQR z&Ux3kgiBi=6o>rA<=N|4=3E7%13kR5hJJ9~H9dCLco2)dIn$3=aL4Hp$17>&s?m%K zt~gBjQ5Rfd^umtlcsZ1?wSWra=|>k_>CWXM{p*6OvD4Z_lP|jJ;z5Ge7ty~XAJHsa zI-Pm+#fz|qbFS0v7hN@yM_ey~ewN~#tZ(5H(S^pW3;hrabhvJJA(9W30+cst+$C45 zmIvCS^^W68T7L|Yi_ZB;TX^(*Yh6}B4>ks$Un{Ae_N_tYR(gGG2_d~XmR_tu8YGQG zLWw7S6rvE1O5h1ZYm^KJ@QPrh#Ely8Y^5*8ktdzMjiKk` zNDt?!XYsXZ;&XN$Lv!Luyfb<2ICoW&3-5GyNfvOm3-+EJ2Nq2-rX)oJug$7*TX1JrIM4jhPxF>G)b?P{i6S zv}22}HCgm@Et29oar*%s^rh z5p->B;!8NZv;^8qua<@O3p}QlM7kw3&Sa`F*jWVI?bbEI)sEolvFMDzhADJx65*Zq zM$o(@jN;khbaxV|Ti#yZd1)lQnne0LyNsY+l8Mlu(Qp8@+g-T3bu?B`qUKxz-JZw3 z7A|ml7(lY$^>JbtU7L)GqW_}%l7WtEKy*fcpG+?$ljaeFSUJ0c{fE)|bx3lA_%Ovi zjCQL-Iyo0iqATl=+P!TMJ`X+tcpfBpZAnQd%iF!(5(7jB-U#MDlu6%jETjD}CDOnM zWE3E{v**tbtCauw!G;)p^Lem

-KI#lwt8s+#pMBctpcqkd8U zKdpCrc*|nedL!2QXRLK4ltJ&;BXQ2*ztEZ~3Ze@sk1G9;THW;_Dzo1u)5dlj^w5)zzgF|%k=6Vk5Zlr{fKQ~Qe>S%8BCk`_VD z=#MV+!DXWDUm)LL44|2YJ1`*3yxSkVj%L?eZ`PpsO-Nij=C?p*O_mrK{@^~C`<%k5 zwP)eMT6_#T7ULPu#`8nO0`Hv+VIY%b)MOb18(ad5PSR*>OL4TN?V6GX(e})Ly+5OT zyDxP8C0FzAnSD#9)DT2K>KQndka{;n+4ET@&Niv1A`&F^o+e;m&{Fpf@hV7+F%4*1Cdq$_l4wn=9Cm zaMTsLab{KA_-^mejjMapoGY%!uxFy+$1AQVN9?}&#l?92?(7tTVZs1s!Yt_fbHUB4 zuE7px&v~@>b?iF4`~ux^9jeDSFBF`;?i%TE;)RsmZeSzaTl48Sc0RC>E@bCwFVPQf zxEhcIyz-USSn8--@6(6}#dwJftDXJM7ySdWoJMlHMg+8~SX`U@*L@m))5R0d4OrS; zZn_c@e!35n+V1s?2mrsjdkFZI-RbO`t~Lz#?{B&mJDt~Gp#5*V#2WF>+nvD29wDFE z*Woe)N3Rwa7p%MOdez|^lS9+)xN;M+{|?m~Umo@P9t+j0KSs~padmR_y?URDcU_9p zf0L$FB-Qb*PFIU4?dE-`0ql#r$@a4pJMIG7e-@Q=u*I@4bPz4uy_<9oHqXTJY{N#I z&X|h*@SUmF5%?%i)!~Z+AB66SZi9Q+2%M^j5vY0PK7INhEYY34On-TRojzav11&e| z1_L31-u=gw9Ch%|vLH0R2NcfDE0}uEHQf=u7F3cEnAU;byYD&@bz&Nxgu!F&vv1)` zK6x+${la0xN zf1bgEIkzTx=1)pV-soU2Wy|jp0oj$zTm#{O#8P+J6F7L+*U!-N#jY($qo$YG3ysPc z6U<&{6nHad*$$H6ESkCOG^vvq*@?|CyUhucSrm(%_;fIA*Pl{of`jx*D_PWMEFyX9 zy{a}l7+tbiNpJ!gfzJYL#1J0` zYC#)Im6e^Oj_-0i2H2LYD)`pGiJpPy+J`vERHOuc4CZEI^*hM6+sC)z&coWZCs`nR z5*_O#@iqU=SCD_P`xg7XSI@Phc}@}={Vy+?3eYa5yi#RvHG14hsycUkO)oo1>+*>} zTcFojD!WKMhlfVRf@HF*lX7&ri&U@lCErDAN7W9df}m3wK^L4t zqQjY%NbeJ}t7|G1LNtL za^#k?;SPGVJZV|!-Kp%sWpI(pg|tdIx$9i@G>xo4r0_m>?t{XbTC`IIvZ3a^%aQ{SANdF zq*{vT^2gE#6`}0iwP;Eu(!jrZ_J1wb32PA`q13>p#kK@Y=O$GJL8k`t^b&skHX%H0;dT#2NXPr7>_ z+k{V1A%fI%il=CFEQt@I@0kcv-8tY_x;TR9QFVR|4Mp(7i65Q00zp6}HMt@KRxhYCXZbQ7hJc=Z>`tT`;^z$&ALbBIo8?8r?f8d75p-}A@mEsil8OzyIzNi6bH1Qb8cnS5J=Ym(mP_NpAu-lilj1)u8J?3?>kwxcg?Gk+Tq=!)ZtQS{Bpb_ z)^*~(y`?pQeaJVd^6^k_?e9juS{;U|a_HeL31kooupO`o^!@6jcKejF<=HnGpzoA= zPCwsqz8C<(2fgkR8?$HKkh1k4ZbRSmt%=cp?kCoQn|yE#mG77bSHeJW3jYLL21VO{ z`-mm`3|Vc|dk_2~Be0L>@EyO4X-K$eCu~CkI7`hR z-G#U(nt7AU&8Bx^Nh5zQQiG56Je)HmNPotX=zIl_D=u{7^(zr0D+#V)KO6H7PL=Cm@370qdjj`FpZBzkPKS zSCHfcB+Aa=44XJd6sFnh`_T-oxQ=0Ge1@_njdPPGO=jV);S94+FkKjnWLsZj5Zu9g zwzh*aG6?#y=Vt;-=@>U@R8vNI8=m>Q0TG35Xxo;r)Aeo=-@FoXdj{AMkJ?nk>2tOz zbK56qvMDxMH60Bf(j5SgNBjP6LT|c>kyMCFFk)eAKH42sC2(>|u+`})0$SZfyLw1c zvjHfCRu%X=(CT(b85<=#5Wza6Bda33{yhVOQ7UkozV0Cj@ipErnK)arQSa6ofFLUm zvA_fRqlYw&?cF+^;Wx9m2o}j`yjwY&1gUKBJJ2N9Y_q16d7GG9oYnr;MI~;W*)0lKret)dHQN&#{qgmcn@G z6CmNJo`DW1f`{%}paygeADf#LXoV!(L)E4sbqORTtz;iUGN9)IjTSy&A}eC+HCAhE z;Mk;KtyqBQ*(eAd==&O89EQh3%c!c)&)OY6|N4OQd!H!viUe>WEDx|3J?BDIc216g zoBiARC5`Sygl)lGIFMilSXgCQ{0qGz5U>9O7?Bs>%T2%*sa1GM2m^IE3fmMk5|P}2 z_=a>Sp*JG4{59?6f|!66N={?t+9j8P5z7V1xxG>X&th3Kw_UU1ryG?l7hsiut@^rQ z(dYUb(L9lquXH1&gnDkJ&`l!d<7a*85qAE40KJQI?PR>!=lnXz|G*>^EwO1QBYJ)* z66pzvOs;sbUP)(Rmdd2Qv!}NpM}|6DyFwjCBt7iCj$8OzAUzKwy`hK&BG=Fz3aJr) z6JC0d0~G0NNhkod1%`Jr3j9p}R7hhyJ)WqN)Mh1mdS~Fg+15*_0JArvMBPud)%`2G zn7YqI0{vShs+Awy)DaF1iEV^vhRq6WB{;g|Ykt99)BVsU63c$}Z&eC<_EEm0360Z< zT=paLB{w7%eSs=zoRH zejzlT@Ufe!Q;&|($iVvlwXJB`=5E1~E9(~1nJVepsHA8#)9|*Iz#n73jvCHpyV53g znbJe28l+pq_}ZAdQ<;V|rZzonkjzS9NU=GLvo=jNNw-St@b;dd6aO8$!h{p;*oSnt zNv2l12O~Hr`~IdKERs~|;KPJ{bfQJtYgq9L*7ZCh7n5?^IM^^?6gYf#FEx;f)DjvS zglHfG2V0^%o=E?)NV21d#`=g>@j?Pi$L`j1w6BjWab9ggFZ)P$XRXyVEtPbQd>>jk zxJwr6#{2ZmRFV{z4ax#{>wR&xQ9P-xaX)Hypfbm8k9N_+spPD)%9{n-(um-2UaUfI zv?5u~ISpz5*5vVu3&1Vy-oHS%wuX6}8g{Z8iq_4;$o^ z`F9@=aM9F4wsUp^+B=>2qlUzSt~qdK22#IRdN!Smt9=d-FjfevWFI5!mlBOC!X4Lo zJ&_T>YxpL%A+7NCk#9|PEMmK8@gY=7(9EN4Qb`68h z!zc#W=it){fz9H8^ZXHT73?eBi_0L1eM6sV2NL^dwM}9XNi4%wuM(=!hV4o1N`Ju) z3Z`7A8SP2iiffQy_v$^G*Pb*=ntSaQWDFDP}pq#{oAJ&W;oarX1F?O=EferMJ8AgbDpsein3i|jdJeUyeqhQ1^3_#QgH&8FSJA*vlG-uAwQ?1+4ZQ9+n@8i&3ep{IG}RZ+9czo1~Vsa~{nH@4JuK!}|{6 zBKRh|ee`5Es2gkOqVA+Kz1xHEe*WP->4L{vkAH7D(7N4L5n}(oS3(bL zVmSjD6lp2ZRu#%Cuhsggl65j-SZ=+*x_`eVp+VOuOV(5r?1R^&eA-VQ8*5J-;1CAKT zi-+4-?fifDZ5KSC-LS=y?tX&&T9drZ%3`VRN&6+D54%bCk8u1JQDHU94Zgd9p6N+m zuQ_BDOL_F|8TVV#CB3jz{!2f)z89%YstkZ?^isT|7TaF_Al|{d-ek{>#XAz%{__p- zj+Xe6+t}WalaCFeOL~*q&Ka3>V{b688Q?NDr^_ig+M7J-@W)*e)cgl zhi>mnG-vosdbcmx6xYZGfwS|b+VSc3@kQ$EOKS9+WM5?2$I|q~!+sA(PG1EQ{ok^8`@FAsDp#A%igf=awz-f2_v=^9*8J7`w8RDW( zAFzau0Y4G~2ZHmkQdah46dcQP1Fx`*MeLBp4!?xcZT(2iq&?sp-ol+QWmhA4Z(szD zxDMPxdf@$Vdb1y?@5rL@{mFF48A|&@xNWD~`xDV|yx?Yk(wjKMg2x7vK8}WL%yQfO z?Zu}-+uSRzeh-&!7D+@G5LwvfQbuw0!Nv{nf ztDK)tp|1>wiZ^>|!TsUnM@J&75$|IUR+v?RaD~Oym!ex}qH{qYi*$5^A7Vx7M?6op zQDmqirr@nnWRQbqens5==3oK%O=uLx4Mxa7NJn75)i`fJ*ov?h;RHee;T}SG<1nr! zLK6fDp)EpBgi#1n5f&qCK==ls2*KGTjEhGQ5LzK*AY>udALl}ZeF(oI z+(M|>G>l6`P!KW@vJj>qEJb)1;WLEY2!{{?2!A7lH$!6x4G<)R_6UO!#v&|0Sb?ws zVQaH6KgWB*xOr%N1saP%oI~h>aKVjA5w;?*-)Y>yew$hZ&-*ZPrxE@{a3ZZLLS2OI zxbBSe0EBFW=MWYktVDV~LJM|{b6o_bd2|?;iO5)l=?I;h(?w%QTYNv_dbKdwagaui zB?%3yO-i?${$h0S%r2r4|D@D)a-CMR+gGGZJ8kgKSjmvA2#+7a(uT#Oasbn~b zEnWB;3h@XTO$u&JCkwqN0S_KHpXAJnn$ZmZU*1P){xS_jZz_93>LV3qd{Q=_f24uT5`ft1KkI4gN5S%;>+F*H zL)V%4eAx=GJyKyl8qCKCK)5_#^oSzFQjqV2t^1P^Dxv18S~S){RkPjCm;9Z;ht#RQ}iOWR=|C;7z7!rwq9S1OR! zl2)$Tr3+j;SQeC`p9)_6fV^I=Md?EO(NyWClktTH4j~$WM@Y>o7_f;v=d4`%ro377 z!YAaGzjRvk$W~mN2@}Rmm@q7R0FLh2UuIt1hs6L z1KVlj*rBWrM(ivU&H_-S2Am(+iVoaN4kVRsh`nsT^mWnEG+I24G>^?#*6QKtCVvgm zFU0iNRq%2F)YRD0cVq&;$-r;UwSup5n5)GBV&WjoapUwM68|jQR{~cJaZ$O+|>Hv z@aJtRIB}k6j*2`MxfzekD5m>XlNL1bF7}$#yhxgfrQ6HMO6Rgiq{GmM1T7_&vT?l_ z>G>>={b-++P)6I(w=R-4u2ei8c_yuA=-I1ae)O0JLKTnX2|lw4oN8BRX#pOW-) z)UvJ`L)R4J<*keurXbHOnic z=l_OlH`EQh0>P%=P<@58&K=UULnwRWquC`xl00%^^4M{ck|#_aJ9gyQ5q8&DYwseI z?p`5Xc89cX`6z`vilLn2tvT$wup!C(8Tw&dR3?%_0szvI`tOn*kE&B${vi*-A~Ufi zxgl=;2qBV=bcMC7n1>`R9&-Du)77r9=cUrhUjDb3kh?%3dl2v|!Y(03-I3T1$*4OH zXNIxDSlX9_wQ%CRfP{J2c{>SPz|I}R!dkKOqOdTndLizIx1Z~Vo4hzDV+Uj+O}kDS zRt;s1K^9!3tjgGOVVXabehcYvi6K2$#qCF~|1P=y-!uU>oT0JG`yR{*M4y2!rXrsA zL+dhnEB|9_SRYJF*azl{P!)%#i0?m{TBd@+?}82RXdn}D zZg1HJ@_r2F=b`RY#1|h6=A)nXxL*6-9W0QH3i1JAHUpwm5BQQEq#}Pm8rZ+LHGL~A ztceT{IMy(@$3b9qaK46XhU8={46$k26{E$@`%B6#Eh$F_EyuRRubp9!*9~QD2FvD4 z72S?&Y+}HzRC9&ZwpBS?+VEy-=^P6=2!lpX7&d6=Gs%M?=f^!gY-o;^ZqqDo=ZX;j z-@-MN$@Hajd8|GIoD#o0q%q}~)sb8-jpJ^lLPNip%B5b#z~4&c^6ml=4^p`dCuDQ5 z09RB2`eP*IbQNH_I@05ypPozQihfJwxLRpkZ>;cQILcT#90))E>(*Qb2*2W(K_kZw z89iv?L=-CZYdvoA=%L94Q_6=`C3M~lQY!|&LAJhFh%@6e-@(6HfsUL(k{pZa@k(Kz zKk@CfRoHyXame7NBMhw*#tp3!v{plTjJ6mzD?(n;BYAMZaJz8xP2}Ay$?M0AN}Z-e zh8Zq<~bE66>Rt`Jp^xqwm&Q%^89CWOhunj=mv63^po;x9(TaJ*@ zAP79me~vjFatNoCO4|>UJP~Q>4gW273u%pJ5-zb+xfod19Ln_wmSZ9g3=(#@GLsIk z61LgTu>$!0A9+Fi-2bf?#2@y5>jkNT;s0N~AarbeSbF(UVULd~Y>x?xrSoFKq=G{+ zVd;*7P4Qvf!@B2xfw_)f=9%D`#q&?6+0&NAlZ%4s`K9t%dd{|1?DX)r7#ceJ<)1F- znH;w1bN?>>4F8NeOI@HYRo_;3sz0cQ)YIx8>Q(iwO0-H^buCG2ta&w4Yo~S7p45_c zN$;f((Q6v@jVvR_*l!dWH;o9hni+3qoAb=Q=1=BtX1JwU89pwV;{-G|%KftYkX!L& zc%}&pgg1n@g@eLL;X5ft&89D$3>)uX=~aa-!rwxySVxq_1>)P{262x#SE?hsw29h$ z?JdovSJ#vE(fafHTl!A@ihf6b$4E8LTBtpP;|!eQ_*`TH)S4Zve2@E-`-VHhqkGzVs(XFjk=|FlQNlAyef4>Du69cst{>5LjK?w~%B*1~ znGMaG7MByeH-qoXFX317*Z6q1&;7mUCE+b$tMH5Pq&!saq^wuADSlCHrEXLgYIF2= z^>apZpXlQjb2guEEcv7?X_C}eeO8^M^)b0TjvEcQB)&bWoysrbSMeY7d-zNIP5utQ z*e!ZGc_w)-c$Rxlc&~Zmgk?g3@PqKDP)$q{8;W%$Md~MgD5WTFWsvf;@}kmA-KAFd z>#OxD<~yd}T4v>0Us=bjBI_a>+I)^{k5e^IWAwX=XQJm>&sgtl?<(&)?>_Gl?;h#8 zENJOkFKq?rV`ilUHx857V>tIJ2Q|IUB{oU_A|a+5MP%f_sj8iF>*GygSmn z#_JVVsQ!1=B)z%O&gf!{Go~2}j3vgq#%3ed;w{g2FF4}PIJ#7Q%b)VKnzo|!H&|WvT8bi%V=8NVb z^OD)ZYHQ82UbFHox9@x3Z$7%BC@jUF>wVjsAT$*^2v>z-p@!IBoGgAS{vbw5wIosc zRO%s*mM_S6<#=V6a!9$P2x@0_k@~J0Q2$n=wI!OMchT14l-oLC>n^E3J7;4-&)+3)V^e#!loyTC1bPI>Dd}=2d88brBq_2oLs_OARxT^eRa1RJJ*_nHQ@nG%E4{ya?|BWOhp<#wBYYtk;u-O_I8O3QZ%VD@ z$K|Kwjq#9|3)$sNAP4<22`vDBn!A%8Vk$f#)D?QZMtkFXRY|1(#S8OeIq4DD{;-lD0|5q>Iu&QhB+$ zTwhk?w(@lOMVV8oD9OrFWsUNs@}plNYK%HleHjz(h#qe|3mC_n->z3rJuN+wr-$cB&uB32Ii8n2KY9GefXADj zI^O1xVPR5DDM>P=bg7%vTN))j4Z-=dbVsTv$AaLF$^rSR9HCTGYJ*uyN^4O21mzj! zRV7lZrHNXq)?Rx_dqaCi+p8VXM(Z;`^{ez5Mq^Vo+nbr@7<00D#P_T3l8?*5H`@T$ zAbzSJ8!+DF*Mic&;P>%A^P0PxySICadnN{RnfpEP@ju-aJkg#O9?{dv(*dw&LEI*J zRc{AxPj7$kc<)T_7Vo#-V~}n4y{Vw&Ccgq6EteN_O+EiPsrRYob z^~N@1oY~*Xwz$P?RQ#~x`3(13_m}S7?%&;4-S^xsPjydSPj7FQFhOV{rityv;o^Al zIdP6i#WiAzq)V-&OzA0`#Fj`ar7rRyIZK`^FO*-GSIHmCh4M%0KJ}P-Mm?`~(&p>O zjC01HkODQ#WV5N6W_C80Ssz*-TL-L@)@8qS(<l65oW^`Br=n zeh~j5|0Ta0BzBR%$GhCs-Ap(%^LRboJiR@`fXU}Pxt;~Wn_x^|fo6^fr@+YX3G?OO zIne z)cR<{w5PR;&}5?Y8hT4z)}PXA86Avgj5Wq~<7eZL`3Gc51uNQ0u0=rb^}=r^-cz15%9HIf+nO1kAe3O6UGb2h2OwxqQzQbM{$TaQhXMy`7QBX zag(@3{7yU~{tVKKlj=$Br3|URv_N`WS|@!jeI=cd&Psol%%lW4MeZ$+m8Zz>$%p+I zh#KJAZ!6c8TgrXqF?BA4$1e4XnyA&$x@x&>Sc@D?E#;nZ&vGwtFLl4|{?(n1nK05b z!!ytGlIMo!CCJRx-jBUsdLMYhLAE)<3&Lxli1A{ccuTAz9g#A$ceS7OVbG>#7_S;9 zj2-5a));H0<^Rh1&El>(m=?(`#IQ8SczD59UlEFg8z7{XVkhvg7sN%VYQ5dhuf(cS zePDL7lqxG;lJOk0g4M<;f zk)Mo3LMglCQ{jAV3wRt!Q&Tms&S8VHf(~`&ALj?~3E-|fJO?~?JpN`-Fh+Qv_WHdqcz^V!3roPk4?t_l z&@WigY?`GyZMV!0{sEuq&G%mM-u8AAUKLh@&3MJ3;yRH?(UK&+E)7z0f%7xae!S{P zb(*?ey{}f%I%>T&3YqYmc3tD42~F1*==&kQ8W^%M%UJ3+jvE(Xw{edWv zt#!zE#&?c2o)JVtB>#*!3p&u(;!ol);$I>sm6z^A;fhvSJg& zRg2b_n>*Re$#im^aS|Zh+If3c{GM{RtnJ?X;boXL;0^~miS>D90s=0 zT0Vx?!K7bf-pjwnzs;}Xckn;(Kk>(4DBtE|+zIZ6?iMhZJGnF5ePH9&@YI4F)I7aB z1E7+Q_dM@eOvmxEA5#83xjdM5Eu{fa zrYY&rgR-FaKdZb1^YJZZqtZkb)P9%)@4zVeS-q^@RI6w;ZP{u-M|w=_tL@Sb8fT%1 zyyCasuvS~^tZraDnZ6Oer+t1%xrIKi&}pkke*Ohm^vn1rZjW1ar@Fg(dZM?(JQaj0 z=v9(1RG28N6pn&f*ApetCw?Se5ucT2!%{i|q2rfd0+NoZMQS}w(tO%S+7<0tsAW6h zoH(OD1BCfMHg*_47`08)Y-{>KD$C7$Ux9BAP;%AB?GLiuNWKM_hTk*S^QvcqXS?Sl zG{y*T9dAPnak_VqceHmZ_{U=J3ituegFm>03IMHv&|2sy^u*A!8R3UoyArn3Za5!~ z3X{bf(rmeb!uyrI$}s&seW~fNVEq(1xn>}RdVIL&G0$S55BlPkb-B7S9o%h%+Esg5 z`$F5McQmR(Xa#}$fuAQlDXxamdJx2V1xiPx6eIPQvy{ckYhXxUD?ce?p^DvAMXjec z7zX_^Z3P6g)AS^?R5+ZOtdm(dGnmsyWRX072ri zRjO?FCifYbr42ob$MU3ml3)X+2~P>L;LmwS_(0ew#Ea=5<;hS}bHyd%GHJWq55&i5 zjkHeMXl;vjMsq+8erNt@K5g~%4TV9I>s#jYzvKHDOyQ{S58o{x$Gf$=@ zx0g0V8wWhU1&ZIM{h?pdZ|E5??9RaP5^f3B6YvB~M_mUk|7j?gx2*a;ug~Y}3Lfv` zRsg!q{O7Rij`L@sc3*?I9O@qFo(iL6nLEtW)Uy%zP7sm>L+CCH2NJS@00WjnckxLv z8+uY>X$}PW0VxgI?ix8?o}@kl1D8T5uY)u>tv1w}X*#@Qy|r)rn32=;xw?W0*cVp$ zY;(Rz&F{>?)(CjGX2D(a4XEIApa)RpxNK=w5$5?mJ^=sTAoqNDPKw-j-Lan2!daoK z_=?m(=>eC|3$QCUnOo84Q!r=$!t9E);;i~s7vDr*q0RqYwkGUP;K#b35+{lC#HE1z zLvfFE6gK;xQcbymtjTTU&d})Qg6F*>e<)wIRaBxzt94*JbXG^JFR5>-g|K$wv?*}D zEYd#EHetYbVRHSd-Gk>ZMt6hgeua04`Net|nZ_u%^4>67nyF?xbEtXVZ}02^bh zN!H8O-&QzmSLW^P2@&xeDD)NIC%#>fS?7J%8Ps_$=7HoI^X*_6QT}~?Biv=8yN$a) z9267WuRu5c-2Dwaf7jg(Pn@R#?8Xtyl=J3z7eW?H7nTc^#01eRroyZnDLy0mmq0GR zD;^gmsh!jXR^0??2H58^X*CqFAEZOlb?FVb33tl-H$m@EHk!p;Fklk3yvG|Eu zWJW;Db_2znfj_CD&ka%@=$qzS<=YNF*B`!{VC62`hH&v!F|~QV4gUl`+uhRZUk+`) zu6zheWizE0q}Up0KlhY|YMS~wRLD*0kE&a1rFDRJ@eMeWKGybYi}Y9Z4fqy}stM9rR9bgx{Os zt?xaDVdmtDa-3XG{tj-&TA0Za911phzd6T2sI{NtW^-r0gv z>?cl#VRA&83y%N3x)}udBb1VW`lsr^as@ML*j~L=&4w|KR>sZfg#LQL?~XX1;5#H^0PM##Y$v$57tktL&?8yIHto z!mY(^H{kh+1b6UweDIAkm-+>h0EEbC2i-*ON;#qMl*vX61`|xFbC4CErOhAf*ey5qe&4G{< z6U{m1%VsTWvGuz38C><>T8BXeXRW7v&->>4-h=S^(zn}pjBya2uoVbyvG*&0Q6xMN z!bE>nF-~kMD)9IUk|ni)Dbf@A&p6nwOQkoYcd#^21s2^}ET8-!AA_s>lKeof1bxR3 zyJwB^k@AJI6HeG)mAa}3cS2uvkUCbK483`&s%veu1mk66v-!34qxBL~J5vca4*-aK zoO`Z&G2FiE{O%L(b)Ku9^4?nB#b7h*;6V9G-Yfr%hHl9*3UhXMP`W8Il_k)Nw_xRF z9}J8*wUL?%UH=Jq4wt}lxCO@7K47~FY-Uw!3upLjZ7D?27m)J@Fe#&TUN_;g9|lhN zF+*_%v3&>21b?j9Olk#3(LK4L)zcb|g@qTacdgCVPWa{taNN$<3kK+P-)t-m5iT4G zstML}1afc;)-39I1ZV(9Jm*03bG_87!M^K-MXN?)A9#%37GtGGQXg=Xl~TI=1$<{t zEnKUt#egW2wFZy^9>1n&7DPcuEd%t~5Bf=#HddRYP1AC;x!Q}+cV5$0q9^Zb`Pydm z=PT_SIQS1~C$u8%EM~=@U^)*pqE|#8WA#KVQZ>?B=z^~4sd`(u=DX{?^#S@&eH0d7 zroi}m9zuB${9v!^d01KcQ1@?wKXSXi3qJh)Pzq0iR|l||b`u<%Gs+neMtfttaR9t5 z8fHbjse^AnW^&oYR@HgE z{RZw3A=i-K0vYDZx3O9i3Fl*Hr4JbK7-)ubVFSMdk9Prlx~G)iU^QKZ-Ed|yDy!qLfv*-}>EC-I-~dG60JEc-nf zP!+Sh*-)C73VFgMAqDflA57`d5W~~O*)SD(T><{u1Ao1NyDZ>tDsVSXe+^i>hozku z<257CSZm~C$)(Wv#@OGftxigOc2YN|% AV*mgE delta 93115 zcmbq+3w%>W_J3{~AZ-ITg#axSTHu1^-2!5Z1&S?Dv_g~$s3`cVwdz_l6;w2VB+9i! z(ZQ{{sJQB`>!Lpt26Ru{^7Y)VoVq7iCb)4GUYbE0hVb zxAw7E7Nxeb6h76X16!`-#JyGoTqjVA*%_t3au@4ky+}!A6Y<@X-H&gLy=c9tZ=Y6X zCE_>7V#yhF?`?P8bBo17BrWN!EtWL=9$fLGwY|bpZN06t2e9$B7p!xxW#8I*I`&>; zvy?bWEN;H*8s=(scl`B8m`u+%Uc(l)y29G|8umr2v;lR8V=Vrywv5X1=~}XXu9m2T z2cvGiP|Me+YXy9LA?UcM-0DI$uyuFGQ_+M_A)DHIsCqRLiY;h8Aze|p;z|1Vq(~{R3jM)9Bm9jo4k<9!1k=gY(nZ#u> z-}orYiSOw;InidB!s)w2{5OTyPh|JUKVZF~f*p(R~crf?5RYbD!2WnavT3(o>6)8Osd?*ZwRuN9lcwhoF8Ke?`8Flj`17MMk2^62b%RDx*ZBL}lYTI|*Cqln!{MrxIu@=749b-}B^)Gnc02=_1 zNaU7>DQ&I0(^$(ovZ>;wfa>0Fk}#(et8F{ku{04FT?k`CA{*T7kM*MQY;}i0)_q;scO6nke>TqO1T_H4muQQ@1+O#{w*c^O z(3T+4;^~O&XDRz-GyBzXY@F*NWe)p`D}Bf)O0DZqR5VCU2~YtG?~kO&edmbF0RTfw zv;{~G6>2jf?;C5_F4x$8)nid_ftDVbCGfV=W1g0#=V|Hu-*||4v~(iy@3Cxj$NtLe z?9PrCDMuOWI0oOJb#!-{y3Rr++}SZ|@O_Z4wrM$C$FisPcZB?|>eSg<*qN1dD(bWF zX~lx>oNrNs$02Kgc@|G9I(ZI1mTL&%=UjHO(~B_+>S9<$=QQiX53{PyU9FXmurKiw z<6~z#ca84@n*&p&{Ikngk3_9!#bxLKb$0$Fek1pbMl1pty6xv1XIy{77QVU%yFIa& zx0#v?waj%3+6ld9SC(I9(P6l-yiBy(4cMt4f)%*PBKQYiD`cOC__0~SD3_GyS=On@ zDP9JM@3f&+TWy4ah9lX+w?AP;3I1|VvgZ$tPloY3MgO>XK?h(R8e{a>_EY#+z&CCY z7;CnDnl@_Pf-al7ur5idF`HZ4*vO=Tmt74E;VZ8JQ0L^A;m6QyE{J5lYJ!~U;J*CYozUD)M7qxfj@ys6Uj9vaP#bQ#%cD_oO*t0R=B zl@?b*q?6rKdD=NPylY?UK%L#x^)QETOVD3L>Eg=?rnW&6w6H> zZtWmbo! zBiT*ehFa4;WOwxpIiAZld+RgVY;bqYaYr=awrn<|`($feHe1>KV(X`uvbyfqPrm%I-hG(H=x1Vot8FZEx`k7a2Hw^K1fZpHkOT{vd1%x zvcF`q&wBJzWK(P0Y>=>%?pvQVeF}0rE4$jS7DSAec=tm`w$<@E|kcOaici@FFsWoxn1Re+ZDT zH;Zo^&Kz1l#rJg2j;ugSa!f^rH$KSK~`a^@Cwg_vyzXJvy?{eUiMl5}HSwMutbQ;MkME3uO9q zN+&pY0Ew5#MB!`+MthySCji;kx)UBu;uZ8WJyD-yt8PvHNgrpc9%mnb9w>Zb9I#N! z9E+!Yxo5cM;fIGBef%2$rcd;rxl?_t7{&P(q)JI_0z~w$b_kOTY$l0x`eleIkz;`L zEijOPC!VRjx^#L!npH(v)xn4w$ctyAdu6h*X$jV%A#7S&PuFFHC3@Z{Kvco*I8i}N zm8igzVOCHINLFwnR#cD|&B~!HQNfm2R4}})XLfmte~#Tgdj|g@o$c=1chctcs7AH` zZ9>w15f9?2mJ4~;km#4SCA-QY{M!xicP9%9QDM>CSpsxF-_NZcgDZ#@<{vyin zT+*wU0O%=`zc!LxIUq@Kv)cy@w~imlUK-FlzG0x*y#}&R20UsVzm!cKcvUYKk|$$) zbKuvo?zRB=ImAn%g^>Yl=fJ+!tx6we z-P4yHP2Z+C*@}#j-Vf8Lo>aaSzeYXp1LQ05HMMROU)GrZCZ#W-XOCth(fnsci z56VneAgBaBTO!>`NCZEgr^PME(}t_7^E7)A2I*nE5XtBmt$^W9W1b*qh*INh`sKDQb7ANB%2HnjNam+^!H@C=zav7ef2e&F8V6LNFQKP z1MCD0NSAq{e-j*j_yij_w4-&*RCdGA&K=V{6bP*KMDi>ddy3s?8*lY5rVmX|IWi@N za+anbd`$pf{N@27VF40&QNI;6Loc&>)02^L1KL?W)?OXZcEwsOuLtui0QUlf!y~W; zpbMn{9&Aiqj?Ci6@+hvk6*(*MNX`NvW`36CdY&cppj{7WA0ja%fAEwF96V8BV0tw? z`YI7M2edSqLkP$jfFEb?F_ck@I#GmpL&nzz2guM+4^q z%70LtV&ijr!4&$Ct;_*LE+&`>#~9^`q(w7SutUw??a<=7JwvD$t9}j4Iz}ABC z@#<>HSdl(H7C{^d3@sw`t|$ZIMeNPRI_Be~!)Kxw`xk;Z8^J4Ad~CZUpb! z(kfE?Uj6Rq$+^Q?pV{9V$%RoTPPxV00k^y)FK>i)RgoFAXKxm~1 z9`*hDvB)ru|N9{^3Dl3RTLY6Waq#^wN-ZoFXu#g(MQeb(QdjlFOv;+)0>1VE%4Q;sq!uo;lC4;4o^U-h5?+hxIp8j(N~77C*V)l@v!!lCFZ zHF6k8Az7Jy9w7C3QB#8?u~@4I5Sa}dV81Aoaq-xz`-eVSKwl4OEsAb>PbY>KPCqOzP2mW{Y7l zzjlH+Vpw#7)_|l@FTJF(6O5Nby3q;R@cms({LcaD+kz+6Kq>I`QPtz*h(6Aq5gpRU zH5t;!#ex|zq*ubF**$~sD2DYsZDvKnI;+b&N{r;G{0>l_T9>MOwB+hMEs>NI+8|tL zcqR;iPe6WTwpcH_93aoamsl&x27m$19`b0#uw{=nlmB|3Y2ai^!obPUc<%}+=t8X+ z_E3s$k?I9)*aevseTo3*2pB-NkqD4R8@NA09oCpi!!do3O2$f00BJy>4?vP2K2{hG z^`$9peqR@2!CsEx2MPWS(rqbaeGR3d5E%`XGnx+rCbPhRMIEoMFK7{lew_2JR;;C8 zo&>9ql2VK!YH$_^V5FvkAWQ`jTPH&WiI@=FC8pb2F+Y`P^GYF}Nfgu0MBmw%vfCgV zS9yWv2`v_?3)y@aQAvp*+dR}RT#2E^g_@7j(L7WL-UB2geE1D#Vl2K5LT;h5vBp~C zdMwjeGAhGUW55;^&1WY@!?ydt0red9V(^-%m$nGmoK3V z7d?T5#5;qk+x2336c>r0kqExhV^`>(E2+z`qoSh#+=u~llY zH+WcsKg)Xh3eSSg3IYw103rvI5(luxi6-=t-bi%S9BP7BjfQp6P!7=wu?Jd@E0RK4<9<>LcL-6cLf!{nBi?!Y2LNM;e z6Vb;iX&-jz+74nmdkfbCSEb&po!H$N_Pd%byI=pnzgbb|cN|Q18Jo3P&E33C zRAJLj9oDPWob#&hy+IH{SHW0Ilh`OKw3Betn9R71hxEqK}jI!~agbT?GR<0!r zRr7Z1UaYy3aMiqh2r2D#-OODI{gm#|>bmfiM1W>-ZvzODceAO1>p&h&5(5tQonYfm zqZ8?Q8Bn4z2Wx6w1sQO*3APNw0`l{Fl;dy!XCy{8N|VVm}Aq-{SID)7nI~M(Yo&kz}q*5DaQ|S^_lrIlYPW4;Jfe z`ss{FC>m2x@3KD{4I~H)euGT2*%ZMW^`AKu4ln$JfEG3)oRjUp^iw!tj{USyXh%VixwYJ(!8hfTZ*rk?9RxXxCkf7+d?J6XgCVci0T2o- zZ3v2ast#F0*?OqduBP~?h<_A`_{MYmJ|K#HlKTNb*;2wAFnvM$Nz9Xx4l#Sk&vqQ@EiWrdZ zHS_lYFxO*YSI>e941Fnn^toCljiexFDBl>vkVmQ|M`VB$A{rod5vYj}$T=FRG=Y(z zSNkyvYu_8-wt)5nKn1_#S{1Tsz&{E2*i<*~)IpA}ON6k&5qC%e%lC<0v;@>7n0+UcgbZkNrew`Z3 zUqE)TB~@-M{S^=B95$-37b*-DAXLGc0T2xVJ&Vv9Mou(f&Z2&F8R`{4Al8W#Kr>E3 zt7$02!3n3VVoECXhlMBV{-~u}JMxO6b7$;Z-gB zPIdM6d8b35rv{2pvfRFVV083evJjiA~>z zV;9Y_VSU7xej3}jROk}}d9s@iYmTV~zXJlsr);4FkBi4(C^jbU)UhmhEJxe?n_XFj zTDlti{(R(?NceAUp~o*&SWGHmeFlg`dsq{VXrjDS@B!VBw&(*-PMKJ(OXbfS>qIg) zl%EQ55+1zuu2@!(o9Csc=)eHs{BMhMXWN;P`6)m$GJmQ+=u4~7$2E)OTl1Y!{AxgG zjyG@%(Dn4{92v;xU}r7Qrf#U`S>FQ1S}` zfZ6!siv&kT+zR=SQ0T+Q6BAPCiLcMZP>-v zm&K_d3spE$Td|eb_sILlMJN(wjY_)tD|d+fewc%BEqPixK$@$7ujz)7ko=!Sb%<8d zS<>`$>w|W7#q{fLn+^xDjXxC+WhGJv2muOK8a1eaC$LBjF%exTmuMz}2*Q*+JPMbE zM|6TjJ~6tkK*^!}M05gz&|&C~Ls2tZCiNJ|xIiF|jQY4INc zl5^L#=#oHA)y2dWh6>y^{GU66rIf+s^T5Y(+MxD$f)bc5(Wi3Q!cUM)|=ncMLctSobe zKcUv*IEuba1oDOs$gohnne6p1rt35@#`K8B4@t#; zwpCdVy?%uABW4wk8blvWst!*rSt zB<8k)F!QuIdeyveS8(I`S4pd40^EFmXG5T#XHZlK#;B|sQ;#8#ahyR5p|L{R3 z@h`1g5LFrfK6}KBfAtf;S9K9p?q6B14; zE##9N@P|;17LH6A34!2Q%1TB{O$0%Nq#&L;YziXu0Bz@;R;tW3eJO_NVn>f(-Wq-< zf&Ab&K-6(3_CSNAIw4+CCGCy2=zt{&-1$ti9+;od)ctL_vfuyY{$6Zly1(ZEN%yzE zyHIiq_veXXmI5M%-vOSU*<_@D$EvPcsCk9=%a7M>8V&f;0p`bINP8Xa!CI02DNh3l z(Xabct^19BU6)lZ8(vjsH_?qO5c70iP>8MXA8ba^dI0JwBtcc;6sNx-PJQf48aBv4 z0-vF>a?Dhz)VfcvyxGaROiK11%ehR&I=#M6uUB@i^?%tl*T2tl>QL49?K3Lx_<%CA zJ{Dd>eWp^WL7u-M;{VE`=2p4+gQyYSAfwW71%b*k74fb%OpD33s=@bg2K2X^ix(N2 zi+0`(#l3V^uOk3salI2jgBm{{V}u+E62qmShISa4YVZ)kNByjDeBc2t?-QUStPw7c zV92hS%cFy|4jL25Uu=eZ(T{}|dqqgXw+^zJQHB4!wX92c0fe>22Ad1FKZRCc^vO67 zt^o+=gMB%&Ms!wk^k%3*u7Dy9j=>@*vn0`$oU{6y4w4IZ-2>kVa}i^Ys~Jd<*%YhMb$V9ki`y!tVI z9gY?oJJYm2N?X&^8l%-yB5tQ2E4p$I5AKkbAAsjc35!{>Ou(p14MsFpaDA*GxCBZWWBQ$@b;2W_34IxP8d$-}7cO`7N9i~?#ZyptjMvZwRqpBCxfwn0p>s9?8fBqKL8r$YYeGkpMk7f^iy=w zZ9p_TDZzi(N!Mlp*|7aB5?R>(;HGEesY?svUkGer{8%Ua7QRAS{Um^F%q<b+>8oRP&`_vdD00U8Z4 zT7(>}LsOKx0@h=C7w?4e!9AWd--ws=^Y@PozlRVt>jO3KOlY=}^@*By%6GQ@-af$2 z`dA%%ye?TkUzez^>K-^S$EJT?*VcFTtJ$xH?p3JBae=i7bzrsoa}*7pEZa-fktp~X z91f6kzLS8+Rh;hxi3D;*Q;c8-ZEGIv7%jzwZ~fz@*@-zv^9i5*hW~BCH;R}Mo0TH~ z$sPL#vCt0_OO=O@5_Sj|pFG4B1L2wsfG~ z`!4pc=s@C|_%#j+z6FrKfG^SAmI43^dFXO>c=bw119m_`GJ@QIwiN)n;7ndnNb#i& za}7cfdy$mKJ+n<2Q5l##1=eD}1e;|;X!#MUpyjsAx=zjJ|Kz6qK*@zsRss#`pe6(w zgJ%qire<2qDB%1E7jbc-n_}lB+Sjrono1Ce91%HtX{5)48BUv1jz2xWsQ8SUO^4w@D=UZAOea=V^44hk7=1lbyo8(~*db2R}IziDaA%FQVWUyUbwA2n2P9 zW`=vsW5K5}p@C%0OvHlN{g}+>%4EbyiW+ zQMNI5_^X&}K*ldU?#DyqG|Im-q;(;^0qCoK-^$!YwyUC_^k{S9hCDRV&s zrdbSwxhsU5d-`#7(NbP=P7KNZ2qqe~{m{d;-k%NAoem&;>~V$D<6hy8xoGb1SxJqFYR`p==AbAWoeS*5^YxauGk{5lx&4^Kin! zdnpjl+U^Xq1wZ2~ru>GmS|p|L%AT#t$O_YAEL400{dr-QZg& zNuKrD3Q+%wzl|T^OI9BDibe>kI_A~15lZ^yPnsxC13-(64J3}*LmM>O48{0NX3D>L z2y1aNEYr{EJNakwS@@dcyc$m!j;Vs^n)C_vo`vGdB|M5Z895lv$w{JkbZBumpgJUmR2`sn4kHZlk)- z&Dsc8)aIq?xQ6^&wMEivmUJJpqjfhHxR&+q_(n`bZ_(nqOj@$}{_RLY#IZM4OuW2m;8IFZ(J4rRa(;{ba0{>b zG3o-t*jvSkd?cU)kbS`#s5{cp4VfZF&zf( zqGw}SW+h<0>j${d@Y?_z3-zT&7)v<=e{E9Y5S0jt5??keF{McfZ$El4>Sza;UoJ|- z6F3^6F`VZB}bF26x~lwt)a?yDn;&lAND0U8uP z0?0SuOHkYdU}G9lbQ8sX%_#o8k)q4%c~HuI_Rahr6q;IhGrt|b2GwGKd@8;K)$0IA zK7B;>eKPwIjmVc0az7J!AR+fB7M2t8vxMBX5xE^9|N1?~LqXa?*dj!%CG0zaZTNyF zor%A7iMZ`u{XK?g*&~gc^i@dV%kd=)V+B3^9bbap@Eg;3+A2K0Lv(=J+%wtIQ4jpGPKoI09Gs^dfkSkfuC3DItrM> zFJ{~&HaCyI(sZy?GN$ah5Q1)Tk_WudKzo&Y3jg*ELUO`zB+?wym*PDPJp5*iX;K(> zUI1l;a*62wWD9Gb?TpZ`^-+?oEbhSS?EFsBlr@%cU#EfJ1JCTB9|Pv&IawjiQjHo> z;{TeIDDl&S(WP$(%x$8?t(3e(Bbi{CSq=UI3X+$=M0j-EK1`z}P$Sl)wi78piw}Kz;|lgjw7LV55fG*XO|VhxY+mTayAoRDVx` zD964kR!1_+agqp1p?FMREVdso7LfAi9p+vI-XY$3_D;(p;nl9+U-{D*H% z_Z|imq@mZY2CzU+o09eFs!!Er$Lxsl?PNQzZntBW75f2h9qXNh+pfDFm6CROKvc?K z02SFdFMkm*58+F+ZV`Zusnohsw2qhIQI0FK0MXdcmMS%mj%_@Oa9d~rBZTKZsRX=U z#fYrQg6{kGZ=&ieL{tqOjtpL~Q*X0E(;UYN-}a zCq&uFd^_dQRDe8sH6F~d2`3YmND05z6y;TkQcuH|K%wY~&nFbGNoJnJITyvDfQip& zO6Ep9h`9YG03zJSN*HwQ3hq$@Vl={mN${Cz(VZAVak6Z8Br-YD87PTZ5cA{Y53X+` z&F{s{XgjxpjF*<&&U_8R@--l50fzen$Iu$w1SyX`d_@Ks8B)lG=o5Yc$Bx(8kgr$q zj_t{&_*+Cv4r~7hkiUp8q1~4ONFn0pIfNJ#8Cdt=3n<4J-No!e*l3Yi@D74B7Off&rAAMq`j22N5mxpn@Xh0>;dm5SJ7+Hr ze;oPN5V;wfK`jLGejP~Kcp}Hmlf_e$Q3oJRPDpbADZaZ4U|p5*k`e#WRQQTCw1z!C zrz2iqQ!#I2Oqb3(axLiHiSX2RxOtj&K|4nuW_#xJ9a@j!m|_geG!W#5Nx;c0LlR$( zEq(Ap$yd2~Ewvp_Y|sPU`W9%V!15u7f39EwcCJ=x@f2e=Hy246JHW;qapI_y`5qWB zW5<;^J$+JLut)rQviX5ShCpio&;oPW!0=`7b!0Axu&Ye1KB&06ijcyi-Y@0As}uYBTD=sF;UQ z^UB2W;&oIB4nX2%P#{;TPTahXc1Zk{ih9{*{WyeH18z^#D)d~i3F^wKyLuFwP-K6iCB&p_Zx!hC$cFPef`tE3zdx1B&7H)}=to}h-h>29k@FICu#JQ=r8vsl^7 zbCbX$4 z;7S-S7COe+^?HA$JzR@Ne}lDbB$U~z?2_h+d=mPbtOgQb*f@ekPjH++nA!}S2H%i4 zX+Gr0!6*%NhK4<<2E-vC+#1Q)(Rkqiox)k3Y^Qg1RI!B*clGA`9y-cqeI212E z^2DjDV@3`f2x}jV-LGWBaQP?yF`U&N0MIg3=C5}6s~lOU%AOHRq&PGp)A`?lBR7#= z1Vp2^djeEJFD8N8vFo_wBmD@vt(WwI|H)U8)CdF;osE+X3jK^uk#!o!pwTQfuowuT z0+n_{9j2oK7ivn5rTp5TsaX)XCG^10<>T$;Q*Dqb1udSo=DnMsM7^bU zQeLs=SL%d+pG<4n6o=WNU6L%?LjDG4Dc=NXm^nFUuv|ll#4)09{OWNlwXgB(=EeJ2 z#yofzJn&E)>;=njfUzZ#juS!Rh!Q>XG4T)wgjLtM$%U@T{QfUssp4C{;cqf8MG6j# zejUCTBY%-PwX#UpZq?ewy{uJXSwHDRsrl7;=74s=7*s5m>j|o`AEDD^*4IB)No4o< zyCtA&z=751XR)|ejXW27!QVS6QTaGwi~1^p+m7n1RUP$uFz3p^nJIR_Ke(@JD1uDo zbHXUpTy51?H@6j3@TMRA1TYgb_A8%IcVj~X8L`Pwaw3&ycL#=cbWy%upKuEE8K?T{ zF{i+LH*k?RiYIe-C8)0+PoUhP2*ooRV95@BoAPNwwfgGkqRx!-^>;K{+R4<>q({k7*q z1<%@ge44SxpZzR#01xzkQ5}URAiOWH#uIQDsi9zg8sd_ATk=f9R3loyyP*W zS#wBB87IpfenaMU@rK=yfWTq0?(zf2RbIG7+-)p(ZP7gdAxm}jO2Mu^Yzrj3%z`mX zKZE8A&9jXQdZY6={E(@z5A?|*-LYBU4WihUt)g`chtWC=`y?m`Az}@o;V9!odn0s@ z)Wuiq!N?}pqiFiQ9FI8rFZ@=0S!~_S8GFJuY{;vtaL0I#3x0~~Q&;bp=au)ZfyD5L#MF!!gVlK^^_hp~E8~ z`Ti3;&Lx9~A~X<(gxw+hA-S;jX6)-0YSREu-*q2ev$Rn20TbD!F!KOFD#*VWYNhSS zKH$L~a?~`jP%;g??bV<(|Mmy5K+o##<=l_y18?=F$wDc0NE5M z$ZU$<`7!JSi%IX#v?aVjqX^%)@d$|TF|$9D*>h>SA@k=@@fBwNDge+mg?!NTK=ADp z_c$knN^M1p8Yj&_lXGUGx6R?N{#m@h%M5*PL9!Y85FEWk84WXXP<=a|jXa^<(L@Kn zHb$M_2Z1KK9Sz^;AI`>ASBl8oJmV{1Zgp&`@J_O(unr4d-mJPLA=t*?T8YeyV4`ce zuX{)a4bTZSiIh?|yl9ckz4x#%{0355-(7Cr=YFvxjzM7#{%Am@GU#fhISIKeT037SH_vy%{Gl&R>~zzN{VhknS2DR09t|n>cNI>b_^-jfqUwadrOgY+)g( z`u-`rWPqp)oii22s=+|9#RLg>EM=YRhVcGWM|H*yG3OM?xEzE2uYb&IKNhkThrj0YKx48KX|p0KlV2F+j3i10;jSItn3(z9T_12u5ma zGHIEL1D@i83!!%F)rjZ-v_cyF;>w9dp@vR@hoX^`|NUbb9eOmef{2)~4Wd^5w~uHu zw~KTdi}64a=eR5kaz0k}gf?C3tq9%ZV`YA;xfAsS|kA1d&TK zY#G*zN19zj0qp1#w|9E(LvwNU89?%kpF5M?@uW83dr-#_u6yY@n&S{qUL-Ua->)+4BLBa9UkLA^SAD2-%Mh7iYI0l$>5ooRTXcPTl<62Pm6H zoHhWWvhMB%S){-{!m2q|H_qm!)hZE;nXM( z+OyG1Smf#qFQbaYQIJ_iMT1ZgdWr)#K0sV7rpXmTtWNiYOu;GQUCHJpR9ei>h5{lD zc-6p>i(!Pssiitskf_eJ%O?z{kV{OoP-F)Ri5qt7P)6@wJx;jY>Tz~3YN;M4@jnHY zWbqR~B#VVqLzF#NQ}(>1bA!K9{#>-^Ge*&?n-rC6ZAR&UCTu34(e_KD+2CXap3(Gs z7X-8}A`2!$x0n-U`qfD9Zlt@5beus-rVN<~arGoxltdCsMLH2NO_OK{(?mMeE5$48 zloGDlj>hMZA?yVtZT!h$Bw(PEfawRLOd<}oZp(F8*bJ7`%cbWgZp%%UZ0Dv3t1i-W zyH)3=0-L60+u6&k-xO&!dhRe9UiI9}>RdQjXs91mDvY8JRVp-e2yZ}4J-mc110du zLKi<8^{j9LM1_2XaVC`bDYi3%2(^F9t0#M$fmfEW#u{wiBtm){~- z>spD4hkmB-2kQLwL)pP+x(P=?JiawX@+b#--`UnUwh2;X5*P*ChEi%9l>!D$r5I=S zNGX(xuursep=bq4Q!Gc4rcCl{kaQubga2z14kV!pW8EBiv`z}0^3wNVRbp(u3y}2D z7i9>3(h!W0Ho^-*4@NA+ccjhvoxZcS*_UF^7cD383Aq`#<-^`BCh5tzKJsnoas@k0 zc^`zl1$KMZC-;pB{}tCf{gpNYzb*!_UWJ^C!gG-m#V@d1k=Qi4UV$I4|8y%g@HLv_KaFKnnheoe zcQV2XHSiZ~RLslt+*@`VUPAyB172Jio`Refs&QQ~68Uec@&2xE5{TCesitO&shYij zq-vfVEci(?FHxsLjcqX0WTHKo1=o|hNd45dRM9p+#ssYXdg;l{*J84PXp}sMIC}si zA-gdxiPpnq=b8CuT4~xB+zlB*6YJyIS2k~zH)?S)(Pl+9o6TA`=)%p~K+O{Sd!$3Y z9RT=rqo9Or}V3Mi;Bcjb%dwpif=0i6jh<*S(p`L#Rit+W6t^Uu28^(LEEU zU5LW4*aH0M9|U)xupKjF@-=GUX?!EPw*!q5GERnE@u7#5x``E$JX=Tav@w{u_4kc_ zN#A*YLHI6s+t7F=YoD4|9h#Jpgsp44hG@jFr3>tf8 zCDE1Mb+}DnDQUy|7+KQOmN+LP%;&#s5|%>|8b$wCR~i$;YXF#2f{}p5lpseY77}I} zU}1axE1BbO-Mt%$f_TwwZwy3aA#`dETjbxO209(^C4P-v?XL)IuJYQy5#RQ;n0G}s z(U*Ccy#r*s64c<}$VB*R1p}TO&ViEYk0@n?BF0JJR1%Ks7^XCG0!6)LgRmcdBQZju z%uN6gFF3Hmu(;B`r7V3a%*Yk#KpXrI*>FG9)7{{`KNSJ*y@+ACBd-C3M}2z$t>I@> z*0o!^9leHo=WV8K=H+xxP59%L!XG0#TLF%spi=$J6uxkT80^5m52=r1i4pS&1a$bO zl}B36q~&p}c=*n=*6ZQS3QRxYp*P&k@f~h+{sZ3`+w6hrsy!I4iOeP%r@a`b=QbUu zqXYC@yS=UpjVjf39hxL!P~Jol2&g*yVmb0w>{Z2xAj;G3ado-kJ3ZLb#&>$U$BKU? z2y0VEWE&Gc`lWfHmESsC z_{Y?Ylm3QQW!Aa`e}j#BJ67&Jm|oKsG@kei?_mr`AtgQsh}`zS`lEYb|I2VQ#6$|3 zg>FK=i$3T>l!>=`r0^RH#AFu=pxjV?3YaA*M*69elwylxEU4d#2^z))0}rh>LMSmV zAy6nKWeAaA8=6$)714u**b~vixeYKA@hbn-X+p?p=Cv;pN(}!T`4V#vAZo~yz|#{k zuMlsW#w%@b>8k)!9(tnO`jo>(vzZXcD((}ri89i^qq^OKeXwe*4;*~ zFfMeRf*052?XR2SJN-jhPlPC0n|1FNL^XKtTvnAQXAE{c`_p~Do%at5Plq<>{vJvk z58bF_ZG+n+$J-@zg@TuhjQyg{sqbvEuto}-OgVY*v0uT#&O?u)_VU-(LuBHGr7r^_ zk-gm)$Z~1K3ma%+0)0@Ri3#BK7RT@!@>}6ANm{1%={4j{wcn>WRcOBiQ^fyC`w4k? zB_?l83<~XA0ZHw@2Tp|biZ_nKs|)QPTxVj|0HUTm1H9(ikKnyUVooSuX+(`98}M9W zE^M{XzY#$S7knvPiOVpAuKXU0skcRqxd;w_525Lt$8TmukZ(ZzEJ zovb65Qsg8JviuOG=>tLMfEO|nfO!Dn1qXUzMjpCD7DE)Vo<#%*1_3H*aA#;MC$vEj z0a&+T%-9JnA931&7~wAZ?YD(81LD~Di^Xe zVd#sFjcwq2h@!_2X5CY|0m~Ktd4%gj^NoLwkcPHaBP!{tWm7O=_D9 zevD#)kd(g~cuvx!v}&}Us#xAANFg4{RLh`4x?~6>wNi?+z#rnd36YtSGlvg(Kp%h2S5BDhDr(FoP}mlc{A0%5jj-?i+*6L1VjrNY{A zYzU>o-{31sTpIME-{-a&W2s98<4yR+43(IRG9BpAaw^e+%h#U%9WD)l;~F&t?jMc5 zSw8z5AHT{7+b##-ua@#gi|n%hw&Q(FguVa_(+36GL3BV!0285-?PxQ7!p|cOUc>A9 z&5c4&e|eh_A>gO)qEd`RJMn8A>HiQQc^jh!z8ufO>8y|$_Au53$n?`lGq^z}Z_x4u zCSEy!OR-K^7GKxfzs>6;*ppm73PFD-ap|m%-(cd-1W|utKs#o+fax`GJT)&@r7RsV=TN-{7Y|!sW+q(eL)N{DP9uu6n6gU zT(laz7uR`xM`C=>t`l&*I*f0x-s79RlY-QJQIDipfm~wh7ev2UQCvT`3`CV z<{UNH2beIuxk$hwl_zUA*Z_|E>Z|zmm|GdEG3Q~*;j_RAPJodg!xM%-DicB(p3Dhd*9U6}i=Hr@stj)yeqk)405XYVu$bS}WOWK^s*?`mLWZ>4(w zn7hS~x8P3vTR?K1S&siEYm@oRw}87r^fcP4&%z`8CiN@wo5S%)E(y^tdgeV?SwrR` z%at&)w5D0mKlN3LbFTmrKk;TWGWB>2521|xfJ!CXWX{=Q^(@$wYwKeO4C<+Htm zC|^X_{Q$`b+mQ@IqD6Nj!gj+fW4JAfX(3Fp*LJuo)Y|ml^AQoT*jJ*rYCzER&-sKm z!>Gz9I?7ucvx8tIjDDOgbidOJ(sF=T1F>i`%(x!yLbgnWiz5$)a?3?BkY5J?%T2=% zq#%=lP09Kg>i-HvmX0U9qgPxo{Kqn|Tjf6;@jO&ao08(f64e5#-e)0aeamF-hQ!fP zifJcgGR%k4aS@h3`fn*U@-ZV@;Y;&$?=p!ykQ9UJ{_@g75&$T)k z(uB-7d+42Eaa2f3j;(#Cr#Fu36RK?uNUF99^r6}oQ|H<@Ow5CTq-raG*-W+A^AM9K z`MMP1Df}ZioXppu41a-0$YlgTWM`?*<3a{{7xi~dEFhp>*(Uuo77p%W^HwC+96vhdT=$|*BQB(~a zqqo%lihmRhGI3>jzeI#Z;ZAQ6?zHFgL0g1SK>&n;a60SDvIBKC@vy;&eiHe$$Zrz; zOfk@*8H#0A#Nhgoy6QkI_BC)(>pmDmNUmZ*(d;C0A4nOsO2 zASvr~cKF@C-b@52Fbi6b!(jb0e#mr5$M|6UrO=Fj{`WuFaYrC6JOG(KU-ko?NXNv~ zEsn|VhXwMQf1+~n?`H1>Bu(N;%(H2`ls&epW5KJy0uR@L0BYQW8fkx)hGp8*rKubb zL}~Z{k!_9y1stQDW5?nUFf3RYAYR!wt5VWPh!{rg#T&$)`$&XX{;hUID#Rl^H|1l` zJ&z4oo#gERg5oygCJeZ=!YckbZTi=y)A;CpVgYV|xu_Zo_b`B;Mk?GFQ9%^u4nK-| z@sihf{(*LiDgIl4q>%4ukF41?Jw@DE3(37QaIgVoY5wl?cLfuaTvyMRz-Ob#9s_~lo)t8?8b zh<%b%d!R(N5b!)&Kk%u+iBv&3rL3cb#}dMnQhtMU-A%`@8srNb-vt1TqaVl$Z$Gt! zuW^Fj7!)+XQn4YJ8T!8?)4sMNo#SKp3P zgW?vpGY>lD`PV@HQksBZcst z(?YrDsEhhb8m#wPms|0+Q0T1=?WDJc_J<1*oEB))!Y?;t4=s~Ju@Txtu5g2a#?cvE z0)^}%up??2o*ux-XUYzjmyDNN!A;a!f}gZSZFuzx%782Mx<-b+1~xHtAG`%f5DLUX z)FF}SvMzFmZ~;G49u~_ePxf`7P$EP?D40p2fS0CR^vHj@8ke1q#0ZgMI_w$bJF9pm z1`d?n0|B>2AtEor>nre@DZcd6sA~(4K|)KUK7@2B?iCyUCY*c$B;~9ZSpV4Dh;<4F zXIqjwh%}y21BLAYM3N)+rJcj-Z$I+ite)OSO4jia1`fCcGB)~zZ~isnC2wg+g)Ay` zqg~(6gLgv~()(kx4p10b@UG+VgZjy3L9~Pq)3HNPYOpizIrt*5nX53(UhBpS=+{vI zRGirv*Q9-pMwLu-@YXXF3(vsmlE)`@b_RB+!QEKx#OWco?~xpf=c0@q;ePDkdtEvo zNB0ZUiw*sc3`6a&p+4lDW^FfKWG!*B;T!u8evD8?0|jCxYv3Qdg&M_z2K^%$#9Y9M zS$_a0B!{p?8?}LV?S?2bFof~rxJn~E?dEnUJM<;f4-E!Hj`nCAIoe^LgFgtIJS-gT z>(u;-iSV)HTp>{EQBfaDxoYrrm8EYQ(f#vD@MksR)w_Wm;D$QYH~6L5rxM2&Z0dH& zL%YDuzu}HBlW;=_c78e^T#3z}9q0*s#ET|Z!vRTlkHxZso4RV((JJw{@_|}Os>FZHuoh*a?N(P{;S!BNqFH|&Er>h=oOJyfVc7^Ha2f58x zAX@1*yFyQJn-Cq0SM+|O!1tq_>rA`|H!3KGVQi6LAW zkV!*P$0r>95b5+NgU>=m!XEk{F`U`TawD!~gb&ldTZ%<;utHAGh0BfOpNtQ1R ze@Q(1PgQT*2S}-y*WZ@Nx^HgXi-E8y_@>IL7w56)w18CBHENI|lRs3}o3hLwDr*Xq z)eVHm;EUqf+nZfIZ^b$#&O2o6Idv>FPSdBPV^6aU2Cc2w$ICjaKI)EV-)-*Ec?8hP z$GINI8p$R|&vY&}A3FR{ORFBIhf-n?PFam-gz0xgw55C~Y23QhSFWFp_pExb0mnOl(Oa@RF=0!0$zzu6UTi+89ifW}Tdp^UIl1o!CC3N%GS>k(^4&x3y`K+^_@5Cw~&2i;6e*T>n7^suFY` z`3RUFB0=0QY>ypM7q59nT=^HQJTg9pCWZtPlkD~C0j+z1m%7_o>UJ0Vu{ySOxQR`FxVpaaOvc zqk0hZMcR+mNc))5ylc#~2T9OxNDlUb1H2S815fzz;0HBOZS+9{Ma8jOtvGi>|226P zOW-+5l&@l0P$A&n-4M{gGg2Dpj+4q_s)lzr ziL!?0gV7NSYu!7s%pvE2y#FMYzOzfmN%zKpfpT2X6X7Us$gR}s*^Hf?yaDhF&r*sQ zQ5;^P*>@>_aSIOcOB*$Ii%sH-Ft6u7%_4GZ3$Y}!j@n-rCt>m#Q+W@x5RM)1vXJ62 zq?CW56KMG;AskBs=!l!jSf{DQIt>b)Ger9*R$~6|FLXi=S7-17|B5{rTF>xal|qPj zb%*HoJwq_O##=aJ1OVq(ux_7Z*vO5P0cd4s(K^4!I3LC10J;}h{em>6XQvhG~_u_R}*@2@3DRboBFR8@-u@er0!k+dQ)mLVD@jfv}ZZ~>-fj2n0S0bJFE zOsuAM^}PMOg-MMZB4MQA;O_SjGO|1K_B=2TS71x#mMe?-(Q1~rMt8^kQjd*>X zB=$Vga4NNDvc+-({w~2E?p|1?;cs>~i=`5O&*JYN_*;*^PMXCs3V#~@`r|JPfBImH zBYaa#@#WMl%b|zv)#o3q_SZi0t@PlXql8IxF-eSPDT%*W)%*u;I;#Reu|E>4oFIObG(vJ?AK;z}Mhs=S>g z*USW;57$grcC-C8eUc4s9pvBi!{DdUsl{3 z^9{!S$qpVM#zr2TZcTWK9jNJj0nP?Aa(3|Gf8*@$UtW+i=Ycztb8q@R*8Vl0UGr65 z+>u8NwrbfcU)=$=+SblgMzX)u4j^$H{3%80%r?}n>0-3pC4@(VAO0W#97OkSf3iXu()?XiP%1Ww*o%`v3W#xAj4r=clzEhdV9{Djz zxrfa;o*P$nr@_NU_Wp6%MLV;RC&nsi%zuK!UokIE=@^?S`slRubL^uND@jf-|04S4 z-+rdP>HZ~!b^aw&K$9qU*6Gg5IkxtfJCd)vyoJrDn%%MTPB!Y~m2t;zHyHSlJ#*4z zpzW!#)@k>%z=^&sIVe5DUO4q9I3WIj3l_RQKJNEesAp}@6vX$s)!-oYR(9(d(*)a` zO;R3bJHh!ZuxCRuyl$`1ZICVs|Dqq6BUS=xECvYqFXlx^&r z^JZn%S`Ye{Xy)%a!D!#A^@zTe+%T#|JENZO#+emM6~!I5aJu2z^@=l!0%2ENZ&jvS zPn1-wwJN5llVh9_(b9^}F-nuBR_uyVpzMl)HU*xTeo`u4wJA|HP^#i5n^K(G8&}OQ z?19UtlkHdhQ&A?wZJ1{8vbN%bR)UxQt-(vL+ne)J`>W*TyVm~;FDNB=NxlXbf-lU= z`e_xpvC8FfKNT7ZIa*N>OMH;StGF~yNwQA4r5P{Q)JG~_ic|iiR#G1kTIsrA=}(53`zzAgDP|9ZQhJXe4_NV7yZ0C@t_usI>s6!_@#;aAePm>h$yXWzaRUfqSuQ|BbTs;LJ5IYt|Y0t5g%$QMpw)S1~3@8AI+QkfaPv%E=o;(=Q*|hWMD8`2R@z^Z1&N?++Z$%#-4qb!Vm}PB}n#x+FK3xS5 zX|E!N=pJY79)o%T62F%-7{1g4vy7O7q5+8|CL=(U4pLbM%!Y4pt*Bf?L+7b`=B(~` ztwMbMK=Ig;0X}(>uKBQfYzle#vR}D>Y5K#L6)XB3wo0I2t#SbDe~+GByB~(od6-K0 zv68%sKh^gGDcbDEsxUX2;m7=_8({PPt1{OBl`C!VXa1#4rBuDFO>p6gm!*}H=GYEz zq>pQ5Vu%bcA=Fs>+0zXq@}{r|t^6tCx$ zoL)}~67AwTCO@)hwJ}d_Z(ALQif<<=< zD9zf|6pb4?u**4_QpdU&W-Zom%lm^l{s-R|go?9YTu0F?913oEk&&FZhF=1$FU>0P z^^I+pOS3sFPx-c~L97ttXJ66x!7NsO9|f~YtPy#aVWApiDQZ=Q{S*uy)xm<-BIQ%U zm`0XN4AdxNI1;T`~BH{y2E<90*ba^+ZKcGfnu92?IjsFMMa z>h!+E5f6nEFbf9^*#+cCQWRNepplV0Trvo5{cs5^bfGfXiUz~0x`9x&EwA9JCtcQP zFKeui<#McWI<3$Oo!o0O==VtMu~{bvQhWtAzoF4cl=Z(VZO;jX%Xg-8@0-<8)`uE~ zu%BuRxQxDOoK>Ov*>0Ai&U}Na_5Vj~!DgUb*^OQ2^-=!>~Lls$b=58xkiT#j| zRi!=ESUj^)aCP>&*v}RJJ@{E6RHFun{kOK+HP|xd3I;%0%;>t2SJa>u>)@pPpz@;; zLCk};)M8E=`i+*CV&3#?EmlR7Ttk7{teyhamtwyB?*lZjHmgv`p48ewVgVi#rd73p z(sSuVZB|}I|GPFDC^4&782f_HYD^cyST*OMK!fa;r9yRBA}>;otaVuB`i=0$A?7`3 z?DBbb${7MkbcPmL4-hlqJOP7dL|U*EO5m%5W`UrKxH7iC>#!IG35=T5W0hhIT&azb zkd&pK;f{b?stO_vcP=FYZN|jgzE`I_pP}!~h$<1%9a$bkmW4k}0z_u@F}O`_#p<)# ztjtY+ojhK`*C3C-0aWDikPMSk`-s0JkKQz^0jtYq)5!*GM(}w*J>dy_jfB4dR0(&< zFqtrwCWf;B+8WM^xr~;cN?Mym=Rj;-TERot@HD5_;mnV%A+HGL&+b$02v(-l4PPwV z9b_(l1Hv+0gXLspb!A$Th8KW8E?XpBo~d;SyFCoY2PA67&0=GxByl#v4vySD>5ZP7BO#}?-*iKxqM^LUKc9+~%Lh_xTxYvB* z{?6{MgnrnI-(j1jGuzMDYFo3eY!Hjwl+UPRs)Hn64+qVb{r+99@39riSCO;{xxR^c z;(nIT_Ocs`W&D9gO?$A#-UUpG?6;Sk_8^B7-`54x?S-FNRHpYm*hrrJmPYnub+{X+ zEj?LL&&2oKz>!ga3>;}(iLUizey)E`&CB}`f#j5s{8FLZLYFMnuYZ`ceNV!yhN- zM!Sm&aH$L{kxOq@v;5%xazlI=eC00wC|BG>;5K=EKGZnFl-)|4e2a!DtAb-RxHk)R zFNFBG&-|b%&T=MJ6nRIRdb3K7MfRY}8_=!Z>;-E^7yGbkJYglZwty&4w=!4yxwOgE zt=>x65AukfyR_D!)_s|0{!2UM8WBK4`?50JsikdxUv`t_PqZPwRo~Ot{_OLTjbEV- zO6Ca%1Tk^4Ge&swHA(Jj!-}8?IS*h}c*A9Sft8Dy@>9o{^G-W}Ubqy&6UTh?_4MgaAkk`{wcT54F^~o4AB#qcwF@Y5AnWcN_ZQbEY^KauogonP26r@sTRIc zJ@pD6cqdZ9^CUc*d>gh!k3ccN?(rD_yTxh~+zHNbWnwe07$!!+Z2fX$~fx@dR!ErL*ET%m9(tc4s(4D z6sKE*SyApqG;s(kLGJjgcxS#oTG*m8Y~R3J*^wKDZ`lQ5DVDTRj$Xze6gLF(YsP$; zKCsk}f1t;T;7<{bVgRh;&4SxK^8LZ7_e`y%X$>|uD0>L2Qf>JYBl0Q$*0E2;OuNS% z0Lf!t$%DCLUx-Az_t+=YdMGPuN|ad)8p`~9Yubat0AzcMV0;V`Rptq;8p=w${Pox< z<@IAaHADl68Ca#)qNxYh{|Lh!P=Kr(id1Gkd}ZnGwOq?`wZW% znowOe;e;)D1UtmS$~@#c=TIJiD2_ihT0Q`#{58r)y={lqI^4%y*hj_dETgoySu}nm zWZ{>uXyHiaTYr}ffP&#id<|^e0`P-o=ts1+5Ke($$_4;V3y^&fA$_}M)1M<*X#N80 zfsoa$RDKjI&E2e&nE)JISi$5&JrXbpFH|u3yUw(e4ktz1&yHdpSxvf?fEAz-{&>%s z)H8wAZBpvvh&oNi0~NZxrZfTEhw`CwNyTb`yB7ouX+l8mVZvvUVyh1b{&Ro%_&bze#OBUwXUJsQyyEMxUjiO3lq1cOs zKNNfXjy>s-JGA91*37Z}hftShxuHlpmeq5-Q%EHZNMxnWS8m&r{(761jb(KmzsM8% zS#D_m+vGM5bu#IpsI&3v#KRMT_fbIjzplxmz2EGuMpDoChF@`aZkIK>(6H1f3r5F4oz-H(sN&D1)zg zNLiCufNx&}D5^C80Ek>WdT&9VW zpg6#K)QKrGg#On?@!EI!*XL{MoeK9%$oF2#;Q5L zQNk1!z%#xin!>8{XX7OcS8qBi^NPDo52k}_^}S6ct?(~3it1Ux z3b+1J62@AUihXI%UQuN|`&?ox8Q_9ofVX}t^L}$~-9;;7PV24G_57?}(gQEOq|jUB zn!=h@ynho`TF)ornXwTtB+EL6)g2h?E^g!)$mo(B2U{>M^LqyERa>CPBRhzk83nxCM)gz23Gb` zC7ksS_8-Jv*s~f-_|K>4XGF-~61^eD45J4#Sy+j;V^HoeMs;Sf z7W~0CG<6mRV9Dona2Bg+Ix-UGN4E=`ij&7|=F{$5ICY69fB{hhQ`H%TsDpWyyKJvK zFL+>WDh^>WR`flImg7*fZrAT+e@#Gib)_ToS)kjIDZu;|W|1@Qy_3);eN2w!hxb01-|AzMmO*LX zv8KH1XQa(XgC>7&uTqEk%*U+-oOxtqi8e@p8636K9lfark~1 z1b0!qfZqAZ6ZOuoi$M?r2H9TChsvG*K7bMzuqvh^L+qt0$+zNS2v%1Ie_Zsl1ABx;9>Iro`rMQbJXj5=HXlRl8(M| zyP_pS`40}E`HBeNJw&s=2a~^}4W)h0rn!`tA&O!KQ_LdfZ+6J_czci%7qM1+?Lj)W zh}AKr4YJqSe=&M$5}bK^s`+A8qK(%$S=~Md!H@kRhvOB@IE|_E8lVvP)2Zw|K>D;j zjffUZS`(zbjQo-}!r`J~IH^)lZ0JKf7qjZ73j^&%J1#-d-@}===qgK?e{=|lYOENI zY|-o~FQw&r{})O`1nmhBH~vt}>j#t3ZbzhtvZ9=|34Cm~!_qDC(SjwQ1lT0nzl2pU z^^w`DPai|x4*>lNKt&xyn3;+$Wpx_8J7CwKKLxukW*kzb9RqB69w+>fw=VWymZ8H{ zsIf8|pTktB5i43V8Y-Vd`|O>x50HMi3MXSezKB{Zma){G&_US{Hu|{ko zjakPOxVz#2UdALD7l?*M+p&F04*+`N;r1=02%!^J`LW*KYG8c^%yY?sTJ zUvhHv4bhX-YX$4guXU%xE3gK;^!*@iR{s?}BuC~y#ZB<-SW2FW;iKh9rR~vW=)=@v zJsVBi*033rvzGOu%BxvlnzNE6(ahB>ll<4i@60OvxvhdK^{2J0HGQ#)b*KI7u$BIF zJqw^&>sVz9muY*h!{4wqtO~hrU{ykg6dN!w?NHi-b$ZQrA9`A_N80->{VM71)Lv5i zAYZ41+RjO&^rsOUq~$DDWfXtxi0ru-Uyl}Ec6N__WE&wDA8qT5ySvYjyU^ykm%TO1| z%d3Jh4pFNkF3gs zoF5H0M?iL{_ycZZnmz?6ZsAX{Xmxk_fv$dAh z5p1_SSUMPnvGEN2=nts-1Uxn7l+xNsD3kZIn~i?C03bI(9hm^7G@^e%|6L{`Os8Sv zsMa=C)+I)IDB+?R#cyLx3tqdXW`8dz{lqZZw~d9E4{fq1+P8^nZ)0W5Go_D8W!*%B zx3MM#ee)#SM&q`#s-@p=#3WW~GcQEX-9LH&Z+-6H-AL!QL)BHEo^EH=*&qt~>4W}2 z-^X#-rSIcJxG4+%P)T9MGg|x;>(}rjMS~I1C*tQkiiY?fWLxaCDm4_DeV8#nccF$m z*in8zlM3u)&4W6xNB=>M&<0-vpV|Vnj&~9bWRUE|hLpIIUDu-jaiF+etWju@b-*>G zalzM+A)1JpRJ|iyVy0pK%7rEuaRUjK$&E?43bGkQj;`RT|4B!=+=D}8JxXR zPjeSvBh5X4GR;{TB-312Ne|Lk4Zm6NP%|HvwG^j8Rf+o)#L0Ah_PoXH$)uR0YzG@m z&okJ_cKYGnsHb_ELn)h7ZX;{(<$UzrzxCVaTcL~IeP?u^10sn(;8MEs=ikw>448(D zZBJSTtIV#_wBt|}ZJnVxQ|Aok-eXlgo#rGxva3)3U3z$|EZu@U|D*Invh;%X(%k`w zoOwp+oNUKf8UGpWa4fbq&LKm|JgOhYwx8I8DEelGZ63Wl#=Oc5yo(uf;>Qpy3axEHn0(GiUN3YX+ zyjmkU1ieSe{0sASnj0hQbYl)Z1H}g$6ZH$L>Bb5uZ0;yd%#nHwiXY2;3pz}!?EoX8 zQI6fSn%|<;zpxMt*STL<6F0R_9F>m#KvwHRY{4hlY{rVx?o+HTzf#fm@)X;~T>eTi z=GC7mwrywFM8>Mws-AqboMrQ!z zt`s$86qMh9mR(?h&IODVg{*Yy0`m=Q+X$o8-JY^n-jo^7^^|AG^&$(dwm>>j)^fxV zF7_0zc~c}9DU#sXqi6TSwC+6fb&fU?#!jcx=UFl5vPP`X>Gb40i>%Paf_j76w#C<= zIqd*iYl;Yb6oqLFKxH`eA~d;gBWTV=R*NTBqhBtvCj6fhRODAEIttOEU)h8b&(DAZ ziMsf&U8OGJRQ(cb7O)k@1C|aaQ(`WrCGN&L6m?emWJC$I3T-P#OD?gJ=9}LDwUqMZ z>Nj-a5-aDoJhP#kqN3SUwd}cMK#BvlH8o{-6hD7Mg??j|N_9sn*_ICY8g1zaP(W0g z-*hy_J+jKi8T z252JJlmp4>?mGYXOst`@_n^i^+RyL71oFl`R*Cl91B+boJ|LI-fRZHCRYEB;bklw4 z{s;Wd3VW{h`%usaW5~TU^LKFgtsgL#{42Mr7<4<8MFe{%>b+M4U!(Ut0LsPFK?ccb zs3lUR^1gTKVl3)$@>@HG;C0Z=CFA%kSX-eaiT10+0ipB3cpzo>*E zS4Qgz&*5t%JP%MN+$V!%!h_NST7R0blX>|WCXX}VsblwaKoZ$fVua{KL4u8JGWn(? zSkn+-IV?9H%HbOD5KDDjZZ5JCkWPsd_W?;^Il&XMtcTcoNYX0tS*ZLZA2wyzrh{p` zw5vDrvit)N=uZ7dlUo)HSEH$A7HiMlU(?Dg7F4Ih4Ov`gnV%}I42mmnsTU~rjwFjJv&XDUsVl=VfDrhyi&$X`Bagafz()>S&WN{i6w~ScV>Xosl%>y~K=J>K zHa}q%N=D(3d8}xLsCvbEAn$f!%P@PbHqommtZMb=SV*M!f+_Mh!Vt+lJ3q!m)#N2i zlrdy=VLrjZH^FczA{Or@Qjb5_7oI0SSM_qw9w81&aI~t-A$sr!c+=3=ROBhESg0F9 zkiEN6)y|(&o2RUPHCH{YDLXKA^3PzLdSC++dv&`d{KW`0g4sh=N|TXN(7~tdR!BBR zOTS|XSAM|qyc?<&AU!9m+gq(o+~L_z_oS20SaID>)n>4*-Jh(S#x7FQUr^as9z@IjVm{8d2O1^aqa%NT zg0805f3ccuD24vb8i48y`x_<|skHQO_6>)IGx!xNnZJKYS;iJ>^@>&L;yVDi3L;Sy zUt=7K0TlW07nfBNix(slv)BbEu83PAKaleWokT!9PN_R$et|Z|iA4y(Ajb}JKsU)6 zKeAnUg|igw0o8m1z4IaJ`Ua@Gg2u_uL|XEO1(mqk7lrC(IoAM+6ZlgL!YR7`22x8j zRrm+ir_nV3A82x6nf{hFXML#eTh@gI(Z09L3xdsWZ`n-jtqy$0hH$sx^y@n|ETC|2 z?yv`aitEi@Lqj+&uqCEJNKX5}>iAX{e^S5qsKo-B@}9LVzh<+-AXql!R5>p^QzQ(sap9P0b z>c7QlB_6CukoOuf_V}K0<~``5#;dUD_VSE2w5&sH=(l=j$%VjaqBGI22h6 zO}tj%$k<|&+ zmquDs9eK%;FXD{G{0#u&hTPLk5aI@0YBFWgaYr7`R~IGc{JbVRNzZO+Mf1N(epFkq zg%p#Y59G&OX;*$;s?6jfYAVF;hwdX7ts7(pB;Mb$t9%ueb?ZVo`FSO9sp}kA2HGHk*qud#W1_a7forBC-*2C z3lBAK+W|nXiXEpFmzZY_cgtz3U(QG;u}vl(>m-WU;}!!jajXwd8S6f3R?o@K@OfwxQHNYPrUDFj~k}aI(x#c@+v{gJb4WtxsUvj zm0d=Z5#dA>E%$`soABbUF7x55id-0_y2p8pJ=#~~U!1pZCb^pqpfe}a+z(2T^r_N} zMrBIEC9X%Ssc2Vt8gufIm*tGL78b8g;#wroS?O(mqrJs>*;*5ky}TM~TP;h*sA3&O zCAh_0#8PBtJ^;&miRWJWVwNf5X3LpRExdWd(yA_?sArA3yf|QmmNx31s>`2EWnE~d z505A%BP!CH5%uCgMF`a~nMh@iITJCd%_d%yc6swK|9`b`;(RG|>n#j`EvXOpr28d! z1HXU8?3E|xW@_loJt)YBN9q+7DKW>4iav6%$%?}01f5nBcP*l#J|%d=lB%M4>Sl?0 ziYlMYYUCg;MyY6iC3yJ%h&FsCqK(p{z4zh83hZbze0SRUSAo&w>&tNhh9Z1H8T!&! zzPzSuh)|O#IY~=-VjlbfQB zo=6P?ewCDq=1#g92+BW|9D{h{>W!tp;&;LU>H9xt(H3h|roO)vC7*rJgm-Q{&oD{~ z;+4#|Ys-mzQD%9EY(c!7U%eh`&FpY5E~lCpfdpV+@>`mi@Vb$Q*iY|+xL?F@q*AkQ zB!J}f5Pf41f@>|<>qu5g7z~IA#um4}MSywTCa0|#OEvUSLxOpVJc0C2FdtINI2jTx zB_2@amH`jd9z*Q`{Jo3Qs%E_1zb9bC;13h99V&v13uK^=} zs3mVGyDDD{uO-zw4Pe&A&ePTythQi9TY*n0+nXA-;}D+a5b=IKpQ)d#XcMLB^$(?wsYQNT)Y7<>G6_px*Lv*_bFER*Lt8OmpY>>4>CWwnA36oa#8Wf-R;zTnr zvueZW5iX{Qx(C{1xoU|z3o;UQtfR2PmII;5Ne4h<&RS!x%SgwJmmHwbY=OemI@>CT zy7lDVA<$^pZvnd^5@C;P-#65k`{YM~meW|XauS@x_qJ6%IbO(vq$v$qJ`kU@cg(@k z#7WgTqlvPPw1O*foN^o`4n?49-tc!+r#BB`@2FRAFvSki zmZZyZVl#5JWF+V0jQU)xMnqkmwVbqmyp6|bJ!X|_$w?O-5=voPe!v?V)Q|hsDTb&y z376$0^#qulbXLAf>HtvHTmyg|p<>BN0!)|?uVrk-nq|>}emr18IXM)%q*Vn=lqBBQ z#Z=|1_#FHAfLR1y$nhz^Ny#=)cC!Q*Iqm{T;g}t!>%HT|5EO|nE^yRQgI>!cJ3vfB zsaQcW93^%sg?AJ9sGi`>UQ_S>yd+Db@)O5Dd0ki2=gi&gM3 z+Ois;6yqSoq4Cqzq_665}-MKSoO3KxGxvj^}seEi>3 zdm#UtEwY6U;dE$lXVtutuaLK_H*`UG*x>~_NBm7`3B12ck}#rA6cjKVL@8o4FW|arB{&CMpC}_H2|7KR z`@`^L%xK6iw{R&zT=p1ysG|{@Lr+HY22F>n(6V9>z6KTf44~+QKh;lN0c2Mb(I3K_ z0fY|7M^v}Rsr7(Hj^SZN1JEw4Y9BTTB$iOgD=^1MAHz#r#_ z5@>#LN>Ad8`H=e5XFS#>mnBqs0x&rtUZ)C@19Oi$3qmVN=yl-dR5Z5Z*Fa5)QAcG-NWb-~YlD!{ZWwY)@Q6 zcMw2Fh4S?l$amxNKwUgA|n6Zxlni2q5KWLndy$3sy z`NQTqg*Rrb0=4}HJl3zY{u^GEt)y$;aPLarB&p`e2PPd=+Ngwyn4DlUm`>Of^5n0vX(HPw|$d>$xh>fHz0Mj#!DlOn8`KhVYW&yND-%TaU0<1<)Xy*c6hj*_@&k)S! zQ;~%{inl*PT^4dbFB9x0z`ZG9RKi)`%FPVFBQ$FvPmESuukG=o(CswSNyTM{sJ&PF zDJauGd5NUuAnw!L@J!Yg`g$jrtC?VeUme<$P%uxS!fztQe$Q7olcoY4vx`Usf1%cb zk|F_K1`9YEpf%x@=p$oEbn6cw8HQnshUn|d?r7+#px3Iuh?nq|i8G?o5q50}@8jPSwg6yXz>zpOA^4z}@mOK#Zdt_2!_;jl_XQ93)l%LZ zR)$BGLilhb&t<$^@Z|ky1m@Ir5r06R5a6fd;8`UH6DuO@Z}8L6`)R;3?%$xPkB-gV z)2&IztT88{_mZo3vF!4~j1+RL)iNP{M-_tvFOI-%%-5rIcp2~L-&grum)+J6;H30W z@ICrGcrDguQ|;wE&}Sn;bRBvW)DZQAJKQ?^VBSZG%YiGO(dy+qpn%*_OOtzRbZR*k z+p6@>a$c^4*SMUV6;9Y)K?|HyB_NIjNrl~UYOsR)noIs{CquqJ)4&y=b@8-n1)oxA zbzj*)h^d(jIKO+jGli|>z1a|2w37Q4OW$Kpb^wqrl(u3tVg(O!Ef9!qzl9UR?P5j2 zy~I}W7;smuSMi!5P5b0#YMe?0Rs3+eOIeBDO~6BWqT(Lfwu*c5)nCwwRlG#ySB+JF ztm-%gcA$r>c4VtyCFpRU(;1EjZeIHQ`rk<6fm5$54V}&bnN$qt8M7I_S9JBzCcoRYQ)F1-b#ieSIlZ8B~caKQE?_9RDj%N~Fiv%?UsuUa*BQS0?U zg|ErFo_FAny6GMEZaps%y0cquyV_j!5SCnP@p&R(w7+-N0kYeX-N%mm=y2 z`BKbWAV_jJ8`UnmyEw7KUh+};c>}MqS zjl`#Dl=ZnRzS<7jw2@bIebMDZiUZE{`$k?mst968e1ave9iNt?&cLT$r_s?qvZKcV z5*zCoBLXH__`(|)c4?@LDb7%ad@l|U_ z*bmfZ8!r-H+bahIcNFh_I5prLMgsH%=g7Cqe$Q3Qia$3q+`fQWC_DKP9QvsboTYb| z9(8A0)Dt&bROSFn)FW{mfx6=Mh>V5}L;WTAI2aI|-o^u5X2=Li6*8S(Z{vg6E9$?U z!wAY&=O+l8I3(0-2VYh;X#+SYG$8?BV>@LuK&wxn=!37~r1}G(S=+gzH2zdav{*;sHeR2(Q<9Ch3*Nj|@4MCb z8hy70Ab5C_m<2$knM;4!_}4Z2fx==%hh7rr!s0H-K0`4+VzUB8l=|rA0iD5Ife&~i zW?i5kck@8+X~^r7wZhX?t`**E>G5vvQ*`7SJ9@#?-k^qsX!r^qTyQtGx$H!LFSSX< zV@a)7Q{^=7=LfrfJK}@_v_fX~!B^GVe>DwGdwt zX}scupAnFp9;y~c@wB^aV@gcA2*zm-%)(pB<5NLGOmoY{qpi7kl)T=KM=*Ny5++%q zVx$}ZsXe069mP?=)1!W$7WEgf=-vPe?c2i(xtv;Qk9(Z1?!l^dp33gUmU0qJ+{;In z+OPtR0)DK(*O(|P0gBo9Q^+xoivG+el-PYx&BE+ksgbCa=&ULaW^C(eeHhjw{wKpw zOW8rxU7-)d+~xLOnh8i>l#F4xELk37?Y&NI_VG!j-_%k35FQ%ypO}=XCA6`|JXLQ3 z#Jdferz&uOUZ$e2hb_~`tM#(n`o{v4<5dq|HD2M%&vXZ7CeyRSylCa%`mz~$2-dI5B%+D;$R4xowy5zyMNm7n$Cprz zbRO;QUsqx1nB>|l;S1~x(7uDbIIT_Rt(~VX)T?bfGf zK^oiuCO5#|!cep$1$RT?S@bT@Qq4NTYx`XMTPUj4W_s`ek| zk>e88yvnE!nyp%;EwWE7Yu^=U85W1u6^>X;qYU; zXj#?s5I2SM0)0S1sNc!~h1IjzJ>QOFJLpUX6!|MCU~wsrHusxxsyS(YI9mCS=!dv#8BY>}T}LqIoxY zS)Q0h`)=}dzVQuBzQx1%@+{ha3;F;nJ-@{}@f}&zGLt727`aJRaL6V)pUF>g-y5{z zHm|^Yy`s~%d8DIHHZ~D{pZk7OIcj)^&*7hKpkMFsudpK+dzV*tTA!4Y(@{8&rEl-@ z(BK1K$w_10%AlCs0oa%lI{}K-_)|1&9o@Ohcep!@#a;U`P?yF#bcD^`J6d~>Cl*XZ zEa?>oLxn_Jh5P&w!|i%r5BPHD^wCBJ8Fc6Y@8H)TZbjGo0DyRfqZzqdW98OT4Z*8p z3o2gl(tOyLG*j?NenS!rCCq04ki-kBcj%#jR1P9^4OPnGLxT>&ff*HgArhDdOXz31 z>KR^%7qMJ4f)iV=nc3X4{hComb}IpVQiIR1${2e9(t4-6G!~NOppsS2w-fP_`I;Rlm+iT^+@yZB55QSEHrj!!B`DcQV&dRjnM=HvTN>)8{kDMI5O@j7yU zEhXxOwYitItxrbO#ZdG}M$~0FE3qXFF8tR=JhEzE*gfhdQ%Qi(FaKdO6(s5-Oc&b1 zMo^2#+{g3fa@F&yn=PXxtXK+KYT{L6Pr~j|&-8adiVz@Y4{RuGmm!i1-2wo7Yxz7^ z@_~hoKpk~e+3SQ4`M;b0gumeHN77$U_)2>9CzOt%X1e(Tb8y}t{8xr^4^R2JqR=;^ z+fw?!g+e85BAN+O?v(kQzh?RA>YpIEFJADK zeC>Q%@RG+BdW>bkauhe0xtD?7D^7IZ^%r+zg-#9m*t@#SSA*KYl7E8p_wuDqA0 z?TNFt(ZnOi*}iwv(lsvpZM}+U?wk+tw|!Amo5Cu0z*SXhTNUrnhN<343&r4O=hM#! zJrn6_SW97M)_0)UqWyvV0 zMY@sn7?SE0u+0k8e&ReO$`(~d3v=Xc!)+5QYC+5_<40w}#zbbmt&&!Q|9;#iDrvVl z(`+ZIXvIwYVNKhe8d`UaTdUa`hH38sRJJv&ulZ{{KE&21LMx{6w&iSJHP$L}Ub+lz zh|<2{i-M_26Kw{N`#=*dgkKJ#Crz}?xOUsNxT!Xf^NdoIuenx@&nZQ9}W3Qb}{H#Tid=`q{hElWm_;nyKmylmf9u^)-pBz^Y^yi!?a%cc-QZ2 zhev65%${3=fj#X5hl5i~ObhuN1Be@ew+7qxPSTEQ{LKy9?}Z#? z)P-7EwU&89OfQWP+mBZ58I!t;6)9*wbQfn+G#{QBPft=bPs%r2EABoX$9&W_!X$a# zr>B0u8ecw|Vo$?vUm33*K!^yk$1AJH6CQRCPvsFPG`ol689F#e^YFNL8n(ZZY(4;h zNe?Q2nBFeds)R4IhpYr3uhPQDSjlGrv@@^v+u4T0Pc7^t0m!Sg#x2%bR4Hor^#XuQ z^5J7hWsZ8h)CHbkPKTb8>m;T<9b2Zg^jQE2LN$01faLV*vQ{Z$J+K$DZ#;!A*CHDG z!15{kTWe!4W$c5y-}JYdp^3~%Y2hVOFxpx1aQrJq2P1~Ji5ij?Ue>s+Oh2r94-^f9 z>Sf$l7OKpvqKCal-Kfg~trTxrf=(~dym>t@%3h*XsI_(-y1nE{qYveqqEjAQ{z$m< z;VfdbDH%`dx{J5Jpyj&x=eu7hW~tV&bZ;P|{kqqXqUwbvuLJNz4fK-he@@$$YITA? zs$)GP=0|nBHS~QBwHb&Lcb8^sMPxOzXKOx9jhAMj;c%M*hTFl~+Q(v&SDBjfhJXtK zR++)z``K?Xu~rZpP8egb`2@9^gV}y~1dW}e1(m#m0MXPQ+8ltjXP~HQ_XsOD1lyHzAg+uUStV zT-)dhJ#{Z5wb2!N>bHacXX?O@QV;*H)Jq4`)?Z)|ns0{Y@!{q_FSjY*%TB_xtiz_h z&k^6pQ}r2IB~yI-`<%JH2fXyF{}v9D6H>qWuX0~tjg*M~^DYMa)qn55eh(2T8muRE zAHquVA}R-cN|&q#Z?Pc5J`(^~dzi&kyT|kl>NQgfE#K1a(OSmHZ=Vl3-noj3@Ky6N z6j!gz)FSNH^MznzYO;sk`$qqHsNVnLGueN+*Yo|kR==K4JE26(r$~}k9*VE8d?dT=7_EcN(_Kpf)W9O zGJGiQo3AyLxFhLFq`m+0(vwIr(}Da+3*ZI+&s5{h07W%AEzknxbR54xry7eEXqEZ- zC3JFuR-)jp!?`rUc34dka#^UAE0cGI7=+>D8S;03l{ubxt!XD<`iwA$L+D2{Vxb

-+5Xv*P4)Zo>sy14e)__Ct&wI{d(hC&p$&e z{1J(Ox>Avd$`e2$y7ZwJ3qc~v_sL5lIuFc4B1#YZKahxhUr7?-bihs`E)4jv>X-Zz z`Vi3xf2ymy0+1x4sokUben}!qHGKFAt74Bp=%Qy~>L!mbE3L)7g=UZEC=>pRa@^Zz z%(Vym{%@3{TyNRMxs+q$Qk`<7DH%BR6Uy--Tv85i@86&cOIvV!xcH9 z1LK)T@mR~RmR~xw6HgaPPbbT7Si#`Dy^!i-X7eKpsq-?eR-GX~V=h$>l&s89fZ0Vv z7ksSdKts3R2`)&tN{ZEajx<~vBzX=hu|lgtgV$o+Z1tEXuGKua(-WG%RtwD^Tni)F zrazrpt9cd3j~NYuvGprDvqmdL?(4JyzU}rJc;68K_?yP~7)(;+UaG%JD_K11F{}dI z;jhN12mtK7%WBNuhIa=hufob0`iPdU(i-7Wn%k?i?tH065v#SL#UH%L$;mEiZRI4d z^X)Pn1vue#>uF~ksP76)&{vPhxiI{ zyUSV#MX!Pm=Xt(zc`@|5e?9VFqj`Ee)>AzN(ecAum80aaJg!S^)@Y6EcB+nENd{j3 z`}xFfu+$90OoJhV2aFXk-Eq@>WS|pl7EFQSRv+1Q6@0&d?oIVZ0s!<{AAAhnsBfz3 zHTQlG(QB3AugFZ*REl1!m8KReG*{<#S-|F2CQ+fc-Vde!)cfJsOT8arUZ{R>J`c>w z8SNpy-c9#bXaT;_yN%ph06?j=@iE3KY&Vr$i7srEMfFx{eM(lUiWYY6^}kx^)|>XP z)T;BWc)dL#Hlsb20U&1|e2n(^+H@@NgR#8G+GW(>5rE|M2)Po{m~~oJt;lc(iXF;4 z3O#y>!SfSS5JC0OG&;9VD^b2T+-lwHCsR(qTIrmeVForPN*=eGXlM_Qq@wG!3NB`q z-YHfT*o6z8u;hHSOMaZG+a(^J}a{Kuic{X7F52mgm?a zGl`qzwoyA)Hv!g6s`x|z%Dk{I05voN0NAhk(w{*-hIewIS?%Bidb2o_3U7iC7wSn3 zHfaIQPq2U3E*|yDra_xDf4=4pSvFy1JXVa>Zqh3Fj77LAXgq+Av(2$jZZCU`ELoK#xqN57Wr(~%9sn}dgR+o zt+#9S3Lb>^6#b?!8PUUP(HsYqd`8(n9%}Rg|*} z!r$`GsFF?V(Qx=iWT(@z5dgCT<+U-GMe??)NDO#(I}ro_55%nnT%r#C)MZ8WH_|Da z*0}lR-(nJk~nu*99TH1hB%#mdWa1MGPkuV~7!hF7MHNee+^Jb>cku<9*YC(R6V+Pq-T54v|9<} z|FhPj%$(JjM%b;Kj;}$BtN_)f@@N?**RwBI)9jzMdc5@jJ<*+2dZMfN8i}p}REdtt zFq!E1Dr&e-t5kR~%9jEZcoX?`myb0j7LQX`Psux9fmZPLk->QUO6>;)=62-nv$FPb zO6gw7j{?xMWifJ6D08~^|4ZKHPxE$nFsAE&<{gO8f7iS5f7g4l+J4GY@7PcC_Cmb_ z@MLd4hp4%;uNDn39yU?*z<4StGgd^Ze0&b?PQ+#@M*nOM9pA{x7l<^0kUSWPJ<+!t z*^pI9?LLw@cGu$hu4UX!VKlJryr_68C z)>SGsSNGao;8KS+X$OzS{HeP?Md@#`nU)vnKN*|FsPf1Cr`#UQVeW>+LjPm@&DdW| zPS4Yi>BvQGQ~&1}UHn%W61O`1k1-1SB<~lW=G_TR>;|KWUKl4+K2=?lla97dk#y#; zR%`-Z=aP4M2c$%+ZC}G#HYHl(V~F7lO^KFo9aUEri!E^kB{~F7bpi!xBT}N}fs{z8 zEli214xeaaCj$qgLf^qE88-$P`^xPNx4U{$$HS?hnk9#8%a(LIJa^k~zFLFEIkc^l zsVIGut`#*mT!OX2Th71w*yv7&>{lp+PNi$3%?lUXSCQ`)Q|lv|pLtlW&)~)MkXJCt0znFUZBI+&` zFXi{|>HSfyMB(&Yp96rfF%m|t{sO<-HA8dh*-;7gAE;lG2lkaoUKlv(Q9lS_mebgY z<6IcS!16k0cU9j!R7g_zxBLd6HTETAjLF@pEW?sJ<+JE4^? zlmQznO1O@Yj5LazgVppUd?*HJ?0x(IWVg`PBIr zEwEbnQHcanOD3w@LDjv$LFgRs%8`;G7>o7jXP^ZtO-+$7U1jVexSiZ&x2Y~p=hhkQs^6Gq1&KzU?=W}WO z4y~HYLAyu#9Qu8SRzK)Vc&O1F2Otc$^!%A{C3~Lb7tsrD{YJ)ab0~VJMt;whqr$R) zQKeFno+_4g<7^}UA7<0LouKZIr&GyYT8E%udq6n=+1G$S@(On01{W4>Ws>GLn-+mX z%cn#}>V8V|&DZu2u4E;*6|7Bh`M#nP&fs~#;Bw-*chc_i%7J$|)&}}RC<)a1v=&tU zyIB~wH#3bUyaRyC;2+xEkEOd6O!JyS(mxCF&m-WBl;flT1<~m)ct~6duQKE}Yf2qJ zVDNjS5q<4B43IhC-uSk5j}FSi*ew{Pr)fJ6p5pZkqZV%g;K3Fl>>k+wrZ)+Moszj8 z9~GW6x~#Y-<1`6T^5lMSpE-uMJ;5oZRfuriPoZZtPkv-SH9MpA$Ck{NGg<`ufu5ex z8uG#0soGgBR&H-hIji{>>9s)}JXP$5xK>%>FlC(8W)__Pt?Fzwz2;Njb6O?8uJ8h< zVYUnKaEhk*Q#@{S+Hy`SSHuHuo!+_wlIT=~eoWVV`Mna7>~^6guQVT*Ay)ge8${Og znzu`nT#rVy?Y!2|J8id4amBf`k4f*r-)sdhXr-CUUJLT@laqQk)xD^d7hRf}^OISmnfWQ1Wf`B$wh4mSVrt2WjpeX70i161vj7UVK7*JBp-y`&|v>bBdL zG)G*9N8&dv#bwMCB=DCRjiiZ}wdxEvvR~H9;40u7m$e$^tCQ{dU7AdOSF{rTJ92%t z0+K>Pz&nV@xL3%8E*nj8SG35+g|^Fv;l)A-jcb%h1Y4H33P^Ks$DF((X4oYq+y%44 zAU?4mFR_ZeJUvS{uVA2mJ4=6G(aJmjl57mcX{vBl8yegmZcG<7f)dUGN0cKP0Ln9n zu&uhP)hqJ+YkOZk0VIdbjd~x&upKHS*RhWD^)(DzD;Z1W*PJ$7!?2aj^$4Uh*D!30 zw;03rlis3S5o;AHbzK|9$IhY^*R?@DtA3Ob?G3G=T(U2&h;lzt&<$;;R%fQe-2bP& zFORR``v0DL?+GCxu|>!t2oi#sxwGAwxpR|jka8!fun zQdP0E#I7xhqDq%k(QA)g)$+V&Zf=_Ret*B`@8|V;?tPs(XU_UL=X}m*J7;F{nkLao zzd6q0ea2UQb8OXCtu{-U3dQDweeQMLTCr$~;unNUj#gQpRGkVav9pQSIwAzs!2e0r zqrYRUR#Ysw^tr;4^(zUw4IO{lXw{PiM(CEA)*k-?8kG8zvNNj%&Lwh;MhmE*Wg&dqR zvm8hlz=$$^lYums&-_Q?w^rgK*c&cD)6dyNw_kw7@*tg_yWr?V^Qog&XZlhJpi2-i zKZ)^LAYu*z|9%oBopceR*oQ0W z`itn!NAdLFMQq!*U5QUEbfGOTVecsJlB1ICPuld7qoKX?D%$yyqd|o;ctY~xb-Ke$ ze-r5yCVqm5o&Jb?MA-jaNw*=VeavU{_e-W34%RD(cD*CtYBYFzA_O7ew!>cf594V$Pt~qMQ72p7=1^o;KFGStKMxzUfW*7P) zOz&AKrTQzlg_#3NbULu_@A%e=#th4AaL0}r`{IUv=BEiE9h>HK}evW-@4HQ zNcZpKim@nUO?-U>`tPQ59i%ybc2o(9oksxJa136_Quq-;^9cM7_*S`H2=pI7LkSrY z^{_UqfOu(5*vyw|05Ug{{E~)i6wM`Mm|a^>ZxNDUU*4F;1d+z}i^a5c5Q&SbSXyve zbrftjGEgvWB+UsT&tMO^;D;a*W{X(2;>nYI8=kKxreNJEJ_D3lynuzlyG|Od6BEpJCr- z{~}w1hI`{4Kf&|*X6@$hV$nY!9Fs|I=TP5>Mlf`~8~m8o4IwPq&=Ru8vmqoZ%26%Q z>sLbod>T#@`Fou_jLr-ptxe#+4l@iq(kX_^{$*npKUYhV`lF z-z9;>Xq_$HSq+eCAC+{j#mYM999p${mi-Vc=i|EOj>**lK=FR~JV&cge9WNwuz9}A z%S+0HKZi1A@2kY3_loT?omic;Bo%B(H*#%}bXRo}k6MItJV2jNQ(cPBZbXOe zw3n~0PXvhy?ipd$vb-;SHG;%+Uhr}Gl{}#m#xu@$W+Bcg-_7RnCF8g+Z01XE@}CWb z*coR^V!^(CWlEKPB`eOiav{AKLAKOWX$f^sC`UC->YU*F=3Tn8Hi@z)zej(oP3lKC zA5g;o<9rL|m_b;Z@o`1S4u866R3zz{QnKTgX+pO3VRcJeA6c^PDA+L@zEl4^LP7Hn zrLN!Hh5pw^05LFKaoErA6iFJ3<*Mlw`CqCTYgJQbvqGs&tJWd)JyrUdfNjaFhIcZb z?&13Yw|;s#2{FFweXZ1V>}+gJ063WmIA?MZ(ulRfeC%vGx(=xu`EPn8(l2-2V!dbN zgT6Gc4v7fO0zg|M&C;`h6?I6WefiJyY8}$5VkbHDUi`3~I_Lz>usZ%%)YA$RQ+Ptc!YNy`xPARHdi zJ?%SmoK~wx9@z1fnJRHa3Z4^c;?|E{Xva9RuIf8)Jb8i-wFNUk&`)mC`~*^)#?~iz z`1Kx5sZZpvh4(Db0i}Pv;qx9f=#u&*B)AC{Z@O=6I$c|zD0SK{{ufEhpxeAT^l^O> zZ?D^p#y231y=Uov&DIQ91=LCQ9fQD)w$hmF>OkdWUnPj0E0^%#c~M|Y)18UVe!bfs4tkmQP;t6=sf7gM1j zX79P;GPCz`LsH8=^$wlakZ55kcLGD<|J>B+hU8p0c2A)|bt+*{4?EGr@#LmGdMe%3 zh_npv*aWHjz(FnM`E5sPYfS2;PRRkYzxen`DSviY{P`!uU=SjGSEeHU+y6)}2&7M$ zP6st6-jFjLN-F-X13p?$KC^%F45dwo5qyuBQt$Jy?HOHam96!Ef&ar53 zQf&4qiuS8ds?zX8eCzev_42)Io=9SYr#Z}uzHdjnC6ZJdrAH%3O%m=an&zL?5gqCA zMA8Ib_%IXdg!?8>15J7YZFzZHOZ>M4;pJ^+9~LeVSpaTKdXN)tGF2J*n5# zN7m_tDEe_WJ`fg#TdX@El=U^OMMKk$yto2M?MD1ijLg7wP*Lhw!;V zlnFOaoK=`f|87na*cTD&Ke=4GF@K<;wN?tl1Eg^e$hR+buQgfzQ)CscJ0^$xl3KD9 ze@~^k*By=PtwuzN1ic19K&1F60+vR;B$Xby?ntOH1QC9fJOd$9x2tZcS@nqn9!7nQ~=KnO+~5B2VKa1Ag1jun7s<3h%mm;)iP!B~F)7Glf_ zBSGPo|@8Is`7tdSG-* zFQA%rtpEGK1I+3Vf0#9{b`B zU!T%kJq%j)wj(X-yBACP`-cVZzXsZ)Z_rV<9TQqkc9%@es|Y}v9RaUoW?n=PGn3}) zfq*qLz1_6h9ml}XOFE#jEEE@XI`s}rgfPZb(5@)~J1{#-XVZ`FI=V!;1k)G?4K>t!%%O9r zqbPArWX@1i&EJ389?w4=t~j@Vun2(Rc?&n^N5^M{pmaz6~J;50tdxZ2mB zUTSt&Ju6^8xA4id3+fobbS%nFn3Hx}<0I+Dza4y&RX-0Dg{=efR10&Q*$yFJ%dY~wB*RRw zbjdf(gox6FJTt*!{s+v2M=(cN0-=9xpgTR$tU=dRdNb} z%ad~}x_n_X516#&5F$#l7EY*VCQP{eG*mBar1YUf59uAKr5{g!d+7KeB%dqc)L(M+ z^+zxlJ`(5`j~q3<@|S^r%mYvK_v34mJI0nKJk`OV(uDNV5>w0)S76ffOT152^^< zKx%6zvdDiQZr*Q&v|MN>b=sP{aL5#CM*0>VGc|@;g_B}u;N>N|x8#}PcU`1pevOci z!V=~0@4s?+O&sF&P5pw#If!K2M0+|&(0v}X`f{6w`sLMFS5 zwM>}~{+klo`rR5^bm;cxfmOS;Ila`9)D2x+8nduD4QELkdxfgB7fa%z36A`kp#LZN zXcy%t9~BP#kK|(;lx{!yC`j^?kKAo#$wxCY-6HZ$lKkYuRvPoDnMFR-+09DGK`sJM zk&lsxDj^@E5VXiguR#93^jRJ{O*kFJlg4;^^g^E05BaNU39q`;los-&rhV~MdXgud zYUQCAczxwu5+8W`C2dM&Cuv}JgwVcDQqOy~vMH+gzh0I+7blYDgvM_j7zK^*#)wM3 zjT0?|$Q>C^Oo`8YE!zzc28-$4MgY(4twrN=_GdC)>uwYxfo+5}ClRP=&L;fOBEvc) z5pGT^?rWMpJ}VhX|8|n5P3xf4Fmq;~1D4Lk?&8+PCIo-uty)z}Ai&F<(O5KnMj#21 zhd_fYc;@T_L}qDA8HlEH1yZ;9a-{a~nO8g?lLv2`dD#D(jcBqN4qr7J3Ay8KGd11! zRsuaP5WQXx++tk`Tl3NGh-$v1m;C*n5-*@tm9`W~y`6(K@4l&@cJ>*4E&EO49ZSEEd@_up+Eu3UYBeksG=k20LjRUYRO3lK z(Q=#Ma?nnnu`hVejs6!yVR7--Mz^}igvz6!W>_OUg1S`F$UclO$WTc`TWlT7)r>ve zO(fa9g^dB~fqOEULlE*E`j{@)NbR~CKMvq#aXndN$;c;c2;91wu zJMm^(oK>*^XzI_MsS}sJ*#C4&ut}3}Bq0f>Qp~OX@c-JT^@8cZQ$t@gpuf6Fnvvl@ zof8ZZ_y1l)xz7`F4R9*AZjk+{_pnmrS~Z zG&8eU=U$r7Dao*g-(O8vC6h@ZQ=`o#Z9ku4X{Xu{Vbw(txLhx{ zwGG`22FwgTn3wE38&!(4ecK32xzZL0RB?)o_C`+aZN)mmw6{%Mz8Dk5|*6Z>|`jhMi`lGO!zN!qfz0gj- zYDF&Cxupfm(uiQQp9!NswkDbOcN4J>B^^XNBiNDKS4FnYBO ziL7J3+6!k7%;y{-c9;kkKj%R=UwRmgZA&8U3-R1_TjC8n58<}--8sM2qWjvCF|jfr zfM5c!!p+YJ_KOcUB^O(9&*yLsFrId62dhjLUDS>^JO2naWl_SD2*5r&WA|L$l$dHR#Xn37h^7qAa4g z2mzQOX6!d1{W?C!oMpWF41<0UPZI&`;b!3yu+1>wym->I0etU!7Po#B>p**V0E$I@ zWT9B-^6CK;TUMP`>_}omCYHvGr))>krgCFMSiMT5IUPwtz1yHCCB3?Xpzjbysyq_90jaE4oN;tg7ZP1L7;#p|Lg)uwNVBjXL(1ei7D7*T zA@!=RL}Xx4SBB7_uB3r&HcjYCT6i<<79A{eI@C`W%{kecg+!1ZlVF*j0yU4=B^3T` z(Lw(Kj?HULdELZsSok$_+5WHf<@`r|)t;&_b1l8lmBfY@A*cUU@r(mBzc;PfjW{cX zBaBAMJV8`RE@1%X(@()$6Z{zhPe1t|*V(qF1W5Cot3_9Qr+Uy;-AK2l$+ON(GICq^ z-p3;Ff9LfpguvuQ+Y_8#GQWG|e`#C}{kl7t;B0DiC;b}QOS4Cp&3+k`k4QH0{;y#A zO?OfU`G4w8x;D!xY34;_@HaCHq0(l$o8{8Ya_ObzMn6Y7(eHW^IevA;K%u<|ZGjMn zlGf*4=9?*IvA5{X9;8;vzsKKC;k_d;QJeyk^ZioU3R_3vk67V35Vy@4{R7m6_@d=f zJ&B%4wmH3zfxiA%EJT_OnwVfUsQJ#BDQ1IzAOP?a%e-O%%36R=`;z?4TTQZ0H3{k2 zH$^IK(vlba;(aKd^EvDqO-J=0thX~-@DJ5+gv$0>G*e6|>9wK^hs;x5J^c)eq3xWcWtU+jt$)`)kf0CJELNWmX49EWn$qxS% zSktjP_+Lm0tZ;cq9DYbZZv5xh!%B|0_uFJ?e7ou9UZhw~!}h0Tq=5t#P;pJ)Dpqul@#rghD{U3*#A?$&jZb?szb+gaB%>zZs`b?d5F z*L3TeRmJi~TG#Ap^sW9xwa?C>-}NUOyo?n~tZT4!4YjV}*0rW}jkK=O)-}WGNAuIbjblXY!pUDK>sr&g23N7XQ0p3=LxVH0$5Bv`HqRhYtp|+5 z#?@&cx$iZs!*t&QY>o8p4czPCn~n(Iaa@3PA(;_b<_?#c>RV(cm~_GSqIv0Akq4g&(;s0)G|B6nSmsKU~cOx=}&4!<4bBUkoGZXGBZ2{ zXWeVDNZy^vFb)VjjQMIGU!O&p;G%XqBooZ28GSvI%*HEnYyZBv=bzsVt+dt^I%zmb4!$)O2v#d0hZYVe%k7uP z(ZM4iv~A2TI5dL%V2d`Z!^_qEwPjW!OyQGS=MabbmlkXuNjlhqL#LZ4dVCtKJemx# z#TAShO$OS$X$e^0_)TsR#JmZ&6mB$}`P<6D=YyDc39c^O#DTo1S*aFgJkMbFLOu#%D5fF7H_4T(X_Lb%y*li)Jpdcp016X4?E zBH##IG0L8WJBRQ|^Byh@Zgw?9E``g7+YWa;fxb1Cw83ltZqyEvZTo1IaU`lq8!Q6z zcO}#Bo8e@H&y~4Pk4dG|Mw7&XN#jVCt!i;*iurD0#$>65_2}L4WO9vpjnbGn8Lmkh zlMI*9Fl~PQT6A$X39TC5ERA82R+NAyTF?#Iq;b`vPg2a5fYYdBL&1e?QauPCMfv+> z(h^H3aWa``WigvDUDkfOZZcWW#w-?Sdfu62rVy?OF8r5de@kOoQ5 zUq{;%rm%GigAWP4_6j-N*sLp1e{z!)CaX~jlh-(fDc443!Q?4q7>OvGIR}|@kg>RN z!QC9v*kM6h3RPx7)0yN#O>g;Xo~{<9F^bR#ED)G={(DnrH9?A7Uq1cF>hkx=`Q`8P z)|9_5T$kc4-@q47Wq9g7>!}7Zo=Rud`pcU~I?SFHl>ivH&w2WOEnB|9jFKJ(dYp$I zBo9wvpt@Q;PF_=BEFm8R4Kjz#{P_{XUrAtW<7THY^Wd_kVK}F!FzGW=m?LoMGcmJp z>@3V6T=;A7;o@G0568?wJt&ibGWepjkw+TD=HG8sib-*^Q<C8?x0Ak#*qTl1ET7Z#x#+PP$+xNiCO_wHpg*2PSkUy|j~DDpzUxRSfEtRED`q zFYO{N%BAJpPG!PxA^mnii`_&GwGsn}kSw-hie0Uke6?We4`g&u)3TtNogHe9_<)f^ zM?W><8B=M*3DTilOZiMI<_KJ#t>C2-q-s#PDLwKcU2vN8FBezXq~I~)sy8dUGUk2O ziZNXtTs~X?)MAA3qxZ%WG4{yktx5@a{u*Rl+lom*syTUu>k3X^C8`bY>KuBVv=qx$ zo--tk$r}uIXgW~4z+~qkz7TONeCtPhe?%HO@}H#9>(@zZM==6&F>&K%+!Kn42k)}~ zs+e51WfUyGL2BFTsIXc>JY_O$tu3%#L>QJICW9WmNxX@HXuOt=fou#gTQk^5W17P^ zyXS&$qF`RZ%eP3Bty($A1_C0wawTbN&nNWSZ6eu=2yJ|av`~js@E6a5k1Z!=a>@N` z@L@e+=9kewAvS5}egm1$36MPenDewdJmThAs;=_>M>8W%U_a@9~@J+H8{8W0NuHsOC zJ4fInt^uqM*f^yFoL zG2*m_1!VH6R`cuE2`fJFFFyv~q~6D5=hK4Kvrow5pmKs$&hAzgM-Bg`6%&VW;T|kp zaQ4804WF6pPj8gW0!%3b^_d*I`0G{-gK);a zR^D=`m|v2i2pO^vX7@i;!2y2-8Hi^P&N>Q0@xO{5spSADMmZCJbole&@{ZVA(HB8q zWt`82`IG5}nW+!|2=1G~XK+Hx#MRC~P}9#Z$+xg1A04<1&)lA`6x6LjAZZgOiY=3M zJMM8R6h&#D%0aQ!vQT9c+^>g&whU6xJ1D4S<$Oe&Ef&?L3xa~COXXzkU6>DyY2glZ z8^2;4LolgL4309GbCU?)TtP=7X@?3yE$r|oR|w)we_e&3H%wox7?f)IQ!56kwT_^C zEb@0jAt!tmn>^8U{vFb!dLU^Ol3=YitE>s}@ zNHZCBu<7f`Ox|C~;L6Dia|<|n7r6Q$nVI)Eximel0`RaBq^~NVe$`T#j9OsCeyMPEvE9thTE<%QTL%i7+G2`_BLR30^O_~^kS2aX?KFd`%M60YMnk|q192T_gxvIMs^+5&(3Ct9@A@!lWR`DyTfi!bIO{!Lew4$fd zOmx|U!ncujyCkijsY_}!zFLqTd3hXRx^_$J_DyP+c5ydT+P|(mcc;l87v7_jss(im z7l!d1H%J&ZRF=3QL---|Otql;RoNbdX^}m2Qa0*lhZR(=9(2s^Z8{>2G2qM}wmrbXcvRP5t5eMHGyV2}-lkd67XK zDvk*1Hgf3DEc$a~P{XL+_O?T_I}IG4ZOQ*&xwbYC-dl|vGk$16?K(ktUOz1|D6L>a zY*5#ru7z7tEQC06#_yXqMZfsvd^0=`Ve=PP;#)Vk6mCfk1T8;*xBtHAmx3PgK^wMt zSFk(S-mbx}5w2|44A;l5wXTh>?XJD9A6%zh=UkUvcU(_gmDCz)jM_xyR83{H2u;>n zY4^1ty`7$+=j(;~as7&ZOMjrJyEENu++VtPyM6Au2J2zs7)C&|9k_AaMlOl+;+(<=*nE@~85b@=%3w zd0l5+S6vQufI3N?uP#-GXiv1^IIhd2LsWy8%J|k!SxK}IC59xpDHg^?wEq5a~ zlLgrdnQUAOt}i#2`eC@2L;aU(h*Y zm?z7#+Vi#9P>z2TDzmBV3v74i4(AWfOU`P-Bx#zIDSs!Qmc7p@gOsDnH?FE&N*?<~-(!a+`>w5E|sVCQnZq(Rad`J&=*RdzLVNv<}oXIz6^<6L*uaILnc0QI_QeY7!} zSF7yKbDwpm7=4XF#th>PV~Mfc*ktT8apDLtAKnN2dVU*!kpGqci@(d)aFYxVE|WxemF0 z!%BKjU7_w$_p2w>BK3({NvrK{>7MRh;9lqU{OZ2r7L8|&`RKtG<8O0lix_4xJO{gi z{hDRDWUedMhYRM-Mf4K?7Jrz(z&CNWa2n2Morh_~b3u*T2udgAJLR zO;Sgzuc-&rQ);m~RtwP^>hJ5T^>6htZm*lV1C7o#mKk3eqUU?eDkQP&b3yUmh0Zn3 zrh+Q;5r|k*OcJxjH^sx^1u;QVq;%=1lr6t0S61pOs&Y=bt%SO|yGFX!p{K!Wq{^ya zsLyCawO_TXX!8qwr~b2E&n>$ry5DyH;Qrlx&ppwI@ra(ao^L#7%&tPl0JbyJ*!k>d z>~*#x*VfAo;6CKmbNjir{AJ$Ze8rjT{LI-|7$8g(z7b9cwZ!J)DDhSCU9pz5UfM5t z1xO%&Oc1>58sMWOwTC#RQyQ@{zyXzzMHToW%xNEwT zK(4wPBaE}gO(Wd1$+OS%n+Z_3*JjBk_y!6)gLCx4r^7k+egRQswg ztM#;&T3c-{XvTT%k>=K)(TD2i_3oZ=pqVyisTV+e#BJcd=l=%v-MZzV45!Xl$rLoE)WtDPB`Bk~9)N(a) zb#nE?6cxJu!dS#;%{99|OkbpL)-UQI?ym0MSV^C_zjp6*pTxp^;PwU?wTuspb;c!- zn*`4Y&t%VZ|6H-=N2VC2DjSR0TE%|FhI4V;JKU#S0k@1l&0pd@&S#vN)`U^#O6OP3 z1J0AqP$62Fhf&HG;zdF1EDpd*TOn4H8c3WpO!-_1aXkn6(_3AxF7SNhDfArldYEJz zvk?t7WLvTxwkTvZXb*g$z zeXMrSycybPZLf9$6tRw;sQ1vb^c;OHXjf%W#UY?y2i?E8s~WM!IO8>Akx^`OhVBc zY$#WcOXS*fBe-lY_Yrr&*&D3#s?bQ(#4dn4OsS(Jpo&pIrz2oH2VIrHlpCwhs@>E< z>Le{!TcG7@1==3%dn~<6+8SdAXyG~IvhmPxcxrhXcm{hiF_AMpUtr<=;DNkh(r@Nn z{!<|JA^tf32k+w_@D-f{o!%G0E|xe~IU5U#FkF}`tivEa!Z6kspOGd@KS@66x)dtc zkYnXWvIJ^BP#!10EH9F)xMEzQE7{e~^|tGM*Gd3+()F@BM_sJutKX=5)y8h#t-HT) z9{?q|>b~y|GD0zm%|N`D8=nH)qsDK>dE=hfAf8lDZ%>A2s%MsGf#*H&xXm6W$Hoi+ z#6#IJ>>Tzzpx;_{Cwr8w#MR*vKp~&up5u;lZhj{(I5#>4VU-Xe&J=HpQ>1^SSHOm{ zL98CRs;E2EwOXN8+sHHS8)2RZkKplmI$8V_%Ws~ISz{hi{*>L!?cyf$^ZCX6CRBNt zKLI9ko6iO*S^yTZ4Ve9d^AG1W=LcB*n}w6YuULFH1U$7bK9OSO1i7W`lHZqqRuWWM zO;t107t}2E6-#tEuRYWpdVM`fck5}uuEDy~-ND_(JqF@RE;zypFNWx$JIshM1Vb}A z8QmZej5CIMrg&y}mU}++dG`Ga*w1cvVut*A!p04$g|{mvUiF6 znf#T!U+$>%P{t?|mA4hDe6PIf`V0h>sIia(CRhiV-yPHU#|V9MzllW(&`kg*uE zl|ZEGU{2$l%OUUlwx;2_CRZ-chLvxWA!?k&y_09rytI0LynsXhvF5L6n5N-lDjk}079m&UGi2Ly4`IjMTF2K^+#P8z2 z1?{^4R&|?CbUK~AAaISs`uWni#rZvijqA?4PPs${lXogfhdbp z#oeHV5mF4MWR-MGIww{2LiSCO$H=R-_l%E?&y9`7Zo}>w;(5h0$FmIczuqJ^MK(+L zs==;jx3Rm}AKBm8SgeBuTpsrcx0&0+&F2gG2uOc-omuie`5$E#7UeS6Cf5VkAL=1J z#y!gYjX8qFeoEU7>*-6D;c9TvoVPRgBDVz9tm6u~Ly&lX=FW0F-bs7F+B&d>I>&(XHQUy6T)wTTkHr@J50JL-ISWhqTE^zQ6iOk3J3Y9mC_ZH zvsbCMcsii(--2#k z^c0)DhXKK4MAg_xHUT^$jqT3%W(To}&JNCnU^~1pO}r@IlpCT^Hz?**Wufu`8s4Qm zQo>zzpy(v3{UDI7Q}?Kc)h^o05LRmG3-!!6`t zz=Rq6JA4wj*(PCyxLMpO-W7wTY7(!sQ7&nXpaE@g-*mSyMuWVZHEtXK7?I%Vc1xHW z$K`NufwZrMHZ+LO0{$%Gm+@co-|;6QQ(WW!;YDXFFs|WVXO{CL5Si^jo?o5koRL5r zL1-s*!y=j`yd!)ltPyq#=Y?Cs6Co7LWsbNE40We?Ks+v<5wD2%A*k`vaA~kSMW3O+ zrFV31cmHABFzTQ~gFLT$sOLk^C!Xsb28XEQFp5LiFQ9eZkR&-vuB@?|_YXbRo#QzI zHf*=nbXB%CJC@x9Gz;Upf$@IJ#X}J7!EfcK39B*ZPlQCV8^Bm1{wBsq&7=|1B&k5! zD>>w9a=P4KUMhbs7t1z`QBUP#Wux-9QrVROopX+B5$0Z0mqALs4TY|v-dtzW?OqGB z--EifjXRG;XX9&O*)`!~ghYYG2owr`2n|I}Y%BH^hd>hiP0Wy3d5h~$wYz74=LOG1 z@VM_huya{cX8<=|2FKXOzQrx)KI2p@&`jr>&Uc;5oD+m)Sct_!WpRX#0+);`vLp8H71AI)9eNICi|GJ43Xq( z?l3@Zz_;fI@iX}kp^omx3}5AM0&ARt2O`^xVC-{*W9URNMy{$DBPNQXm;!R$TO2Bm z6<_sYDBl%71$ylR|9UL8fRZ>?c@<*hTIC-MT^(0~ONR9FoNI_{ylc8^zAMkQ9%}m` z*DtQ_YJc^(b_bL*8Z4$61n+k4S)L7^{hk}(Zg$I9T9*}ACeP07LC1pGVlEDo*^ckV z_vH)t`}{hm*9D3H6>+`z4G`)#@tznY)sbG3-j!x6^Ra{uD?cg2v2wq19dI3WrDGut zRwt^{)qUy@5HA~PEwn6cx;95!rLEPrfYly_KvGMur>E${_3`>C{Z9~aQ^T&|j&!pC zu)Djj`vv!CXeGJsdG7bz=e+Ko#`DH_D4rBz=;y{4#xCQq@uTrOB$*nX7*Dq6RnIQZ z2~%3nw=>7li_UB>b{U(`Zei_QH7<%%I1kqjI@2(2EN9|TAy77yug53wBcK=0;Pd!T z_%DIJ-}685j5E|(!x<0BaWKgC7hqW4)6Tz~ZH1n~^TII9)?{HO*88X6^V@_Ugww+B z;PWFeLQBQZ#Pd)=qAa%BMd~FDf%Z5>nk~(hmOyW;?rMx_`B6Qio>ecZ^R@T1Jg}nz zZHKl`JEZN<_v?rC6Z#1EIQPr$9QWIhBtI}#n(C{!&`&Vhvt7`y0nh=zWPf98L)0G3 zy~KIB>s$-ywR@l$ML6p@KXk4aw_}nRsg=}28X)~3RfXWO0;=g<`H5`OyjzORRmIic z^{VSN5Zgmw;>FrMEVg=jOQ;^B!BNe2PwLx|{AxZ2!ToYT3-IZVg`ky9OrR6(h2Dosghg^LTXca zqP$GrAvXgr7_BT&3LyJ8$9PN!ALyulul}l5g%HzABf3|AQ$MPEZ|XJN+uVJP9HRiH zqesRoo;=S1&t;48IG7{=9|~b%GW#LBmiq~6#}LTNdxYj!USj~5hJ%@n z!fn`T>}qy5^q%wVW%dT!2jur-4DDWMhex>+{A1@*F$BWHv(h-}9VtpqmNVsCd5!$H zTu(_+ZYr15>nhb=(q~%A|5y56{YU+@eoqf_N4OKQ_)^>hAPG!$&vq|%uX3+-pK$-} z_A=1_>KeL{V$Kumu*m3Apy4*QDp0Pu^BM-cl2}bVC@#jp?vW46zsXnR7odE9szgEu zXy9s!q21;BMisO|{af%6hh=O_a5j+}D{a*_TE70Peo4Opt6@cV6EOKfZYJHIr@AJ3 zwa(fwZ4``ZbF_E0kPej7sT4*3W9 zS2@TP>Z;+&Qg6W25~U?*-L(nYWNj(xx~V|gDb$Ra z#vH@D82ZRpMk7y0&r#2>P?a2(g+hap(GRxF*SK769)`akKad~CzrxQ0I<|+l`vWWj z1BK6pJwVBY(tEHV6-axeZ>7W1W2vp&N$x8TktfMMxvH`R%6TvKd3CZn4?@UiYJqx5 zoep7jiT1I!S@U_dsrnhrP*eB&kbQ!Un#MHaGvg}po&%(CKuCG_aY`S2VCGM?S|IW(su^w2fzc0^+)JnW4Gjf z7Sw;Rd!~CKj4@kag819r!;6J5+Q>B)z%;c26S2$q1@_z9FhXts-9PO)@3-LQIZU%B zBe2PA2Z$%HurimxD||ZtJU^6Q%5UMD!4}XB!gwZ@=X;>++nxKIe>-anobUpO`ZUN< zL856(QpHqpus9wIcd?iUIm&xfya>7OvFHLR`9xYLeGh{4DW>IteBLc(NW0T|A4*mIH~Opk?pcSL+BHo-(>OL@{k>7G=aCK&2-Jx zT6wm4cEe`)qlYPSSaf_9w_5m0`UX#=mVa)RxW^oazs8SUy~on6_s&bWr}i0HTN4$8|b%e8)=}FDZK#!WR{CuD=aqT-E`U+wehlkJb)ycfABu6v5IlybwWqVE2aFzLyq-5a3q9|9R)YC5afIoI z#;QRj{S><1A@&qF!4(LbAzUV8f!DYdu#|qy?dDE^J2v1&UWa-*5PKmL_}8({O>3B2 z492j&tbD2Zv~&6(XjH$rs~eystiL1ALLz>_Io6rue8U+b#0g#%#)EX&>4uAw#OdOE z@qO`gaU=B9L*g&60^bpzi1Vf8SQp<)7o=k83E1o?Spzpash-!aYwIE1J?C~AtBiaY zp}vI;5gdSFl8I&M3S*l<)y@Zn`BwN*I19_tKadY1U>Qsk`=Q0LVxCvb2e$tT;i{Tc zA4bCVkZbx&3#Ap(M$G-s(jTDyiLhCu%g@V0<@xe*`3nsANid;mN_}X2?P0d)ugp?w zX+N6$H=S7e#8;fecXAFAF2EqyR(nZ%O?wC8*gox~_9vvFc)bNSZYJt)>q~X-3jKNa zH1}QXV$Fr{*}>Bn(hzn$GKguO#g@@3wg4=7FqaLDE&@VjZ+FIuu#v^XMs7%H zQU_Sddr1AToslVx#-g1p~VI4+$AUA-V(fzEv2 z3x+}D%5u0I0dms-#-tV?IVyO28?ceCaxbV}vkAYPul3Y>of z5O6z~@^@HLCt-p<3zl$1*VYX}S>Hy

QXJckeHNP1tB?>kvIDrO+-!*ApKv~yYh@tmApQmZP1uUoLGNWCfY*2G&bHv8 zr<_GzXA?mZ+`@Qa3KXS<(9zaF-989Kvq<<$s3=x}tXD^@CpH3Ybb@-PV27-;*hB0u z4iiUch6oeHhV#wVGNa3~32k685*+!D_We`xt^h`?$M8cvHSF3=uvU*PVRoNO;5qREp(r9pTiz(v72rt z6=HB?@HnZUdwXGdWk6rf6h~rNPZ4uq9i5GhoyAaO^1xp{h3>mq{8}s&_rQ{HP&|dj zUL>9qeU?SxA@mEp!cGd6BBf}IUc8im@lzySN(QpGgTg;sng`Al32aq>p^Jfy@xU+v zhVNu-i=`V%FJ-p!wbIV@CiKQrup`z~(_t6QQghTdAqOo~KZW&Yv--7K2&2pa^`Lr0 vJ&wJrU$9?xPQ5~p232SnqGKPY9i+KlT0i;^A{?_l^9t%$sPMaOK1==&?7jw~ From 24420491eb7a723d5ec6f6e0043f13ce259fb9ee Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Fri, 9 Mar 2018 10:56:08 +0100 Subject: [PATCH 292/658] Fix #45340 --- .../workbench/api/node/extHostConfiguration.ts | 17 +++++++++++++++-- .../api/extHostConfiguration.test.ts | 14 +++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/node/extHostConfiguration.ts b/src/vs/workbench/api/node/extHostConfiguration.ts index c7c10c31fb2..fb1ac12bc09 100644 --- a/src/vs/workbench/api/node/extHostConfiguration.ts +++ b/src/vs/workbench/api/node/extHostConfiguration.ts @@ -100,6 +100,10 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { let clonedConfig = void 0; const cloneOnWriteProxy = (target: any, accessor: string): any => { let clonedTarget = void 0; + const cloneTarget = () => { + clonedConfig = clonedConfig ? clonedConfig : deepClone(config); + clonedTarget = clonedTarget ? clonedTarget : lookUp(clonedConfig, accessor); + }; return isObject(target) ? new Proxy(target, { get: (target: any, property: string) => { @@ -114,10 +118,19 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { return result; }, set: (target: any, property: string, value: any) => { - clonedConfig = clonedConfig ? clonedConfig : deepClone(config); - clonedTarget = clonedTarget ? clonedTarget : lookUp(clonedConfig, accessor); + cloneTarget(); clonedTarget[property] = value; return true; + }, + deleteProperty: (target: any, property: string) => { + cloneTarget(); + delete clonedTarget[property]; + return true; + }, + defineProperty: (target: any, property: string, descriptor: any) => { + cloneTarget(); + Object.defineProperty(clonedTarget, property, descriptor); + return true; } }) : target; }; diff --git a/src/vs/workbench/test/electron-browser/api/extHostConfiguration.test.ts b/src/vs/workbench/test/electron-browser/api/extHostConfiguration.test.ts index b7008d3f5a0..382cbc08b75 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostConfiguration.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostConfiguration.test.ts @@ -102,6 +102,11 @@ suite('ExtHostConfiguration', function () { 'config2': 'Das Pferd frisst kein Reis.' }, 'config4': '' + }, + 'workbench': { + 'colorCustomizations': { + 'statusBar.foreground': 'somevalue' + } } }); @@ -131,6 +136,14 @@ suite('ExtHostConfiguration', function () { actual = testObject.inspect('farboo'); actual['value'] = 'effectiveValue'; assert.equal('effectiveValue', actual['value']); + + testObject = all.getConfiguration('workbench'); + actual = testObject.get('colorCustomizations'); + delete actual['statusBar.foreground']; + assert.equal(actual['statusBar.foreground'], undefined); + testObject = all.getConfiguration('workbench'); + actual = testObject.get('colorCustomizations'); + assert.equal(actual['statusBar.foreground'], 'somevalue'); }); test('cannot modify returned configuration', function () { @@ -158,7 +171,6 @@ suite('ExtHostConfiguration', function () { testObject['farboo']['config0'] = false; assert.fail('This should be readonly'); } catch (e) { - console.log(e); } try { From 0e8383ebbc728e00466acd12293fafc0350bde30 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 11:03:07 +0100 Subject: [PATCH 293/658] bump up unit test timeout --- test/electron/renderer.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/electron/renderer.html b/test/electron/renderer.html index 0c94643debb..1eb67318bfa 100644 --- a/test/electron/renderer.html +++ b/test/electron/renderer.html @@ -11,7 +11,10 @@ From c132f7634cd40de2566f688ede36fa3bb92025c2 Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 17:24:52 +0100 Subject: [PATCH 294/658] listService: forget about disposed lists --- src/vs/base/browser/ui/list/listPaging.ts | 6 +++++- src/vs/base/browser/ui/list/listWidget.ts | 2 +- src/vs/base/parts/tree/browser/treeImpl.ts | 2 +- src/vs/platform/list/browser/listService.ts | 8 +++++++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/vs/base/browser/ui/list/listPaging.ts b/src/vs/base/browser/ui/list/listPaging.ts index d883cc421bd..5955300a6ea 100644 --- a/src/vs/base/browser/ui/list/listPaging.ts +++ b/src/vs/base/browser/ui/list/listPaging.ts @@ -97,6 +97,10 @@ export class PagedList implements IDisposable { return this.list; } + get onDidDispose(): Event { + return this.list.onDidDispose; + } + get onFocusChange(): Event> { return mapEvent(this.list.onFocusChange, ({ elements, indexes }) => ({ elements: elements.map(e => this._model.get(e)), indexes })); } @@ -193,4 +197,4 @@ export class PagedList implements IDisposable { dispose(): void { this.list.dispose(); } -} \ No newline at end of file +} diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index 4277662548d..b4232c778dd 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -1059,7 +1059,7 @@ export class List implements ISpliceable, IDisposable { } isDOMFocused(): boolean { - return this.view && this.view.domNode === document.activeElement; + return this.view.domNode === document.activeElement; } getHTMLElement(): HTMLElement { diff --git a/src/vs/base/parts/tree/browser/treeImpl.ts b/src/vs/base/parts/tree/browser/treeImpl.ts index eea9ff87554..f7c9173df5a 100644 --- a/src/vs/base/parts/tree/browser/treeImpl.ts +++ b/src/vs/base/parts/tree/browser/treeImpl.ts @@ -131,7 +131,7 @@ export class Tree implements _.ITree { } public isDOMFocused(): boolean { - return this.view && this.view.isFocused(); + return this.view.isFocused(); } public domBlur(): void { diff --git a/src/vs/platform/list/browser/listService.ts b/src/vs/platform/list/browser/listService.ts index d230f82981d..c3982e98716 100644 --- a/src/vs/platform/list/browser/listService.ts +++ b/src/vs/platform/list/browser/listService.ts @@ -73,7 +73,13 @@ export class ListService implements IListService { const result = combinedDisposable([ widget.onDidFocus(() => this._lastFocusedWidget = widget), - toDisposable(() => this.lists.splice(this.lists.indexOf(registeredList), 1)) + toDisposable(() => this.lists.splice(this.lists.indexOf(registeredList), 1)), + widget.onDidDispose(() => { + this.lists = this.lists.filter(l => l !== registeredList); + if (this._lastFocusedWidget === widget) { + this._lastFocusedWidget = undefined; + } + }) ]); return result; From 52482cf9d0f2b5bd3af419af2c007d5a29151664 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 8 Mar 2018 17:28:46 +0100 Subject: [PATCH 295/658] support ignore-case-flag for the regexp context key, #42605 --- src/vs/platform/contextkey/common/contextkey.ts | 5 +++-- src/vs/platform/contextkey/test/common/contextkey.test.ts | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vs/platform/contextkey/common/contextkey.ts b/src/vs/platform/contextkey/common/contextkey.ts index 208cfa184bf..09cd643441f 100644 --- a/src/vs/platform/contextkey/common/contextkey.ts +++ b/src/vs/platform/contextkey/common/contextkey.ts @@ -112,8 +112,9 @@ export abstract class ContextKeyExpr { } let value = serializedValue.slice(start + 1, end); + let caseIgnoreFlag = serializedValue[end + 1] === 'i' ? 'i' : ''; try { - return new RegExp(value); + return new RegExp(value, caseIgnoreFlag); } catch (e) { console.warn(`bad regexp-value '${serializedValue}', parse error: ${e}`); return null; @@ -400,7 +401,7 @@ export class ContextKeyRegexExpr implements ContextKeyExpr { } public serialize(): string { - return `${this.key} =~ /${this.regexp ? this.regexp.source : ''}/`; + return `${this.key} =~ /${this.regexp ? this.regexp.source : ''}/${this.regexp.ignoreCase ? 'i' : ''}`; } public keys(): string[] { diff --git a/src/vs/platform/contextkey/test/common/contextkey.test.ts b/src/vs/platform/contextkey/test/common/contextkey.test.ts index beafc373f80..b04468b13ff 100644 --- a/src/vs/platform/contextkey/test/common/contextkey.test.ts +++ b/src/vs/platform/contextkey/test/common/contextkey.test.ts @@ -81,6 +81,7 @@ suite('ContextKeyExpr', () => { testExpression(expr + ' != 5', value != '5'); testExpression('!' + expr, !value); testExpression(expr + ' =~ /d.*/', /d.*/.test(value)); + testExpression(expr + ' =~ /D/i', /D/i.test(value)); } testBatch('a', true); @@ -92,7 +93,7 @@ suite('ContextKeyExpr', () => { testExpression('a && !b', true && !false); testExpression('a && b', true && false); testExpression('a && !b && c == 5', true && !false && '5' == '5'); - testExpression('dddd =~ d.*', false); + testExpression('d =~ /e.*/', false); /* tslint:enable:triple-equals */ }); }); From 77ebba733fcf63ced5061e96e710075154348adf Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 17:46:44 +0100 Subject: [PATCH 296/658] debug: do not run prelaunch and postdebug tasks for automtic restarts fixes #11522 --- .../workbench/parts/debug/electron-browser/debugService.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 74bcabd89ed..0047fea5d05 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -83,6 +83,7 @@ export class DebugService implements debug.IDebugService { private breakpointsToSendOnResourceSaved: Set; private launchJsonChanged: boolean; private firstSessionStart: boolean; + private skipRunningTask: boolean; private previousState: debug.State; private fetchThreadsSchedulers: Map; @@ -996,7 +997,8 @@ export class DebugService implements debug.IDebugService { } private runTask(sessionId: string, root: IWorkspaceFolder, taskName: string): TPromise { - if (!taskName) { + if (!taskName || this.skipRunningTask) { + this.skipRunningTask = false; return TPromise.as(null); } @@ -1065,6 +1067,8 @@ export class DebugService implements debug.IDebugService { } const focusedProcess = this.viewModel.focusedProcess; const preserveFocus = focusedProcess && process.getId() === focusedProcess.getId(); + // Do not run prelaunch and postdebug tasks for automtic restarts + this.skipRunningTask = !!restartData; return process.session.disconnect(true).then(() => { if (strings.equalsIgnoreCase(process.configuration.type, 'extensionHost') && process.session.root) { @@ -1088,6 +1092,7 @@ export class DebugService implements debug.IDebugService { config.noDebug = process.configuration.noDebug; } config.__restart = restartData; + this.skipRunningTask = !!restartData; this.startDebugging(launch, config).then(() => c(null), err => e(err)); }, 300); }); From 95184016d019f611b02babe9fd91b5988f4a736f Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 17:48:02 +0100 Subject: [PATCH 297/658] typo --- src/vs/workbench/parts/debug/electron-browser/debugService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 0047fea5d05..5a0ee96aff3 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -1067,7 +1067,7 @@ export class DebugService implements debug.IDebugService { } const focusedProcess = this.viewModel.focusedProcess; const preserveFocus = focusedProcess && process.getId() === focusedProcess.getId(); - // Do not run prelaunch and postdebug tasks for automtic restarts + // Do not run preLaunch and postDebug tasks for automatic restarts this.skipRunningTask = !!restartData; return process.session.disconnect(true).then(() => { From 8cffde33f42f6360807cd1f2cdf38a4552e1eee3 Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 8 Mar 2018 18:27:51 +0100 Subject: [PATCH 298/658] layout: always make sure the sidebar with and panels have more than minimum values fixes #42736 --- src/vs/workbench/browser/layout.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts index 5724d744de1..e1606df78da 100644 --- a/src/vs/workbench/browser/layout.ts +++ b/src/vs/workbench/browser/layout.ts @@ -133,9 +133,9 @@ export class WorkbenchLayout implements IVerticalSashLayoutProvider, IHorizontal orientation: Orientation.HORIZONTAL }); - this._sidebarWidth = this.storageService.getInteger(WorkbenchLayout.sashXOneWidthSettingsKey, StorageScope.GLOBAL, -1); - this._panelHeight = this.storageService.getInteger(WorkbenchLayout.sashYHeightSettingsKey, StorageScope.GLOBAL, 0); - this._panelWidth = this.storageService.getInteger(WorkbenchLayout.sashXTwoWidthSettingsKey, StorageScope.GLOBAL, 0); + this._sidebarWidth = Math.max(this.partLayoutInfo.sidebar.minWidth, this.storageService.getInteger(WorkbenchLayout.sashXOneWidthSettingsKey, StorageScope.GLOBAL, -1)); + this._panelHeight = Math.max(this.partLayoutInfo.panel.minHeight, this.storageService.getInteger(WorkbenchLayout.sashYHeightSettingsKey, StorageScope.GLOBAL, 0)); + this._panelWidth = Math.max(this.partLayoutInfo.panel.minWidth, this.storageService.getInteger(WorkbenchLayout.sashXTwoWidthSettingsKey, StorageScope.GLOBAL, 0)); this.layoutEditorGroupsVertically = (this.editorGroupService.getGroupOrientation() !== 'horizontal'); @@ -786,4 +786,4 @@ export class WorkbenchLayout implements IVerticalSashLayoutProvider, IHorizontal this.toUnbind = null; } } -} \ No newline at end of file +} From b6d58aca4c0e7d00310da8acb15562c4c0a94af8 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Thu, 8 Mar 2018 10:00:13 -0800 Subject: [PATCH 299/658] vscode-xterm@3.3.0-beta4 - Underscore private vars - Smooth alt buffer scrolling Fixes #44647 --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 147bfa5d4ea..e3e7dbebea0 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "vscode-nsfw": "1.0.17", "vscode-ripgrep": "0.7.1-patch.0.1", "vscode-textmate": "^3.2.0", - "vscode-xterm": "3.3.0-beta3", + "vscode-xterm": "3.3.0-beta4", "yauzl": "2.8.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 3be819309cc..f0d7394da40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6043,9 +6043,9 @@ vscode-textmate@^3.2.0: fast-plist "^0.1.2" oniguruma "^6.0.1" -vscode-xterm@3.3.0-beta3: - version "3.3.0-beta3" - resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.3.0-beta3.tgz#f265a7e1b963f341c728bb23e2399e8298270dcd" +vscode-xterm@3.3.0-beta4: + version "3.3.0-beta4" + resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.3.0-beta4.tgz#560c039c3addebe6aa3a81c5b79d2869de87ecc5" vso-node-api@^6.1.2-preview: version "6.1.2-preview" From 0537bbf8a73169547ab8b95e3079d44fdafde8d2 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 11:26:42 -0800 Subject: [PATCH 300/658] Properly wait for unzipped file handle to close - #43813 --- src/vs/base/node/zip.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/base/node/zip.ts b/src/vs/base/node/zip.ts index 5d257d40634..61d88800b89 100644 --- a/src/vs/base/node/zip.ts +++ b/src/vs/base/node/zip.ts @@ -76,7 +76,7 @@ function extractEntry(stream: Readable, fileName: string, mode: number, targetPa return mkdirp(targetDirName).then(() => new TPromise((c, e) => { let istream = createWriteStream(targetFileName, { mode }); - istream.once('finish', () => c(null)); + istream.once('close', () => c(null)); istream.once('error', e); stream.once('error', e); stream.pipe(istream); From a36812ab848b4d3c89bcd996833068d8057ffc49 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 12:10:29 -0800 Subject: [PATCH 301/658] For #43813 - retry rename when it fails with EPERM on windows, for 5s --- .../node/extensionManagementService.ts | 205 ++++++++++-------- 1 file changed, 113 insertions(+), 92 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 9f3df878827..189ea355193 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -30,7 +30,7 @@ import Event, { Emitter } from 'vs/base/common/event'; import * as semver from 'semver'; import URI from 'vs/base/common/uri'; import pkg from 'vs/platform/node/package'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh, platform, Platform } from 'vs/base/common/platform'; import { ILogService } from 'vs/platform/log/common/log'; import { ExtensionsManifestCache } from 'vs/platform/extensionManagement/node/extensionsManifestCache'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; @@ -101,6 +101,8 @@ interface InstallableExtension { export class ExtensionManagementService extends Disposable implements IExtensionManagementService { + private static readonly RENAME_RETRY_TIME = 5 * 1000; + _serviceBrand: any; private extensionsPath: string; @@ -147,25 +149,25 @@ export class ExtensionManagementService extends Disposable implements IExtension const identifier = { id: getLocalExtensionIdFromManifest(manifest) }; return this.unsetUninstalledAndRemove(identifier.id) .then( - () => this.checkOutdated(manifest) - .then(validated => { - if (validated) { - this.logService.info('Installing the extension:', identifier.id); - this._onInstallExtension.fire({ identifier, zipPath }); - return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) - .then( - metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), - error => this.installFromZipPath(identifier, zipPath, null, manifest)) - .then( - local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, - e => { - this.logService.error('Failed to install the extension:', identifier.id, e.message); - return TPromise.wrapError(e); - }); - } - return null; - }), - e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); + () => this.checkOutdated(manifest) + .then(validated => { + if (validated) { + this.logService.info('Installing the extension:', identifier.id); + this._onInstallExtension.fire({ identifier, zipPath }); + return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) + .then( + metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), + error => this.installFromZipPath(identifier, zipPath, null, manifest)) + .then( + local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, + e => { + this.logService.error('Failed to install the extension:', identifier.id, e.message); + return TPromise.wrapError(e); + }); + } + return null; + }), + e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); }); } @@ -220,8 +222,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return local; }) .then( - local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, - error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } + local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, + error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } ); } @@ -229,17 +231,17 @@ export class ExtensionManagementService extends Disposable implements IExtension this.onInstallExtensions([extension]); return this.collectExtensionsToInstall(extension) .then( - extensionsToInstall => { - if (extensionsToInstall.length > 1) { - this.onInstallExtensions(extensionsToInstall.slice(1)); - } - return this.downloadAndInstallExtensions(extensionsToInstall) - .then( - locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) - .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), - errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); - }, - error => this.onDidInstallExtensions([extension], [], [error])); + extensionsToInstall => { + if (extensionsToInstall.length > 1) { + this.onInstallExtensions(extensionsToInstall.slice(1)); + } + return this.downloadAndInstallExtensions(extensionsToInstall) + .then( + locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) + .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), + errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); + }, + error => this.onDidInstallExtensions([extension], [], [error])); } reinstall(extension: ILocalExtension): TPromise { @@ -252,8 +254,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.uninstallExtension(extension) .then(() => this.removeUninstalledExtension(extension) .then( - () => this.installFromGallery(galleryExtension), - e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); + () => this.installFromGallery(galleryExtension), + e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); } return TPromise.wrapError(new Error(nls.localize('Not a Marketplace extension', "Only Marketplace Extensions can be reinstalled"))); }); @@ -267,10 +269,10 @@ export class ExtensionManagementService extends Disposable implements IExtension } return this.getDependenciesToInstall(compatible.properties.dependencies) .then( - dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private downloadAndInstallExtensions(extensions: IGalleryExtension[]): TPromise { @@ -292,8 +294,8 @@ export class ExtensionManagementService extends Disposable implements IExtension .then(extension => this.downloadInstallableExtension(extension)) .then(installableExtension => this.installExtension(installableExtension)) .then( - local => { this.installingExtensions.delete(extension.identifier.id); return local; }, - e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } + local => { this.installingExtensions.delete(extension.identifier.id); return local; }, + e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } ); this.installingExtensions.set(extension.identifier.id, installingExtension); @@ -310,25 +312,25 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.galleryService.loadCompatibleVersion(extension) .then( - compatible => { - if (compatible) { - this.logService.trace('Started downloading extension:', extension.name); - return this.galleryService.download(extension) - .then( - zipPath => { - this.logService.info('Downloaded extension:', extension.name); - return validateLocalExtension(zipPath) - .then( - manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) - ); - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); - } else { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); - } - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + compatible => { + if (compatible) { + this.logService.trace('Started downloading extension:', extension.name); + return this.galleryService.download(extension) + .then( + zipPath => { + this.logService.info('Downloaded extension:', extension.name); + return validateLocalExtension(zipPath) + .then( + manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) + ); + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); + } else { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); + } + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private onInstallExtensions(extensions: IGalleryExtension[]): void { @@ -377,18 +379,18 @@ export class ExtensionManagementService extends Disposable implements IExtension private installExtension(installableExtension: InstallableExtension): TPromise { return this.unsetUninstalledAndGetLocal(installableExtension.id) .then( - local => { - if (local) { - return local; - } - return this.extractAndInstall(installableExtension); - }, - e => { - if (isMacintosh) { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - } - return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - }); + local => { + if (local) { + return local; + } + return this.extractAndInstall(installableExtension); + }, + e => { + if (isMacintosh) { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + } + return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + }); } private unsetUninstalledAndGetLocal(id: string): TPromise { @@ -426,23 +428,42 @@ export class ExtensionManagementService extends Disposable implements IExtension this.logService.trace(`Started extracting the extension from ${zipPath} to ${extractPath}`); return pfs.rimraf(extractPath) .then( - () => extract(zipPath, extractPath, options) - .then( - () => this.logService.info(`Extracted extension to ${extractPath}:`, id), - e => always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), - e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); + () => extract(zipPath, extractPath, options) + .then( + () => this.logService.info(`Extracted extension to ${extractPath}:`, id), + e => always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), + e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); } private completeInstall(id: string, extractPath: string): TPromise { - return pfs.rename(extractPath, path.join(this.extensionsPath, id)) + return this.renameWithRetry(id, extractPath) .then( - () => this.logService.info('Installation compelted.', id), - e => { - this.logService.info('Deleting the extracted extension', id); - return always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(e)); - }); + () => this.logService.info('Installation compelted.', id), + e => { + this.logService.info('Deleting the extracted extension', id); + return always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(e)); + }); + } + + private renameWithRetry(id: string, extractPath: string): TPromise { + const retry = (task: () => TPromise, shouldRetry: (err: any) => boolean) => { + return task().then( + null, + err => { + if (shouldRetry(err)) { + return retry(task, shouldRetry); + } else { + throw err; + } + }); + }; + + const retryUntil = Date.now() + ExtensionManagementService.RENAME_RETRY_TIME; + return retry( + () => pfs.rename(extractPath, path.join(this.extensionsPath, id)), + err => platform === Platform.Windows && Date.now() < retryUntil && err.code === 'EPERM'); } private rollback(extensions: IGalleryExtension[]): TPromise { @@ -519,10 +540,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.hasDependencies(extension, installed) ? this.promptForDependenciesAndUninstall(extension, installed, force) : this.promptAndUninstall(extension, installed, force)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private hasDependencies(extension: ILocalExtension, installed: ILocalExtension[]): boolean { @@ -639,10 +660,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.uninstallExtension(extension)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private preUninstallExtension(extension: ILocalExtension): TPromise { From 3f932a7b57b1b2842a7c4e25efcc0c12d5a21710 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 12:19:23 -0800 Subject: [PATCH 302/658] For #43813 - add null check for error --- .../extensionManagement/node/extensionManagementService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 189ea355193..a03278c37a0 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -463,7 +463,7 @@ export class ExtensionManagementService extends Disposable implements IExtension const retryUntil = Date.now() + ExtensionManagementService.RENAME_RETRY_TIME; return retry( () => pfs.rename(extractPath, path.join(this.extensionsPath, id)), - err => platform === Platform.Windows && Date.now() < retryUntil && err.code === 'EPERM'); + err => platform === Platform.Windows && err && err.code === 'EPERM' && Date.now() < retryUntil); } private rollback(extensions: IGalleryExtension[]): TPromise { From 8c9746aab2df1af5472085f75676955d59b60459 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 12:22:42 -0800 Subject: [PATCH 303/658] For #43813 - Clean up Platform import --- .../extensionManagement/node/extensionManagementService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index a03278c37a0..91a36de8443 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -30,7 +30,7 @@ import Event, { Emitter } from 'vs/base/common/event'; import * as semver from 'semver'; import URI from 'vs/base/common/uri'; import pkg from 'vs/platform/node/package'; -import { isMacintosh, platform, Platform } from 'vs/base/common/platform'; +import { isMacintosh, isWindows } from 'vs/base/common/platform'; import { ILogService } from 'vs/platform/log/common/log'; import { ExtensionsManifestCache } from 'vs/platform/extensionManagement/node/extensionsManifestCache'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; @@ -463,7 +463,7 @@ export class ExtensionManagementService extends Disposable implements IExtension const retryUntil = Date.now() + ExtensionManagementService.RENAME_RETRY_TIME; return retry( () => pfs.rename(extractPath, path.join(this.extensionsPath, id)), - err => platform === Platform.Windows && err && err.code === 'EPERM' && Date.now() < retryUntil); + err => isWindows && err && err.code === 'EPERM' && Date.now() < retryUntil); } private rollback(extensions: IGalleryExtension[]): TPromise { From 52b9f501bad458ea4a1a4df51ff89576a226c50a Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 13:40:38 -0800 Subject: [PATCH 304/658] Revert whitespace formatting changes from 387f8153b54f71353ed6c05ac800c0e679ba66dd --- .../node/extensionManagementService.ts | 180 +++++++++--------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 91a36de8443..52d5d3f56bb 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -149,25 +149,25 @@ export class ExtensionManagementService extends Disposable implements IExtension const identifier = { id: getLocalExtensionIdFromManifest(manifest) }; return this.unsetUninstalledAndRemove(identifier.id) .then( - () => this.checkOutdated(manifest) - .then(validated => { - if (validated) { - this.logService.info('Installing the extension:', identifier.id); - this._onInstallExtension.fire({ identifier, zipPath }); - return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) - .then( - metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), - error => this.installFromZipPath(identifier, zipPath, null, manifest)) - .then( - local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, - e => { - this.logService.error('Failed to install the extension:', identifier.id, e.message); - return TPromise.wrapError(e); - }); - } - return null; - }), - e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); + () => this.checkOutdated(manifest) + .then(validated => { + if (validated) { + this.logService.info('Installing the extension:', identifier.id); + this._onInstallExtension.fire({ identifier, zipPath }); + return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) + .then( + metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), + error => this.installFromZipPath(identifier, zipPath, null, manifest)) + .then( + local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, + e => { + this.logService.error('Failed to install the extension:', identifier.id, e.message); + return TPromise.wrapError(e); + }); + } + return null; + }), + e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); }); } @@ -222,8 +222,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return local; }) .then( - local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, - error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } + local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, + error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } ); } @@ -231,17 +231,17 @@ export class ExtensionManagementService extends Disposable implements IExtension this.onInstallExtensions([extension]); return this.collectExtensionsToInstall(extension) .then( - extensionsToInstall => { - if (extensionsToInstall.length > 1) { - this.onInstallExtensions(extensionsToInstall.slice(1)); - } - return this.downloadAndInstallExtensions(extensionsToInstall) - .then( - locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) - .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), - errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); - }, - error => this.onDidInstallExtensions([extension], [], [error])); + extensionsToInstall => { + if (extensionsToInstall.length > 1) { + this.onInstallExtensions(extensionsToInstall.slice(1)); + } + return this.downloadAndInstallExtensions(extensionsToInstall) + .then( + locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) + .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), + errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); + }, + error => this.onDidInstallExtensions([extension], [], [error])); } reinstall(extension: ILocalExtension): TPromise { @@ -254,8 +254,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.uninstallExtension(extension) .then(() => this.removeUninstalledExtension(extension) .then( - () => this.installFromGallery(galleryExtension), - e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); + () => this.installFromGallery(galleryExtension), + e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); } return TPromise.wrapError(new Error(nls.localize('Not a Marketplace extension', "Only Marketplace Extensions can be reinstalled"))); }); @@ -269,10 +269,10 @@ export class ExtensionManagementService extends Disposable implements IExtension } return this.getDependenciesToInstall(compatible.properties.dependencies) .then( - dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private downloadAndInstallExtensions(extensions: IGalleryExtension[]): TPromise { @@ -294,8 +294,8 @@ export class ExtensionManagementService extends Disposable implements IExtension .then(extension => this.downloadInstallableExtension(extension)) .then(installableExtension => this.installExtension(installableExtension)) .then( - local => { this.installingExtensions.delete(extension.identifier.id); return local; }, - e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } + local => { this.installingExtensions.delete(extension.identifier.id); return local; }, + e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } ); this.installingExtensions.set(extension.identifier.id, installingExtension); @@ -312,25 +312,25 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.galleryService.loadCompatibleVersion(extension) .then( - compatible => { - if (compatible) { - this.logService.trace('Started downloading extension:', extension.name); - return this.galleryService.download(extension) - .then( - zipPath => { - this.logService.info('Downloaded extension:', extension.name); - return validateLocalExtension(zipPath) - .then( - manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) - ); - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); - } else { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); - } - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + compatible => { + if (compatible) { + this.logService.trace('Started downloading extension:', extension.name); + return this.galleryService.download(extension) + .then( + zipPath => { + this.logService.info('Downloaded extension:', extension.name); + return validateLocalExtension(zipPath) + .then( + manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) + ); + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); + } else { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); + } + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private onInstallExtensions(extensions: IGalleryExtension[]): void { @@ -379,18 +379,18 @@ export class ExtensionManagementService extends Disposable implements IExtension private installExtension(installableExtension: InstallableExtension): TPromise { return this.unsetUninstalledAndGetLocal(installableExtension.id) .then( - local => { - if (local) { - return local; - } - return this.extractAndInstall(installableExtension); - }, - e => { - if (isMacintosh) { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - } - return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - }); + local => { + if (local) { + return local; + } + return this.extractAndInstall(installableExtension); + }, + e => { + if (isMacintosh) { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + } + return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + }); } private unsetUninstalledAndGetLocal(id: string): TPromise { @@ -428,23 +428,23 @@ export class ExtensionManagementService extends Disposable implements IExtension this.logService.trace(`Started extracting the extension from ${zipPath} to ${extractPath}`); return pfs.rimraf(extractPath) .then( - () => extract(zipPath, extractPath, options) - .then( - () => this.logService.info(`Extracted extension to ${extractPath}:`, id), - e => always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), - e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); + () => extract(zipPath, extractPath, options) + .then( + () => this.logService.info(`Extracted extension to ${extractPath}:`, id), + e => always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), + e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); } private completeInstall(id: string, extractPath: string): TPromise { return this.renameWithRetry(id, extractPath) .then( - () => this.logService.info('Installation compelted.', id), - e => { - this.logService.info('Deleting the extracted extension', id); - return always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(e)); - }); + () => this.logService.info('Installation compelted.', id), + e => { + this.logService.info('Deleting the extracted extension', id); + return always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(e)); + }); } private renameWithRetry(id: string, extractPath: string): TPromise { @@ -540,10 +540,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.hasDependencies(extension, installed) ? this.promptForDependenciesAndUninstall(extension, installed, force) : this.promptAndUninstall(extension, installed, force)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private hasDependencies(extension: ILocalExtension, installed: ILocalExtension[]): boolean { @@ -660,10 +660,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.uninstallExtension(extension)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private preUninstallExtension(extension: ILocalExtension): TPromise { From 4e20deb3f967f328cc97bc472fb07601fc125609 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 13:06:01 -0800 Subject: [PATCH 305/658] Remove return statement snippets for ts Fixes #45217 These snipepts do not add much value and do not seem like a good fit for core vscode --- .../snippets/typescript.json | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/extensions/typescript-basics/snippets/typescript.json b/extensions/typescript-basics/snippets/typescript.json index b5c9a39e253..0a7195751d8 100644 --- a/extensions/typescript-basics/snippets/typescript.json +++ b/extensions/typescript-basics/snippets/typescript.json @@ -109,27 +109,6 @@ ], "description": "Triple-slash reference" }, - "Return false": { - "prefix": "ret0", - "body": [ - "return false;$0" - ], - "description": "Return false" - }, - "Return true": { - "prefix": "ret1", - "body": [ - "return true;$0" - ], - "description": "Return true" - }, - "Return statement": { - "prefix": "ret", - "body": [ - "return $1;$0" - ], - "description": "Return statement" - }, "Property setter": { "prefix": "set", "body": [ From 528dc687ac4fe0ea201bf1de646d459a9475405c Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 14:27:33 -0800 Subject: [PATCH 306/658] Use memoize for documentSelector --- extensions/typescript/src/languageProvider.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/extensions/typescript/src/languageProvider.ts b/extensions/typescript/src/languageProvider.ts index 1c8cffb3025..afdcf4fcbbd 100644 --- a/extensions/typescript/src/languageProvider.ts +++ b/extensions/typescript/src/languageProvider.ts @@ -18,6 +18,7 @@ import DiagnosticsManager from './features/diagnostics'; import { LanguageDescription } from './utils/languageDescription'; import * as fileSchemes from './utils/fileSchemes'; import { CachedNavTreeResponse } from './features/baseCodeLensProvider'; +import { memoize } from './utils/memoize'; const validateSetting = 'validate.enable'; const foldingSetting = 'typescript.experimental.syntaxFolding'; @@ -31,8 +32,6 @@ export default class LanguageProvider { private _validate: boolean = true; - private _documentSelector?: DocumentFilter[]; - private readonly disposables: Disposable[] = []; private readonly versionDependentDisposables: Disposable[] = []; @@ -82,16 +81,15 @@ export default class LanguageProvider { this.formattingOptionsManager.dispose(); } + @memoize private get documentSelector(): DocumentFilter[] { - if (!this._documentSelector) { - this._documentSelector = []; - for (const language of this.description.modeIds) { - for (const scheme of fileSchemes.supportedSchemes) { - this._documentSelector.push({ language, scheme }); - } + const documentSelector = []; + for (const language of this.description.modeIds) { + for (const scheme of fileSchemes.supportedSchemes) { + documentSelector.push({ language, scheme }); } } - return this._documentSelector; + return documentSelector; } private async registerProviders( @@ -196,7 +194,7 @@ export default class LanguageProvider { return !!base && base === this.description.configFile; } - public get id(): string { + private get id(): string { return this.description.id; } From 24937a023e744d407511cdf4b8402e1203b561a8 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Thu, 8 Mar 2018 15:55:27 -0800 Subject: [PATCH 307/658] Vertically align closed/open icons in issue reporter, fixes #44660 --- .../electron-browser/issue/media/issueReporter.css | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/vs/code/electron-browser/issue/media/issueReporter.css b/src/vs/code/electron-browser/issue/media/issueReporter.css index 26e2e48b3dc..b5e43bd0d81 100644 --- a/src/vs/code/electron-browser/issue/media/issueReporter.css +++ b/src/vs/code/electron-browser/issue/media/issueReporter.css @@ -379,12 +379,11 @@ button { .issues-container > .issue { padding: 4px 0; + display: flex; } .issues-container > .issue > .issue-link { - display: inline-block; width: calc(100% - 82px); - vertical-align: top; overflow: hidden; padding-top: 3px; white-space: nowrap; @@ -392,7 +391,6 @@ button { } .issues-container > .issue > .issue-state { - display: inline-block; width: 77px; padding: 3px 6px; margin-right: 5px; @@ -401,14 +399,8 @@ button { border-radius: .25rem; } -.issues-container > .issue > .issue-state .octicon { - vertical-align: top; - width: 16px; -} - .issues-container > .issue .label { margin-left: 5px; - display: inline-block; width: 44px; text-overflow: ellipsis; overflow: hidden; From b481b00b8eb435b8a8f9e2bdebf69e0d3a7d0336 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Thu, 8 Mar 2018 16:20:49 -0800 Subject: [PATCH 308/658] Move Feature Request before Performance Issue, fixes #45334 --- src/vs/code/electron-browser/issue/issueReporterMain.ts | 4 ++-- src/vs/code/electron-browser/issue/media/issueReporter.css | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts index 65e8e851a46..b885c6973a7 100644 --- a/src/vs/code/electron-browser/issue/issueReporterMain.ts +++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts @@ -541,8 +541,8 @@ export class IssueReporter extends Disposable { } else { typeSelect.innerHTML = [ makeOption(IssueType.Bug, localize('bugReporter', "Bug Report")), - makeOption(IssueType.PerformanceIssue, localize('performanceIssue', "Performance Issue")), - makeOption(IssueType.FeatureRequest, localize('featureRequest', "Feature Request")) + makeOption(IssueType.FeatureRequest, localize('featureRequest', "Feature Request")), + makeOption(IssueType.PerformanceIssue, localize('performanceIssue', "Performance Issue")) ].join('\n'); } diff --git a/src/vs/code/electron-browser/issue/media/issueReporter.css b/src/vs/code/electron-browser/issue/media/issueReporter.css index b5e43bd0d81..4b86b480b30 100644 --- a/src/vs/code/electron-browser/issue/media/issueReporter.css +++ b/src/vs/code/electron-browser/issue/media/issueReporter.css @@ -390,6 +390,10 @@ button { text-overflow: ellipsis; } +.issues-container > .issue > .issue-state .octicon { + width: 16px; +} + .issues-container > .issue > .issue-state { width: 77px; padding: 3px 6px; From 24eb3639743f2b53087de83d91a657a3aa3dd993 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:58:32 -0800 Subject: [PATCH 309/658] Build with TS 2.7 (#45348) * Pick up TS 2.7 * Fix formatter in build script * Fix build error for ts 2.7 * Pick up new ts format and tslint versions * Update lock * use 2.7.2 for build * Formatting --- build/monaco/api.js | 4 +- build/monaco/api.ts | 4 +- build/package.json | 2 +- build/yarn.lock | 6 +- package.json | 4 +- src/typings/gc-signals.d.ts | 2 +- src/typings/keytar.d.ts | 72 +- src/typings/lib.ie11_safe_es6.d.ts | 86 +- src/typings/mocha.d.ts | 300 +- src/typings/node.d.ts | 6380 ++++++++--------- src/typings/vscode-xterm.d.ts | 20 +- src/vs/base/common/marked/marked.d.ts | 2 +- src/vs/base/parts/ipc/test/node/ipc.perf.ts | 8 +- .../sharedProcess/sharedProcessMain.ts | 2 +- src/vs/code/node/cliProcessMain.ts | 18 +- .../browser/services/codeEditorServiceImpl.ts | 2 +- .../smartSelect/tokenSelectionSupport.ts | 2 +- .../contextkey/browser/contextKeyService.ts | 2 +- src/vs/platform/dialogs/common/dialogIpc.ts | 2 +- .../node/extensionManagementService.ts | 180 +- .../test/common/instantiationService.test.ts | 18 +- src/vs/platform/list/browser/listService.ts | 2 +- src/vs/platform/state/node/stateService.ts | 2 +- .../parts/editor/editor.contribution.ts | 2 +- .../browser/parts/editor/rangeDecorations.ts | 2 +- .../parts/notifications/notificationsList.ts | 2 +- .../debug/electron-browser/callStackView.ts | 2 +- .../extensions/browser/dependenciesViewer.ts | 4 +- .../extensions/browser/extensionsActions.ts | 2 +- .../extensions/browser/extensionsQuickOpen.ts | 2 +- .../parts/files/common/explorerModel.ts | 2 +- .../parts/output/browser/outputActions.ts | 2 +- .../preferences/browser/keybindingsEditor.ts | 18 +- .../quickopen/browser/gotoLineHandler.ts | 2 +- .../parts/quickopen/browser/helpHandler.ts | 2 +- .../parts/scm/electron-browser/scmViewlet.ts | 2 +- .../parts/search/browser/openSymbolHandler.ts | 2 +- .../parts/search/browser/searchResultsView.ts | 4 +- .../parts/search/common/searchModel.ts | 4 +- .../parts/tasks/browser/quickOpen.ts | 2 +- .../electron-browser/themes.contribution.ts | 12 +- .../walkThrough.contribution.ts | 6 +- .../node/configurationEditingService.ts | 12 +- .../node/configurationEditingService.test.ts | 18 +- .../test/node/keybindingEditing.test.ts | 8 +- .../services/scm/common/scmService.ts | 2 +- .../textfile/common/textFileEditorModel.ts | 2 +- .../textfile/test/textFileEditorModel.test.ts | 2 +- .../electron-browser/colorThemeStore.ts | 2 +- .../electron-browser/fileIconThemeStore.ts | 2 +- .../electron-browser/workbenchThemeService.ts | 2 +- .../browser/parts/editor/baseEditor.test.ts | 4 +- .../test/common/editor/editor.test.ts | 2 +- .../api/mainThreadSaveParticipant.test.ts | 2 +- yarn.lock | 80 +- 55 files changed, 3666 insertions(+), 3666 deletions(-) diff --git a/build/monaco/api.js b/build/monaco/api.js index 3b1f823649b..74e9273f35e 100644 --- a/build/monaco/api.js +++ b/build/monaco/api.js @@ -171,9 +171,7 @@ function format(text) { function getRuleProvider(options) { // Share this between multiple formatters using the same options. // This represents the bulk of the space the formatter uses. - var ruleProvider = new ts.formatting.RulesProvider(); - ruleProvider.ensureUpToDate(options); - return ruleProvider; + return ts.formatting.getFormatContext(options); } function applyEdits(text, edits) { // Apply edits in reverse on the existing text diff --git a/build/monaco/api.ts b/build/monaco/api.ts index 6ebe7f277e7..eff457c5121 100644 --- a/build/monaco/api.ts +++ b/build/monaco/api.ts @@ -196,9 +196,7 @@ function format(text: string): string { function getRuleProvider(options: ts.FormatCodeSettings) { // Share this between multiple formatters using the same options. // This represents the bulk of the space the formatter uses. - let ruleProvider = new (ts).formatting.RulesProvider(); - ruleProvider.ensureUpToDate(options); - return ruleProvider; + return (ts as any).formatting.getFormatContext(options); } function applyEdits(text: string, edits: ts.TextChange[]): string { diff --git a/build/package.json b/build/package.json index bcc32e8dec0..2d8dc9089f0 100644 --- a/build/package.json +++ b/build/package.json @@ -13,7 +13,7 @@ "documentdb": "1.13.0", "mime": "^1.3.4", "minimist": "^1.2.0", - "typescript": "2.6.1", + "typescript": "2.7.2", "xml2js": "^0.4.17" }, "scripts": { diff --git a/build/yarn.lock b/build/yarn.lock index 69671f9a06f..ec3bd73e853 100644 --- a/build/yarn.lock +++ b/build/yarn.lock @@ -427,9 +427,9 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -typescript@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" +typescript@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" underscore@1.8.3, underscore@~1.8.3: version "1.8.3" diff --git a/package.json b/package.json index e3e7dbebea0..2d6c1d72b5e 100644 --- a/package.json +++ b/package.json @@ -114,8 +114,8 @@ "sinon": "^1.17.2", "source-map": "^0.4.4", "tslint": "^5.9.1", - "typescript": "2.6.1", - "typescript-formatter": "4.0.1", + "typescript": "2.7.2", + "typescript-formatter": "7.1.0", "uglify-es": "^3.0.18", "underscore": "^1.8.2", "vinyl": "^0.4.5", diff --git a/src/typings/gc-signals.d.ts b/src/typings/gc-signals.d.ts index be8992af28c..15af0411773 100644 --- a/src/typings/gc-signals.d.ts +++ b/src/typings/gc-signals.d.ts @@ -6,7 +6,7 @@ declare module 'gc-signals' { * value is stored for later consumption. */ export const GCSignal: { - new (id: number): GCSignal; + new(id: number): GCSignal; }; /** * Consume ids of garbage collected signals. diff --git a/src/typings/keytar.d.ts b/src/typings/keytar.d.ts index be122b71ea7..e881644eb8d 100644 --- a/src/typings/keytar.d.ts +++ b/src/typings/keytar.d.ts @@ -5,44 +5,44 @@ declare module 'keytar' { -/** - * Get the stored password for the service and account. - * - * @param service The string service name. - * @param account The string account name. - * - * @returns A promise for the password string. - */ -export function getPassword(service: string, account: string): Promise; + /** + * Get the stored password for the service and account. + * + * @param service The string service name. + * @param account The string account name. + * + * @returns A promise for the password string. + */ + export function getPassword(service: string, account: string): Promise; -/** - * Add the password for the service and account to the keychain. - * - * @param service The string service name. - * @param account The string account name. - * @param password The string password. - * - * @returns A promise for the set password completion. - */ -export function setPassword(service: string, account: string, password: string): Promise; + /** + * Add the password for the service and account to the keychain. + * + * @param service The string service name. + * @param account The string account name. + * @param password The string password. + * + * @returns A promise for the set password completion. + */ + export function setPassword(service: string, account: string, password: string): Promise; -/** - * Delete the stored password for the service and account. - * - * @param service The string service name. - * @param account The string account name. - * - * @returns A promise for the deletion status. True on success. - */ -export function deletePassword(service: string, account: string): Promise; + /** + * Delete the stored password for the service and account. + * + * @param service The string service name. + * @param account The string account name. + * + * @returns A promise for the deletion status. True on success. + */ + export function deletePassword(service: string, account: string): Promise; -/** - * Find a password for the service in the keychain. - * - * @param service The string service name. - * - * @returns A promise for the password string. - */ -export function findPassword(service: string): Promise; + /** + * Find a password for the service in the keychain. + * + * @param service The string service name. + * + * @returns A promise for the password string. + */ + export function findPassword(service: string): Promise; } \ No newline at end of file diff --git a/src/typings/lib.ie11_safe_es6.d.ts b/src/typings/lib.ie11_safe_es6.d.ts index 528d61b7582..e4f8fc57e76 100644 --- a/src/typings/lib.ie11_safe_es6.d.ts +++ b/src/typings/lib.ie11_safe_es6.d.ts @@ -7,72 +7,72 @@ // CHECK WITH http://kangax.github.io/compat-table/es6/#ie11 interface Map { - clear(): void; - delete(key: K): boolean; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; - get(key: K): V; - has(key: K): boolean; - set(key: K, value?: V): Map; - readonly size: number; + clear(): void; + delete(key: K): boolean; + forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; + get(key: K): V; + has(key: K): boolean; + set(key: K, value?: V): Map; + readonly size: number; - // not supported on IE11: - // entries(): IterableIterator<[K, V]>; - // keys(): IterableIterator; - // values(): IterableIterator; - // [Symbol.iterator]():IterableIterator<[K,V]>; - // [Symbol.toStringTag]: string; + // not supported on IE11: + // entries(): IterableIterator<[K, V]>; + // keys(): IterableIterator; + // values(): IterableIterator; + // [Symbol.iterator]():IterableIterator<[K,V]>; + // [Symbol.toStringTag]: string; } interface MapConstructor { - new (): Map; - prototype: Map; + new (): Map; + prototype: Map; - // not supported on IE11: - // new (iterable: Iterable<[K, V]>): Map; + // not supported on IE11: + // new (iterable: Iterable<[K, V]>): Map; } declare var Map: MapConstructor; interface Set { - add(value: T): Set; - clear(): void; - delete(value: T): boolean; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; - has(value: T): boolean; - readonly size: number; + add(value: T): Set; + clear(): void; + delete(value: T): boolean; + forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; + has(value: T): boolean; + readonly size: number; - // not supported on IE11: - // entries(): IterableIterator<[T, T]>; - // keys(): IterableIterator; - // values(): IterableIterator; - // [Symbol.iterator]():IterableIterator; - // [Symbol.toStringTag]: string; + // not supported on IE11: + // entries(): IterableIterator<[T, T]>; + // keys(): IterableIterator; + // values(): IterableIterator; + // [Symbol.iterator]():IterableIterator; + // [Symbol.toStringTag]: string; } interface SetConstructor { - new (): Set; - prototype: Set; + new (): Set; + prototype: Set; - // not supported on IE11: - // new (iterable: Iterable): Set; + // not supported on IE11: + // new (iterable: Iterable): Set; } declare var Set: SetConstructor; interface WeakMap { - delete(key: K): boolean; - get(key: K): V | undefined; - has(key: K): boolean; - // IE11 doesn't return this - // set(key: K, value?: V): this; - set(key: K, value?: V): undefined; + delete(key: K): boolean; + get(key: K): V | undefined; + has(key: K): boolean; + // IE11 doesn't return this + // set(key: K, value?: V): this; + set(key: K, value?: V): undefined; } interface WeakMapConstructor { - new (): WeakMap; - new (): WeakMap; - // new (entries?: [K, V][]): WeakMap; - readonly prototype: WeakMap; + new(): WeakMap; + new (): WeakMap; + // new (entries?: [K, V][]): WeakMap; + readonly prototype: WeakMap; } declare var WeakMap: WeakMapConstructor; diff --git a/src/typings/mocha.d.ts b/src/typings/mocha.d.ts index e4bddbd49b9..dfc3367cece 100644 --- a/src/typings/mocha.d.ts +++ b/src/typings/mocha.d.ts @@ -4,29 +4,29 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped interface MochaSetupOptions { - //milliseconds to wait before considering a test slow - slow?: number; + //milliseconds to wait before considering a test slow + slow?: number; - // timeout in milliseconds - timeout?: number; + // timeout in milliseconds + timeout?: number; - // ui name "bdd", "tdd", "exports" etc - ui?: string; + // ui name "bdd", "tdd", "exports" etc + ui?: string; - //array of accepted globals - globals?: any[]; + //array of accepted globals + globals?: any[]; - // reporter instance (function or string), defaults to `mocha.reporters.Spec` - reporter?: any; + // reporter instance (function or string), defaults to `mocha.reporters.Spec` + reporter?: any; - // bail on the first test failure - bail?: boolean; + // bail on the first test failure + bail?: boolean; - // ignore global leaks - ignoreLeaks?: boolean; + // ignore global leaks + ignoreLeaks?: boolean; - // grep string or regexp to filter tests with - grep?: any; + // grep string or regexp to filter tests with + grep?: any; } declare var mocha: Mocha; @@ -46,7 +46,7 @@ declare var specify: Mocha.ITestDefinition; declare function run(): void; interface MochaDone { - (error?: any): any; + (error?: any): any; } declare function setup(callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void; @@ -63,172 +63,172 @@ declare function afterEach(callback: (this: Mocha.IBeforeAndAfterContext, done: declare function afterEach(description: string, callback: (this: Mocha.IBeforeAndAfterContext, done: MochaDone) => any): void; declare class Mocha { - currentTest: Mocha.ITestDefinition; - constructor(options?: { - grep?: RegExp; - ui?: string; - reporter?: string; - timeout?: number; - reporterOptions?: any; - slow?: number; - bail?: boolean; - }); + currentTest: Mocha.ITestDefinition; + constructor(options?: { + grep?: RegExp; + ui?: string; + reporter?: string; + timeout?: number; + reporterOptions?: any; + slow?: number; + bail?: boolean; + }); - /** Setup mocha with the given options. */ - setup(options: MochaSetupOptions): Mocha; - bail(value?: boolean): Mocha; - addFile(file: string): Mocha; - /** Sets reporter by name, defaults to "spec". */ - reporter(name: string): Mocha; - /** Sets reporter constructor, defaults to mocha.reporters.Spec. */ - reporter(reporter: (runner: Mocha.IRunner, options: any) => any): Mocha; - ui(value: string): Mocha; - grep(value: string): Mocha; - grep(value: RegExp): Mocha; - invert(): Mocha; - ignoreLeaks(value: boolean): Mocha; - checkLeaks(): Mocha; + /** Setup mocha with the given options. */ + setup(options: MochaSetupOptions): Mocha; + bail(value?: boolean): Mocha; + addFile(file: string): Mocha; + /** Sets reporter by name, defaults to "spec". */ + reporter(name: string): Mocha; + /** Sets reporter constructor, defaults to mocha.reporters.Spec. */ + reporter(reporter: (runner: Mocha.IRunner, options: any) => any): Mocha; + ui(value: string): Mocha; + grep(value: string): Mocha; + grep(value: RegExp): Mocha; + invert(): Mocha; + ignoreLeaks(value: boolean): Mocha; + checkLeaks(): Mocha; /** * Function to allow assertion libraries to throw errors directly into mocha. * This is useful when running tests in a browser because window.onerror will * only receive the 'message' attribute of the Error. */ - throwError(error: Error): void; - /** Enables growl support. */ - growl(): Mocha; - globals(value: string): Mocha; - globals(values: string[]): Mocha; - useColors(value: boolean): Mocha; - useInlineDiffs(value: boolean): Mocha; - timeout(value: number): Mocha; - slow(value: number): Mocha; - enableTimeouts(value: boolean): Mocha; - asyncOnly(value: boolean): Mocha; - noHighlighting(value: boolean): Mocha; - /** Runs tests and invokes `onComplete()` when finished. */ - run(onComplete?: (failures: number) => void): Mocha.IRunner; + throwError(error: Error): void; + /** Enables growl support. */ + growl(): Mocha; + globals(value: string): Mocha; + globals(values: string[]): Mocha; + useColors(value: boolean): Mocha; + useInlineDiffs(value: boolean): Mocha; + timeout(value: number): Mocha; + slow(value: number): Mocha; + enableTimeouts(value: boolean): Mocha; + asyncOnly(value: boolean): Mocha; + noHighlighting(value: boolean): Mocha; + /** Runs tests and invokes `onComplete()` when finished. */ + run(onComplete?: (failures: number) => void): Mocha.IRunner; } // merge the Mocha class declaration with a module declare namespace Mocha { - interface ISuiteCallbackContext { - timeout(ms: number): this; - retries(n: number): this; - slow(ms: number): this; - } + interface ISuiteCallbackContext { + timeout(ms: number): this; + retries(n: number): this; + slow(ms: number): this; + } - interface IHookCallbackContext { - skip(): this; - timeout(ms: number): this; - [index: string]: any; - } + interface IHookCallbackContext { + skip(): this; + timeout(ms: number): this; + [index: string]: any; + } - interface ITestCallbackContext { - skip(): this; - timeout(ms: number): this; - retries(n: number): this; - slow(ms: number): this; - [index: string]: any; - } + interface ITestCallbackContext { + skip(): this; + timeout(ms: number): this; + retries(n: number): this; + slow(ms: number): this; + [index: string]: any; + } - /** Partial interface for Mocha's `Runnable` class. */ - interface IRunnable { - title: string; - fn: Function; - async: boolean; - sync: boolean; - timedOut: boolean; - timeout(n: number): this; - } + /** Partial interface for Mocha's `Runnable` class. */ + interface IRunnable { + title: string; + fn: Function; + async: boolean; + sync: boolean; + timedOut: boolean; + timeout(n: number): this; + } - /** Partial interface for Mocha's `Suite` class. */ - interface ISuite { - parent: ISuite; - title: string; + /** Partial interface for Mocha's `Suite` class. */ + interface ISuite { + parent: ISuite; + title: string; - fullTitle(): string; - } + fullTitle(): string; + } - /** Partial interface for Mocha's `Test` class. */ - interface ITest extends IRunnable { - parent: ISuite; - pending: boolean; - state: 'failed'|'passed'|undefined; + /** Partial interface for Mocha's `Test` class. */ + interface ITest extends IRunnable { + parent: ISuite; + pending: boolean; + state: 'failed' | 'passed' | undefined; - fullTitle(): string; - } + fullTitle(): string; + } - interface IBeforeAndAfterContext extends IHookCallbackContext { - currentTest: ITest; - } + interface IBeforeAndAfterContext extends IHookCallbackContext { + currentTest: ITest; + } - /** Partial interface for Mocha's `Runner` class. */ - interface IRunner { } + /** Partial interface for Mocha's `Runner` class. */ + interface IRunner { } - interface IContextDefinition { - (description: string, callback: (this: ISuiteCallbackContext) => void): ISuite; - only(description: string, callback: (this: ISuiteCallbackContext) => void): ISuite; - skip(description: string, callback: (this: ISuiteCallbackContext) => void): void; - timeout(ms: number): void; - } + interface IContextDefinition { + (description: string, callback: (this: ISuiteCallbackContext) => void): ISuite; + only(description: string, callback: (this: ISuiteCallbackContext) => void): ISuite; + skip(description: string, callback: (this: ISuiteCallbackContext) => void): void; + timeout(ms: number): void; + } - interface ITestDefinition { - (expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest; - only(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest; - skip(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): void; - timeout(ms: number): void; - state: "failed" | "passed"; - } + interface ITestDefinition { + (expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest; + only(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): ITest; + skip(expectation: string, callback?: (this: ITestCallbackContext, done: MochaDone) => any): void; + timeout(ms: number): void; + state: "failed" | "passed"; + } - export module reporters { - export class Base { - stats: { - suites: number; - tests: number; - passes: number; - pending: number; - failures: number; - }; + export module reporters { + export class Base { + stats: { + suites: number; + tests: number; + passes: number; + pending: number; + failures: number; + }; - constructor(runner: IRunner); - } + constructor(runner: IRunner); + } - export class Doc extends Base { } - export class Dot extends Base { } - export class HTML extends Base { } - export class HTMLCov extends Base { } - export class JSON extends Base { } - export class JSONCov extends Base { } - export class JSONStream extends Base { } - export class Landing extends Base { } - export class List extends Base { } - export class Markdown extends Base { } - export class Min extends Base { } - export class Nyan extends Base { } - export class Progress extends Base { + export class Doc extends Base { } + export class Dot extends Base { } + export class HTML extends Base { } + export class HTMLCov extends Base { } + export class JSON extends Base { } + export class JSONCov extends Base { } + export class JSONStream extends Base { } + export class Landing extends Base { } + export class List extends Base { } + export class Markdown extends Base { } + export class Min extends Base { } + export class Nyan extends Base { } + export class Progress extends Base { /** * @param options.open String used to indicate the start of the progress bar. * @param options.complete String used to indicate a complete test on the progress bar. * @param options.incomplete String used to indicate an incomplete test on the progress bar. * @param options.close String used to indicate the end of the progress bar. */ - constructor(runner: IRunner, options?: { - open?: string; - complete?: string; - incomplete?: string; - close?: string; - }); - } - export class Spec extends Base { } - export class TAP extends Base { } - export class XUnit extends Base { - constructor(runner: IRunner, options?: any); - } - } + constructor(runner: IRunner, options?: { + open?: string; + complete?: string; + incomplete?: string; + close?: string; + }); + } + export class Spec extends Base { } + export class TAP extends Base { } + export class XUnit extends Base { + constructor(runner: IRunner, options?: any); + } + } } declare module "mocha" { - export = Mocha; + export = Mocha; } \ No newline at end of file diff --git a/src/typings/node.d.ts b/src/typings/node.d.ts index 4fa18421982..1b6661edd71 100644 --- a/src/typings/node.d.ts +++ b/src/typings/node.d.ts @@ -17,25 +17,25 @@ // This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build interface Console { - Console: NodeJS.ConsoleConstructor; - assert(value: any, message?: string, ...optionalParams: any[]): void; - dir(obj: any, options?: NodeJS.InspectOptions): void; - error(message?: any, ...optionalParams: any[]): void; - info(message?: any, ...optionalParams: any[]): void; - log(message?: any, ...optionalParams: any[]): void; - time(label: string): void; - timeEnd(label: string): void; - trace(message?: any, ...optionalParams: any[]): void; - warn(message?: any, ...optionalParams: any[]): void; + Console: NodeJS.ConsoleConstructor; + assert(value: any, message?: string, ...optionalParams: any[]): void; + dir(obj: any, options?: NodeJS.InspectOptions): void; + error(message?: any, ...optionalParams: any[]): void; + info(message?: any, ...optionalParams: any[]): void; + log(message?: any, ...optionalParams: any[]): void; + time(label: string): void; + timeEnd(label: string): void; + trace(message?: any, ...optionalParams: any[]): void; + warn(message?: any, ...optionalParams: any[]): void; } interface Error { - stack?: string; + stack?: string; } interface ErrorConstructor { - captureStackTrace(targetObject: Object, constructorOpt?: Function): void; - stackTraceLimit: number; + captureStackTrace(targetObject: Object, constructorOpt?: Function): void; + stackTraceLimit: number; } // compat for TypeScript 1.8 @@ -49,11 +49,11 @@ interface WeakSetConstructor { } // Forward-declare needed types from lib.es2015.d.ts (in case users are using `--lib es5`) interface Iterable { } interface Iterator { - next(value?: any): IteratorResult; + next(value?: any): IteratorResult; } interface IteratorResult { } interface SymbolConstructor { - readonly iterator: symbol; + readonly iterator: symbol; } declare var Symbol: SymbolConstructor; @@ -78,7 +78,7 @@ declare function setImmediate(callback: (...args: any[]) => void, ...args: any[] declare function clearImmediate(immediateId: any): void; interface NodeRequireFunction { - (id: string): any; + (id: string): any; } // interface NodeRequire extends NodeRequireFunction { @@ -91,13 +91,13 @@ interface NodeRequireFunction { // declare var require: NodeRequire; interface NodeModule { - exports: any; - require: NodeRequireFunction; - id: string; - filename: string; - loaded: boolean; - parent: NodeModule | null; - children: NodeModule[]; + exports: any; + require: NodeRequireFunction; + id: string; + filename: string; + loaded: boolean; + parent: NodeModule | null; + children: NodeModule[]; } declare var module: NodeModule; @@ -105,14 +105,14 @@ declare var module: NodeModule; // Same as module.exports declare var exports: any; declare var SlowBuffer: { - new(str: string, encoding?: string): Buffer; - new(size: number): Buffer; - new(size: Uint8Array): Buffer; - new(array: any[]): Buffer; - prototype: Buffer; - isBuffer(obj: any): boolean; - byteLength(string: string, encoding?: string): number; - concat(list: Buffer[], totalLength?: number): Buffer; + new(str: string, encoding?: string): Buffer; + new(size: number): Buffer; + new(size: Uint8Array): Buffer; + new(array: any[]): Buffer; + prototype: Buffer; + isBuffer(obj: any): boolean; + byteLength(string: string, encoding?: string): number; + concat(list: Buffer[], totalLength?: number): Buffer; }; @@ -132,19 +132,19 @@ declare var Buffer: { * @param str String to store in buffer. * @param encoding encoding to use, optional. Default is 'utf8' */ - new(str: string, encoding?: string): Buffer; + new(str: string, encoding?: string): Buffer; /** * Allocates a new buffer of {size} octets. * * @param size count of octets to allocate. */ - new(size: number): Buffer; + new(size: number): Buffer; /** * Allocates a new buffer containing the given {array} of octets. * * @param array The octets to store. */ - new(array: Uint8Array): Buffer; + new(array: Uint8Array): Buffer; /** * Produces a Buffer backed by the same allocated memory as * the given {ArrayBuffer}. @@ -152,26 +152,26 @@ declare var Buffer: { * * @param arrayBuffer The ArrayBuffer with which to share memory. */ - new(arrayBuffer: ArrayBuffer): Buffer; + new(arrayBuffer: ArrayBuffer): Buffer; /** * Allocates a new buffer containing the given {array} of octets. * * @param array The octets to store. */ - new(array: any[]): Buffer; + new(array: any[]): Buffer; /** * Copies the passed {buffer} data onto a new {Buffer} instance. * * @param buffer The buffer to copy. */ - new(buffer: Buffer): Buffer; - prototype: Buffer; + new(buffer: Buffer): Buffer; + prototype: Buffer; /** * Allocates a new Buffer using an {array} of octets. * * @param array */ - from(array: any[]): Buffer; + from(array: any[]): Buffer; /** * When passed a reference to the .buffer property of a TypedArray instance, * the newly created Buffer will share the same allocated memory as the TypedArray. @@ -182,13 +182,13 @@ declare var Buffer: { * @param byteOffset * @param length */ - from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; /** * Copies the passed {buffer} data onto a new Buffer instance. * * @param buffer */ - from(buffer: Buffer): Buffer; + from(buffer: Buffer): Buffer; /** * Creates a new Buffer containing the given JavaScript string {str}. * If provided, the {encoding} parameter identifies the character encoding. @@ -196,20 +196,20 @@ declare var Buffer: { * * @param str */ - from(str: string, encoding?: string): Buffer; + from(str: string, encoding?: string): Buffer; /** * Returns true if {obj} is a Buffer * * @param obj object to test. */ - isBuffer(obj: any): obj is Buffer; + isBuffer(obj: any): obj is Buffer; /** * Returns true if {encoding} is a valid encoding argument. * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' * * @param encoding string to test. */ - isEncoding(encoding: string): boolean; + isEncoding(encoding: string): boolean; /** * Gives the actual byte length of a string. encoding defaults to 'utf8'. * This is not the same as String.prototype.length since that returns the number of characters in a string. @@ -217,7 +217,7 @@ declare var Buffer: { * @param string string to test. * @param encoding encoding used to evaluate (defaults to 'utf8') */ - byteLength(string: string, encoding?: string): number; + byteLength(string: string, encoding?: string): number; /** * Returns a buffer which is the result of concatenating all the buffers in the list together. * @@ -229,11 +229,11 @@ declare var Buffer: { * @param totalLength Total length of the buffers when concatenated. * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. */ - concat(list: Buffer[], totalLength?: number): Buffer; + concat(list: Buffer[], totalLength?: number): Buffer; /** * The same as buf1.compare(buf2). */ - compare(buf1: Buffer, buf2: Buffer): number; + compare(buf1: Buffer, buf2: Buffer): number; /** * Allocates a new buffer of {size} octets. * @@ -242,21 +242,21 @@ declare var Buffer: { * If parameter is omitted, buffer will be filled with zeros. * @param encoding encoding used for call to buf.fill while initalizing */ - alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; /** * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents * of the newly created Buffer are unknown and may contain sensitive data. * * @param size count of octets to allocate */ - allocUnsafe(size: number): Buffer; + allocUnsafe(size: number): Buffer; /** * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents * of the newly created Buffer are unknown and may contain sensitive data. * * @param size count of octets to allocate */ - allocUnsafeSlow(size: number): Buffer; + allocUnsafeSlow(size: number): Buffer; }; /************************************************ @@ -265,273 +265,273 @@ declare var Buffer: { * * ************************************************/ declare namespace NodeJS { - export interface InspectOptions { - showHidden?: boolean; - depth?: number | null; - colors?: boolean; - customInspect?: boolean; - showProxy?: boolean; - maxArrayLength?: number | null; - breakLength?: number; - } + export interface InspectOptions { + showHidden?: boolean; + depth?: number | null; + colors?: boolean; + customInspect?: boolean; + showProxy?: boolean; + maxArrayLength?: number | null; + breakLength?: number; + } - export interface ConsoleConstructor { - prototype: Console; - new(stdout: WritableStream, stderr?: WritableStream): Console; - } + export interface ConsoleConstructor { + prototype: Console; + new(stdout: WritableStream, stderr?: WritableStream): Console; + } - export interface ErrnoException extends Error { - errno?: number; - code?: string; - path?: string; - syscall?: string; - stack?: string; - } + export interface ErrnoException extends Error { + errno?: number; + code?: string; + path?: string; + syscall?: string; + stack?: string; + } - export class EventEmitter { - addListener(event: string | symbol, listener: Function): this; - on(event: string | symbol, listener: Function): this; - once(event: string | symbol, listener: Function): this; - removeListener(event: string | symbol, listener: Function): this; - removeAllListeners(event?: string | symbol): this; - setMaxListeners(n: number): this; - getMaxListeners(): number; - listeners(event: string | symbol): Function[]; - emit(event: string | symbol, ...args: any[]): boolean; - listenerCount(type: string | symbol): number; - // Added in Node 6... - prependListener(event: string | symbol, listener: Function): this; - prependOnceListener(event: string | symbol, listener: Function): this; - eventNames(): (string | symbol)[]; - } + export class EventEmitter { + addListener(event: string | symbol, listener: Function): this; + on(event: string | symbol, listener: Function): this; + once(event: string | symbol, listener: Function): this; + removeListener(event: string | symbol, listener: Function): this; + removeAllListeners(event?: string | symbol): this; + setMaxListeners(n: number): this; + getMaxListeners(): number; + listeners(event: string | symbol): Function[]; + emit(event: string | symbol, ...args: any[]): boolean; + listenerCount(type: string | symbol): number; + // Added in Node 6... + prependListener(event: string | symbol, listener: Function): this; + prependOnceListener(event: string | symbol, listener: Function): this; + eventNames(): (string | symbol)[]; + } - export interface ReadableStream extends EventEmitter { - readable: boolean; - read(size?: number): string | Buffer; - setEncoding(encoding: string | null): this; - pause(): this; - resume(): this; - isPaused(): boolean; - pipe(destination: T, options?: { end?: boolean; }): T; - unpipe(destination?: T): this; - unshift(chunk: string): void; - unshift(chunk: Buffer): void; - wrap(oldStream: ReadableStream): ReadableStream; - } + export interface ReadableStream extends EventEmitter { + readable: boolean; + read(size?: number): string | Buffer; + setEncoding(encoding: string | null): this; + pause(): this; + resume(): this; + isPaused(): boolean; + pipe(destination: T, options?: { end?: boolean; }): T; + unpipe(destination?: T): this; + unshift(chunk: string): void; + unshift(chunk: Buffer): void; + wrap(oldStream: ReadableStream): ReadableStream; + } - export interface WritableStream extends EventEmitter { - writable: boolean; - write(buffer: Buffer | string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - } + export interface WritableStream extends EventEmitter { + writable: boolean; + write(buffer: Buffer | string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + } - export interface ReadWriteStream extends ReadableStream, WritableStream { } + export interface ReadWriteStream extends ReadableStream, WritableStream { } - export interface Events extends EventEmitter { } + export interface Events extends EventEmitter { } - export interface Domain extends Events { - run(fn: Function): void; - add(emitter: Events): void; - remove(emitter: Events): void; - bind(cb: (err: Error, data: any) => any): any; - intercept(cb: (data: any) => any): any; - dispose(): void; + export interface Domain extends Events { + run(fn: Function): void; + add(emitter: Events): void; + remove(emitter: Events): void; + bind(cb: (err: Error, data: any) => any): any; + intercept(cb: (data: any) => any): any; + dispose(): void; - addListener(event: string, listener: Function): this; - on(event: string, listener: Function): this; - once(event: string, listener: Function): this; - removeListener(event: string, listener: Function): this; - removeAllListeners(event?: string): this; - } + addListener(event: string, listener: Function): this; + on(event: string, listener: Function): this; + once(event: string, listener: Function): this; + removeListener(event: string, listener: Function): this; + removeAllListeners(event?: string): this; + } - export interface MemoryUsage { - rss: number; - heapTotal: number; - heapUsed: number; - } + export interface MemoryUsage { + rss: number; + heapTotal: number; + heapUsed: number; + } - export interface CpuUsage { - user: number; - system: number; - } + export interface CpuUsage { + user: number; + system: number; + } - export interface ProcessVersions { - http_parser: string; - node: string; - v8: string; - ares: string; - uv: string; - zlib: string; - modules: string; - openssl: string; - } + export interface ProcessVersions { + http_parser: string; + node: string; + v8: string; + ares: string; + uv: string; + zlib: string; + modules: string; + openssl: string; + } - type Platform = 'aix' - | 'android' - | 'darwin' - | 'freebsd' - | 'linux' - | 'openbsd' - | 'sunos' - | 'win32'; + type Platform = 'aix' + | 'android' + | 'darwin' + | 'freebsd' + | 'linux' + | 'openbsd' + | 'sunos' + | 'win32'; - export interface Socket extends ReadWriteStream { - isTTY?: true; - } + export interface Socket extends ReadWriteStream { + isTTY?: true; + } - export interface WriteStream extends Socket { - columns?: number; - rows?: number; - } - export interface ReadStream extends Socket { - isRaw?: boolean; - setRawMode?(mode: boolean): void; - } + export interface WriteStream extends Socket { + columns?: number; + rows?: number; + } + export interface ReadStream extends Socket { + isRaw?: boolean; + setRawMode?(mode: boolean): void; + } - export interface Process extends EventEmitter { - stdout: WriteStream; - stderr: WriteStream; - stdin: ReadStream; - openStdin(): Socket; - argv: string[]; - argv0: string; - execArgv: string[]; - execPath: string; - abort(): void; - chdir(directory: string): void; - cwd(): string; - emitWarning(warning: string | Error, name?: string, ctor?: Function): void; - env: any; - exit(code?: number): void; - exitCode: number; - getgid(): number; - setgid(id: number): void; - setgid(id: string): void; - getuid(): number; - setuid(id: number): void; - setuid(id: string): void; - version: string; - versions: ProcessVersions; - config: { - target_defaults: { - cflags: any[]; - default_configuration: string; - defines: string[]; - include_dirs: string[]; - libraries: string[]; - }; - variables: { - clang: number; - host_arch: string; - node_install_npm: boolean; - node_install_waf: boolean; - node_prefix: string; - node_shared_openssl: boolean; - node_shared_v8: boolean; - node_shared_zlib: boolean; - node_use_dtrace: boolean; - node_use_etw: boolean; - node_use_openssl: boolean; - target_arch: string; - v8_no_strict_aliasing: number; - v8_use_snapshot: boolean; - visibility: string; - }; - }; - kill(pid: number, signal?: string | number): void; - pid: number; - title: string; - arch: string; - platform: Platform; - mainModule?: NodeModule; - memoryUsage(): MemoryUsage; - cpuUsage(previousValue?: CpuUsage): CpuUsage; - nextTick(callback: Function, ...args: any[]): void; - umask(mask?: number): number; - uptime(): number; - hrtime(time?: [number, number]): [number, number]; - domain: Domain; + export interface Process extends EventEmitter { + stdout: WriteStream; + stderr: WriteStream; + stdin: ReadStream; + openStdin(): Socket; + argv: string[]; + argv0: string; + execArgv: string[]; + execPath: string; + abort(): void; + chdir(directory: string): void; + cwd(): string; + emitWarning(warning: string | Error, name?: string, ctor?: Function): void; + env: any; + exit(code?: number): void; + exitCode: number; + getgid(): number; + setgid(id: number): void; + setgid(id: string): void; + getuid(): number; + setuid(id: number): void; + setuid(id: string): void; + version: string; + versions: ProcessVersions; + config: { + target_defaults: { + cflags: any[]; + default_configuration: string; + defines: string[]; + include_dirs: string[]; + libraries: string[]; + }; + variables: { + clang: number; + host_arch: string; + node_install_npm: boolean; + node_install_waf: boolean; + node_prefix: string; + node_shared_openssl: boolean; + node_shared_v8: boolean; + node_shared_zlib: boolean; + node_use_dtrace: boolean; + node_use_etw: boolean; + node_use_openssl: boolean; + target_arch: string; + v8_no_strict_aliasing: number; + v8_use_snapshot: boolean; + visibility: string; + }; + }; + kill(pid: number, signal?: string | number): void; + pid: number; + title: string; + arch: string; + platform: Platform; + mainModule?: NodeModule; + memoryUsage(): MemoryUsage; + cpuUsage(previousValue?: CpuUsage): CpuUsage; + nextTick(callback: Function, ...args: any[]): void; + umask(mask?: number): number; + uptime(): number; + hrtime(time?: [number, number]): [number, number]; + domain: Domain; - // Worker - send?(message: any, sendHandle?: any): void; - disconnect(): void; - connected: boolean; - } + // Worker + send?(message: any, sendHandle?: any): void; + disconnect(): void; + connected: boolean; + } - export interface Global { - Array: typeof Array; - ArrayBuffer: typeof ArrayBuffer; - Boolean: typeof Boolean; - Buffer: typeof Buffer; - DataView: typeof DataView; - Date: typeof Date; - Error: typeof Error; - EvalError: typeof EvalError; - Float32Array: typeof Float32Array; - Float64Array: typeof Float64Array; - Function: typeof Function; - GLOBAL: Global; - Infinity: typeof Infinity; - Int16Array: typeof Int16Array; - Int32Array: typeof Int32Array; - Int8Array: typeof Int8Array; - Intl: typeof Intl; - JSON: typeof JSON; - Map: MapConstructor; - Math: typeof Math; - NaN: typeof NaN; - Number: typeof Number; - Object: typeof Object; - Promise: Function; - RangeError: typeof RangeError; - ReferenceError: typeof ReferenceError; - RegExp: typeof RegExp; - Set: SetConstructor; - String: typeof String; - Symbol: Function; - SyntaxError: typeof SyntaxError; - TypeError: typeof TypeError; - URIError: typeof URIError; - Uint16Array: typeof Uint16Array; - Uint32Array: typeof Uint32Array; - Uint8Array: typeof Uint8Array; - Uint8ClampedArray: Function; - WeakMap: WeakMapConstructor; - WeakSet: WeakSetConstructor; - clearImmediate: (immediateId: any) => void; - clearInterval: (intervalId: NodeJS.Timer) => void; - clearTimeout: (timeoutId: NodeJS.Timer) => void; - console: typeof console; - decodeURI: typeof decodeURI; - decodeURIComponent: typeof decodeURIComponent; - encodeURI: typeof encodeURI; - encodeURIComponent: typeof encodeURIComponent; - escape: (str: string) => string; - eval: typeof eval; - global: Global; - isFinite: typeof isFinite; - isNaN: typeof isNaN; - parseFloat: typeof parseFloat; - parseInt: typeof parseInt; - process: Process; - root: Global; - setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any; - setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; - setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; - undefined: typeof undefined; - unescape: (str: string) => string; - gc: () => void; - v8debug?: any; - } + export interface Global { + Array: typeof Array; + ArrayBuffer: typeof ArrayBuffer; + Boolean: typeof Boolean; + Buffer: typeof Buffer; + DataView: typeof DataView; + Date: typeof Date; + Error: typeof Error; + EvalError: typeof EvalError; + Float32Array: typeof Float32Array; + Float64Array: typeof Float64Array; + Function: typeof Function; + GLOBAL: Global; + Infinity: typeof Infinity; + Int16Array: typeof Int16Array; + Int32Array: typeof Int32Array; + Int8Array: typeof Int8Array; + Intl: typeof Intl; + JSON: typeof JSON; + Map: MapConstructor; + Math: typeof Math; + NaN: typeof NaN; + Number: typeof Number; + Object: typeof Object; + Promise: Function; + RangeError: typeof RangeError; + ReferenceError: typeof ReferenceError; + RegExp: typeof RegExp; + Set: SetConstructor; + String: typeof String; + Symbol: Function; + SyntaxError: typeof SyntaxError; + TypeError: typeof TypeError; + URIError: typeof URIError; + Uint16Array: typeof Uint16Array; + Uint32Array: typeof Uint32Array; + Uint8Array: typeof Uint8Array; + Uint8ClampedArray: Function; + WeakMap: WeakMapConstructor; + WeakSet: WeakSetConstructor; + clearImmediate: (immediateId: any) => void; + clearInterval: (intervalId: NodeJS.Timer) => void; + clearTimeout: (timeoutId: NodeJS.Timer) => void; + console: typeof console; + decodeURI: typeof decodeURI; + decodeURIComponent: typeof decodeURIComponent; + encodeURI: typeof encodeURI; + encodeURIComponent: typeof encodeURIComponent; + escape: (str: string) => string; + eval: typeof eval; + global: Global; + isFinite: typeof isFinite; + isNaN: typeof isNaN; + parseFloat: typeof parseFloat; + parseInt: typeof parseInt; + process: Process; + root: Global; + setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any; + setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; + setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => NodeJS.Timer; + undefined: typeof undefined; + unescape: (str: string) => string; + gc: () => void; + v8debug?: any; + } - export interface Timer { - ref(): void; - unref(): void; - } + export interface Timer { + ref(): void; + unref(): void; + } } interface IterableIterator { } @@ -540,59 +540,59 @@ interface IterableIterator { } * @deprecated */ interface NodeBuffer extends Uint8Array { - write(string: string, offset?: number, length?: number, encoding?: string): number; - toString(encoding?: string, start?: number, end?: number): string; - toJSON(): { type: 'Buffer', data: any[] }; - equals(otherBuffer: Buffer): boolean; - compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; - copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; - slice(start?: number, end?: number): Buffer; - writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; - readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; - readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; - readUInt8(offset: number, noAssert?: boolean): number; - readUInt16LE(offset: number, noAssert?: boolean): number; - readUInt16BE(offset: number, noAssert?: boolean): number; - readUInt32LE(offset: number, noAssert?: boolean): number; - readUInt32BE(offset: number, noAssert?: boolean): number; - readInt8(offset: number, noAssert?: boolean): number; - readInt16LE(offset: number, noAssert?: boolean): number; - readInt16BE(offset: number, noAssert?: boolean): number; - readInt32LE(offset: number, noAssert?: boolean): number; - readInt32BE(offset: number, noAssert?: boolean): number; - readFloatLE(offset: number, noAssert?: boolean): number; - readFloatBE(offset: number, noAssert?: boolean): number; - readDoubleLE(offset: number, noAssert?: boolean): number; - readDoubleBE(offset: number, noAssert?: boolean): number; - swap16(): Buffer; - swap32(): Buffer; - swap64(): Buffer; - writeUInt8(value: number, offset: number, noAssert?: boolean): number; - writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeInt8(value: number, offset: number, noAssert?: boolean): number; - writeInt16LE(value: number, offset: number, noAssert?: boolean): number; - writeInt16BE(value: number, offset: number, noAssert?: boolean): number; - writeInt32LE(value: number, offset: number, noAssert?: boolean): number; - writeInt32BE(value: number, offset: number, noAssert?: boolean): number; - writeFloatLE(value: number, offset: number, noAssert?: boolean): number; - writeFloatBE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; - writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; - fill(value: any, offset?: number, end?: number): this; - indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; - entries(): IterableIterator<[number, number]>; - includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; - keys(): IterableIterator; - values(): IterableIterator; + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): { type: 'Buffer', data: any[] }; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + swap16(): Buffer; + swap32(): Buffer; + swap64(): Buffer; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + entries(): IterableIterator<[number, number]>; + includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; + keys(): IterableIterator; + values(): IterableIterator; } /************************************************ @@ -601,205 +601,205 @@ interface NodeBuffer extends Uint8Array { * * ************************************************/ declare module "buffer" { - export var INSPECT_MAX_BYTES: number; - var BuffType: typeof Buffer; - var SlowBuffType: typeof SlowBuffer; - export { BuffType as Buffer, SlowBuffType as SlowBuffer }; + export var INSPECT_MAX_BYTES: number; + var BuffType: typeof Buffer; + var SlowBuffType: typeof SlowBuffer; + export { BuffType as Buffer, SlowBuffType as SlowBuffer }; } declare module "querystring" { - export interface StringifyOptions { - encodeURIComponent?: Function; - } + export interface StringifyOptions { + encodeURIComponent?: Function; + } - export interface ParseOptions { - maxKeys?: number; - decodeURIComponent?: Function; - } + export interface ParseOptions { + maxKeys?: number; + decodeURIComponent?: Function; + } - export function stringify(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string; - export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): any; - export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): T; - export function escape(str: string): string; - export function unescape(str: string): string; + export function stringify(obj: T, sep?: string, eq?: string, options?: StringifyOptions): string; + export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): any; + export function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): T; + export function escape(str: string): string; + export function unescape(str: string): string; } declare module "events" { - class internal extends NodeJS.EventEmitter { } + class internal extends NodeJS.EventEmitter { } - namespace internal { - export class EventEmitter extends internal { - static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated - static defaultMaxListeners: number; + namespace internal { + export class EventEmitter extends internal { + static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated + static defaultMaxListeners: number; - addListener(event: string | symbol, listener: Function): this; - on(event: string | symbol, listener: Function): this; - once(event: string | symbol, listener: Function): this; - prependListener(event: string | symbol, listener: Function): this; - prependOnceListener(event: string | symbol, listener: Function): this; - removeListener(event: string | symbol, listener: Function): this; - removeAllListeners(event?: string | symbol): this; - setMaxListeners(n: number): this; - getMaxListeners(): number; - listeners(event: string | symbol): Function[]; - emit(event: string | symbol, ...args: any[]): boolean; - eventNames(): (string | symbol)[]; - listenerCount(type: string | symbol): number; - } - } + addListener(event: string | symbol, listener: Function): this; + on(event: string | symbol, listener: Function): this; + once(event: string | symbol, listener: Function): this; + prependListener(event: string | symbol, listener: Function): this; + prependOnceListener(event: string | symbol, listener: Function): this; + removeListener(event: string | symbol, listener: Function): this; + removeAllListeners(event?: string | symbol): this; + setMaxListeners(n: number): this; + getMaxListeners(): number; + listeners(event: string | symbol): Function[]; + emit(event: string | symbol, ...args: any[]): boolean; + eventNames(): (string | symbol)[]; + listenerCount(type: string | symbol): number; + } + } - export = internal; + export = internal; } declare module "http" { - import * as events from "events"; - import * as net from "net"; - import * as stream from "stream"; + import * as events from "events"; + import * as net from "net"; + import * as stream from "stream"; - export interface RequestOptions { - protocol?: string; - host?: string; - hostname?: string; - family?: number; - port?: number; - localAddress?: string; - socketPath?: string; - method?: string; - path?: string; - headers?: { [key: string]: any }; - auth?: string; - agent?: Agent | boolean; - timeout?: number; - } + export interface RequestOptions { + protocol?: string; + host?: string; + hostname?: string; + family?: number; + port?: number; + localAddress?: string; + socketPath?: string; + method?: string; + path?: string; + headers?: { [key: string]: any }; + auth?: string; + agent?: Agent | boolean; + timeout?: number; + } - export interface Server extends net.Server { - setTimeout(msecs: number, callback: Function): void; - maxHeadersCount: number; - timeout: number; - listening: boolean; - } + export interface Server extends net.Server { + setTimeout(msecs: number, callback: Function): void; + maxHeadersCount: number; + timeout: number; + listening: boolean; + } /** * @deprecated Use IncomingMessage */ - export interface ServerRequest extends IncomingMessage { - connection: net.Socket; - } - export interface ServerResponse extends stream.Writable { - // Extended base methods - write(buffer: Buffer): boolean; - write(buffer: Buffer, cb?: Function): boolean; - write(str: string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - write(str: string, encoding?: string, fd?: string): boolean; + export interface ServerRequest extends IncomingMessage { + connection: net.Socket; + } + export interface ServerResponse extends stream.Writable { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; - writeContinue(): void; - writeHead(statusCode: number, reasonPhrase?: string, headers?: any): void; - writeHead(statusCode: number, headers?: any): void; - statusCode: number; - statusMessage: string; - headersSent: boolean; - setHeader(name: string, value: string | string[]): void; - setTimeout(msecs: number, callback: Function): ServerResponse; - sendDate: boolean; - getHeader(name: string): string; - removeHeader(name: string): void; - write(chunk: any, encoding?: string): any; - addTrailers(headers: any): void; - finished: boolean; + writeContinue(): void; + writeHead(statusCode: number, reasonPhrase?: string, headers?: any): void; + writeHead(statusCode: number, headers?: any): void; + statusCode: number; + statusMessage: string; + headersSent: boolean; + setHeader(name: string, value: string | string[]): void; + setTimeout(msecs: number, callback: Function): ServerResponse; + sendDate: boolean; + getHeader(name: string): string; + removeHeader(name: string): void; + write(chunk: any, encoding?: string): any; + addTrailers(headers: any): void; + finished: boolean; - // Extended base methods - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - end(data?: any, encoding?: string): void; - } - export interface ClientRequest extends stream.Writable { - // Extended base methods - write(buffer: Buffer): boolean; - write(buffer: Buffer, cb?: Function): boolean; - write(str: string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - write(str: string, encoding?: string, fd?: string): boolean; + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; + } + export interface ClientRequest extends stream.Writable { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; - write(chunk: any, encoding?: string): void; - abort(): void; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; + write(chunk: any, encoding?: string): void; + abort(): void; + setTimeout(timeout: number, callback?: Function): void; + setNoDelay(noDelay?: boolean): void; + setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; - setHeader(name: string, value: string | string[]): void; - getHeader(name: string): string; - removeHeader(name: string): void; - addTrailers(headers: any): void; + setHeader(name: string, value: string | string[]): void; + getHeader(name: string): string; + removeHeader(name: string): void; + addTrailers(headers: any): void; - // Extended base methods - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - end(data?: any, encoding?: string): void; - } - export interface IncomingMessage extends stream.Readable { - httpVersion: string; - httpVersionMajor: number; - httpVersionMinor: number; - connection: net.Socket; - headers: any; - rawHeaders: string[]; - trailers: any; - rawTrailers: any; - setTimeout(msecs: number, callback: Function): NodeJS.Timer; + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; + } + export interface IncomingMessage extends stream.Readable { + httpVersion: string; + httpVersionMajor: number; + httpVersionMinor: number; + connection: net.Socket; + headers: any; + rawHeaders: string[]; + trailers: any; + rawTrailers: any; + setTimeout(msecs: number, callback: Function): NodeJS.Timer; /** * Only valid for request obtained from http.Server. */ - method?: string; + method?: string; /** * Only valid for request obtained from http.Server. */ - url?: string; + url?: string; /** * Only valid for response obtained from http.ClientRequest. */ - statusCode?: number; + statusCode?: number; /** * Only valid for response obtained from http.ClientRequest. */ - statusMessage?: string; - socket: net.Socket; - destroy(error?: Error): void; - } + statusMessage?: string; + socket: net.Socket; + destroy(error?: Error): void; + } /** * @deprecated Use IncomingMessage */ - export interface ClientResponse extends IncomingMessage { } + export interface ClientResponse extends IncomingMessage { } - export interface AgentOptions { + export interface AgentOptions { /** * Keep sockets around in a pool to be used by other requests in the future. Default = false */ - keepAlive?: boolean; + keepAlive?: boolean; /** * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000. * Only relevant if keepAlive is set to true. */ - keepAliveMsecs?: number; + keepAliveMsecs?: number; /** * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity */ - maxSockets?: number; + maxSockets?: number; /** * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256. */ - maxFreeSockets?: number; - } + maxFreeSockets?: number; + } - export class Agent { - maxSockets: number; - sockets: any; - requests: any; + export class Agent { + maxSockets: number; + sockets: any; + requests: any; - constructor(opts?: AgentOptions); + constructor(opts?: AgentOptions); /** * Destroy any sockets that are currently in use by the agent. @@ -807,62 +807,62 @@ declare module "http" { * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise, * sockets may hang open for quite a long time before the server terminates them. */ - destroy(): void; - } + destroy(): void; + } - export var METHODS: string[]; + export var METHODS: string[]; - export var STATUS_CODES: { - [errorCode: number]: string; - [errorCode: string]: string; - }; - export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server; - export function createClient(port?: number, host?: string): any; - export function request(options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; - export function get(options: any, callback?: (res: IncomingMessage) => void): ClientRequest; - export var globalAgent: Agent; + export var STATUS_CODES: { + [errorCode: number]: string; + [errorCode: string]: string; + }; + export function createServer(requestListener?: (request: IncomingMessage, response: ServerResponse) => void): Server; + export function createClient(port?: number, host?: string): any; + export function request(options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; + export function get(options: any, callback?: (res: IncomingMessage) => void): ClientRequest; + export var globalAgent: Agent; } declare module "cluster" { - import * as child from "child_process"; - import * as events from "events"; - import * as net from "net"; + import * as child from "child_process"; + import * as events from "events"; + import * as net from "net"; - // interfaces - export interface ClusterSettings { - execArgv?: string[]; // default: process.execArgv - exec?: string; - args?: string[]; - silent?: boolean; - stdio?: any[]; - uid?: number; - gid?: number; - } + // interfaces + export interface ClusterSettings { + execArgv?: string[]; // default: process.execArgv + exec?: string; + args?: string[]; + silent?: boolean; + stdio?: any[]; + uid?: number; + gid?: number; + } - export interface ClusterSetupMasterSettings { - exec?: string; // default: process.argv[1] - args?: string[]; // default: process.argv.slice(2) - silent?: boolean; // default: false - stdio?: any[]; - } + export interface ClusterSetupMasterSettings { + exec?: string; // default: process.argv[1] + args?: string[]; // default: process.argv.slice(2) + silent?: boolean; // default: false + stdio?: any[]; + } - export interface Address { - address: string; - port: number; - addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" - } + export interface Address { + address: string; + port: number; + addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" + } - export class Worker extends events.EventEmitter { - id: string; - process: child.ChildProcess; - suicide: boolean; - send(message: any, sendHandle?: any, callback?: (error: Error) => void): boolean; - kill(signal?: string): void; - destroy(signal?: string): void; - disconnect(): void; - isConnected(): boolean; - isDead(): boolean; - exitedAfterDisconnect: boolean; + export class Worker extends events.EventEmitter { + id: string; + process: child.ChildProcess; + suicide: boolean; + send(message: any, sendHandle?: any, callback?: (error: Error) => void): boolean; + kill(signal?: string): void; + destroy(signal?: string): void; + disconnect(): void; + isConnected(): boolean; + isDead(): boolean; + exitedAfterDisconnect: boolean; /** * events.EventEmitter @@ -873,68 +873,68 @@ declare module "cluster" { * 5. message * 6. online */ - addListener(event: string, listener: Function): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (error: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "listening", listener: (address: Address) => void): this; - addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: "exit", listener: (code: number, signal: string) => void): this; + addListener(event: "listening", listener: (address: Address) => void): this; + addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect", listener: () => void): boolean - emit(event: "error", listener: (error: Error) => void): boolean - emit(event: "exit", listener: (code: number, signal: string) => void): boolean - emit(event: "listening", listener: (address: Address) => void): boolean - emit(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): boolean - emit(event: "online", listener: () => void): boolean + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect", listener: () => void): boolean + emit(event: "error", listener: (error: Error) => void): boolean + emit(event: "exit", listener: (code: number, signal: string) => void): boolean + emit(event: "listening", listener: (address: Address) => void): boolean + emit(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): boolean + emit(event: "online", listener: () => void): boolean - on(event: string, listener: Function): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (error: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "listening", listener: (address: Address) => void): this; - on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "exit", listener: (code: number, signal: string) => void): this; + on(event: "listening", listener: (address: Address) => void): this; + on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (error: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "listening", listener: (address: Address) => void): this; - once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (error: Error) => void): this; + once(event: "exit", listener: (code: number, signal: string) => void): this; + once(event: "listening", listener: (address: Address) => void): this; + once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "listening", listener: (address: Address) => void): this; - prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependListener(event: "listening", listener: (address: Address) => void): this; + prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependListener(event: "online", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "listening", listener: (address: Address) => void): this; - prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "listening", listener: (address: Address) => void): this; + prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener(event: "online", listener: () => void): this; + } - export interface Cluster extends events.EventEmitter { - Worker: Worker; - disconnect(callback?: Function): void; - fork(env?: any): Worker; - isMaster: boolean; - isWorker: boolean; - // TODO: cluster.schedulingPolicy - settings: ClusterSettings; - setupMaster(settings?: ClusterSetupMasterSettings): void; - worker: Worker; - workers: { - [index: string]: Worker - }; + export interface Cluster extends events.EventEmitter { + Worker: Worker; + disconnect(callback?: Function): void; + fork(env?: any): Worker; + isMaster: boolean; + isWorker: boolean; + // TODO: cluster.schedulingPolicy + settings: ClusterSettings; + setupMaster(settings?: ClusterSetupMasterSettings): void; + worker: Worker; + workers: { + [index: string]: Worker + }; /** * events.EventEmitter @@ -946,73 +946,73 @@ declare module "cluster" { * 6. online * 7. setup */ - addListener(event: string, listener: Function): this; - addListener(event: "disconnect", listener: (worker: Worker) => void): this; - addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - addListener(event: "fork", listener: (worker: Worker) => void): this; - addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - addListener(event: "online", listener: (worker: Worker) => void): this; - addListener(event: "setup", listener: (settings: any) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "disconnect", listener: (worker: Worker) => void): this; + addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + addListener(event: "fork", listener: (worker: Worker) => void): this; + addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: (worker: Worker) => void): this; + addListener(event: "setup", listener: (settings: any) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "disconnect", listener: (worker: Worker) => void): boolean; - emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; - emit(event: "fork", listener: (worker: Worker) => void): boolean; - emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; - emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; - emit(event: "online", listener: (worker: Worker) => void): boolean; - emit(event: "setup", listener: (settings: any) => void): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect", listener: (worker: Worker) => void): boolean; + emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; + emit(event: "fork", listener: (worker: Worker) => void): boolean; + emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; + emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; + emit(event: "online", listener: (worker: Worker) => void): boolean; + emit(event: "setup", listener: (settings: any) => void): boolean; - on(event: string, listener: Function): this; - on(event: "disconnect", listener: (worker: Worker) => void): this; - on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - on(event: "fork", listener: (worker: Worker) => void): this; - on(event: "listening", listener: (worker: Worker, address: Address) => void): this; - on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - on(event: "online", listener: (worker: Worker) => void): this; - on(event: "setup", listener: (settings: any) => void): this; + on(event: string, listener: Function): this; + on(event: "disconnect", listener: (worker: Worker) => void): this; + on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + on(event: "fork", listener: (worker: Worker) => void): this; + on(event: "listening", listener: (worker: Worker, address: Address) => void): this; + on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: (worker: Worker) => void): this; + on(event: "setup", listener: (settings: any) => void): this; - once(event: string, listener: Function): this; - once(event: "disconnect", listener: (worker: Worker) => void): this; - once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - once(event: "fork", listener: (worker: Worker) => void): this; - once(event: "listening", listener: (worker: Worker, address: Address) => void): this; - once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - once(event: "online", listener: (worker: Worker) => void): this; - once(event: "setup", listener: (settings: any) => void): this; + once(event: string, listener: Function): this; + once(event: "disconnect", listener: (worker: Worker) => void): this; + once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + once(event: "fork", listener: (worker: Worker) => void): this; + once(event: "listening", listener: (worker: Worker, address: Address) => void): this; + once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: (worker: Worker) => void): this; + once(event: "setup", listener: (settings: any) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependListener(event: "fork", listener: (worker: Worker) => void): this; - prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependListener(event: "online", listener: (worker: Worker) => void): this; - prependListener(event: "setup", listener: (settings: any) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependListener(event: "fork", listener: (worker: Worker) => void): this; + prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependListener(event: "online", listener: (worker: Worker) => void): this; + prependListener(event: "setup", listener: (settings: any) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; - prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; - prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; - prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; - prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. - prependOnceListener(event: "online", listener: (worker: Worker) => void): this; - prependOnceListener(event: "setup", listener: (settings: any) => void): this; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; + prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener(event: "online", listener: (worker: Worker) => void): this; + prependOnceListener(event: "setup", listener: (settings: any) => void): this; - } + } - export function disconnect(callback?: Function): void; - export function fork(env?: any): Worker; - export var isMaster: boolean; - export var isWorker: boolean; - // TODO: cluster.schedulingPolicy - export var settings: ClusterSettings; - export function setupMaster(settings?: ClusterSetupMasterSettings): void; - export var worker: Worker; - export var workers: { - [index: string]: Worker - }; + export function disconnect(callback?: Function): void; + export function fork(env?: any): Worker; + export var isMaster: boolean; + export var isWorker: boolean; + // TODO: cluster.schedulingPolicy + export var settings: ClusterSettings; + export function setupMaster(settings?: ClusterSetupMasterSettings): void; + export var worker: Worker; + export var workers: { + [index: string]: Worker + }; /** * events.EventEmitter @@ -1024,444 +1024,444 @@ declare module "cluster" { * 6. online * 7. setup */ - export function addListener(event: string, listener: Function): Cluster; - export function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function addListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function addListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function addListener(event: "setup", listener: (settings: any) => void): Cluster; + export function addListener(event: string, listener: Function): Cluster; + export function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function addListener(event: "fork", listener: (worker: Worker) => void): Cluster; + export function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function addListener(event: "online", listener: (worker: Worker) => void): Cluster; + export function addListener(event: "setup", listener: (settings: any) => void): Cluster; - export function emit(event: string | symbol, ...args: any[]): boolean; - export function emit(event: "disconnect", listener: (worker: Worker) => void): boolean; - export function emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; - export function emit(event: "fork", listener: (worker: Worker) => void): boolean; - export function emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; - export function emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; - export function emit(event: "online", listener: (worker: Worker) => void): boolean; - export function emit(event: "setup", listener: (settings: any) => void): boolean; + export function emit(event: string | symbol, ...args: any[]): boolean; + export function emit(event: "disconnect", listener: (worker: Worker) => void): boolean; + export function emit(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): boolean; + export function emit(event: "fork", listener: (worker: Worker) => void): boolean; + export function emit(event: "listening", listener: (worker: Worker, address: Address) => void): boolean; + export function emit(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): boolean; + export function emit(event: "online", listener: (worker: Worker) => void): boolean; + export function emit(event: "setup", listener: (settings: any) => void): boolean; - export function on(event: string, listener: Function): Cluster; - export function on(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function on(event: "fork", listener: (worker: Worker) => void): Cluster; - export function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function on(event: "online", listener: (worker: Worker) => void): Cluster; - export function on(event: "setup", listener: (settings: any) => void): Cluster; + export function on(event: string, listener: Function): Cluster; + export function on(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function on(event: "fork", listener: (worker: Worker) => void): Cluster; + export function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function on(event: "online", listener: (worker: Worker) => void): Cluster; + export function on(event: "setup", listener: (settings: any) => void): Cluster; - export function once(event: string, listener: Function): Cluster; - export function once(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function once(event: "fork", listener: (worker: Worker) => void): Cluster; - export function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function once(event: "online", listener: (worker: Worker) => void): Cluster; - export function once(event: "setup", listener: (settings: any) => void): Cluster; + export function once(event: string, listener: Function): Cluster; + export function once(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function once(event: "fork", listener: (worker: Worker) => void): Cluster; + export function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function once(event: "online", listener: (worker: Worker) => void): Cluster; + export function once(event: "setup", listener: (settings: any) => void): Cluster; - export function removeListener(event: string, listener: Function): Cluster; - export function removeAllListeners(event?: string): Cluster; - export function setMaxListeners(n: number): Cluster; - export function getMaxListeners(): number; - export function listeners(event: string): Function[]; - export function listenerCount(type: string): number; + export function removeListener(event: string, listener: Function): Cluster; + export function removeAllListeners(event?: string): Cluster; + export function setMaxListeners(n: number): Cluster; + export function getMaxListeners(): number; + export function listeners(event: string): Function[]; + export function listenerCount(type: string): number; - export function prependListener(event: string, listener: Function): Cluster; - export function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function prependListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function prependListener(event: "setup", listener: (settings: any) => void): Cluster; + export function prependListener(event: string, listener: Function): Cluster; + export function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster; + export function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function prependListener(event: "online", listener: (worker: Worker) => void): Cluster; + export function prependListener(event: "setup", listener: (settings: any) => void): Cluster; - export function prependOnceListener(event: string, listener: Function): Cluster; - export function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; - export function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; - export function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. - export function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster; - export function prependOnceListener(event: "setup", listener: (settings: any) => void): Cluster; + export function prependOnceListener(event: string, listener: Function): Cluster; + export function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster; + export function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster; + export function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster; + export function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster; + export function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined. + export function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster; + export function prependOnceListener(event: "setup", listener: (settings: any) => void): Cluster; - export function eventNames(): string[]; + export function eventNames(): string[]; } declare module "zlib" { - import * as stream from "stream"; + import * as stream from "stream"; - export interface ZlibOptions { - flush?: number; // default: zlib.constants.Z_NO_FLUSH - finishFlush?: number; // default: zlib.constants.Z_FINISH - chunkSize?: number; // default: 16*1024 - windowBits?: number; - level?: number; // compression only - memLevel?: number; // compression only - strategy?: number; // compression only - dictionary?: any; // deflate/inflate only, empty dictionary by default - } + export interface ZlibOptions { + flush?: number; // default: zlib.constants.Z_NO_FLUSH + finishFlush?: number; // default: zlib.constants.Z_FINISH + chunkSize?: number; // default: 16*1024 + windowBits?: number; + level?: number; // compression only + memLevel?: number; // compression only + strategy?: number; // compression only + dictionary?: any; // deflate/inflate only, empty dictionary by default + } - export interface Gzip extends stream.Transform { } - export interface Gunzip extends stream.Transform { } - export interface Deflate extends stream.Transform { } - export interface Inflate extends stream.Transform { } - export interface DeflateRaw extends stream.Transform { } - export interface InflateRaw extends stream.Transform { } - export interface Unzip extends stream.Transform { } + export interface Gzip extends stream.Transform { } + export interface Gunzip extends stream.Transform { } + export interface Deflate extends stream.Transform { } + export interface Inflate extends stream.Transform { } + export interface DeflateRaw extends stream.Transform { } + export interface InflateRaw extends stream.Transform { } + export interface Unzip extends stream.Transform { } - export function createGzip(options?: ZlibOptions): Gzip; - export function createGunzip(options?: ZlibOptions): Gunzip; - export function createDeflate(options?: ZlibOptions): Deflate; - export function createInflate(options?: ZlibOptions): Inflate; - export function createDeflateRaw(options?: ZlibOptions): DeflateRaw; - export function createInflateRaw(options?: ZlibOptions): InflateRaw; - export function createUnzip(options?: ZlibOptions): Unzip; + export function createGzip(options?: ZlibOptions): Gzip; + export function createGunzip(options?: ZlibOptions): Gunzip; + export function createDeflate(options?: ZlibOptions): Deflate; + export function createInflate(options?: ZlibOptions): Inflate; + export function createDeflateRaw(options?: ZlibOptions): DeflateRaw; + export function createInflateRaw(options?: ZlibOptions): InflateRaw; + export function createUnzip(options?: ZlibOptions): Unzip; - export function deflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function deflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function deflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function deflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function deflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function deflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function gzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function gzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function gzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function gunzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function gunzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function gunzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function inflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function inflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function inflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function inflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function inflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function inflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export function unzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; - export function unzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; - export function unzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function deflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function deflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function deflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function deflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function deflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function deflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function gzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function gzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function gzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function gunzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function gunzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function gunzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function inflate(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function inflate(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function inflateSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function inflateRaw(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function inflateRaw(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function inflateRawSync(buf: Buffer | string, options?: ZlibOptions): Buffer; + export function unzip(buf: Buffer | string, callback: (error: Error, result: Buffer) => void): void; + export function unzip(buf: Buffer | string, options: ZlibOptions, callback: (error: Error, result: Buffer) => void): void; + export function unzipSync(buf: Buffer | string, options?: ZlibOptions): Buffer; - export namespace constants { - // Allowed flush values. + export namespace constants { + // Allowed flush values. - export const Z_NO_FLUSH: number; - export const Z_PARTIAL_FLUSH: number; - export const Z_SYNC_FLUSH: number; - export const Z_FULL_FLUSH: number; - export const Z_FINISH: number; - export const Z_BLOCK: number; - export const Z_TREES: number; + export const Z_NO_FLUSH: number; + export const Z_PARTIAL_FLUSH: number; + export const Z_SYNC_FLUSH: number; + export const Z_FULL_FLUSH: number; + export const Z_FINISH: number; + export const Z_BLOCK: number; + export const Z_TREES: number; - // Return codes for the compression/decompression functions. Negative values are errors, positive values are used for special but normal events. + // Return codes for the compression/decompression functions. Negative values are errors, positive values are used for special but normal events. - export const Z_OK: number; - export const Z_STREAM_END: number; - export const Z_NEED_DICT: number; - export const Z_ERRNO: number; - export const Z_STREAM_ERROR: number; - export const Z_DATA_ERROR: number; - export const Z_MEM_ERROR: number; - export const Z_BUF_ERROR: number; - export const Z_VERSION_ERROR: number; + export const Z_OK: number; + export const Z_STREAM_END: number; + export const Z_NEED_DICT: number; + export const Z_ERRNO: number; + export const Z_STREAM_ERROR: number; + export const Z_DATA_ERROR: number; + export const Z_MEM_ERROR: number; + export const Z_BUF_ERROR: number; + export const Z_VERSION_ERROR: number; - // Compression levels. + // Compression levels. - export const Z_NO_COMPRESSION: number; - export const Z_BEST_SPEED: number; - export const Z_BEST_COMPRESSION: number; - export const Z_DEFAULT_COMPRESSION: number; + export const Z_NO_COMPRESSION: number; + export const Z_BEST_SPEED: number; + export const Z_BEST_COMPRESSION: number; + export const Z_DEFAULT_COMPRESSION: number; - // Compression strategy. + // Compression strategy. - export const Z_FILTERED: number; - export const Z_HUFFMAN_ONLY: number; - export const Z_RLE: number; - export const Z_FIXED: number; - export const Z_DEFAULT_STRATEGY: number; - } + export const Z_FILTERED: number; + export const Z_HUFFMAN_ONLY: number; + export const Z_RLE: number; + export const Z_FIXED: number; + export const Z_DEFAULT_STRATEGY: number; + } - // Constants - export var Z_NO_FLUSH: number; - export var Z_PARTIAL_FLUSH: number; - export var Z_SYNC_FLUSH: number; - export var Z_FULL_FLUSH: number; - export var Z_FINISH: number; - export var Z_BLOCK: number; - export var Z_TREES: number; - export var Z_OK: number; - export var Z_STREAM_END: number; - export var Z_NEED_DICT: number; - export var Z_ERRNO: number; - export var Z_STREAM_ERROR: number; - export var Z_DATA_ERROR: number; - export var Z_MEM_ERROR: number; - export var Z_BUF_ERROR: number; - export var Z_VERSION_ERROR: number; - export var Z_NO_COMPRESSION: number; - export var Z_BEST_SPEED: number; - export var Z_BEST_COMPRESSION: number; - export var Z_DEFAULT_COMPRESSION: number; - export var Z_FILTERED: number; - export var Z_HUFFMAN_ONLY: number; - export var Z_RLE: number; - export var Z_FIXED: number; - export var Z_DEFAULT_STRATEGY: number; - export var Z_BINARY: number; - export var Z_TEXT: number; - export var Z_ASCII: number; - export var Z_UNKNOWN: number; - export var Z_DEFLATED: number; + // Constants + export var Z_NO_FLUSH: number; + export var Z_PARTIAL_FLUSH: number; + export var Z_SYNC_FLUSH: number; + export var Z_FULL_FLUSH: number; + export var Z_FINISH: number; + export var Z_BLOCK: number; + export var Z_TREES: number; + export var Z_OK: number; + export var Z_STREAM_END: number; + export var Z_NEED_DICT: number; + export var Z_ERRNO: number; + export var Z_STREAM_ERROR: number; + export var Z_DATA_ERROR: number; + export var Z_MEM_ERROR: number; + export var Z_BUF_ERROR: number; + export var Z_VERSION_ERROR: number; + export var Z_NO_COMPRESSION: number; + export var Z_BEST_SPEED: number; + export var Z_BEST_COMPRESSION: number; + export var Z_DEFAULT_COMPRESSION: number; + export var Z_FILTERED: number; + export var Z_HUFFMAN_ONLY: number; + export var Z_RLE: number; + export var Z_FIXED: number; + export var Z_DEFAULT_STRATEGY: number; + export var Z_BINARY: number; + export var Z_TEXT: number; + export var Z_ASCII: number; + export var Z_UNKNOWN: number; + export var Z_DEFLATED: number; } declare module "os" { - export interface CpuInfo { - model: string; - speed: number; - times: { - user: number; - nice: number; - sys: number; - idle: number; - irq: number; - }; - } + export interface CpuInfo { + model: string; + speed: number; + times: { + user: number; + nice: number; + sys: number; + idle: number; + irq: number; + }; + } - export interface NetworkInterfaceInfo { - address: string; - netmask: string; - family: string; - mac: string; - internal: boolean; - } + export interface NetworkInterfaceInfo { + address: string; + netmask: string; + family: string; + mac: string; + internal: boolean; + } - export function hostname(): string; - export function loadavg(): number[]; - export function uptime(): number; - export function freemem(): number; - export function totalmem(): number; - export function cpus(): CpuInfo[]; - export function type(): string; - export function release(): string; - export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] }; - export function homedir(): string; - export function userInfo(options?: { encoding: string }): { username: string, uid: number, gid: number, shell: any, homedir: string } - export var constants: { - UV_UDP_REUSEADDR: number, - signals: { - SIGHUP: number; - SIGINT: number; - SIGQUIT: number; - SIGILL: number; - SIGTRAP: number; - SIGABRT: number; - SIGIOT: number; - SIGBUS: number; - SIGFPE: number; - SIGKILL: number; - SIGUSR1: number; - SIGSEGV: number; - SIGUSR2: number; - SIGPIPE: number; - SIGALRM: number; - SIGTERM: number; - SIGCHLD: number; - SIGSTKFLT: number; - SIGCONT: number; - SIGSTOP: number; - SIGTSTP: number; - SIGTTIN: number; - SIGTTOU: number; - SIGURG: number; - SIGXCPU: number; - SIGXFSZ: number; - SIGVTALRM: number; - SIGPROF: number; - SIGWINCH: number; - SIGIO: number; - SIGPOLL: number; - SIGPWR: number; - SIGSYS: number; - SIGUNUSED: number; - }, - errno: { - E2BIG: number; - EACCES: number; - EADDRINUSE: number; - EADDRNOTAVAIL: number; - EAFNOSUPPORT: number; - EAGAIN: number; - EALREADY: number; - EBADF: number; - EBADMSG: number; - EBUSY: number; - ECANCELED: number; - ECHILD: number; - ECONNABORTED: number; - ECONNREFUSED: number; - ECONNRESET: number; - EDEADLK: number; - EDESTADDRREQ: number; - EDOM: number; - EDQUOT: number; - EEXIST: number; - EFAULT: number; - EFBIG: number; - EHOSTUNREACH: number; - EIDRM: number; - EILSEQ: number; - EINPROGRESS: number; - EINTR: number; - EINVAL: number; - EIO: number; - EISCONN: number; - EISDIR: number; - ELOOP: number; - EMFILE: number; - EMLINK: number; - EMSGSIZE: number; - EMULTIHOP: number; - ENAMETOOLONG: number; - ENETDOWN: number; - ENETRESET: number; - ENETUNREACH: number; - ENFILE: number; - ENOBUFS: number; - ENODATA: number; - ENODEV: number; - ENOENT: number; - ENOEXEC: number; - ENOLCK: number; - ENOLINK: number; - ENOMEM: number; - ENOMSG: number; - ENOPROTOOPT: number; - ENOSPC: number; - ENOSR: number; - ENOSTR: number; - ENOSYS: number; - ENOTCONN: number; - ENOTDIR: number; - ENOTEMPTY: number; - ENOTSOCK: number; - ENOTSUP: number; - ENOTTY: number; - ENXIO: number; - EOPNOTSUPP: number; - EOVERFLOW: number; - EPERM: number; - EPIPE: number; - EPROTO: number; - EPROTONOSUPPORT: number; - EPROTOTYPE: number; - ERANGE: number; - EROFS: number; - ESPIPE: number; - ESRCH: number; - ESTALE: number; - ETIME: number; - ETIMEDOUT: number; - ETXTBSY: number; - EWOULDBLOCK: number; - EXDEV: number; - }, - }; - export function arch(): string; - export function platform(): NodeJS.Platform; - export function tmpdir(): string; - export var EOL: string; - export function endianness(): "BE" | "LE"; + export function hostname(): string; + export function loadavg(): number[]; + export function uptime(): number; + export function freemem(): number; + export function totalmem(): number; + export function cpus(): CpuInfo[]; + export function type(): string; + export function release(): string; + export function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] }; + export function homedir(): string; + export function userInfo(options?: { encoding: string }): { username: string, uid: number, gid: number, shell: any, homedir: string } + export var constants: { + UV_UDP_REUSEADDR: number, + signals: { + SIGHUP: number; + SIGINT: number; + SIGQUIT: number; + SIGILL: number; + SIGTRAP: number; + SIGABRT: number; + SIGIOT: number; + SIGBUS: number; + SIGFPE: number; + SIGKILL: number; + SIGUSR1: number; + SIGSEGV: number; + SIGUSR2: number; + SIGPIPE: number; + SIGALRM: number; + SIGTERM: number; + SIGCHLD: number; + SIGSTKFLT: number; + SIGCONT: number; + SIGSTOP: number; + SIGTSTP: number; + SIGTTIN: number; + SIGTTOU: number; + SIGURG: number; + SIGXCPU: number; + SIGXFSZ: number; + SIGVTALRM: number; + SIGPROF: number; + SIGWINCH: number; + SIGIO: number; + SIGPOLL: number; + SIGPWR: number; + SIGSYS: number; + SIGUNUSED: number; + }, + errno: { + E2BIG: number; + EACCES: number; + EADDRINUSE: number; + EADDRNOTAVAIL: number; + EAFNOSUPPORT: number; + EAGAIN: number; + EALREADY: number; + EBADF: number; + EBADMSG: number; + EBUSY: number; + ECANCELED: number; + ECHILD: number; + ECONNABORTED: number; + ECONNREFUSED: number; + ECONNRESET: number; + EDEADLK: number; + EDESTADDRREQ: number; + EDOM: number; + EDQUOT: number; + EEXIST: number; + EFAULT: number; + EFBIG: number; + EHOSTUNREACH: number; + EIDRM: number; + EILSEQ: number; + EINPROGRESS: number; + EINTR: number; + EINVAL: number; + EIO: number; + EISCONN: number; + EISDIR: number; + ELOOP: number; + EMFILE: number; + EMLINK: number; + EMSGSIZE: number; + EMULTIHOP: number; + ENAMETOOLONG: number; + ENETDOWN: number; + ENETRESET: number; + ENETUNREACH: number; + ENFILE: number; + ENOBUFS: number; + ENODATA: number; + ENODEV: number; + ENOENT: number; + ENOEXEC: number; + ENOLCK: number; + ENOLINK: number; + ENOMEM: number; + ENOMSG: number; + ENOPROTOOPT: number; + ENOSPC: number; + ENOSR: number; + ENOSTR: number; + ENOSYS: number; + ENOTCONN: number; + ENOTDIR: number; + ENOTEMPTY: number; + ENOTSOCK: number; + ENOTSUP: number; + ENOTTY: number; + ENXIO: number; + EOPNOTSUPP: number; + EOVERFLOW: number; + EPERM: number; + EPIPE: number; + EPROTO: number; + EPROTONOSUPPORT: number; + EPROTOTYPE: number; + ERANGE: number; + EROFS: number; + ESPIPE: number; + ESRCH: number; + ESTALE: number; + ETIME: number; + ETIMEDOUT: number; + ETXTBSY: number; + EWOULDBLOCK: number; + EXDEV: number; + }, + }; + export function arch(): string; + export function platform(): NodeJS.Platform; + export function tmpdir(): string; + export var EOL: string; + export function endianness(): "BE" | "LE"; } declare module "https" { - import * as tls from "tls"; - import * as events from "events"; - import * as http from "http"; + import * as tls from "tls"; + import * as events from "events"; + import * as http from "http"; - export interface ServerOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - crl?: any; - ciphers?: string; - honorCipherOrder?: boolean; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: any; - SNICallback?: (servername: string, cb: (err: Error, ctx: tls.SecureContext) => any) => any; - } + export interface ServerOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + crl?: any; + ciphers?: string; + honorCipherOrder?: boolean; + requestCert?: boolean; + rejectUnauthorized?: boolean; + NPNProtocols?: any; + SNICallback?: (servername: string, cb: (err: Error, ctx: tls.SecureContext) => any) => any; + } - export interface RequestOptions extends http.RequestOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - ciphers?: string; - rejectUnauthorized?: boolean; - secureProtocol?: string; - } + export interface RequestOptions extends http.RequestOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + ciphers?: string; + rejectUnauthorized?: boolean; + secureProtocol?: string; + } - export interface Agent extends http.Agent { } + export interface Agent extends http.Agent { } - export interface AgentOptions extends http.AgentOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - ciphers?: string; - rejectUnauthorized?: boolean; - secureProtocol?: string; - maxCachedSessions?: number; - } + export interface AgentOptions extends http.AgentOptions { + pfx?: any; + key?: any; + passphrase?: string; + cert?: any; + ca?: any; + ciphers?: string; + rejectUnauthorized?: boolean; + secureProtocol?: string; + maxCachedSessions?: number; + } - export var Agent: { - new(options?: AgentOptions): Agent; - }; - export interface Server extends tls.Server { } - export function createServer(options: ServerOptions, requestListener?: Function): Server; - export function request(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - export function get(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; - export var globalAgent: Agent; + export var Agent: { + new(options?: AgentOptions): Agent; + }; + export interface Server extends tls.Server { } + export function createServer(options: ServerOptions, requestListener?: Function): Server; + export function request(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; + export function get(options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest; + export var globalAgent: Agent; } declare module "punycode" { - export function decode(string: string): string; - export function encode(string: string): string; - export function toUnicode(domain: string): string; - export function toASCII(domain: string): string; - export var ucs2: ucs2; - interface ucs2 { - decode(string: string): number[]; - encode(codePoints: number[]): string; - } - export var version: any; + export function decode(string: string): string; + export function encode(string: string): string; + export function toUnicode(domain: string): string; + export function toASCII(domain: string): string; + export var ucs2: ucs2; + interface ucs2 { + decode(string: string): number[]; + encode(codePoints: number[]): string; + } + export var version: any; } declare module "repl" { - import * as stream from "stream"; - import * as readline from "readline"; + import * as stream from "stream"; + import * as readline from "readline"; - export interface ReplOptions { - prompt?: string; - input?: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - terminal?: boolean; - eval?: Function; - useColors?: boolean; - useGlobal?: boolean; - ignoreUndefined?: boolean; - writer?: Function; - completer?: Function; - replMode?: any; - breakEvalOnSigint?: any; - } + export interface ReplOptions { + prompt?: string; + input?: NodeJS.ReadableStream; + output?: NodeJS.WritableStream; + terminal?: boolean; + eval?: Function; + useColors?: boolean; + useGlobal?: boolean; + ignoreUndefined?: boolean; + writer?: Function; + completer?: Function; + replMode?: any; + breakEvalOnSigint?: any; + } - export interface REPLServer extends readline.ReadLine { - context: any; - defineCommand(keyword: string, cmd: Function | { help: string, action: Function }): void; - displayPrompt(preserveCursor?: boolean): void; + export interface REPLServer extends readline.ReadLine { + context: any; + defineCommand(keyword: string, cmd: Function | { help: string, action: Function }): void; + displayPrompt(preserveCursor?: boolean): void; /** * events.EventEmitter @@ -1469,54 +1469,54 @@ declare module "repl" { * 2. reset **/ - addListener(event: string, listener: Function): this; - addListener(event: "exit", listener: () => void): this; - addListener(event: "reset", listener: Function): this; + addListener(event: string, listener: Function): this; + addListener(event: "exit", listener: () => void): this; + addListener(event: "reset", listener: Function): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "exit"): boolean; - emit(event: "reset", context: any): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "exit"): boolean; + emit(event: "reset", context: any): boolean; - on(event: string, listener: Function): this; - on(event: "exit", listener: () => void): this; - on(event: "reset", listener: Function): this; + on(event: string, listener: Function): this; + on(event: "exit", listener: () => void): this; + on(event: "reset", listener: Function): this; - once(event: string, listener: Function): this; - once(event: "exit", listener: () => void): this; - once(event: "reset", listener: Function): this; + once(event: string, listener: Function): this; + once(event: "exit", listener: () => void): this; + once(event: "reset", listener: Function): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "exit", listener: () => void): this; - prependListener(event: "reset", listener: Function): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "exit", listener: () => void): this; + prependListener(event: "reset", listener: Function): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "exit", listener: () => void): this; - prependOnceListener(event: "reset", listener: Function): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "exit", listener: () => void): this; + prependOnceListener(event: "reset", listener: Function): this; + } - export function start(options?: string | ReplOptions): REPLServer; + export function start(options?: string | ReplOptions): REPLServer; } declare module "readline" { - import * as events from "events"; - import * as stream from "stream"; + import * as events from "events"; + import * as stream from "stream"; - export interface Key { - sequence?: string; - name?: string; - ctrl?: boolean; - meta?: boolean; - shift?: boolean; - } + export interface Key { + sequence?: string; + name?: string; + ctrl?: boolean; + meta?: boolean; + shift?: boolean; + } - export interface ReadLine extends events.EventEmitter { - setPrompt(prompt: string): void; - prompt(preserveCursor?: boolean): void; - question(query: string, callback: (answer: string) => void): void; - pause(): ReadLine; - resume(): ReadLine; - close(): void; - write(data: string | Buffer, key?: Key): void; + export interface ReadLine extends events.EventEmitter { + setPrompt(prompt: string): void; + prompt(preserveCursor?: boolean): void; + question(query: string, callback: (answer: string) => void): void; + pause(): ReadLine; + resume(): ReadLine; + close(): void; + write(data: string | Buffer, key?: Key): void; /** * events.EventEmitter @@ -1529,136 +1529,136 @@ declare module "readline" { * 7. SIGTSTP **/ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "line", listener: (input: any) => void): this; - addListener(event: "pause", listener: () => void): this; - addListener(event: "resume", listener: () => void): this; - addListener(event: "SIGCONT", listener: () => void): this; - addListener(event: "SIGINT", listener: () => void): this; - addListener(event: "SIGTSTP", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "line", listener: (input: any) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "SIGCONT", listener: () => void): this; + addListener(event: "SIGINT", listener: () => void): this; + addListener(event: "SIGTSTP", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "line", input: any): boolean; - emit(event: "pause"): boolean; - emit(event: "resume"): boolean; - emit(event: "SIGCONT"): boolean; - emit(event: "SIGINT"): boolean; - emit(event: "SIGTSTP"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "line", input: any): boolean; + emit(event: "pause"): boolean; + emit(event: "resume"): boolean; + emit(event: "SIGCONT"): boolean; + emit(event: "SIGINT"): boolean; + emit(event: "SIGTSTP"): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "line", listener: (input: any) => void): this; - on(event: "pause", listener: () => void): this; - on(event: "resume", listener: () => void): this; - on(event: "SIGCONT", listener: () => void): this; - on(event: "SIGINT", listener: () => void): this; - on(event: "SIGTSTP", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "line", listener: (input: any) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "SIGCONT", listener: () => void): this; + on(event: "SIGINT", listener: () => void): this; + on(event: "SIGTSTP", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "line", listener: (input: any) => void): this; - once(event: "pause", listener: () => void): this; - once(event: "resume", listener: () => void): this; - once(event: "SIGCONT", listener: () => void): this; - once(event: "SIGINT", listener: () => void): this; - once(event: "SIGTSTP", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "line", listener: (input: any) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "SIGCONT", listener: () => void): this; + once(event: "SIGINT", listener: () => void): this; + once(event: "SIGTSTP", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "line", listener: (input: any) => void): this; - prependListener(event: "pause", listener: () => void): this; - prependListener(event: "resume", listener: () => void): this; - prependListener(event: "SIGCONT", listener: () => void): this; - prependListener(event: "SIGINT", listener: () => void): this; - prependListener(event: "SIGTSTP", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "line", listener: (input: any) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "SIGCONT", listener: () => void): this; + prependListener(event: "SIGINT", listener: () => void): this; + prependListener(event: "SIGTSTP", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "line", listener: (input: any) => void): this; - prependOnceListener(event: "pause", listener: () => void): this; - prependOnceListener(event: "resume", listener: () => void): this; - prependOnceListener(event: "SIGCONT", listener: () => void): this; - prependOnceListener(event: "SIGINT", listener: () => void): this; - prependOnceListener(event: "SIGTSTP", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "line", listener: (input: any) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "SIGCONT", listener: () => void): this; + prependOnceListener(event: "SIGINT", listener: () => void): this; + prependOnceListener(event: "SIGTSTP", listener: () => void): this; + } - type Completer = (line: string) => CompleterResult; - type AsyncCompleter = (line: string, callback: (err: any, result: CompleterResult) => void) => any; + type Completer = (line: string) => CompleterResult; + type AsyncCompleter = (line: string, callback: (err: any, result: CompleterResult) => void) => any; - export type CompleterResult = [string[], string]; + export type CompleterResult = [string[], string]; - export interface ReadLineOptions { - input: NodeJS.ReadableStream; - output?: NodeJS.WritableStream; - completer?: Completer | AsyncCompleter; - terminal?: boolean; - historySize?: number; - prompt?: string; - crlfDelay?: number; - removeHistoryDuplicates?: boolean; - } + export interface ReadLineOptions { + input: NodeJS.ReadableStream; + output?: NodeJS.WritableStream; + completer?: Completer | AsyncCompleter; + terminal?: boolean; + historySize?: number; + prompt?: string; + crlfDelay?: number; + removeHistoryDuplicates?: boolean; + } - export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): ReadLine; - export function createInterface(options: ReadLineOptions): ReadLine; + export function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): ReadLine; + export function createInterface(options: ReadLineOptions): ReadLine; - export function cursorTo(stream: NodeJS.WritableStream, x: number, y: number): void; - export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void; - export function clearLine(stream: NodeJS.WritableStream, dir: number): void; - export function clearScreenDown(stream: NodeJS.WritableStream): void; + export function cursorTo(stream: NodeJS.WritableStream, x: number, y: number): void; + export function moveCursor(stream: NodeJS.WritableStream, dx: number | string, dy: number | string): void; + export function clearLine(stream: NodeJS.WritableStream, dir: number): void; + export function clearScreenDown(stream: NodeJS.WritableStream): void; } declare module "vm" { - export interface Context { } - export interface ScriptOptions { - filename?: string; - lineOffset?: number; - columnOffset?: number; - displayErrors?: boolean; - timeout?: number; - cachedData?: Buffer; - produceCachedData?: boolean; - } - export interface RunningScriptOptions { - filename?: string; - lineOffset?: number; - columnOffset?: number; - displayErrors?: boolean; - timeout?: number; - } - export class Script { - constructor(code: string, options?: ScriptOptions); - runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; - runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; - runInThisContext(options?: RunningScriptOptions): any; - } - export function createContext(sandbox?: Context): Context; - export function isContext(sandbox: Context): boolean; - export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions): any; - export function runInDebugContext(code: string): any; - export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions): any; - export function runInThisContext(code: string, options?: RunningScriptOptions): any; + export interface Context { } + export interface ScriptOptions { + filename?: string; + lineOffset?: number; + columnOffset?: number; + displayErrors?: boolean; + timeout?: number; + cachedData?: Buffer; + produceCachedData?: boolean; + } + export interface RunningScriptOptions { + filename?: string; + lineOffset?: number; + columnOffset?: number; + displayErrors?: boolean; + timeout?: number; + } + export class Script { + constructor(code: string, options?: ScriptOptions); + runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; + runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; + runInThisContext(options?: RunningScriptOptions): any; + } + export function createContext(sandbox?: Context): Context; + export function isContext(sandbox: Context): boolean; + export function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions): any; + export function runInDebugContext(code: string): any; + export function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions): any; + export function runInThisContext(code: string, options?: RunningScriptOptions): any; } declare module "child_process" { - import * as events from "events"; - import * as stream from "stream"; - import * as net from "net"; + import * as events from "events"; + import * as stream from "stream"; + import * as net from "net"; - export interface ChildProcess extends events.EventEmitter { - stdin: stream.Writable; - stdout: stream.Readable; - stderr: stream.Readable; - stdio: [stream.Writable, stream.Readable, stream.Readable]; - killed: boolean; - pid: number; - kill(signal?: string): void; - send(message: any, sendHandle?: any): boolean; - connected: boolean; - disconnect(): void; - unref(): void; - ref(): void; + export interface ChildProcess extends events.EventEmitter { + stdin: stream.Writable; + stdout: stream.Readable; + stderr: stream.Readable; + stdio: [stream.Writable, stream.Readable, stream.Readable]; + killed: boolean; + pid: number; + kill(signal?: string): void; + send(message: any, sendHandle?: any): boolean; + connected: boolean; + disconnect(): void; + unref(): void; + ref(): void; /** * events.EventEmitter @@ -1669,462 +1669,462 @@ declare module "child_process" { * 5. message **/ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: (code: number, signal: string) => void): this; - addListener(event: "disconnect", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "exit", listener: (code: number, signal: string) => void): this; - addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: (code: number, signal: string) => void): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "exit", listener: (code: number, signal: string) => void): this; + addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", code: number, signal: string): boolean; - emit(event: "disconnect"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "exit", code: number, signal: string): boolean; - emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", code: number, signal: string): boolean; + emit(event: "disconnect"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "exit", code: number, signal: string): boolean; + emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: (code: number, signal: string) => void): this; - on(event: "disconnect", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "exit", listener: (code: number, signal: string) => void): this; - on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: (code: number, signal: string) => void): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "exit", listener: (code: number, signal: string) => void): this; + on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: (code: number, signal: string) => void): this; - once(event: "disconnect", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "exit", listener: (code: number, signal: string) => void): this; - once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: (code: number, signal: string) => void): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "exit", listener: (code: number, signal: string) => void): this; + once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: (code: number, signal: string) => void): this; - prependListener(event: "disconnect", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: (code: number, signal: string) => void): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "disconnect", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; - prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; + } - export interface SpawnOptions { - cwd?: string; - env?: any; - stdio?: any; - detached?: boolean; - uid?: number; - gid?: number; - shell?: boolean | string; - windowsVerbatimArguments?: boolean; - } - export function spawn(command: string, args?: string[], options?: SpawnOptions): ChildProcess; + export interface SpawnOptions { + cwd?: string; + env?: any; + stdio?: any; + detached?: boolean; + uid?: number; + gid?: number; + shell?: boolean | string; + windowsVerbatimArguments?: boolean; + } + export function spawn(command: string, args?: string[], options?: SpawnOptions): ChildProcess; - export interface ExecOptions { - cwd?: string; - env?: any; - shell?: string; - timeout?: number; - maxBuffer?: number; - killSignal?: string; - uid?: number; - gid?: number; - } - export interface ExecOptionsWithStringEncoding extends ExecOptions { - encoding: BufferEncoding; - } - export interface ExecOptionsWithBufferEncoding extends ExecOptions { - encoding: string; // specify `null`. - } - export function exec(command: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export function exec(command: string, options: ExecOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - // usage. child_process.exec("tsc", {encoding: null as string}, (err, stdout, stderr) => {}); - export function exec(command: string, options: ExecOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - export function exec(command: string, options: ExecOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export interface ExecOptions { + cwd?: string; + env?: any; + shell?: string; + timeout?: number; + maxBuffer?: number; + killSignal?: string; + uid?: number; + gid?: number; + } + export interface ExecOptionsWithStringEncoding extends ExecOptions { + encoding: BufferEncoding; + } + export interface ExecOptionsWithBufferEncoding extends ExecOptions { + encoding: string; // specify `null`. + } + export function exec(command: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function exec(command: string, options: ExecOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.exec("tsc", {encoding: null as string}, (err, stdout, stderr) => {}); + export function exec(command: string, options: ExecOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function exec(command: string, options: ExecOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export interface ExecFileOptions { - cwd?: string; - env?: any; - timeout?: number; - maxBuffer?: number; - killSignal?: string; - uid?: number; - gid?: number; - } - export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { - encoding: BufferEncoding; - } - export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { - encoding: string; // specify `null`. - } - export function execFile(file: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - // usage. child_process.execFile("file.sh", {encoding: null as string}, (err, stdout, stderr) => {}); - export function execFile(file: string, options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - export function execFile(file: string, options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args?: string[], callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - // usage. child_process.execFile("file.sh", ["foo"], {encoding: null as string}, (err, stdout, stderr) => {}); - export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; - export function execFile(file: string, args?: string[], options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export interface ExecFileOptions { + cwd?: string; + env?: any; + timeout?: number; + maxBuffer?: number; + killSignal?: string; + uid?: number; + gid?: number; + } + export interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { + encoding: BufferEncoding; + } + export interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { + encoding: string; // specify `null`. + } + export function execFile(file: string, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.execFile("file.sh", {encoding: null as string}, (err, stdout, stderr) => {}); + export function execFile(file: string, options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function execFile(file: string, options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, args?: string[], callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithStringEncoding, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; + // usage. child_process.execFile("file.sh", ["foo"], {encoding: null as string}, (err, stdout, stderr) => {}); + export function execFile(file: string, args?: string[], options?: ExecFileOptionsWithBufferEncoding, callback?: (error: Error, stdout: Buffer, stderr: Buffer) => void): ChildProcess; + export function execFile(file: string, args?: string[], options?: ExecFileOptions, callback?: (error: Error, stdout: string, stderr: string) => void): ChildProcess; - export interface ForkOptions { - cwd?: string; - env?: any; - execPath?: string; - execArgv?: string[]; - silent?: boolean; - stdio?: any[]; - uid?: number; - gid?: number; - } - export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess; + export interface ForkOptions { + cwd?: string; + env?: any; + execPath?: string; + execArgv?: string[]; + silent?: boolean; + stdio?: any[]; + uid?: number; + gid?: number; + } + export function fork(modulePath: string, args?: string[], options?: ForkOptions): ChildProcess; - export interface SpawnSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - shell?: boolean | string; - } - export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { - encoding: BufferEncoding; - } - export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { - encoding: string; // specify `null`. - } - export interface SpawnSyncReturns { - pid: number; - output: string[]; - stdout: T; - stderr: T; - status: number; - signal: string; - error: Error; - } - export function spawnSync(command: string): SpawnSyncReturns; - export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; - export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; - export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; - export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns; + export interface SpawnSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + shell?: boolean | string; + } + export interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { + encoding: BufferEncoding; + } + export interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { + encoding: string; // specify `null`. + } + export interface SpawnSyncReturns { + pid: number; + output: string[]; + stdout: T; + stderr: T; + status: number; + signal: string; + error: Error; + } + export function spawnSync(command: string): SpawnSyncReturns; + export function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; + export function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; + export function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; + export function spawnSync(command: string, args?: string[], options?: SpawnSyncOptions): SpawnSyncReturns; - export interface ExecSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - shell?: string; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - } - export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { - encoding: BufferEncoding; - } - export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { - encoding: string; // specify `null`. - } - export function execSync(command: string): Buffer; - export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string; - export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer; - export function execSync(command: string, options?: ExecSyncOptions): Buffer; + export interface ExecSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + shell?: string; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + } + export interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { + encoding: BufferEncoding; + } + export interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { + encoding: string; // specify `null`. + } + export function execSync(command: string): Buffer; + export function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string; + export function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer; + export function execSync(command: string, options?: ExecSyncOptions): Buffer; - export interface ExecFileSyncOptions { - cwd?: string; - input?: string | Buffer; - stdio?: any; - env?: any; - uid?: number; - gid?: number; - timeout?: number; - killSignal?: string; - maxBuffer?: number; - encoding?: string; - } - export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { - encoding: BufferEncoding; - } - export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { - encoding: string; // specify `null`. - } - export function execFileSync(command: string): Buffer; - export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string; - export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; - export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer; + export interface ExecFileSyncOptions { + cwd?: string; + input?: string | Buffer; + stdio?: any; + env?: any; + uid?: number; + gid?: number; + timeout?: number; + killSignal?: string; + maxBuffer?: number; + encoding?: string; + } + export interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { + encoding: BufferEncoding; + } + export interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { + encoding: string; // specify `null`. + } + export function execFileSync(command: string): Buffer; + export function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string; + export function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; + export function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithStringEncoding): string; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptionsWithBufferEncoding): Buffer; + export function execFileSync(command: string, args?: string[], options?: ExecFileSyncOptions): Buffer; } declare module "url" { - export interface Url { - href?: string; - protocol?: string; - auth?: string; - hostname?: string; - port?: string; - host?: string; - pathname?: string; - search?: string; - query?: string | any; - slashes?: boolean; - hash?: string; - path?: string; - } + export interface Url { + href?: string; + protocol?: string; + auth?: string; + hostname?: string; + port?: string; + host?: string; + pathname?: string; + search?: string; + query?: string | any; + slashes?: boolean; + hash?: string; + path?: string; + } - export interface UrlObject { - protocol?: string; - slashes?: boolean; - auth?: string; - host?: string; - hostname?: string; - port?: string | number; - pathname?: string; - search?: string; - query?: { [key: string]: any; }; - hash?: string; - } + export interface UrlObject { + protocol?: string; + slashes?: boolean; + auth?: string; + host?: string; + hostname?: string; + port?: string | number; + pathname?: string; + search?: string; + query?: { [key: string]: any; }; + hash?: string; + } - export function parse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): Url; - export function format(URL: URL, options?: URLFormatOptions): string; - export function format(urlObject: UrlObject): string; - export function resolve(from: string, to: string): string; + export function parse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): Url; + export function format(URL: URL, options?: URLFormatOptions): string; + export function format(urlObject: UrlObject): string; + export function resolve(from: string, to: string): string; - export interface URLFormatOptions { - auth?: boolean; - fragment?: boolean; - search?: boolean; - unicode?: boolean; - } + export interface URLFormatOptions { + auth?: boolean; + fragment?: boolean; + search?: boolean; + unicode?: boolean; + } - export class URLSearchParams implements Iterable { - constructor(init?: URLSearchParams | string | { [key: string]: string | string[] } | Iterable); - append(name: string, value: string): void; - delete(name: string): void; - entries(): Iterator; - forEach(callback: (value: string, name: string) => void): void; - get(name: string): string | null; - getAll(name: string): string[]; - has(name: string): boolean; - keys(): Iterator; - set(name: string, value: string): void; - sort(): void; - toString(): string; - values(): Iterator; - [Symbol.iterator](): Iterator; - } + export class URLSearchParams implements Iterable { + constructor(init?: URLSearchParams | string | { [key: string]: string | string[] } | Iterable); + append(name: string, value: string): void; + delete(name: string): void; + entries(): Iterator; + forEach(callback: (value: string, name: string) => void): void; + get(name: string): string | null; + getAll(name: string): string[]; + has(name: string): boolean; + keys(): Iterator; + set(name: string, value: string): void; + sort(): void; + toString(): string; + values(): Iterator; + [Symbol.iterator](): Iterator; + } - export class URL { - constructor(input: string, base?: string | URL); - hash: string; - host: string; - hostname: string; - href: string; - readonly origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - search: string; - readonly searchParams: URLSearchParams; - username: string; - toString(): string; - toJSON(): string; - } + export class URL { + constructor(input: string, base?: string | URL); + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + readonly searchParams: URLSearchParams; + username: string; + toString(): string; + toJSON(): string; + } } declare module "dns" { - // Supported getaddrinfo flags. - export const ADDRCONFIG: number; - export const V4MAPPED: number; + // Supported getaddrinfo flags. + export const ADDRCONFIG: number; + export const V4MAPPED: number; - export interface LookupOptions { - family?: number; - hints?: number; - all?: boolean; - } + export interface LookupOptions { + family?: number; + hints?: number; + all?: boolean; + } - export interface LookupOneOptions extends LookupOptions { - all?: false; - } + export interface LookupOneOptions extends LookupOptions { + all?: false; + } - export interface LookupAllOptions extends LookupOptions { - all: true; - } + export interface LookupAllOptions extends LookupOptions { + all: true; + } - export interface LookupAddress { - address: string; - family: number; - } + export interface LookupAddress { + address: string; + family: number; + } - export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException, addresses: LookupAddress[]) => void): void; - export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException, address: string | LookupAddress[], family: number) => void): void; - export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; + export function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; + export function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; + export function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException, addresses: LookupAddress[]) => void): void; + export function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException, address: string | LookupAddress[], family: number) => void): void; + export function lookup(hostname: string, callback: (err: NodeJS.ErrnoException, address: string, family: number) => void): void; - export interface ResolveOptions { - ttl: boolean; - } + export interface ResolveOptions { + ttl: boolean; + } - export interface ResolveWithTtlOptions extends ResolveOptions { - ttl: true; - } + export interface ResolveWithTtlOptions extends ResolveOptions { + ttl: true; + } - export interface RecordWithTtl { - address: string; - ttl: number; - } + export interface RecordWithTtl { + address: string; + ttl: number; + } - export interface MxRecord { - priority: number; - exchange: string; - } + export interface MxRecord { + priority: number; + exchange: string; + } - export interface NaptrRecord { - flags: string; - service: string; - regexp: string; - replacement: string; - order: number; - preference: number; - } + export interface NaptrRecord { + flags: string; + service: string; + regexp: string; + replacement: string; + order: number; + preference: number; + } - export interface SoaRecord { - nsname: string; - hostmaster: string; - serial: number; - refresh: number; - retry: number; - expire: number; - minttl: number; - } + export interface SoaRecord { + nsname: string; + hostmaster: string; + serial: number; + refresh: number; + retry: number; + expire: number; + minttl: number; + } - export interface SrvRecord { - priority: number; - weight: number; - port: number; - name: string; - } + export interface SrvRecord { + priority: number; + weight: number; + port: number; + name: string; + } - export function resolve(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException, addresses: SoaRecord) => void): void; - export function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; - export function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; - export function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]) => void): void; + export function resolve(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; + export function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; + export function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException, addresses: SoaRecord) => void): void; + export function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; + export function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; + export function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][]) => void): void; - export function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; - export function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; + export function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; + export function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; - export function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; - export function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; + export function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException, addresses: RecordWithTtl[]) => void): void; + export function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException, addresses: string[] | RecordWithTtl[]) => void): void; - export function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; - export function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; - export function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; - export function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException, address: SoaRecord) => void): void; - export function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; - export function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; + export function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: MxRecord[]) => void): void; + export function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: NaptrRecord[]) => void): void; + export function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[]) => void): void; + export function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException, address: SoaRecord) => void): void; + export function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: SrvRecord[]) => void): void; + export function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException, addresses: string[][]) => void): void; - export function reverse(ip: string, callback: (err: NodeJS.ErrnoException, hostnames: string[]) => void): void; - export function setServers(servers: string[]): void; + export function reverse(ip: string, callback: (err: NodeJS.ErrnoException, hostnames: string[]) => void): void; + export function setServers(servers: string[]): void; - //Error codes - export var NODATA: string; - export var FORMERR: string; - export var SERVFAIL: string; - export var NOTFOUND: string; - export var NOTIMP: string; - export var REFUSED: string; - export var BADQUERY: string; - export var BADNAME: string; - export var BADFAMILY: string; - export var BADRESP: string; - export var CONNREFUSED: string; - export var TIMEOUT: string; - export var EOF: string; - export var FILE: string; - export var NOMEM: string; - export var DESTRUCTION: string; - export var BADSTR: string; - export var BADFLAGS: string; - export var NONAME: string; - export var BADHINTS: string; - export var NOTINITIALIZED: string; - export var LOADIPHLPAPI: string; - export var ADDRGETNETWORKPARAMS: string; - export var CANCELLED: string; + //Error codes + export var NODATA: string; + export var FORMERR: string; + export var SERVFAIL: string; + export var NOTFOUND: string; + export var NOTIMP: string; + export var REFUSED: string; + export var BADQUERY: string; + export var BADNAME: string; + export var BADFAMILY: string; + export var BADRESP: string; + export var CONNREFUSED: string; + export var TIMEOUT: string; + export var EOF: string; + export var FILE: string; + export var NOMEM: string; + export var DESTRUCTION: string; + export var BADSTR: string; + export var BADFLAGS: string; + export var NONAME: string; + export var BADHINTS: string; + export var NOTINITIALIZED: string; + export var LOADIPHLPAPI: string; + export var ADDRGETNETWORKPARAMS: string; + export var CANCELLED: string; } declare module "net" { - import * as stream from "stream"; - import * as events from "events"; + import * as stream from "stream"; + import * as events from "events"; - export interface Socket extends stream.Duplex { - // Extended base methods - write(buffer: Buffer): boolean; - write(buffer: Buffer, cb?: Function): boolean; - write(str: string, cb?: Function): boolean; - write(str: string, encoding?: string, cb?: Function): boolean; - write(str: string, encoding?: string, fd?: string): boolean; + export interface Socket extends stream.Duplex { + // Extended base methods + write(buffer: Buffer): boolean; + write(buffer: Buffer, cb?: Function): boolean; + write(str: string, cb?: Function): boolean; + write(str: string, encoding?: string, cb?: Function): boolean; + write(str: string, encoding?: string, fd?: string): boolean; - connect(port: number, host?: string, connectionListener?: Function): void; - connect(path: string, connectionListener?: Function): void; - bufferSize: number; - setEncoding(encoding?: string): this; - write(data: any, encoding?: string, callback?: Function): void; - destroy(err?: any): void; - pause(): this; - resume(): this; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setKeepAlive(enable?: boolean, initialDelay?: number): void; - address(): { port: number; family: string; address: string; }; - unref(): void; - ref(): void; + connect(port: number, host?: string, connectionListener?: Function): void; + connect(path: string, connectionListener?: Function): void; + bufferSize: number; + setEncoding(encoding?: string): this; + write(data: any, encoding?: string, callback?: Function): void; + destroy(err?: any): void; + pause(): this; + resume(): this; + setTimeout(timeout: number, callback?: Function): void; + setNoDelay(noDelay?: boolean): void; + setKeepAlive(enable?: boolean, initialDelay?: number): void; + address(): { port: number; family: string; address: string; }; + unref(): void; + ref(): void; - remoteAddress: string; - remoteFamily: string; - remotePort: number; - localAddress: string; - localPort: number; - bytesRead: number; - bytesWritten: number; - connecting: boolean; - destroyed: boolean; + remoteAddress: string; + remoteFamily: string; + remotePort: number; + localAddress: string; + localPort: number; + bytesRead: number; + bytesWritten: number; + connecting: boolean; + destroyed: boolean; - // Extended base methods - end(): void; - end(buffer: Buffer, cb?: Function): void; - end(str: string, cb?: Function): void; - end(str: string, encoding?: string, cb?: Function): void; - end(data?: any, encoding?: string): void; + // Extended base methods + end(): void; + end(buffer: Buffer, cb?: Function): void; + end(str: string, cb?: Function): void; + end(str: string, encoding?: string, cb?: Function): void; + end(data?: any, encoding?: string): void; /** * events.EventEmitter @@ -2137,97 +2137,97 @@ declare module "net" { * 7. lookup * 8. timeout */ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: (had_error: boolean) => void): this; - addListener(event: "connect", listener: () => void): this; - addListener(event: "data", listener: (data: Buffer) => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - addListener(event: "timeout", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: (had_error: boolean) => void): this; + addListener(event: "connect", listener: () => void): this; + addListener(event: "data", listener: (data: Buffer) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + addListener(event: "timeout", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", had_error: boolean): boolean; - emit(event: "connect"): boolean; - emit(event: "data", data: Buffer): boolean; - emit(event: "drain"): boolean; - emit(event: "end"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; - emit(event: "timeout"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", had_error: boolean): boolean; + emit(event: "connect"): boolean; + emit(event: "data", data: Buffer): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; + emit(event: "timeout"): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: (had_error: boolean) => void): this; - on(event: "connect", listener: () => void): this; - on(event: "data", listener: (data: Buffer) => void): this; - on(event: "drain", listener: () => void): this; - on(event: "end", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - on(event: "timeout", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: (had_error: boolean) => void): this; + on(event: "connect", listener: () => void): this; + on(event: "data", listener: (data: Buffer) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + on(event: "timeout", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: (had_error: boolean) => void): this; - once(event: "connect", listener: () => void): this; - once(event: "data", listener: (data: Buffer) => void): this; - once(event: "drain", listener: () => void): this; - once(event: "end", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - once(event: "timeout", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: (had_error: boolean) => void): this; + once(event: "connect", listener: () => void): this; + once(event: "data", listener: (data: Buffer) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + once(event: "timeout", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: (had_error: boolean) => void): this; - prependListener(event: "connect", listener: () => void): this; - prependListener(event: "data", listener: (data: Buffer) => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependListener(event: "timeout", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: (had_error: boolean) => void): this; + prependListener(event: "connect", listener: () => void): this; + prependListener(event: "data", listener: (data: Buffer) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + prependListener(event: "timeout", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: (had_error: boolean) => void): this; - prependOnceListener(event: "connect", listener: () => void): this; - prependOnceListener(event: "data", listener: (data: Buffer) => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; - prependOnceListener(event: "timeout", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: (had_error: boolean) => void): this; + prependOnceListener(event: "connect", listener: () => void): this; + prependOnceListener(event: "data", listener: (data: Buffer) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + } - export var Socket: { - new(options?: { fd?: number; allowHalfOpen?: boolean; readable?: boolean; writable?: boolean; }): Socket; - }; + export var Socket: { + new(options?: { fd?: number; allowHalfOpen?: boolean; readable?: boolean; writable?: boolean; }): Socket; + }; - export interface ListenOptions { - port?: number; - host?: string; - backlog?: number; - path?: string; - exclusive?: boolean; - } + export interface ListenOptions { + port?: number; + host?: string; + backlog?: number; + path?: string; + exclusive?: boolean; + } - export interface Server extends events.EventEmitter { - listen(port: number, hostname?: string, backlog?: number, listeningListener?: Function): Server; - listen(port: number, hostname?: string, listeningListener?: Function): Server; - listen(port: number, backlog?: number, listeningListener?: Function): Server; - listen(port: number, listeningListener?: Function): Server; - listen(path: string, backlog?: number, listeningListener?: Function): Server; - listen(path: string, listeningListener?: Function): Server; - listen(options: ListenOptions, listeningListener?: Function): Server; - listen(handle: any, backlog?: number, listeningListener?: Function): Server; - listen(handle: any, listeningListener?: Function): Server; - close(callback?: Function): Server; - address(): { port: number; family: string; address: string; }; - getConnections(cb: (error: Error, count: number) => void): void; - ref(): Server; - unref(): Server; - maxConnections: number; - connections: number; - listening: boolean; + export interface Server extends events.EventEmitter { + listen(port: number, hostname?: string, backlog?: number, listeningListener?: Function): Server; + listen(port: number, hostname?: string, listeningListener?: Function): Server; + listen(port: number, backlog?: number, listeningListener?: Function): Server; + listen(port: number, listeningListener?: Function): Server; + listen(path: string, backlog?: number, listeningListener?: Function): Server; + listen(path: string, listeningListener?: Function): Server; + listen(options: ListenOptions, listeningListener?: Function): Server; + listen(handle: any, backlog?: number, listeningListener?: Function): Server; + listen(handle: any, listeningListener?: Function): Server; + close(callback?: Function): Server; + address(): { port: number; family: string; address: string; }; + getConnections(cb: (error: Error, count: number) => void): void; + ref(): Server; + unref(): Server; + maxConnections: number; + connections: number; + listening: boolean; /** * events.EventEmitter @@ -2236,101 +2236,101 @@ declare module "net" { * 3. error * 4. listening */ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "connection", listener: (socket: Socket) => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connection", listener: (socket: Socket) => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "connection", socket: Socket): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "connection", socket: Socket): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "connection", listener: (socket: Socket) => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "connection", listener: (socket: Socket) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "connection", listener: (socket: Socket) => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "connection", listener: (socket: Socket) => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "connection", listener: (socket: Socket) => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connection", listener: (socket: Socket) => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - } - export function createServer(connectionListener?: (socket: Socket) => void): Server; - export function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server; - export function connect(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; - export function connect(port: number, host?: string, connectionListener?: Function): Socket; - export function connect(path: string, connectionListener?: Function): Socket; - export function createConnection(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; - export function createConnection(port: number, host?: string, connectionListener?: Function): Socket; - export function createConnection(path: string, connectionListener?: Function): Socket; - export function isIP(input: string): number; - export function isIPv4(input: string): boolean; - export function isIPv6(input: string): boolean; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + } + export function createServer(connectionListener?: (socket: Socket) => void): Server; + export function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server; + export function connect(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; + export function connect(port: number, host?: string, connectionListener?: Function): Socket; + export function connect(path: string, connectionListener?: Function): Socket; + export function createConnection(options: { port: number, host?: string, localAddress?: string, localPort?: string, family?: number, allowHalfOpen?: boolean; }, connectionListener?: Function): Socket; + export function createConnection(port: number, host?: string, connectionListener?: Function): Socket; + export function createConnection(path: string, connectionListener?: Function): Socket; + export function isIP(input: string): number; + export function isIPv4(input: string): boolean; + export function isIPv6(input: string): boolean; } declare module "dgram" { - import * as events from "events"; + import * as events from "events"; - interface RemoteInfo { - address: string; - family: string; - port: number; - } + interface RemoteInfo { + address: string; + family: string; + port: number; + } - interface AddressInfo { - address: string; - family: string; - port: number; - } + interface AddressInfo { + address: string; + family: string; + port: number; + } - interface BindOptions { - port: number; - address?: string; - exclusive?: boolean; - } + interface BindOptions { + port: number; + address?: string; + exclusive?: boolean; + } - type SocketType = "udp4" | "udp6"; + type SocketType = "udp4" | "udp6"; - interface SocketOptions { - type: SocketType; - reuseAddr?: boolean; - } + interface SocketOptions { + type: SocketType; + reuseAddr?: boolean; + } - export function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - export function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + export function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + export function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; - export interface Socket extends events.EventEmitter { - send(msg: Buffer | String | any[], port: number, address: string, callback?: (error: Error, bytes: number) => void): void; - send(msg: Buffer | String | any[], offset: number, length: number, port: number, address: string, callback?: (error: Error, bytes: number) => void): void; - bind(port?: number, address?: string, callback?: () => void): void; - bind(options: BindOptions, callback?: Function): void; - close(callback?: () => void): void; - address(): AddressInfo; - setBroadcast(flag: boolean): void; - setTTL(ttl: number): void; - setMulticastTTL(ttl: number): void; - setMulticastLoopback(flag: boolean): void; - addMembership(multicastAddress: string, multicastInterface?: string): void; - dropMembership(multicastAddress: string, multicastInterface?: string): void; - ref(): this; - unref(): this; + export interface Socket extends events.EventEmitter { + send(msg: Buffer | String | any[], port: number, address: string, callback?: (error: Error, bytes: number) => void): void; + send(msg: Buffer | String | any[], offset: number, length: number, port: number, address: string, callback?: (error: Error, bytes: number) => void): void; + bind(port?: number, address?: string, callback?: () => void): void; + bind(options: BindOptions, callback?: Function): void; + close(callback?: () => void): void; + address(): AddressInfo; + setBroadcast(flag: boolean): void; + setTTL(ttl: number): void; + setMulticastTTL(ttl: number): void; + setMulticastLoopback(flag: boolean): void; + addMembership(multicastAddress: string, multicastInterface?: string): void; + dropMembership(multicastAddress: string, multicastInterface?: string): void; + ref(): this; + unref(): this; /** * events.EventEmitter @@ -2339,163 +2339,163 @@ declare module "dgram" { * 3. listening * 4. message **/ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "listening", listener: () => void): this; - addListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "listening"): boolean; - emit(event: "message", msg: Buffer, rinfo: AddressInfo): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit(event: "message", msg: Buffer, rinfo: AddressInfo): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "listening", listener: () => void): this; - on(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "listening", listener: () => void): this; - once(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "listening", listener: () => void): this; - prependListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "listening", listener: () => void): this; - prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: AddressInfo) => void): this; + } } declare module "fs" { - import * as stream from "stream"; - import * as events from "events"; + import * as stream from "stream"; + import * as events from "events"; - interface Stats { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - dev: number; - ino: number; - mode: number; - nlink: number; - uid: number; - gid: number; - rdev: number; - size: number; - blksize: number; - blocks: number; - atime: Date; - mtime: Date; - ctime: Date; - birthtime: Date; - } + interface Stats { + isFile(): boolean; + isDirectory(): boolean; + isBlockDevice(): boolean; + isCharacterDevice(): boolean; + isSymbolicLink(): boolean; + isFIFO(): boolean; + isSocket(): boolean; + dev: number; + ino: number; + mode: number; + nlink: number; + uid: number; + gid: number; + rdev: number; + size: number; + blksize: number; + blocks: number; + atime: Date; + mtime: Date; + ctime: Date; + birthtime: Date; + } - interface FSWatcher extends events.EventEmitter { - close(): void; + interface FSWatcher extends events.EventEmitter { + close(): void; /** * events.EventEmitter * 1. change * 2. error */ - addListener(event: string, listener: Function): this; - addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + addListener(event: "error", listener: (error: Error) => void): this; - on(event: string, listener: Function): this; - on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - on(event: "error", listener: (error: Error) => void): this; + on(event: string, listener: Function): this; + on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + on(event: "error", listener: (error: Error) => void): this; - once(event: string, listener: Function): this; - once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - once(event: "error", listener: (error: Error) => void): this; + once(event: string, listener: Function): this; + once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + once(event: "error", listener: (error: Error) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; - prependOnceListener(event: "error", listener: (error: Error) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + } - export interface ReadStream extends stream.Readable { - close(): void; - destroy(): void; - bytesRead: number; - path: string | Buffer; + export interface ReadStream extends stream.Readable { + close(): void; + destroy(): void; + bytesRead: number; + path: string | Buffer; /** * events.EventEmitter * 1. open * 2. close */ - addListener(event: string, listener: Function): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "close", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "close", listener: () => void): this; - on(event: string, listener: Function): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "close", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "close", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "close", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "close", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "close", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "close", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + } - export interface WriteStream extends stream.Writable { - close(): void; - bytesWritten: number; - path: string | Buffer; + export interface WriteStream extends stream.Writable { + close(): void; + bytesWritten: number; + path: string | Buffer; /** * events.EventEmitter * 1. open * 2. close */ - addListener(event: string, listener: Function): this; - addListener(event: "open", listener: (fd: number) => void): this; - addListener(event: "close", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "close", listener: () => void): this; - on(event: string, listener: Function): this; - on(event: "open", listener: (fd: number) => void): this; - on(event: "close", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "close", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "open", listener: (fd: number) => void): this; - once(event: "close", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "close", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "open", listener: (fd: number) => void): this; - prependListener(event: "close", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "close", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "open", listener: (fd: number) => void): this; - prependOnceListener(event: "close", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + } /** * Asynchronous rename. @@ -2503,85 +2503,85 @@ declare module "fs" { * @param newPath * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function rename(oldPath: string, newPath: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function rename(oldPath: string, newPath: string, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Synchronous rename * @param oldPath * @param newPath */ - export function renameSync(oldPath: string, newPath: string): void; - export function truncate(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function truncate(path: string | Buffer, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function truncateSync(path: string | Buffer, len?: number): void; - export function ftruncate(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function ftruncate(fd: number, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function ftruncateSync(fd: number, len?: number): void; - export function chown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function chownSync(path: string | Buffer, uid: number, gid: number): void; - export function fchown(fd: number, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function fchownSync(fd: number, uid: number, gid: number): void; - export function lchown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function lchownSync(path: string | Buffer, uid: number, gid: number): void; - export function chmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function chmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function chmodSync(path: string | Buffer, mode: number): void; - export function chmodSync(path: string | Buffer, mode: string): void; - export function fchmod(fd: number, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function fchmod(fd: number, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function fchmodSync(fd: number, mode: number): void; - export function fchmodSync(fd: number, mode: string): void; - export function lchmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function lchmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function lchmodSync(path: string | Buffer, mode: number): void; - export function lchmodSync(path: string | Buffer, mode: string): void; - export function stat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; - export function lstat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; - export function fstat(fd: number, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; - export function statSync(path: string | Buffer): Stats; - export function lstatSync(path: string | Buffer): Stats; - export function fstatSync(fd: number): Stats; - export function link(srcpath: string | Buffer, dstpath: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function linkSync(srcpath: string | Buffer, dstpath: string | Buffer): void; - export function symlink(srcpath: string | Buffer, dstpath: string | Buffer, type?: string, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function symlinkSync(srcpath: string | Buffer, dstpath: string | Buffer, type?: string): void; - export function readlink(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, linkString: string) => any): void; - export function readlinkSync(path: string | Buffer): string; - export function realpath(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; - export function realpath(path: string | Buffer, cache: { [path: string]: string }, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; - export function realpathSync(path: string | Buffer, cache?: { [path: string]: string }): string; + export function renameSync(oldPath: string, newPath: string): void; + export function truncate(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function truncate(path: string | Buffer, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function truncateSync(path: string | Buffer, len?: number): void; + export function ftruncate(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function ftruncate(fd: number, len: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function ftruncateSync(fd: number, len?: number): void; + export function chown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chownSync(path: string | Buffer, uid: number, gid: number): void; + export function fchown(fd: number, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchownSync(fd: number, uid: number, gid: number): void; + export function lchown(path: string | Buffer, uid: number, gid: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchownSync(path: string | Buffer, uid: number, gid: number): void; + export function chmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function chmodSync(path: string | Buffer, mode: number): void; + export function chmodSync(path: string | Buffer, mode: string): void; + export function fchmod(fd: number, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchmod(fd: number, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fchmodSync(fd: number, mode: number): void; + export function fchmodSync(fd: number, mode: string): void; + export function lchmod(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchmod(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function lchmodSync(path: string | Buffer, mode: number): void; + export function lchmodSync(path: string | Buffer, mode: string): void; + export function stat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function lstat(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function fstat(fd: number, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void; + export function statSync(path: string | Buffer): Stats; + export function lstatSync(path: string | Buffer): Stats; + export function fstatSync(fd: number): Stats; + export function link(srcpath: string | Buffer, dstpath: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function linkSync(srcpath: string | Buffer, dstpath: string | Buffer): void; + export function symlink(srcpath: string | Buffer, dstpath: string | Buffer, type?: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function symlinkSync(srcpath: string | Buffer, dstpath: string | Buffer, type?: string): void; + export function readlink(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, linkString: string) => any): void; + export function readlinkSync(path: string | Buffer): string; + export function realpath(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; + export function realpath(path: string | Buffer, cache: { [path: string]: string }, callback: (err: NodeJS.ErrnoException, resolvedPath: string) => any): void; + export function realpathSync(path: string | Buffer, cache?: { [path: string]: string }): string; /** * Asynchronous unlink - deletes the file specified in {path} * * @param path * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function unlink(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function unlink(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Synchronous unlink - deletes the file specified in {path} * * @param path */ - export function unlinkSync(path: string | Buffer): void; + export function unlinkSync(path: string | Buffer): void; /** * Asynchronous rmdir - removes the directory specified in {path} * * @param path * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function rmdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function rmdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Synchronous rmdir - removes the directory specified in {path} * * @param path */ - export function rmdirSync(path: string | Buffer): void; + export function rmdirSync(path: string | Buffer): void; /** * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * * @param path * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function mkdir(path: string | Buffer, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * @@ -2589,7 +2589,7 @@ declare module "fs" { * @param mode * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdir(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function mkdir(path: string | Buffer, mode: number, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Asynchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * @@ -2597,7 +2597,7 @@ declare module "fs" { * @param mode * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdir(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function mkdir(path: string | Buffer, mode: string, callback?: (err?: NodeJS.ErrnoException) => void): void; /** * Synchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * @@ -2605,7 +2605,7 @@ declare module "fs" { * @param mode * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdirSync(path: string | Buffer, mode?: number): void; + export function mkdirSync(path: string | Buffer, mode?: number): void; /** * Synchronous mkdir - creates the directory specified in {path}. Parameter {mode} defaults to 0777. * @@ -2613,48 +2613,48 @@ declare module "fs" { * @param mode * @param callback No arguments other than a possible exception are given to the completion callback. */ - export function mkdirSync(path: string | Buffer, mode?: string): void; + export function mkdirSync(path: string | Buffer, mode?: string): void; /** * Asynchronous mkdtemp - Creates a unique temporary directory. Generates six random characters to be appended behind a required prefix to create a unique temporary directory. * * @param prefix * @param callback The created folder path is passed as a string to the callback's second parameter. */ - export function mkdtemp(prefix: string, callback?: (err: NodeJS.ErrnoException, folder: string) => void): void; + export function mkdtemp(prefix: string, callback?: (err: NodeJS.ErrnoException, folder: string) => void): void; /** * Synchronous mkdtemp - Creates a unique temporary directory. Generates six random characters to be appended behind a required prefix to create a unique temporary directory. * * @param prefix * @returns Returns the created folder path. */ - export function mkdtempSync(prefix: string): string; - export function readdir(path: string | Buffer, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; - export function readdir(path: string | Buffer, options: string | {}, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; - export function readdirSync(path: string | Buffer, options?: string | {}): string[]; - export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function closeSync(fd: number): void; - export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; - export function open(path: string | Buffer, flags: string | number, mode: number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; - export function openSync(path: string | Buffer, flags: string | number, mode?: number): number; - export function utimes(path: string | Buffer, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function utimes(path: string | Buffer, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function utimesSync(path: string | Buffer, atime: number, mtime: number): void; - export function utimesSync(path: string | Buffer, atime: Date, mtime: Date): void; - export function futimes(fd: number, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function futimes(fd: number, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function futimesSync(fd: number, atime: number, mtime: number): void; - export function futimesSync(fd: number, atime: Date, mtime: Date): void; - export function fsync(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; - export function fsyncSync(fd: number): void; - export function write(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; - export function write(fd: number, buffer: Buffer, offset: number, length: number, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; - export function write(fd: number, data: any, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - export function write(fd: number, data: any, offset: number, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - export function write(fd: number, data: any, offset: number, encoding: string, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; - export function writeSync(fd: number, buffer: Buffer, offset: number, length: number, position?: number | null): number; - export function writeSync(fd: number, data: any, position?: number | null, enconding?: string): number; - export function read(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: Buffer) => void): void; - export function readSync(fd: number, buffer: Buffer, offset: number, length: number, position: number | null): number; + export function mkdtempSync(prefix: string): string; + export function readdir(path: string | Buffer, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; + export function readdir(path: string | Buffer, options: string | {}, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; + export function readdirSync(path: string | Buffer, options?: string | {}): string[]; + export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function closeSync(fd: number): void; + export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; + export function open(path: string | Buffer, flags: string | number, mode: number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; + export function openSync(path: string | Buffer, flags: string | number, mode?: number): number; + export function utimes(path: string | Buffer, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function utimes(path: string | Buffer, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function utimesSync(path: string | Buffer, atime: number, mtime: number): void; + export function utimesSync(path: string | Buffer, atime: Date, mtime: Date): void; + export function futimes(fd: number, atime: number, mtime: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function futimes(fd: number, atime: Date, mtime: Date, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function futimesSync(fd: number, atime: number, mtime: number): void; + export function futimesSync(fd: number, atime: Date, mtime: Date): void; + export function fsync(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; + export function fsyncSync(fd: number): void; + export function write(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; + export function write(fd: number, buffer: Buffer, offset: number, length: number, callback?: (err: NodeJS.ErrnoException, written: number, buffer: Buffer) => void): void; + export function write(fd: number, data: any, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function write(fd: number, data: any, offset: number, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function write(fd: number, data: any, offset: number, encoding: string, callback?: (err: NodeJS.ErrnoException, written: number, str: string) => void): void; + export function writeSync(fd: number, buffer: Buffer, offset: number, length: number, position?: number | null): number; + export function writeSync(fd: number, data: any, position?: number | null, enconding?: string): number; + export function read(fd: number, buffer: Buffer, offset: number, length: number, position: number | null, callback?: (err: NodeJS.ErrnoException, bytesRead: number, buffer: Buffer) => void): void; + export function readSync(fd: number, buffer: Buffer, offset: number, length: number, position: number | null): number; /** * Asynchronous readFile - Asynchronously reads the entire contents of a file. * @@ -2662,9 +2662,9 @@ declare module "fs" { * @param encoding * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. */ - export function readFile(filename: string, encoding: null, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; - export function readFile(filename: string, encoding: string, callback: (err: NodeJS.ErrnoException, data: string) => void): void; - export function readFile(filename: string, encoding: string | null, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; + export function readFile(filename: string, encoding: null, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, encoding: string, callback: (err: NodeJS.ErrnoException, data: string) => void): void; + export function readFile(filename: string, encoding: string | null, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; /** * Asynchronous readFile - Asynchronously reads the entire contents of a file. * @@ -2672,9 +2672,9 @@ declare module "fs" { * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFile returns a string; otherwise it returns a Buffer. * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. */ - export function readFile(filename: string, options: { encoding: null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; - export function readFile(filename: string, options: { encoding: string; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string) => void): void; - export function readFile(filename: string, options: { encoding: string | null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; + export function readFile(filename: string, options: { encoding: null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, options: { encoding: string; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string) => void): void; + export function readFile(filename: string, options: { encoding: string | null; flag?: string; }, callback: (err: NodeJS.ErrnoException, data: string | Buffer) => void): void; /** * Asynchronous readFile - Asynchronously reads the entire contents of a file. * @@ -2682,213 +2682,213 @@ declare module "fs" { * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFile returns a string; otherwise it returns a Buffer. * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. */ - export function readFile(filename: string, options: { flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, options: { flag?: string; }, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; /** * Asynchronous readFile - Asynchronously reads the entire contents of a file. * * @param fileName * @param callback - The callback is passed two arguments (err, data), where data is the contents of the file. */ - export function readFile(filename: string, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; + export function readFile(filename: string, callback: (err: NodeJS.ErrnoException, data: Buffer) => void): void; /** * Synchronous readFile - Synchronously reads the entire contents of a file. * * @param fileName * @param encoding */ - export function readFileSync(filename: string, encoding: null): Buffer; - export function readFileSync(filename: string, encoding: string): string; - export function readFileSync(filename: string, encoding: string | null): string | Buffer; + export function readFileSync(filename: string, encoding: null): Buffer; + export function readFileSync(filename: string, encoding: string): string; + export function readFileSync(filename: string, encoding: string | null): string | Buffer; /** * Synchronous readFile - Synchronously reads the entire contents of a file. * * @param fileName * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFileSync returns a string; otherwise it returns a Buffer. */ - export function readFileSync(filename: string, options: { encoding: null; flag?: string; }): Buffer; - export function readFileSync(filename: string, options: { encoding: string; flag?: string; }): string; - export function readFileSync(filename: string, options: { encoding: string | null; flag?: string; }): string | Buffer; + export function readFileSync(filename: string, options: { encoding: null; flag?: string; }): Buffer; + export function readFileSync(filename: string, options: { encoding: string; flag?: string; }): string; + export function readFileSync(filename: string, options: { encoding: string | null; flag?: string; }): string | Buffer; /** * Synchronous readFile - Synchronously reads the entire contents of a file. * * @param fileName * @param options An object with optional {encoding} and {flag} properties. If {encoding} is specified, readFileSync returns a string; otherwise it returns a Buffer. */ - export function readFileSync(filename: string, options?: { flag?: string; }): Buffer; - export function writeFile(filename: string | number, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; - export function writeFile(filename: string | number, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; - export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; - export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; - export function writeFileSync(filename: string | number, data: any, encoding: string): void; - export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; - export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; - export function appendFile(filename: string, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; - export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; - export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; - export function appendFile(filename: string, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; - export function appendFileSync(filename: string, data: any, encoding: string): void; - export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; - export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; - export function watchFile(filename: string, listener: (curr: Stats, prev: Stats) => void): void; - export function watchFile(filename: string, options: { persistent?: boolean; interval?: number; }, listener: (curr: Stats, prev: Stats) => void): void; - export function unwatchFile(filename: string, listener?: (curr: Stats, prev: Stats) => void): void; - export function watch(filename: string, listener?: (event: string, filename: string) => any): FSWatcher; - export function watch(filename: string, encoding: string, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; - export function watch(filename: string, options: { persistent?: boolean; recursive?: boolean; encoding?: string }, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; - export function exists(path: string | Buffer, callback?: (exists: boolean) => void): void; - export function existsSync(path: string | Buffer): boolean; + export function readFileSync(filename: string, options?: { flag?: string; }): Buffer; + export function writeFile(filename: string | number, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string | number, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFile(filename: string | number, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function writeFileSync(filename: string | number, data: any, encoding: string): void; + export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + export function writeFileSync(filename: string | number, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; + export function appendFile(filename: string, data: any, encoding: string, callback: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: number; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, options: { encoding?: string; mode?: string; flag?: string; }, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFile(filename: string, data: any, callback?: (err: NodeJS.ErrnoException) => void): void; + export function appendFileSync(filename: string, data: any, encoding: string): void; + export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: number; flag?: string; }): void; + export function appendFileSync(filename: string, data: any, options?: { encoding?: string; mode?: string; flag?: string; }): void; + export function watchFile(filename: string, listener: (curr: Stats, prev: Stats) => void): void; + export function watchFile(filename: string, options: { persistent?: boolean; interval?: number; }, listener: (curr: Stats, prev: Stats) => void): void; + export function unwatchFile(filename: string, listener?: (curr: Stats, prev: Stats) => void): void; + export function watch(filename: string, listener?: (event: string, filename: string) => any): FSWatcher; + export function watch(filename: string, encoding: string, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; + export function watch(filename: string, options: { persistent?: boolean; recursive?: boolean; encoding?: string }, listener?: (event: string, filename: string | Buffer) => any): FSWatcher; + export function exists(path: string | Buffer, callback?: (exists: boolean) => void): void; + export function existsSync(path: string | Buffer): boolean; - export namespace constants { - // File Access Constants + export namespace constants { + // File Access Constants - /** Constant for fs.access(). File is visible to the calling process. */ - export const F_OK: number; + /** Constant for fs.access(). File is visible to the calling process. */ + export const F_OK: number; - /** Constant for fs.access(). File can be read by the calling process. */ - export const R_OK: number; + /** Constant for fs.access(). File can be read by the calling process. */ + export const R_OK: number; - /** Constant for fs.access(). File can be written by the calling process. */ - export const W_OK: number; + /** Constant for fs.access(). File can be written by the calling process. */ + export const W_OK: number; - /** Constant for fs.access(). File can be executed by the calling process. */ - export const X_OK: number; + /** Constant for fs.access(). File can be executed by the calling process. */ + export const X_OK: number; - // File Open Constants + // File Open Constants - /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ - export const O_RDONLY: number; + /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ + export const O_RDONLY: number; - /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ - export const O_WRONLY: number; + /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ + export const O_WRONLY: number; - /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ - export const O_RDWR: number; + /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ + export const O_RDWR: number; - /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ - export const O_CREAT: number; + /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ + export const O_CREAT: number; - /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ - export const O_EXCL: number; + /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ + export const O_EXCL: number; - /** Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one). */ - export const O_NOCTTY: number; + /** Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one). */ + export const O_NOCTTY: number; - /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ - export const O_TRUNC: number; + /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ + export const O_TRUNC: number; - /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ - export const O_APPEND: number; + /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ + export const O_APPEND: number; - /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ - export const O_DIRECTORY: number; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ + export const O_DIRECTORY: number; - /** Constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only. */ - export const O_NOATIME: number; + /** Constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only. */ + export const O_NOATIME: number; - /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ - export const O_NOFOLLOW: number; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ + export const O_NOFOLLOW: number; - /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ - export const O_SYNC: number; + /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ + export const O_SYNC: number; - /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ - export const O_SYMLINK: number; + /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ + export const O_SYMLINK: number; - /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ - export const O_DIRECT: number; + /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ + export const O_DIRECT: number; - /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ - export const O_NONBLOCK: number; + /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ + export const O_NONBLOCK: number; - // File Type Constants + // File Type Constants - /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ - export const S_IFMT: number; + /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ + export const S_IFMT: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ - export const S_IFREG: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ + export const S_IFREG: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ - export const S_IFDIR: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ + export const S_IFDIR: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ - export const S_IFCHR: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ + export const S_IFCHR: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ - export const S_IFBLK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ + export const S_IFBLK: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ - export const S_IFIFO: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ + export const S_IFIFO: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ - export const S_IFLNK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ + export const S_IFLNK: number; - /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ - export const S_IFSOCK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ + export const S_IFSOCK: number; - // File Mode Constants + // File Mode Constants - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ - export const S_IRWXU: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ + export const S_IRWXU: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ - export const S_IRUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ + export const S_IRUSR: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ - export const S_IWUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ + export const S_IWUSR: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ - export const S_IXUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ + export const S_IXUSR: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ - export const S_IRWXG: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ + export const S_IRWXG: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ - export const S_IRGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ + export const S_IRGRP: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ - export const S_IWGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ + export const S_IWGRP: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ - export const S_IXGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ + export const S_IXGRP: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ - export const S_IRWXO: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ + export const S_IRWXO: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ - export const S_IROTH: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ + export const S_IROTH: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ - export const S_IWOTH: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ + export const S_IWOTH: number; - /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ - export const S_IXOTH: number; - } + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ + export const S_IXOTH: number; + } - /** Tests a user's permissions for the file specified by path. */ - export function access(path: string | Buffer, callback: (err: NodeJS.ErrnoException) => void): void; - export function access(path: string | Buffer, mode: number, callback: (err: NodeJS.ErrnoException) => void): void; - /** Synchronous version of fs.access. This throws if any accessibility checks fail, and does nothing otherwise. */ - export function accessSync(path: string | Buffer, mode?: number): void; - export function createReadStream(path: string | Buffer, options?: { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - end?: number; - }): ReadStream; - export function createWriteStream(path: string | Buffer, options?: { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - }): WriteStream; - export function fdatasync(fd: number, callback: Function): void; - export function fdatasyncSync(fd: number): void; + /** Tests a user's permissions for the file specified by path. */ + export function access(path: string | Buffer, callback: (err: NodeJS.ErrnoException) => void): void; + export function access(path: string | Buffer, mode: number, callback: (err: NodeJS.ErrnoException) => void): void; + /** Synchronous version of fs.access. This throws if any accessibility checks fail, and does nothing otherwise. */ + export function accessSync(path: string | Buffer, mode?: number): void; + export function createReadStream(path: string | Buffer, options?: { + flags?: string; + encoding?: string; + fd?: number; + mode?: number; + autoClose?: boolean; + start?: number; + end?: number; + }): ReadStream; + export function createWriteStream(path: string | Buffer, options?: { + flags?: string; + encoding?: string; + fd?: number; + mode?: number; + autoClose?: boolean; + start?: number; + }): WriteStream; + export function fdatasync(fd: number, callback: Function): void; + export function fdatasyncSync(fd: number): void; } declare module "path" { @@ -2896,28 +2896,28 @@ declare module "path" { /** * A parsed path object generated by path.parse() or consumed by path.format(). */ - export interface ParsedPath { + export interface ParsedPath { /** * The root of the path such as '/' or 'c:\' */ - root: string; + root: string; /** * The full directory path such as '/home/user/dir' or 'c:\path\dir' */ - dir: string; + dir: string; /** * The file name including extension (if any) such as 'index.html' */ - base: string; + base: string; /** * The file extension (if any) such as '.html' */ - ext: string; + ext: string; /** * The file name without extension (if any) such as 'index' */ - name: string; - } + name: string; + } /** * Normalize a string path, reducing '..' and '.' parts. @@ -2925,14 +2925,14 @@ declare module "path" { * * @param p string path to normalize. */ - export function normalize(p: string): string; + export function normalize(p: string): string; /** * Join all arguments together and normalize the resulting path. * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown. * * @param paths paths to join. */ - export function join(...paths: string[]): string; + export function join(...paths: string[]): string; /** * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. * @@ -2942,13 +2942,13 @@ declare module "path" { * * @param pathSegments string paths to join. Non-string arguments are ignored. */ - export function resolve(...pathSegments: any[]): string; + export function resolve(...pathSegments: any[]): string; /** * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. * * @param path path to test. */ - export function isAbsolute(path: string): boolean; + export function isAbsolute(path: string): boolean; /** * Solve the relative path from {from} to {to}. * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. @@ -2956,13 +2956,13 @@ declare module "path" { * @param from * @param to */ - export function relative(from: string, to: string): string; + export function relative(from: string, to: string): string; /** * Return the directory name of a path. Similar to the Unix dirname command. * * @param p the path to evaluate. */ - export function dirname(p: string): string; + export function dirname(p: string): string; /** * Return the last portion of a path. Similar to the Unix basename command. * Often used to extract the file name from a fully qualified path. @@ -2970,176 +2970,176 @@ declare module "path" { * @param p the path to evaluate. * @param ext optionally, an extension to remove from the result. */ - export function basename(p: string, ext?: string): string; + export function basename(p: string, ext?: string): string; /** * Return the extension of the path, from the last '.' to end of string in the last portion of the path. * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string * * @param p the path to evaluate. */ - export function extname(p: string): string; + export function extname(p: string): string; /** * The platform-specific file separator. '\\' or '/'. */ - export var sep: string; + export var sep: string; /** * The platform-specific file delimiter. ';' or ':'. */ - export var delimiter: string; + export var delimiter: string; /** * Returns an object from a path string - the opposite of format(). * * @param pathString path to evaluate. */ - export function parse(pathString: string): ParsedPath; + export function parse(pathString: string): ParsedPath; /** * Returns a path string from an object - the opposite of parse(). * * @param pathString path to evaluate. */ - export function format(pathObject: ParsedPath): string; + export function format(pathObject: ParsedPath): string; - export module posix { - export function normalize(p: string): string; - export function join(...paths: any[]): string; - export function resolve(...pathSegments: any[]): string; - export function isAbsolute(p: string): boolean; - export function relative(from: string, to: string): string; - export function dirname(p: string): string; - export function basename(p: string, ext?: string): string; - export function extname(p: string): string; - export var sep: string; - export var delimiter: string; - export function parse(p: string): ParsedPath; - export function format(pP: ParsedPath): string; - } + export module posix { + export function normalize(p: string): string; + export function join(...paths: any[]): string; + export function resolve(...pathSegments: any[]): string; + export function isAbsolute(p: string): boolean; + export function relative(from: string, to: string): string; + export function dirname(p: string): string; + export function basename(p: string, ext?: string): string; + export function extname(p: string): string; + export var sep: string; + export var delimiter: string; + export function parse(p: string): ParsedPath; + export function format(pP: ParsedPath): string; + } - export module win32 { - export function normalize(p: string): string; - export function join(...paths: any[]): string; - export function resolve(...pathSegments: any[]): string; - export function isAbsolute(p: string): boolean; - export function relative(from: string, to: string): string; - export function dirname(p: string): string; - export function basename(p: string, ext?: string): string; - export function extname(p: string): string; - export var sep: string; - export var delimiter: string; - export function parse(p: string): ParsedPath; - export function format(pP: ParsedPath): string; - } + export module win32 { + export function normalize(p: string): string; + export function join(...paths: any[]): string; + export function resolve(...pathSegments: any[]): string; + export function isAbsolute(p: string): boolean; + export function relative(from: string, to: string): string; + export function dirname(p: string): string; + export function basename(p: string, ext?: string): string; + export function extname(p: string): string; + export var sep: string; + export var delimiter: string; + export function parse(p: string): ParsedPath; + export function format(pP: ParsedPath): string; + } } declare module "string_decoder" { - export interface NodeStringDecoder { - write(buffer: Buffer): string; - end(buffer?: Buffer): string; - } - export var StringDecoder: { - new(encoding?: string): NodeStringDecoder; - }; + export interface NodeStringDecoder { + write(buffer: Buffer): string; + end(buffer?: Buffer): string; + } + export var StringDecoder: { + new(encoding?: string): NodeStringDecoder; + }; } declare module "tls" { - import * as crypto from "crypto"; - import * as net from "net"; - import * as stream from "stream"; + import * as crypto from "crypto"; + import * as net from "net"; + import * as stream from "stream"; - var CLIENT_RENEG_LIMIT: number; - var CLIENT_RENEG_WINDOW: number; + var CLIENT_RENEG_LIMIT: number; + var CLIENT_RENEG_WINDOW: number; - export interface Certificate { + export interface Certificate { /** * Country code. */ - C: string; + C: string; /** * Street. */ - ST: string; + ST: string; /** * Locality. */ - L: string; + L: string; /** * Organization. */ - O: string; + O: string; /** * Organizational unit. */ - OU: string; + OU: string; /** * Common name. */ - CN: string; - } + CN: string; + } - export interface PeerCertificate { - subject: Certificate; - issuer: Certificate; - subjectaltname: string; - infoAccess: { [index: string]: string[] }; - modulus: string; - exponent: string; - valid_from: string; - valid_to: string; - fingerprint: string; - ext_key_usage: string[]; - serialNumber: string; - raw: Buffer; - } + export interface PeerCertificate { + subject: Certificate; + issuer: Certificate; + subjectaltname: string; + infoAccess: { [index: string]: string[] }; + modulus: string; + exponent: string; + valid_from: string; + valid_to: string; + fingerprint: string; + ext_key_usage: string[]; + serialNumber: string; + raw: Buffer; + } - export interface DetailedPeerCertificate extends PeerCertificate { - issuerCertificate: DetailedPeerCertificate; - } + export interface DetailedPeerCertificate extends PeerCertificate { + issuerCertificate: DetailedPeerCertificate; + } - export interface CipherNameAndProtocol { + export interface CipherNameAndProtocol { /** * The cipher name. */ - name: string; + name: string; /** * SSL/TLS protocol version. */ - version: string; - } + version: string; + } - export class TLSSocket extends net.Socket { + export class TLSSocket extends net.Socket { /** * Construct a new tls.TLSSocket object from an existing TCP socket. */ - constructor(socket: net.Socket, options?: { + constructor(socket: net.Socket, options?: { /** * An optional TLS context object from tls.createSecureContext() */ - secureContext?: SecureContext, + secureContext?: SecureContext, /** * If true the TLS socket will be instantiated in server-mode. * Defaults to false. */ - isServer?: boolean, + isServer?: boolean, /** * An optional net.Server instance. */ - server?: net.Server, + server?: net.Server, /** * If true the server will request a certificate from clients that * connect and attempt to verify that certificate. Defaults to * false. */ - requestCert?: boolean, + requestCert?: boolean, /** * If true the server will reject any connection which is not * authorized with the list of supplied CAs. This option only has an * effect if requestCert is true. Defaults to false. */ - rejectUnauthorized?: boolean, + rejectUnauthorized?: boolean, /** * An array of strings or a Buffer naming possible NPN protocols. * (Protocols should be ordered by their priority.) */ - NPNProtocols?: string[] | Buffer, + NPNProtocols?: string[] | Buffer, /** * An array of strings or a Buffer naming possible ALPN protocols. * (Protocols should be ordered by their priority.) When the server @@ -3147,7 +3147,7 @@ declare module "tls" { * precedence over NPN and the server does not send an NPN extension * to the client. */ - ALPNProtocols?: string[] | Buffer, + ALPNProtocols?: string[] | Buffer, /** * SNICallback(servername, cb) A function that will be * called if the client supports SNI TLS extension. Two arguments @@ -3157,44 +3157,44 @@ declare module "tls" { * SecureContext.) If SNICallback wasn't provided the default callback * with high-level API will be used (see below). */ - SNICallback?: Function, + SNICallback?: Function, /** * An optional Buffer instance containing a TLS session. */ - session?: Buffer, + session?: Buffer, /** * If true, specifies that the OCSP status request extension will be * added to the client hello and an 'OCSPResponse' event will be * emitted on the socket before establishing a secure communication */ - requestOCSP?: boolean - }); + requestOCSP?: boolean + }); /** * Returns the bound address, the address family name and port of the underlying socket as reported by * the operating system. * @returns {any} - An object with three properties, e.g. { port: 12346, family: 'IPv4', address: '127.0.0.1' }. */ - address(): { port: number; family: string; address: string }; + address(): { port: number; family: string; address: string }; /** * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false. */ - authorized: boolean; + authorized: boolean; /** * The reason why the peer's certificate has not been verified. * This property becomes available only when tlsSocket.authorized === false. */ - authorizationError: Error; + authorizationError: Error; /** * Static boolean value, always true. * May be used to distinguish TLS sockets from regular ones. */ - encrypted: boolean; + encrypted: boolean; /** * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection. * @returns {CipherNameAndProtocol} - Returns an object representing the cipher name * and the SSL/TLS protocol version of the current connection. */ - getCipher(): CipherNameAndProtocol; + getCipher(): CipherNameAndProtocol; /** * Returns an object representing the peer's certificate. * The returned object has some properties corresponding to the field of the certificate. @@ -3204,41 +3204,41 @@ declare module "tls" { * @param {boolean} detailed - If true; the full chain with issuer property will be returned. * @returns {PeerCertificate | DetailedPeerCertificate} - An object representing the peer's certificate. */ - getPeerCertificate(detailed: true): DetailedPeerCertificate; - getPeerCertificate(detailed?: false): PeerCertificate; - getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; + getPeerCertificate(detailed: true): DetailedPeerCertificate; + getPeerCertificate(detailed?: false): PeerCertificate; + getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; /** * Could be used to speed up handshake establishment when reconnecting to the server. * @returns {any} - ASN.1 encoded TLS session or undefined if none was negotiated. */ - getSession(): any; + getSession(): any; /** * NOTE: Works only with client TLS sockets. * Useful only for debugging, for session reuse provide session option to tls.connect(). * @returns {any} - TLS session ticket or undefined if none was negotiated. */ - getTLSTicket(): any; + getTLSTicket(): any; /** * The string representation of the local IP address. */ - localAddress: string; + localAddress: string; /** * The numeric representation of the local port. */ - localPort: number; + localPort: number; /** * The string representation of the remote IP address. * For example, '74.125.127.100' or '2001:4860:a005::68'. */ - remoteAddress: string; + remoteAddress: string; /** * The string representation of the remote IP family. 'IPv4' or 'IPv6'. */ - remoteFamily: string; + remoteFamily: string; /** * The numeric representation of the remote port. For example, 443. */ - remotePort: number; + remotePort: number; /** * Initiate TLS renegotiation process. * @@ -3249,7 +3249,7 @@ declare module "tls" { * @param {Function} callback - callback(err) will be executed with null as err, once the renegotiation * is successfully completed. */ - renegotiate(options: TlsOptions, callback: (err: Error) => any): any; + renegotiate(options: TlsOptions, callback: (err: Error) => any): any; /** * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512). * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by @@ -3260,94 +3260,94 @@ declare module "tls" { * @param {number} size - TLS fragment size (default and maximum value is: 16384, minimum is: 512). * @returns {boolean} - Returns true on success, false otherwise. */ - setMaxSendFragment(size: number): boolean; + setMaxSendFragment(size: number): boolean; /** * events.EventEmitter * 1. OCSPResponse * 2. secureConnect **/ - addListener(event: string, listener: Function): this; - addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - addListener(event: "secureConnect", listener: () => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + addListener(event: "secureConnect", listener: () => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "OCSPResponse", response: Buffer): boolean; - emit(event: "secureConnect"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "OCSPResponse", response: Buffer): boolean; + emit(event: "secureConnect"): boolean; - on(event: string, listener: Function): this; - on(event: "OCSPResponse", listener: (response: Buffer) => void): this; - on(event: "secureConnect", listener: () => void): this; + on(event: string, listener: Function): this; + on(event: "OCSPResponse", listener: (response: Buffer) => void): this; + on(event: "secureConnect", listener: () => void): this; - once(event: string, listener: Function): this; - once(event: "OCSPResponse", listener: (response: Buffer) => void): this; - once(event: "secureConnect", listener: () => void): this; + once(event: string, listener: Function): this; + once(event: "OCSPResponse", listener: (response: Buffer) => void): this; + once(event: "secureConnect", listener: () => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependListener(event: "secureConnect", listener: () => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependListener(event: "secureConnect", listener: () => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; - prependOnceListener(event: "secureConnect", listener: () => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependOnceListener(event: "secureConnect", listener: () => void): this; + } - export interface TlsOptions { - host?: string; - port?: number; - pfx?: string | Buffer[]; - key?: string | string[] | Buffer | any[]; - passphrase?: string; - cert?: string | string[] | Buffer | Buffer[]; - ca?: string | string[] | Buffer | Buffer[]; - crl?: string | string[]; - ciphers?: string; - honorCipherOrder?: boolean; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: string[] | Buffer; - SNICallback?: (servername: string, cb: (err: Error, ctx: SecureContext) => any) => any; - ecdhCurve?: string; - dhparam?: string | Buffer; - handshakeTimeout?: number; - ALPNProtocols?: string[] | Buffer; - sessionTimeout?: number; - ticketKeys?: any; - sessionIdContext?: string; - secureProtocol?: string; - } + export interface TlsOptions { + host?: string; + port?: number; + pfx?: string | Buffer[]; + key?: string | string[] | Buffer | any[]; + passphrase?: string; + cert?: string | string[] | Buffer | Buffer[]; + ca?: string | string[] | Buffer | Buffer[]; + crl?: string | string[]; + ciphers?: string; + honorCipherOrder?: boolean; + requestCert?: boolean; + rejectUnauthorized?: boolean; + NPNProtocols?: string[] | Buffer; + SNICallback?: (servername: string, cb: (err: Error, ctx: SecureContext) => any) => any; + ecdhCurve?: string; + dhparam?: string | Buffer; + handshakeTimeout?: number; + ALPNProtocols?: string[] | Buffer; + sessionTimeout?: number; + ticketKeys?: any; + sessionIdContext?: string; + secureProtocol?: string; + } - export interface ConnectionOptions { - host?: string; - port?: number; - socket?: net.Socket; - pfx?: string | Buffer - key?: string | string[] | Buffer | Buffer[]; - passphrase?: string; - cert?: string | string[] | Buffer | Buffer[]; - ca?: string | Buffer | (string | Buffer)[]; - rejectUnauthorized?: boolean; - NPNProtocols?: (string | Buffer)[]; - servername?: string; - path?: string; - ALPNProtocols?: (string | Buffer)[]; - checkServerIdentity?: (servername: string, cert: string | Buffer | (string | Buffer)[]) => any; - secureProtocol?: string; - secureContext?: Object; - session?: Buffer; - minDHSize?: number; - } + export interface ConnectionOptions { + host?: string; + port?: number; + socket?: net.Socket; + pfx?: string | Buffer + key?: string | string[] | Buffer | Buffer[]; + passphrase?: string; + cert?: string | string[] | Buffer | Buffer[]; + ca?: string | Buffer | (string | Buffer)[]; + rejectUnauthorized?: boolean; + NPNProtocols?: (string | Buffer)[]; + servername?: string; + path?: string; + ALPNProtocols?: (string | Buffer)[]; + checkServerIdentity?: (servername: string, cert: string | Buffer | (string | Buffer)[]) => any; + secureProtocol?: string; + secureContext?: Object; + session?: Buffer; + minDHSize?: number; + } - export interface Server extends net.Server { - close(callback?: Function): Server; - address(): { port: number; family: string; address: string; }; - addContext(hostName: string, credentials: { - key: string; - cert: string; - ca: string; - }): void; - maxConnections: number; - connections: number; + export interface Server extends net.Server { + close(callback?: Function): Server; + address(): { port: number; family: string; address: string; }; + addContext(hostName: string, credentials: { + key: string; + cert: string; + ca: string; + }): void; + maxConnections: number; + connections: number; /** * events.EventEmitter @@ -3357,286 +3357,286 @@ declare module "tls" { * 4. resumeSession * 5. secureConnection **/ - addListener(event: string, listener: Function): this; - addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - addListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - addListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + addListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + addListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; - emit(event: "newSession", sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void): boolean; - emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: Function): boolean; - emit(event: "resumeSession", sessionId: any, callback: (err: Error, sessionData: any) => void): boolean; - emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; + emit(event: "newSession", sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void): boolean; + emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: Function): boolean; + emit(event: "resumeSession", sessionId: any, callback: (err: Error, sessionData: any) => void): boolean; + emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; - on(event: string, listener: Function): this; - on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - on(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - on(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + on(event: string, listener: Function): this; + on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + on(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + on(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - once(event: string, listener: Function): this; - once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - once(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - once(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + once(event: string, listener: Function): this; + once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + once(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + once(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - prependListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + prependListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; - prependOnceListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; - prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; - prependOnceListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; - prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; - } + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependOnceListener(event: "newSession", listener: (sessionId: any, sessionData: any, callback: (err: Error, resp: Buffer) => void) => void): this; + prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: Function) => void): this; + prependOnceListener(event: "resumeSession", listener: (sessionId: any, callback: (err: Error, sessionData: any) => void) => void): this; + prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + } - export interface ClearTextStream extends stream.Duplex { - authorized: boolean; - authorizationError: Error; - getPeerCertificate(): any; - getCipher: { - name: string; - version: string; - }; - address: { - port: number; - family: string; - address: string; - }; - remoteAddress: string; - remotePort: number; - } + export interface ClearTextStream extends stream.Duplex { + authorized: boolean; + authorizationError: Error; + getPeerCertificate(): any; + getCipher: { + name: string; + version: string; + }; + address: { + port: number; + family: string; + address: string; + }; + remoteAddress: string; + remotePort: number; + } - export interface SecurePair { - encrypted: any; - cleartext: any; - } + export interface SecurePair { + encrypted: any; + cleartext: any; + } - export interface SecureContextOptions { - pfx?: string | Buffer; - key?: string | Buffer; - passphrase?: string; - cert?: string | Buffer; - ca?: string | Buffer; - crl?: string | string[] - ciphers?: string; - honorCipherOrder?: boolean; - } + export interface SecureContextOptions { + pfx?: string | Buffer; + key?: string | Buffer; + passphrase?: string; + cert?: string | Buffer; + ca?: string | Buffer; + crl?: string | string[] + ciphers?: string; + honorCipherOrder?: boolean; + } - export interface SecureContext { - context: any; - } + export interface SecureContext { + context: any; + } - export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; - export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket; - export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; - export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; - export function createSecureContext(details: SecureContextOptions): SecureContext; + export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; + export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket; + export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; + export function createSecureContext(details: SecureContextOptions): SecureContext; } declare module "crypto" { - export interface Certificate { - exportChallenge(spkac: string | Buffer): Buffer; - exportPublicKey(spkac: string | Buffer): Buffer; - verifySpkac(spkac: Buffer): boolean; - } - export var Certificate: { - new(): Certificate; - (): Certificate; - } + export interface Certificate { + exportChallenge(spkac: string | Buffer): Buffer; + exportPublicKey(spkac: string | Buffer): Buffer; + verifySpkac(spkac: Buffer): boolean; + } + export var Certificate: { + new(): Certificate; + (): Certificate; + } - export var fips: boolean; + export var fips: boolean; - export interface CredentialDetails { - pfx: string; - key: string; - passphrase: string; - cert: string; - ca: string | string[]; - crl: string | string[]; - ciphers: string; - } - export interface Credentials { context?: any; } - export function createCredentials(details: CredentialDetails): Credentials; - export function createHash(algorithm: string): Hash; - export function createHmac(algorithm: string, key: string | Buffer): Hmac; + export interface CredentialDetails { + pfx: string; + key: string; + passphrase: string; + cert: string; + ca: string | string[]; + crl: string | string[]; + ciphers: string; + } + export interface Credentials { context?: any; } + export function createCredentials(details: CredentialDetails): Credentials; + export function createHash(algorithm: string): Hash; + export function createHmac(algorithm: string, key: string | Buffer): Hmac; - type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1"; - type HexBase64Latin1Encoding = "latin1" | "hex" | "base64"; - type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary"; - type HexBase64BinaryEncoding = "binary" | "base64" | "hex"; - type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; + type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1"; + type HexBase64Latin1Encoding = "latin1" | "hex" | "base64"; + type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary"; + type HexBase64BinaryEncoding = "binary" | "base64" | "hex"; + type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; - export interface Hash extends NodeJS.ReadWriteStream { - update(data: string | Buffer): Hash; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hash; - digest(): Buffer; - digest(encoding: HexBase64Latin1Encoding): string; - } - export interface Hmac extends NodeJS.ReadWriteStream { - update(data: string | Buffer): Hmac; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hmac; - digest(): Buffer; - digest(encoding: HexBase64Latin1Encoding): string; - } - export function createCipher(algorithm: string, password: any): Cipher; - export function createCipheriv(algorithm: string, key: any, iv: any): Cipher; - export interface Cipher extends NodeJS.ReadWriteStream { - update(data: Buffer): Buffer; - update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer; - update(data: Buffer, input_encoding: any, output_encoding: HexBase64BinaryEncoding): string; - update(data: string, input_encoding: Utf8AsciiBinaryEncoding, output_encoding: HexBase64BinaryEncoding): string; - final(): Buffer; - final(output_encoding: string): string; - setAutoPadding(auto_padding?: boolean): void; - getAuthTag(): Buffer; - setAAD(buffer: Buffer): void; - } - export function createDecipher(algorithm: string, password: any): Decipher; - export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher; - export interface Decipher extends NodeJS.ReadWriteStream { - update(data: Buffer): Buffer; - update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer; - update(data: Buffer, input_encoding: any, output_encoding: Utf8AsciiBinaryEncoding): string; - update(data: string, input_encoding: HexBase64BinaryEncoding, output_encoding: Utf8AsciiBinaryEncoding): string; - final(): Buffer; - final(output_encoding: string): string; - setAutoPadding(auto_padding?: boolean): void; - setAuthTag(tag: Buffer): void; - setAAD(buffer: Buffer): void; - } - export function createSign(algorithm: string): Signer; - export interface Signer extends NodeJS.WritableStream { - update(data: string | Buffer): Signer; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Signer; - sign(private_key: string | { key: string; passphrase: string }): Buffer; - sign(private_key: string | { key: string; passphrase: string }, output_format: HexBase64Latin1Encoding): string; - } - export function createVerify(algorith: string): Verify; - export interface Verify extends NodeJS.WritableStream { - update(data: string | Buffer): Verify; - update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Verify; - verify(object: string, signature: Buffer): boolean; - verify(object: string, signature: string, signature_format: HexBase64Latin1Encoding): boolean; - } - export function createDiffieHellman(prime_length: number, generator?: number): DiffieHellman; - export function createDiffieHellman(prime: Buffer): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | Buffer): DiffieHellman; - export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman; - export interface DiffieHellman { - generateKeys(): Buffer; - generateKeys(encoding: HexBase64Latin1Encoding): string; - computeSecret(other_public_key: Buffer): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; - getPrime(): Buffer; - getPrime(encoding: HexBase64Latin1Encoding): string; - getGenerator(): Buffer; - getGenerator(encoding: HexBase64Latin1Encoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: HexBase64Latin1Encoding): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: HexBase64Latin1Encoding): string; - setPublicKey(public_key: Buffer): void; - setPublicKey(public_key: string, encoding: string): void; - setPrivateKey(private_key: Buffer): void; - setPrivateKey(private_key: string, encoding: string): void; - verifyError: number; - } - export function getDiffieHellman(group_name: string): DiffieHellman; - export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void; - export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer; - export function randomBytes(size: number): Buffer; - export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; - export function pseudoRandomBytes(size: number): Buffer; - export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFillSync(buffer: Buffer | Uint8Array, offset?: number, size?: number): Buffer; - export function randomFill(buffer: Buffer, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, callback: (err: Error, buf: Uint8Array) => void): void; - export function randomFill(buffer: Buffer, offset: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, offset: number, callback: (err: Error, buf: Uint8Array) => void): void; - export function randomFill(buffer: Buffer, offset: number, size: number, callback: (err: Error, buf: Buffer) => void): void; - export function randomFill(buffer: Uint8Array, offset: number, size: number, callback: (err: Error, buf: Uint8Array) => void): void; - export interface RsaPublicKey { - key: string; - padding?: number; - } - export interface RsaPrivateKey { - key: string; - passphrase?: string, - padding?: number; - } - export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer - export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer - export function privateEncrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer - export function publicDecrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer - export function getCiphers(): string[]; - export function getCurves(): string[]; - export function getHashes(): string[]; - export interface ECDH { - generateKeys(): Buffer; - generateKeys(encoding: HexBase64Latin1Encoding): string; - generateKeys(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; - computeSecret(other_public_key: Buffer): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; - computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; - getPrivateKey(): Buffer; - getPrivateKey(encoding: HexBase64Latin1Encoding): string; - getPublicKey(): Buffer; - getPublicKey(encoding: HexBase64Latin1Encoding): string; - getPublicKey(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; - setPrivateKey(private_key: Buffer): void; - setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void; - } - export function createECDH(curve_name: string): ECDH; - export function timingSafeEqual(a: Buffer, b: Buffer): boolean; - export var DEFAULT_ENCODING: string; + export interface Hash extends NodeJS.ReadWriteStream { + update(data: string | Buffer): Hash; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hash; + digest(): Buffer; + digest(encoding: HexBase64Latin1Encoding): string; + } + export interface Hmac extends NodeJS.ReadWriteStream { + update(data: string | Buffer): Hmac; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Hmac; + digest(): Buffer; + digest(encoding: HexBase64Latin1Encoding): string; + } + export function createCipher(algorithm: string, password: any): Cipher; + export function createCipheriv(algorithm: string, key: any, iv: any): Cipher; + export interface Cipher extends NodeJS.ReadWriteStream { + update(data: Buffer): Buffer; + update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer; + update(data: Buffer, input_encoding: any, output_encoding: HexBase64BinaryEncoding): string; + update(data: string, input_encoding: Utf8AsciiBinaryEncoding, output_encoding: HexBase64BinaryEncoding): string; + final(): Buffer; + final(output_encoding: string): string; + setAutoPadding(auto_padding?: boolean): void; + getAuthTag(): Buffer; + setAAD(buffer: Buffer): void; + } + export function createDecipher(algorithm: string, password: any): Decipher; + export function createDecipheriv(algorithm: string, key: any, iv: any): Decipher; + export interface Decipher extends NodeJS.ReadWriteStream { + update(data: Buffer): Buffer; + update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer; + update(data: Buffer, input_encoding: any, output_encoding: Utf8AsciiBinaryEncoding): string; + update(data: string, input_encoding: HexBase64BinaryEncoding, output_encoding: Utf8AsciiBinaryEncoding): string; + final(): Buffer; + final(output_encoding: string): string; + setAutoPadding(auto_padding?: boolean): void; + setAuthTag(tag: Buffer): void; + setAAD(buffer: Buffer): void; + } + export function createSign(algorithm: string): Signer; + export interface Signer extends NodeJS.WritableStream { + update(data: string | Buffer): Signer; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Signer; + sign(private_key: string | { key: string; passphrase: string }): Buffer; + sign(private_key: string | { key: string; passphrase: string }, output_format: HexBase64Latin1Encoding): string; + } + export function createVerify(algorith: string): Verify; + export interface Verify extends NodeJS.WritableStream { + update(data: string | Buffer): Verify; + update(data: string | Buffer, input_encoding: Utf8AsciiLatin1Encoding): Verify; + verify(object: string, signature: Buffer): boolean; + verify(object: string, signature: string, signature_format: HexBase64Latin1Encoding): boolean; + } + export function createDiffieHellman(prime_length: number, generator?: number): DiffieHellman; + export function createDiffieHellman(prime: Buffer): DiffieHellman; + export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman; + export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | Buffer): DiffieHellman; + export function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman; + export interface DiffieHellman { + generateKeys(): Buffer; + generateKeys(encoding: HexBase64Latin1Encoding): string; + computeSecret(other_public_key: Buffer): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; + getPrime(): Buffer; + getPrime(encoding: HexBase64Latin1Encoding): string; + getGenerator(): Buffer; + getGenerator(encoding: HexBase64Latin1Encoding): string; + getPublicKey(): Buffer; + getPublicKey(encoding: HexBase64Latin1Encoding): string; + getPrivateKey(): Buffer; + getPrivateKey(encoding: HexBase64Latin1Encoding): string; + setPublicKey(public_key: Buffer): void; + setPublicKey(public_key: string, encoding: string): void; + setPrivateKey(private_key: Buffer): void; + setPrivateKey(private_key: string, encoding: string): void; + verifyError: number; + } + export function getDiffieHellman(group_name: string): DiffieHellman; + export function pbkdf2(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string, callback: (err: Error, derivedKey: Buffer) => any): void; + export function pbkdf2Sync(password: string | Buffer, salt: string | Buffer, iterations: number, keylen: number, digest: string): Buffer; + export function randomBytes(size: number): Buffer; + export function randomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; + export function pseudoRandomBytes(size: number): Buffer; + export function pseudoRandomBytes(size: number, callback: (err: Error, buf: Buffer) => void): void; + export function randomFillSync(buffer: Buffer | Uint8Array, offset?: number, size?: number): Buffer; + export function randomFill(buffer: Buffer, callback: (err: Error, buf: Buffer) => void): void; + export function randomFill(buffer: Uint8Array, callback: (err: Error, buf: Uint8Array) => void): void; + export function randomFill(buffer: Buffer, offset: number, callback: (err: Error, buf: Buffer) => void): void; + export function randomFill(buffer: Uint8Array, offset: number, callback: (err: Error, buf: Uint8Array) => void): void; + export function randomFill(buffer: Buffer, offset: number, size: number, callback: (err: Error, buf: Buffer) => void): void; + export function randomFill(buffer: Uint8Array, offset: number, size: number, callback: (err: Error, buf: Uint8Array) => void): void; + export interface RsaPublicKey { + key: string; + padding?: number; + } + export interface RsaPrivateKey { + key: string; + passphrase?: string, + padding?: number; + } + export function publicEncrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer + export function privateDecrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer + export function privateEncrypt(private_key: string | RsaPrivateKey, buffer: Buffer): Buffer + export function publicDecrypt(public_key: string | RsaPublicKey, buffer: Buffer): Buffer + export function getCiphers(): string[]; + export function getCurves(): string[]; + export function getHashes(): string[]; + export interface ECDH { + generateKeys(): Buffer; + generateKeys(encoding: HexBase64Latin1Encoding): string; + generateKeys(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; + computeSecret(other_public_key: Buffer): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer; + computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string; + getPrivateKey(): Buffer; + getPrivateKey(encoding: HexBase64Latin1Encoding): string; + getPublicKey(): Buffer; + getPublicKey(encoding: HexBase64Latin1Encoding): string; + getPublicKey(encoding: HexBase64Latin1Encoding, format: ECDHKeyFormat): string; + setPrivateKey(private_key: Buffer): void; + setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void; + } + export function createECDH(curve_name: string): ECDH; + export function timingSafeEqual(a: Buffer, b: Buffer): boolean; + export var DEFAULT_ENCODING: string; } declare module "stream" { - import * as events from "events"; + import * as events from "events"; - class internal extends events.EventEmitter { - pipe(destination: T, options?: { end?: boolean; }): T; - } + class internal extends events.EventEmitter { + pipe(destination: T, options?: { end?: boolean; }): T; + } - namespace internal { + namespace internal { - export class Stream extends internal { } + export class Stream extends internal { } - export interface ReadableOptions { - highWaterMark?: number; - encoding?: string; - objectMode?: boolean; - read?: (this: Readable, size?: number) => any; - } + export interface ReadableOptions { + highWaterMark?: number; + encoding?: string; + objectMode?: boolean; + read?: (this: Readable, size?: number) => any; + } - export class Readable extends Stream implements NodeJS.ReadableStream { - readable: boolean; - constructor(opts?: ReadableOptions); - _read(size: number): void; - read(size?: number): any; - setEncoding(encoding: string): this; - pause(): this; - resume(): this; - isPaused(): boolean; - pipe(destination: T, options?: { end?: boolean; }): T; - unpipe(destination?: T): this; - unshift(chunk: any): void; - wrap(oldStream: NodeJS.ReadableStream): Readable; - push(chunk: any, encoding?: string): boolean; + export class Readable extends Stream implements NodeJS.ReadableStream { + readable: boolean; + constructor(opts?: ReadableOptions); + _read(size: number): void; + read(size?: number): any; + setEncoding(encoding: string): this; + pause(): this; + resume(): this; + isPaused(): boolean; + pipe(destination: T, options?: { end?: boolean; }): T; + unpipe(destination?: T): this; + unshift(chunk: any): void; + wrap(oldStream: NodeJS.ReadableStream): Readable; + push(chunk: any, encoding?: string): boolean; /** * Event emitter @@ -3647,75 +3647,75 @@ declare module "stream" { * 4. readable * 5. error **/ - addListener(event: string, listener: Function): this; - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "data", listener: (chunk: Buffer | string) => void): this; - addListener(event: "end", listener: () => void): this; - addListener(event: "readable", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "data", chunk: Buffer | string): boolean; - emit(event: "end"): boolean; - emit(event: "readable"): boolean; - emit(event: "error", err: Error): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "data", chunk: Buffer | string): boolean; + emit(event: "end"): boolean; + emit(event: "readable"): boolean; + emit(event: "error", err: Error): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "data", listener: (chunk: Buffer | string) => void): this; - on(event: "end", listener: () => void): this; - on(event: "readable", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "end", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "data", listener: (chunk: Buffer | string) => void): this; - once(event: "end", listener: () => void): this; - once(event: "readable", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "end", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependListener(event: "end", listener: () => void): this; - prependListener(event: "readable", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; - prependOnceListener(event: "end", listener: () => void): this; - prependOnceListener(event: "readable", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: string, listener: Function): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "data", listener: (chunk: Buffer | string) => void): this; - removeListener(event: "end", listener: () => void): this; - removeListener(event: "readable", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - } + removeListener(event: string, listener: Function): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "data", listener: (chunk: Buffer | string) => void): this; + removeListener(event: "end", listener: () => void): this; + removeListener(event: "readable", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + } - export interface WritableOptions { - highWaterMark?: number; - decodeStrings?: boolean; - objectMode?: boolean; - write?: (chunk: string | Buffer, encoding: string, callback: Function) => any; - writev?: (chunks: { chunk: string | Buffer, encoding: string }[], callback: Function) => any; - } + export interface WritableOptions { + highWaterMark?: number; + decodeStrings?: boolean; + objectMode?: boolean; + write?: (chunk: string | Buffer, encoding: string, callback: Function) => any; + writev?: (chunks: { chunk: string | Buffer, encoding: string }[], callback: Function) => any; + } - export class Writable extends Stream implements NodeJS.WritableStream { - writable: boolean; - constructor(opts?: WritableOptions); - _write(chunk: any, encoding: string, callback: Function): void; - write(chunk: any, cb?: Function): boolean; - write(chunk: any, encoding?: string, cb?: Function): boolean; - setDefaultEncoding(encoding: string): this; - end(): void; - end(chunk: any, cb?: Function): void; - end(chunk: any, encoding?: string, cb?: Function): void; + export class Writable extends Stream implements NodeJS.WritableStream { + writable: boolean; + constructor(opts?: WritableOptions); + _write(chunk: any, encoding: string, callback: Function): void; + write(chunk: any, cb?: Function): boolean; + write(chunk: any, encoding?: string, cb?: Function): boolean; + setDefaultEncoding(encoding: string): this; + end(): void; + end(chunk: any, cb?: Function): void; + end(chunk: any, encoding?: string, cb?: Function): void; /** * Event emitter @@ -3727,526 +3727,526 @@ declare module "stream" { * 5. pipe * 6. unpipe **/ - addListener(event: string, listener: Function): this; - addListener(event: "close", listener: () => void): this; - addListener(event: "drain", listener: () => void): this; - addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "finish", listener: () => void): this; - addListener(event: "pipe", listener: (src: Readable) => void): this; - addListener(event: "unpipe", listener: (src: Readable) => void): this; + addListener(event: string, listener: Function): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: Readable) => void): this; + addListener(event: "unpipe", listener: (src: Readable) => void): this; - emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close"): boolean; - emit(event: "drain", chunk: Buffer | string): boolean; - emit(event: "error", err: Error): boolean; - emit(event: "finish"): boolean; - emit(event: "pipe", src: Readable): boolean; - emit(event: "unpipe", src: Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "drain", chunk: Buffer | string): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pipe", src: Readable): boolean; + emit(event: "unpipe", src: Readable): boolean; - on(event: string, listener: Function): this; - on(event: "close", listener: () => void): this; - on(event: "drain", listener: () => void): this; - on(event: "error", listener: (err: Error) => void): this; - on(event: "finish", listener: () => void): this; - on(event: "pipe", listener: (src: Readable) => void): this; - on(event: "unpipe", listener: (src: Readable) => void): this; + on(event: string, listener: Function): this; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: Readable) => void): this; + on(event: "unpipe", listener: (src: Readable) => void): this; - once(event: string, listener: Function): this; - once(event: "close", listener: () => void): this; - once(event: "drain", listener: () => void): this; - once(event: "error", listener: (err: Error) => void): this; - once(event: "finish", listener: () => void): this; - once(event: "pipe", listener: (src: Readable) => void): this; - once(event: "unpipe", listener: (src: Readable) => void): this; + once(event: string, listener: Function): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: Readable) => void): this; + once(event: "unpipe", listener: (src: Readable) => void): this; - prependListener(event: string, listener: Function): this; - prependListener(event: "close", listener: () => void): this; - prependListener(event: "drain", listener: () => void): this; - prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "finish", listener: () => void): this; - prependListener(event: "pipe", listener: (src: Readable) => void): this; - prependListener(event: "unpipe", listener: (src: Readable) => void): this; + prependListener(event: string, listener: Function): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: Readable) => void): this; + prependListener(event: "unpipe", listener: (src: Readable) => void): this; - prependOnceListener(event: string, listener: Function): this; - prependOnceListener(event: "close", listener: () => void): this; - prependOnceListener(event: "drain", listener: () => void): this; - prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "finish", listener: () => void): this; - prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; - prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; + prependOnceListener(event: string, listener: Function): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; - removeListener(event: string, listener: Function): this; - removeListener(event: "close", listener: () => void): this; - removeListener(event: "drain", listener: () => void): this; - removeListener(event: "error", listener: (err: Error) => void): this; - removeListener(event: "finish", listener: () => void): this; - removeListener(event: "pipe", listener: (src: Readable) => void): this; - removeListener(event: "unpipe", listener: (src: Readable) => void): this; - } + removeListener(event: string, listener: Function): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "drain", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "finish", listener: () => void): this; + removeListener(event: "pipe", listener: (src: Readable) => void): this; + removeListener(event: "unpipe", listener: (src: Readable) => void): this; + } - export interface DuplexOptions extends ReadableOptions, WritableOptions { - allowHalfOpen?: boolean; - readableObjectMode?: boolean; - writableObjectMode?: boolean; - } + export interface DuplexOptions extends ReadableOptions, WritableOptions { + allowHalfOpen?: boolean; + readableObjectMode?: boolean; + writableObjectMode?: boolean; + } - // Note: Duplex extends both Readable and Writable. - export class Duplex extends Readable implements Writable { - writable: boolean; - constructor(opts?: DuplexOptions); - _write(chunk: any, encoding: string, callback: Function): void; - write(chunk: any, cb?: Function): boolean; - write(chunk: any, encoding?: string, cb?: Function): boolean; - setDefaultEncoding(encoding: string): this; - end(): void; - end(chunk: any, cb?: Function): void; - end(chunk: any, encoding?: string, cb?: Function): void; - } + // Note: Duplex extends both Readable and Writable. + export class Duplex extends Readable implements Writable { + writable: boolean; + constructor(opts?: DuplexOptions); + _write(chunk: any, encoding: string, callback: Function): void; + write(chunk: any, cb?: Function): boolean; + write(chunk: any, encoding?: string, cb?: Function): boolean; + setDefaultEncoding(encoding: string): this; + end(): void; + end(chunk: any, cb?: Function): void; + end(chunk: any, encoding?: string, cb?: Function): void; + } - export interface TransformOptions extends DuplexOptions { - transform?: (chunk: string | Buffer, encoding: string, callback: Function) => any; - flush?: (callback: Function) => any; - } + export interface TransformOptions extends DuplexOptions { + transform?: (chunk: string | Buffer, encoding: string, callback: Function) => any; + flush?: (callback: Function) => any; + } - export class Transform extends Duplex { - constructor(opts?: TransformOptions); - _transform(chunk: any, encoding: string, callback: Function): void; - } + export class Transform extends Duplex { + constructor(opts?: TransformOptions); + _transform(chunk: any, encoding: string, callback: Function): void; + } - export class PassThrough extends Transform { } - } + export class PassThrough extends Transform { } + } - export = internal; + export = internal; } declare module "util" { - export interface InspectOptions extends NodeJS.InspectOptions { } - export function format(format: any, ...param: any[]): string; - export function debug(string: string): void; - export function error(...param: any[]): void; - export function puts(...param: any[]): void; - export function print(...param: any[]): void; - export function log(string: string): void; - export function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; - export function inspect(object: any, options: InspectOptions): string; - export function isArray(object: any): object is any[]; - export function isRegExp(object: any): object is RegExp; - export function isDate(object: any): object is Date; - export function isError(object: any): object is Error; - export function inherits(constructor: any, superConstructor: any): void; - export function debuglog(key: string): (msg: string, ...param: any[]) => void; - export function isBoolean(object: any): object is boolean; - export function isBuffer(object: any): object is Buffer; - export function isFunction(object: any): boolean; - export function isNull(object: any): object is null; - export function isNullOrUndefined(object: any): object is null | undefined; - export function isNumber(object: any): object is number; - export function isObject(object: any): boolean; - export function isPrimitive(object: any): boolean; - export function isString(object: any): object is string; - export function isSymbol(object: any): object is symbol; - export function isUndefined(object: any): object is undefined; - export function deprecate(fn: T, message: string): T; + export interface InspectOptions extends NodeJS.InspectOptions { } + export function format(format: any, ...param: any[]): string; + export function debug(string: string): void; + export function error(...param: any[]): void; + export function puts(...param: any[]): void; + export function print(...param: any[]): void; + export function log(string: string): void; + export function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; + export function inspect(object: any, options: InspectOptions): string; + export function isArray(object: any): object is any[]; + export function isRegExp(object: any): object is RegExp; + export function isDate(object: any): object is Date; + export function isError(object: any): object is Error; + export function inherits(constructor: any, superConstructor: any): void; + export function debuglog(key: string): (msg: string, ...param: any[]) => void; + export function isBoolean(object: any): object is boolean; + export function isBuffer(object: any): object is Buffer; + export function isFunction(object: any): boolean; + export function isNull(object: any): object is null; + export function isNullOrUndefined(object: any): object is null | undefined; + export function isNumber(object: any): object is number; + export function isObject(object: any): boolean; + export function isPrimitive(object: any): boolean; + export function isString(object: any): object is string; + export function isSymbol(object: any): object is symbol; + export function isUndefined(object: any): object is undefined; + export function deprecate(fn: T, message: string): T; } declare module "assert" { - function internal(value: any, message?: string): void; - namespace internal { - export class AssertionError implements Error { - name: string; - message: string; - actual: any; - expected: any; - operator: string; - generatedMessage: boolean; + function internal(value: any, message?: string): void; + namespace internal { + export class AssertionError implements Error { + name: string; + message: string; + actual: any; + expected: any; + operator: string; + generatedMessage: boolean; - constructor(options?: { - message?: string; actual?: any; expected?: any; - operator?: string; stackStartFunction?: Function - }); - } + constructor(options?: { + message?: string; actual?: any; expected?: any; + operator?: string; stackStartFunction?: Function + }); + } - export function fail(actual?: any, expected?: any, message?: string, operator?: string): void; - export function ok(value: any, message?: string): void; - export function equal(actual: any, expected: any, message?: string): void; - export function notEqual(actual: any, expected: any, message?: string): void; - export function deepEqual(actual: any, expected: any, message?: string): void; - export function notDeepEqual(acutal: any, expected: any, message?: string): void; - export function strictEqual(actual: any, expected: any, message?: string): void; - export function notStrictEqual(actual: any, expected: any, message?: string): void; - export function deepStrictEqual(actual: any, expected: any, message?: string): void; - export function notDeepStrictEqual(actual: any, expected: any, message?: string): void; + export function fail(actual?: any, expected?: any, message?: string, operator?: string): void; + export function ok(value: any, message?: string): void; + export function equal(actual: any, expected: any, message?: string): void; + export function notEqual(actual: any, expected: any, message?: string): void; + export function deepEqual(actual: any, expected: any, message?: string): void; + export function notDeepEqual(acutal: any, expected: any, message?: string): void; + export function strictEqual(actual: any, expected: any, message?: string): void; + export function notStrictEqual(actual: any, expected: any, message?: string): void; + export function deepStrictEqual(actual: any, expected: any, message?: string): void; + export function notDeepStrictEqual(actual: any, expected: any, message?: string): void; - export function throws(block: Function, message?: string): void; - export function throws(block: Function, error: Function, message?: string): void; - export function throws(block: Function, error: RegExp, message?: string): void; - export function throws(block: Function, error: (err: any) => boolean, message?: string): void; + export function throws(block: Function, message?: string): void; + export function throws(block: Function, error: Function, message?: string): void; + export function throws(block: Function, error: RegExp, message?: string): void; + export function throws(block: Function, error: (err: any) => boolean, message?: string): void; - export function doesNotThrow(block: Function, message?: string): void; - export function doesNotThrow(block: Function, error: Function, message?: string): void; - export function doesNotThrow(block: Function, error: RegExp, message?: string): void; - export function doesNotThrow(block: Function, error: (err: any) => boolean, message?: string): void; + export function doesNotThrow(block: Function, message?: string): void; + export function doesNotThrow(block: Function, error: Function, message?: string): void; + export function doesNotThrow(block: Function, error: RegExp, message?: string): void; + export function doesNotThrow(block: Function, error: (err: any) => boolean, message?: string): void; - export function ifError(value: any): void; - } + export function ifError(value: any): void; + } - export = internal; + export = internal; } declare module "tty" { - import * as net from "net"; + import * as net from "net"; - export function isatty(fd: number): boolean; - export interface ReadStream extends net.Socket { - isRaw: boolean; - setRawMode(mode: boolean): void; - isTTY: boolean; - } - export interface WriteStream extends net.Socket { - columns: number; - rows: number; - isTTY: boolean; - } + export function isatty(fd: number): boolean; + export interface ReadStream extends net.Socket { + isRaw: boolean; + setRawMode(mode: boolean): void; + isTTY: boolean; + } + export interface WriteStream extends net.Socket { + columns: number; + rows: number; + isTTY: boolean; + } } declare module "domain" { - import * as events from "events"; + import * as events from "events"; - export class Domain extends events.EventEmitter implements NodeJS.Domain { - run(fn: Function): void; - add(emitter: events.EventEmitter): void; - remove(emitter: events.EventEmitter): void; - bind(cb: (err: Error, data: any) => any): any; - intercept(cb: (data: any) => any): any; - dispose(): void; - members: any[]; - enter(): void; - exit(): void; - } + export class Domain extends events.EventEmitter implements NodeJS.Domain { + run(fn: Function): void; + add(emitter: events.EventEmitter): void; + remove(emitter: events.EventEmitter): void; + bind(cb: (err: Error, data: any) => any): any; + intercept(cb: (data: any) => any): any; + dispose(): void; + members: any[]; + enter(): void; + exit(): void; + } - export function create(): Domain; + export function create(): Domain; } declare module "constants" { - export var E2BIG: number; - export var EACCES: number; - export var EADDRINUSE: number; - export var EADDRNOTAVAIL: number; - export var EAFNOSUPPORT: number; - export var EAGAIN: number; - export var EALREADY: number; - export var EBADF: number; - export var EBADMSG: number; - export var EBUSY: number; - export var ECANCELED: number; - export var ECHILD: number; - export var ECONNABORTED: number; - export var ECONNREFUSED: number; - export var ECONNRESET: number; - export var EDEADLK: number; - export var EDESTADDRREQ: number; - export var EDOM: number; - export var EEXIST: number; - export var EFAULT: number; - export var EFBIG: number; - export var EHOSTUNREACH: number; - export var EIDRM: number; - export var EILSEQ: number; - export var EINPROGRESS: number; - export var EINTR: number; - export var EINVAL: number; - export var EIO: number; - export var EISCONN: number; - export var EISDIR: number; - export var ELOOP: number; - export var EMFILE: number; - export var EMLINK: number; - export var EMSGSIZE: number; - export var ENAMETOOLONG: number; - export var ENETDOWN: number; - export var ENETRESET: number; - export var ENETUNREACH: number; - export var ENFILE: number; - export var ENOBUFS: number; - export var ENODATA: number; - export var ENODEV: number; - export var ENOENT: number; - export var ENOEXEC: number; - export var ENOLCK: number; - export var ENOLINK: number; - export var ENOMEM: number; - export var ENOMSG: number; - export var ENOPROTOOPT: number; - export var ENOSPC: number; - export var ENOSR: number; - export var ENOSTR: number; - export var ENOSYS: number; - export var ENOTCONN: number; - export var ENOTDIR: number; - export var ENOTEMPTY: number; - export var ENOTSOCK: number; - export var ENOTSUP: number; - export var ENOTTY: number; - export var ENXIO: number; - export var EOPNOTSUPP: number; - export var EOVERFLOW: number; - export var EPERM: number; - export var EPIPE: number; - export var EPROTO: number; - export var EPROTONOSUPPORT: number; - export var EPROTOTYPE: number; - export var ERANGE: number; - export var EROFS: number; - export var ESPIPE: number; - export var ESRCH: number; - export var ETIME: number; - export var ETIMEDOUT: number; - export var ETXTBSY: number; - export var EWOULDBLOCK: number; - export var EXDEV: number; - export var WSAEINTR: number; - export var WSAEBADF: number; - export var WSAEACCES: number; - export var WSAEFAULT: number; - export var WSAEINVAL: number; - export var WSAEMFILE: number; - export var WSAEWOULDBLOCK: number; - export var WSAEINPROGRESS: number; - export var WSAEALREADY: number; - export var WSAENOTSOCK: number; - export var WSAEDESTADDRREQ: number; - export var WSAEMSGSIZE: number; - export var WSAEPROTOTYPE: number; - export var WSAENOPROTOOPT: number; - export var WSAEPROTONOSUPPORT: number; - export var WSAESOCKTNOSUPPORT: number; - export var WSAEOPNOTSUPP: number; - export var WSAEPFNOSUPPORT: number; - export var WSAEAFNOSUPPORT: number; - export var WSAEADDRINUSE: number; - export var WSAEADDRNOTAVAIL: number; - export var WSAENETDOWN: number; - export var WSAENETUNREACH: number; - export var WSAENETRESET: number; - export var WSAECONNABORTED: number; - export var WSAECONNRESET: number; - export var WSAENOBUFS: number; - export var WSAEISCONN: number; - export var WSAENOTCONN: number; - export var WSAESHUTDOWN: number; - export var WSAETOOMANYREFS: number; - export var WSAETIMEDOUT: number; - export var WSAECONNREFUSED: number; - export var WSAELOOP: number; - export var WSAENAMETOOLONG: number; - export var WSAEHOSTDOWN: number; - export var WSAEHOSTUNREACH: number; - export var WSAENOTEMPTY: number; - export var WSAEPROCLIM: number; - export var WSAEUSERS: number; - export var WSAEDQUOT: number; - export var WSAESTALE: number; - export var WSAEREMOTE: number; - export var WSASYSNOTREADY: number; - export var WSAVERNOTSUPPORTED: number; - export var WSANOTINITIALISED: number; - export var WSAEDISCON: number; - export var WSAENOMORE: number; - export var WSAECANCELLED: number; - export var WSAEINVALIDPROCTABLE: number; - export var WSAEINVALIDPROVIDER: number; - export var WSAEPROVIDERFAILEDINIT: number; - export var WSASYSCALLFAILURE: number; - export var WSASERVICE_NOT_FOUND: number; - export var WSATYPE_NOT_FOUND: number; - export var WSA_E_NO_MORE: number; - export var WSA_E_CANCELLED: number; - export var WSAEREFUSED: number; - export var SIGHUP: number; - export var SIGINT: number; - export var SIGILL: number; - export var SIGABRT: number; - export var SIGFPE: number; - export var SIGKILL: number; - export var SIGSEGV: number; - export var SIGTERM: number; - export var SIGBREAK: number; - export var SIGWINCH: number; - export var SSL_OP_ALL: number; - export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; - export var SSL_OP_CIPHER_SERVER_PREFERENCE: number; - export var SSL_OP_CISCO_ANYCONNECT: number; - export var SSL_OP_COOKIE_EXCHANGE: number; - export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; - export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; - export var SSL_OP_EPHEMERAL_RSA: number; - export var SSL_OP_LEGACY_SERVER_CONNECT: number; - export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number; - export var SSL_OP_MICROSOFT_SESS_ID_BUG: number; - export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number; - export var SSL_OP_NETSCAPE_CA_DN_BUG: number; - export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number; - export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number; - export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number; - export var SSL_OP_NO_COMPRESSION: number; - export var SSL_OP_NO_QUERY_MTU: number; - export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; - export var SSL_OP_NO_SSLv2: number; - export var SSL_OP_NO_SSLv3: number; - export var SSL_OP_NO_TICKET: number; - export var SSL_OP_NO_TLSv1: number; - export var SSL_OP_NO_TLSv1_1: number; - export var SSL_OP_NO_TLSv1_2: number; - export var SSL_OP_PKCS1_CHECK_1: number; - export var SSL_OP_PKCS1_CHECK_2: number; - export var SSL_OP_SINGLE_DH_USE: number; - export var SSL_OP_SINGLE_ECDH_USE: number; - export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number; - export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number; - export var SSL_OP_TLS_BLOCK_PADDING_BUG: number; - export var SSL_OP_TLS_D5_BUG: number; - export var SSL_OP_TLS_ROLLBACK_BUG: number; - export var ENGINE_METHOD_DSA: number; - export var ENGINE_METHOD_DH: number; - export var ENGINE_METHOD_RAND: number; - export var ENGINE_METHOD_ECDH: number; - export var ENGINE_METHOD_ECDSA: number; - export var ENGINE_METHOD_CIPHERS: number; - export var ENGINE_METHOD_DIGESTS: number; - export var ENGINE_METHOD_STORE: number; - export var ENGINE_METHOD_PKEY_METHS: number; - export var ENGINE_METHOD_PKEY_ASN1_METHS: number; - export var ENGINE_METHOD_ALL: number; - export var ENGINE_METHOD_NONE: number; - export var DH_CHECK_P_NOT_SAFE_PRIME: number; - export var DH_CHECK_P_NOT_PRIME: number; - export var DH_UNABLE_TO_CHECK_GENERATOR: number; - export var DH_NOT_SUITABLE_GENERATOR: number; - export var NPN_ENABLED: number; - export var RSA_PKCS1_PADDING: number; - export var RSA_SSLV23_PADDING: number; - export var RSA_NO_PADDING: number; - export var RSA_PKCS1_OAEP_PADDING: number; - export var RSA_X931_PADDING: number; - export var RSA_PKCS1_PSS_PADDING: number; - export var POINT_CONVERSION_COMPRESSED: number; - export var POINT_CONVERSION_UNCOMPRESSED: number; - export var POINT_CONVERSION_HYBRID: number; - export var O_RDONLY: number; - export var O_WRONLY: number; - export var O_RDWR: number; - export var S_IFMT: number; - export var S_IFREG: number; - export var S_IFDIR: number; - export var S_IFCHR: number; - export var S_IFBLK: number; - export var S_IFIFO: number; - export var S_IFSOCK: number; - export var S_IRWXU: number; - export var S_IRUSR: number; - export var S_IWUSR: number; - export var S_IXUSR: number; - export var S_IRWXG: number; - export var S_IRGRP: number; - export var S_IWGRP: number; - export var S_IXGRP: number; - export var S_IRWXO: number; - export var S_IROTH: number; - export var S_IWOTH: number; - export var S_IXOTH: number; - export var S_IFLNK: number; - export var O_CREAT: number; - export var O_EXCL: number; - export var O_NOCTTY: number; - export var O_DIRECTORY: number; - export var O_NOATIME: number; - export var O_NOFOLLOW: number; - export var O_SYNC: number; - export var O_SYMLINK: number; - export var O_DIRECT: number; - export var O_NONBLOCK: number; - export var O_TRUNC: number; - export var O_APPEND: number; - export var F_OK: number; - export var R_OK: number; - export var W_OK: number; - export var X_OK: number; - export var UV_UDP_REUSEADDR: number; - export var SIGQUIT: number; - export var SIGTRAP: number; - export var SIGIOT: number; - export var SIGBUS: number; - export var SIGUSR1: number; - export var SIGUSR2: number; - export var SIGPIPE: number; - export var SIGALRM: number; - export var SIGCHLD: number; - export var SIGSTKFLT: number; - export var SIGCONT: number; - export var SIGSTOP: number; - export var SIGTSTP: number; - export var SIGTTIN: number; - export var SIGTTOU: number; - export var SIGURG: number; - export var SIGXCPU: number; - export var SIGXFSZ: number; - export var SIGVTALRM: number; - export var SIGPROF: number; - export var SIGIO: number; - export var SIGPOLL: number; - export var SIGPWR: number; - export var SIGSYS: number; - export var SIGUNUSED: number; - export var defaultCoreCipherList: string; - export var defaultCipherList: string; - export var ENGINE_METHOD_RSA: number; - export var ALPN_ENABLED: number; + export var E2BIG: number; + export var EACCES: number; + export var EADDRINUSE: number; + export var EADDRNOTAVAIL: number; + export var EAFNOSUPPORT: number; + export var EAGAIN: number; + export var EALREADY: number; + export var EBADF: number; + export var EBADMSG: number; + export var EBUSY: number; + export var ECANCELED: number; + export var ECHILD: number; + export var ECONNABORTED: number; + export var ECONNREFUSED: number; + export var ECONNRESET: number; + export var EDEADLK: number; + export var EDESTADDRREQ: number; + export var EDOM: number; + export var EEXIST: number; + export var EFAULT: number; + export var EFBIG: number; + export var EHOSTUNREACH: number; + export var EIDRM: number; + export var EILSEQ: number; + export var EINPROGRESS: number; + export var EINTR: number; + export var EINVAL: number; + export var EIO: number; + export var EISCONN: number; + export var EISDIR: number; + export var ELOOP: number; + export var EMFILE: number; + export var EMLINK: number; + export var EMSGSIZE: number; + export var ENAMETOOLONG: number; + export var ENETDOWN: number; + export var ENETRESET: number; + export var ENETUNREACH: number; + export var ENFILE: number; + export var ENOBUFS: number; + export var ENODATA: number; + export var ENODEV: number; + export var ENOENT: number; + export var ENOEXEC: number; + export var ENOLCK: number; + export var ENOLINK: number; + export var ENOMEM: number; + export var ENOMSG: number; + export var ENOPROTOOPT: number; + export var ENOSPC: number; + export var ENOSR: number; + export var ENOSTR: number; + export var ENOSYS: number; + export var ENOTCONN: number; + export var ENOTDIR: number; + export var ENOTEMPTY: number; + export var ENOTSOCK: number; + export var ENOTSUP: number; + export var ENOTTY: number; + export var ENXIO: number; + export var EOPNOTSUPP: number; + export var EOVERFLOW: number; + export var EPERM: number; + export var EPIPE: number; + export var EPROTO: number; + export var EPROTONOSUPPORT: number; + export var EPROTOTYPE: number; + export var ERANGE: number; + export var EROFS: number; + export var ESPIPE: number; + export var ESRCH: number; + export var ETIME: number; + export var ETIMEDOUT: number; + export var ETXTBSY: number; + export var EWOULDBLOCK: number; + export var EXDEV: number; + export var WSAEINTR: number; + export var WSAEBADF: number; + export var WSAEACCES: number; + export var WSAEFAULT: number; + export var WSAEINVAL: number; + export var WSAEMFILE: number; + export var WSAEWOULDBLOCK: number; + export var WSAEINPROGRESS: number; + export var WSAEALREADY: number; + export var WSAENOTSOCK: number; + export var WSAEDESTADDRREQ: number; + export var WSAEMSGSIZE: number; + export var WSAEPROTOTYPE: number; + export var WSAENOPROTOOPT: number; + export var WSAEPROTONOSUPPORT: number; + export var WSAESOCKTNOSUPPORT: number; + export var WSAEOPNOTSUPP: number; + export var WSAEPFNOSUPPORT: number; + export var WSAEAFNOSUPPORT: number; + export var WSAEADDRINUSE: number; + export var WSAEADDRNOTAVAIL: number; + export var WSAENETDOWN: number; + export var WSAENETUNREACH: number; + export var WSAENETRESET: number; + export var WSAECONNABORTED: number; + export var WSAECONNRESET: number; + export var WSAENOBUFS: number; + export var WSAEISCONN: number; + export var WSAENOTCONN: number; + export var WSAESHUTDOWN: number; + export var WSAETOOMANYREFS: number; + export var WSAETIMEDOUT: number; + export var WSAECONNREFUSED: number; + export var WSAELOOP: number; + export var WSAENAMETOOLONG: number; + export var WSAEHOSTDOWN: number; + export var WSAEHOSTUNREACH: number; + export var WSAENOTEMPTY: number; + export var WSAEPROCLIM: number; + export var WSAEUSERS: number; + export var WSAEDQUOT: number; + export var WSAESTALE: number; + export var WSAEREMOTE: number; + export var WSASYSNOTREADY: number; + export var WSAVERNOTSUPPORTED: number; + export var WSANOTINITIALISED: number; + export var WSAEDISCON: number; + export var WSAENOMORE: number; + export var WSAECANCELLED: number; + export var WSAEINVALIDPROCTABLE: number; + export var WSAEINVALIDPROVIDER: number; + export var WSAEPROVIDERFAILEDINIT: number; + export var WSASYSCALLFAILURE: number; + export var WSASERVICE_NOT_FOUND: number; + export var WSATYPE_NOT_FOUND: number; + export var WSA_E_NO_MORE: number; + export var WSA_E_CANCELLED: number; + export var WSAEREFUSED: number; + export var SIGHUP: number; + export var SIGINT: number; + export var SIGILL: number; + export var SIGABRT: number; + export var SIGFPE: number; + export var SIGKILL: number; + export var SIGSEGV: number; + export var SIGTERM: number; + export var SIGBREAK: number; + export var SIGWINCH: number; + export var SSL_OP_ALL: number; + export var SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; + export var SSL_OP_CIPHER_SERVER_PREFERENCE: number; + export var SSL_OP_CISCO_ANYCONNECT: number; + export var SSL_OP_COOKIE_EXCHANGE: number; + export var SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; + export var SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; + export var SSL_OP_EPHEMERAL_RSA: number; + export var SSL_OP_LEGACY_SERVER_CONNECT: number; + export var SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number; + export var SSL_OP_MICROSOFT_SESS_ID_BUG: number; + export var SSL_OP_MSIE_SSLV2_RSA_PADDING: number; + export var SSL_OP_NETSCAPE_CA_DN_BUG: number; + export var SSL_OP_NETSCAPE_CHALLENGE_BUG: number; + export var SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number; + export var SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number; + export var SSL_OP_NO_COMPRESSION: number; + export var SSL_OP_NO_QUERY_MTU: number; + export var SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; + export var SSL_OP_NO_SSLv2: number; + export var SSL_OP_NO_SSLv3: number; + export var SSL_OP_NO_TICKET: number; + export var SSL_OP_NO_TLSv1: number; + export var SSL_OP_NO_TLSv1_1: number; + export var SSL_OP_NO_TLSv1_2: number; + export var SSL_OP_PKCS1_CHECK_1: number; + export var SSL_OP_PKCS1_CHECK_2: number; + export var SSL_OP_SINGLE_DH_USE: number; + export var SSL_OP_SINGLE_ECDH_USE: number; + export var SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number; + export var SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number; + export var SSL_OP_TLS_BLOCK_PADDING_BUG: number; + export var SSL_OP_TLS_D5_BUG: number; + export var SSL_OP_TLS_ROLLBACK_BUG: number; + export var ENGINE_METHOD_DSA: number; + export var ENGINE_METHOD_DH: number; + export var ENGINE_METHOD_RAND: number; + export var ENGINE_METHOD_ECDH: number; + export var ENGINE_METHOD_ECDSA: number; + export var ENGINE_METHOD_CIPHERS: number; + export var ENGINE_METHOD_DIGESTS: number; + export var ENGINE_METHOD_STORE: number; + export var ENGINE_METHOD_PKEY_METHS: number; + export var ENGINE_METHOD_PKEY_ASN1_METHS: number; + export var ENGINE_METHOD_ALL: number; + export var ENGINE_METHOD_NONE: number; + export var DH_CHECK_P_NOT_SAFE_PRIME: number; + export var DH_CHECK_P_NOT_PRIME: number; + export var DH_UNABLE_TO_CHECK_GENERATOR: number; + export var DH_NOT_SUITABLE_GENERATOR: number; + export var NPN_ENABLED: number; + export var RSA_PKCS1_PADDING: number; + export var RSA_SSLV23_PADDING: number; + export var RSA_NO_PADDING: number; + export var RSA_PKCS1_OAEP_PADDING: number; + export var RSA_X931_PADDING: number; + export var RSA_PKCS1_PSS_PADDING: number; + export var POINT_CONVERSION_COMPRESSED: number; + export var POINT_CONVERSION_UNCOMPRESSED: number; + export var POINT_CONVERSION_HYBRID: number; + export var O_RDONLY: number; + export var O_WRONLY: number; + export var O_RDWR: number; + export var S_IFMT: number; + export var S_IFREG: number; + export var S_IFDIR: number; + export var S_IFCHR: number; + export var S_IFBLK: number; + export var S_IFIFO: number; + export var S_IFSOCK: number; + export var S_IRWXU: number; + export var S_IRUSR: number; + export var S_IWUSR: number; + export var S_IXUSR: number; + export var S_IRWXG: number; + export var S_IRGRP: number; + export var S_IWGRP: number; + export var S_IXGRP: number; + export var S_IRWXO: number; + export var S_IROTH: number; + export var S_IWOTH: number; + export var S_IXOTH: number; + export var S_IFLNK: number; + export var O_CREAT: number; + export var O_EXCL: number; + export var O_NOCTTY: number; + export var O_DIRECTORY: number; + export var O_NOATIME: number; + export var O_NOFOLLOW: number; + export var O_SYNC: number; + export var O_SYMLINK: number; + export var O_DIRECT: number; + export var O_NONBLOCK: number; + export var O_TRUNC: number; + export var O_APPEND: number; + export var F_OK: number; + export var R_OK: number; + export var W_OK: number; + export var X_OK: number; + export var UV_UDP_REUSEADDR: number; + export var SIGQUIT: number; + export var SIGTRAP: number; + export var SIGIOT: number; + export var SIGBUS: number; + export var SIGUSR1: number; + export var SIGUSR2: number; + export var SIGPIPE: number; + export var SIGALRM: number; + export var SIGCHLD: number; + export var SIGSTKFLT: number; + export var SIGCONT: number; + export var SIGSTOP: number; + export var SIGTSTP: number; + export var SIGTTIN: number; + export var SIGTTOU: number; + export var SIGURG: number; + export var SIGXCPU: number; + export var SIGXFSZ: number; + export var SIGVTALRM: number; + export var SIGPROF: number; + export var SIGIO: number; + export var SIGPOLL: number; + export var SIGPWR: number; + export var SIGSYS: number; + export var SIGUNUSED: number; + export var defaultCoreCipherList: string; + export var defaultCipherList: string; + export var ENGINE_METHOD_RSA: number; + export var ALPN_ENABLED: number; } declare module "process" { - export = process; + export = process; } declare module "v8" { - interface HeapSpaceInfo { - space_name: string; - space_size: number; - space_used_size: number; - space_available_size: number; - physical_space_size: number; - } + interface HeapSpaceInfo { + space_name: string; + space_size: number; + space_used_size: number; + space_available_size: number; + physical_space_size: number; + } - //** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ - type DoesZapCodeSpaceFlag = 0 | 1; + //** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ + type DoesZapCodeSpaceFlag = 0 | 1; - interface HeapInfo { - total_heap_size: number; - total_heap_size_executable: number; - total_physical_size: number; - total_available_size: number; - used_heap_size: number; - heap_size_limit: number; - malloced_memory: number; - peak_malloced_memory: number; - does_zap_garbage: DoesZapCodeSpaceFlag; - } + interface HeapInfo { + total_heap_size: number; + total_heap_size_executable: number; + total_physical_size: number; + total_available_size: number; + used_heap_size: number; + heap_size_limit: number; + malloced_memory: number; + peak_malloced_memory: number; + does_zap_garbage: DoesZapCodeSpaceFlag; + } - export function getHeapStatistics(): HeapInfo; - export function getHeapSpaceStatistics(): HeapSpaceInfo[]; - export function setFlagsFromString(flags: string): void; + export function getHeapStatistics(): HeapInfo; + export function getHeapSpaceStatistics(): HeapSpaceInfo[]; + export function setFlagsFromString(flags: string): void; } declare module "timers" { - export function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; - export function clearTimeout(timeoutId: NodeJS.Timer): void; - export function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; - export function clearInterval(intervalId: NodeJS.Timer): void; - export function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; - export function clearImmediate(immediateId: any): void; + export function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; + export function clearTimeout(timeoutId: NodeJS.Timer): void; + export function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; + export function clearInterval(intervalId: NodeJS.Timer): void; + export function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; + export function clearImmediate(immediateId: any): void; } declare module "console" { - export = console; + export = console; } /** @@ -4254,124 +4254,124 @@ declare module "console" { * Source code is at https://github.com/nodejs/node/blob/master/lib/_debugger.js */ declare module "_debugger" { - export interface Packet { - raw: string; - headers: string[]; - body: Message; - } + export interface Packet { + raw: string; + headers: string[]; + body: Message; + } - export interface Message { - seq: number; - type: string; - } + export interface Message { + seq: number; + type: string; + } - export interface RequestInfo { - command: string; - arguments: any; - } + export interface RequestInfo { + command: string; + arguments: any; + } - export interface Request extends Message, RequestInfo { - } + export interface Request extends Message, RequestInfo { + } - export interface Event extends Message { - event: string; - body?: any; - } + export interface Event extends Message { + event: string; + body?: any; + } - export interface Response extends Message { - request_seq: number; - success: boolean; - /** Contains error message if success === false. */ - message?: string; - /** Contains message body if success === true. */ - body?: any; - } + export interface Response extends Message { + request_seq: number; + success: boolean; + /** Contains error message if success === false. */ + message?: string; + /** Contains message body if success === true. */ + body?: any; + } - export interface BreakpointMessageBody { - type: string; - target: number; - line: number; - } + export interface BreakpointMessageBody { + type: string; + target: number; + line: number; + } - export class Protocol { - res: Packet; - state: string; - execute(data: string): void; - serialize(rq: Request): string; - onResponse: (pkt: Packet) => void; - } + export class Protocol { + res: Packet; + state: string; + execute(data: string): void; + serialize(rq: Request): string; + onResponse: (pkt: Packet) => void; + } - export var NO_FRAME: number; - export var port: number; + export var NO_FRAME: number; + export var port: number; - export interface ScriptDesc { - name: string; - id: number; - isNative?: boolean; - handle?: number; - type: string; - lineOffset?: number; - columnOffset?: number; - lineCount?: number; - } + export interface ScriptDesc { + name: string; + id: number; + isNative?: boolean; + handle?: number; + type: string; + lineOffset?: number; + columnOffset?: number; + lineCount?: number; + } - export interface Breakpoint { - id: number; - scriptId: number; - script: ScriptDesc; - line: number; - condition?: string; - scriptReq?: string; - } + export interface Breakpoint { + id: number; + scriptId: number; + script: ScriptDesc; + line: number; + condition?: string; + scriptReq?: string; + } - export interface RequestHandler { - (err: boolean, body: Message, res: Packet): void; - request_seq?: number; - } + export interface RequestHandler { + (err: boolean, body: Message, res: Packet): void; + request_seq?: number; + } - export interface ResponseBodyHandler { - (err: boolean, body?: any): void; - request_seq?: number; - } + export interface ResponseBodyHandler { + (err: boolean, body?: any): void; + request_seq?: number; + } - export interface ExceptionInfo { - text: string; - } + export interface ExceptionInfo { + text: string; + } - export interface BreakResponse { - script?: ScriptDesc; - exception?: ExceptionInfo; - sourceLine: number; - sourceLineText: string; - sourceColumn: number; - } + export interface BreakResponse { + script?: ScriptDesc; + exception?: ExceptionInfo; + sourceLine: number; + sourceLineText: string; + sourceColumn: number; + } - export function SourceInfo(body: BreakResponse): string; + export function SourceInfo(body: BreakResponse): string; - export interface ClientInstance extends NodeJS.EventEmitter { - protocol: Protocol; - scripts: ScriptDesc[]; - handles: ScriptDesc[]; - breakpoints: Breakpoint[]; - currentSourceLine: number; - currentSourceColumn: number; - currentSourceLineText: string; - currentFrame: number; - currentScript: string; + export interface ClientInstance extends NodeJS.EventEmitter { + protocol: Protocol; + scripts: ScriptDesc[]; + handles: ScriptDesc[]; + breakpoints: Breakpoint[]; + currentSourceLine: number; + currentSourceColumn: number; + currentSourceLineText: string; + currentFrame: number; + currentScript: string; - connect(port: number, host: string): void; - req(req: any, cb: RequestHandler): void; - reqFrameEval(code: string, frame: number, cb: RequestHandler): void; - mirrorObject(obj: any, depth: number, cb: ResponseBodyHandler): void; - setBreakpoint(rq: BreakpointMessageBody, cb: RequestHandler): void; - clearBreakpoint(rq: Request, cb: RequestHandler): void; - listbreakpoints(cb: RequestHandler): void; - reqSource(from: number, to: number, cb: RequestHandler): void; - reqScripts(cb: any): void; - reqContinue(cb: RequestHandler): void; - } + connect(port: number, host: string): void; + req(req: any, cb: RequestHandler): void; + reqFrameEval(code: string, frame: number, cb: RequestHandler): void; + mirrorObject(obj: any, depth: number, cb: ResponseBodyHandler): void; + setBreakpoint(rq: BreakpointMessageBody, cb: RequestHandler): void; + clearBreakpoint(rq: Request, cb: RequestHandler): void; + listbreakpoints(cb: RequestHandler): void; + reqSource(from: number, to: number, cb: RequestHandler): void; + reqScripts(cb: any): void; + reqContinue(cb: RequestHandler): void; + } - export var Client: { - new(): ClientInstance - } + export var Client: { + new(): ClientInstance + } } diff --git a/src/typings/vscode-xterm.d.ts b/src/typings/vscode-xterm.d.ts index 09252b3e5cb..48937b53df2 100644 --- a/src/typings/vscode-xterm.d.ts +++ b/src/typings/vscode-xterm.d.ts @@ -214,23 +214,23 @@ declare module 'vscode-xterm' { } export interface IEventEmitter { - on(type: string, listener: (...args: any[]) => void): void; - off(type: string, listener: (...args: any[]) => void): void; - emit(type: string, data?: any): void; - addDisposableListener(type: string, handler: (...args: any[]) => void): IDisposable; + on(type: string, listener: (...args: any[]) => void): void; + off(type: string, listener: (...args: any[]) => void): void; + emit(type: string, data?: any): void; + addDisposableListener(type: string, handler: (...args: any[]) => void): IDisposable; } /** * An object that can be disposed via a dispose function. */ export interface IDisposable { - dispose(): void; + dispose(): void; } export interface ILocalizableStrings { - blankLine: string; - promptLabel: string; - tooMuchOutput: string; + blankLine: string; + promptLabel: string; + tooMuchOutput: string; } /** @@ -308,13 +308,13 @@ declare module 'vscode-xterm' { * @param type The type of the event. * @param listener The listener. */ - on(type: 'refresh', listener: (data?: {start: number, end: number}) => void): void; + on(type: 'refresh', listener: (data?: { start: number, end: number }) => void): void; /** * Registers an event listener. * @param type The type of the event. * @param listener The listener. */ - on(type: 'resize', listener: (data?: {cols: number, rows: number}) => void): void; + on(type: 'resize', listener: (data?: { cols: number, rows: number }) => void): void; /** * Registers an event listener. * @param type The type of the event. diff --git a/src/vs/base/common/marked/marked.d.ts b/src/vs/base/common/marked/marked.d.ts index ee4c622d085..6d09ea02631 100644 --- a/src/vs/base/common/marked/marked.d.ts +++ b/src/vs/base/common/marked/marked.d.ts @@ -73,7 +73,7 @@ export interface MarkedStatic { export interface Renderer { prototype: MarkedRenderer; - new (): MarkedRenderer; + new(): MarkedRenderer; } export interface MarkedRenderer { diff --git a/src/vs/base/parts/ipc/test/node/ipc.perf.ts b/src/vs/base/parts/ipc/test/node/ipc.perf.ts index c02ea404dcb..2e1fcbcbd83 100644 --- a/src/vs/base/parts/ipc/test/node/ipc.perf.ts +++ b/src/vs/base/parts/ipc/test/node/ipc.perf.ts @@ -106,9 +106,9 @@ suite('IPC performance', () => { assert.strictEqual(hits, batches); assert.strictEqual(count, batches * size); }, err => assert.fail(err), - batch => { - hits++; - count += batch.length; - }); + batch => { + hits++; + count += batch.length; + }); } }); \ No newline at end of file diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts index 8e94210a280..da6f906ce46 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts @@ -62,7 +62,7 @@ class ActiveWindowManager implements IDisposable { private disposables: IDisposable[] = []; private _activeWindowId: number; - constructor( @IWindowsService windowsService: IWindowsService) { + constructor(@IWindowsService windowsService: IWindowsService) { windowsService.onWindowOpen(this.setActiveWindow, this, this.disposables); windowsService.onWindowFocus(this.setActiveWindow, this, this.disposables); } diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 942f0024cd7..92f05cb628f 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -144,15 +144,15 @@ class Main { return this.extensionManagementService.installFromGallery(extension) .then( - () => console.log(localize('successInstall', "Extension '{0}' v{1} was successfully installed!", id, extension.version)), - error => { - if (isPromiseCanceledError(error)) { - console.log(localize('cancelVsixInstall', "Cancelled installing Extension '{0}'.", id)); - return null; - } else { - return TPromise.wrapError(error); - } - }); + () => console.log(localize('successInstall', "Extension '{0}' v{1} was successfully installed!", id, extension.version)), + error => { + if (isPromiseCanceledError(error)) { + console.log(localize('cancelVsixInstall', "Cancelled installing Extension '{0}'.", id)); + return null; + } else { + return TPromise.wrapError(error); + } + }); }); }); }); diff --git a/src/vs/editor/browser/services/codeEditorServiceImpl.ts b/src/vs/editor/browser/services/codeEditorServiceImpl.ts index 218be5ac673..6f2bde8d93c 100644 --- a/src/vs/editor/browser/services/codeEditorServiceImpl.ts +++ b/src/vs/editor/browser/services/codeEditorServiceImpl.ts @@ -19,7 +19,7 @@ export class CodeEditorServiceImpl extends AbstractCodeEditorService { private _decorationOptionProviders: { [key: string]: IModelDecorationOptionsProvider }; private _themeService: IThemeService; - constructor( @IThemeService themeService: IThemeService, styleSheet = dom.createStyleSheet()) { + constructor(@IThemeService themeService: IThemeService, styleSheet = dom.createStyleSheet()) { super(); this._styleSheet = styleSheet; this._decorationOptionProviders = Object.create(null); diff --git a/src/vs/editor/contrib/smartSelect/tokenSelectionSupport.ts b/src/vs/editor/contrib/smartSelect/tokenSelectionSupport.ts index 695806b36ac..b1606febf32 100644 --- a/src/vs/editor/contrib/smartSelect/tokenSelectionSupport.ts +++ b/src/vs/editor/contrib/smartSelect/tokenSelectionSupport.ts @@ -24,7 +24,7 @@ export class TokenSelectionSupport { private _modelService: IModelService; - constructor( @IModelService modelService: IModelService) { + constructor(@IModelService modelService: IModelService) { this._modelService = modelService; } diff --git a/src/vs/platform/contextkey/browser/contextKeyService.ts b/src/vs/platform/contextkey/browser/contextKeyService.ts index aa8c0054ff5..32b16db4b8c 100644 --- a/src/vs/platform/contextkey/browser/contextKeyService.ts +++ b/src/vs/platform/contextkey/browser/contextKeyService.ts @@ -271,7 +271,7 @@ export class ContextKeyService extends AbstractContextKeyService implements ICon private _toDispose: IDisposable[] = []; - constructor( @IConfigurationService configurationService: IConfigurationService) { + constructor(@IConfigurationService configurationService: IConfigurationService) { super(0); this._lastContextId = 0; this._contexts = Object.create(null); diff --git a/src/vs/platform/dialogs/common/dialogIpc.ts b/src/vs/platform/dialogs/common/dialogIpc.ts index 2f49e44bf26..7d260b4e8f8 100644 --- a/src/vs/platform/dialogs/common/dialogIpc.ts +++ b/src/vs/platform/dialogs/common/dialogIpc.ts @@ -18,7 +18,7 @@ export interface IDialogChannel extends IChannel { export class DialogChannel implements IDialogChannel { - constructor( @IDialogService private dialogService: IDialogService) { + constructor(@IDialogService private dialogService: IDialogService) { } call(command: string, args?: any[]): TPromise { diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 52d5d3f56bb..91a36de8443 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -149,25 +149,25 @@ export class ExtensionManagementService extends Disposable implements IExtension const identifier = { id: getLocalExtensionIdFromManifest(manifest) }; return this.unsetUninstalledAndRemove(identifier.id) .then( - () => this.checkOutdated(manifest) - .then(validated => { - if (validated) { - this.logService.info('Installing the extension:', identifier.id); - this._onInstallExtension.fire({ identifier, zipPath }); - return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) - .then( - metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), - error => this.installFromZipPath(identifier, zipPath, null, manifest)) - .then( - local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, - e => { - this.logService.error('Failed to install the extension:', identifier.id, e.message); - return TPromise.wrapError(e); - }); - } - return null; - }), - e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); + () => this.checkOutdated(manifest) + .then(validated => { + if (validated) { + this.logService.info('Installing the extension:', identifier.id); + this._onInstallExtension.fire({ identifier, zipPath }); + return this.getMetadata(getGalleryExtensionId(manifest.publisher, manifest.name)) + .then( + metadata => this.installFromZipPath(identifier, zipPath, metadata, manifest), + error => this.installFromZipPath(identifier, zipPath, null, manifest)) + .then( + local => { this.logService.info('Successfully installed the extension:', identifier.id); return local; }, + e => { + this.logService.error('Failed to install the extension:', identifier.id, e.message); + return TPromise.wrapError(e); + }); + } + return null; + }), + e => TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", manifest.displayName || manifest.name)))); }); } @@ -222,8 +222,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return local; }) .then( - local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, - error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } + local => { this._onDidInstallExtension.fire({ identifier, zipPath, local }); return local; }, + error => { this._onDidInstallExtension.fire({ identifier, zipPath, error }); return TPromise.wrapError(error); } ); } @@ -231,17 +231,17 @@ export class ExtensionManagementService extends Disposable implements IExtension this.onInstallExtensions([extension]); return this.collectExtensionsToInstall(extension) .then( - extensionsToInstall => { - if (extensionsToInstall.length > 1) { - this.onInstallExtensions(extensionsToInstall.slice(1)); - } - return this.downloadAndInstallExtensions(extensionsToInstall) - .then( - locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) - .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), - errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); - }, - error => this.onDidInstallExtensions([extension], [], [error])); + extensionsToInstall => { + if (extensionsToInstall.length > 1) { + this.onInstallExtensions(extensionsToInstall.slice(1)); + } + return this.downloadAndInstallExtensions(extensionsToInstall) + .then( + locals => this.onDidInstallExtensions(extensionsToInstall, locals, []) + .then(() => locals.filter(l => areSameExtensions({ id: getGalleryExtensionIdFromLocal(l), uuid: l.identifier.uuid }, extension.identifier)[0])), + errors => this.onDidInstallExtensions(extensionsToInstall, [], errors)); + }, + error => this.onDidInstallExtensions([extension], [], [error])); } reinstall(extension: ILocalExtension): TPromise { @@ -254,8 +254,8 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.uninstallExtension(extension) .then(() => this.removeUninstalledExtension(extension) .then( - () => this.installFromGallery(galleryExtension), - e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); + () => this.installFromGallery(galleryExtension), + e => TPromise.wrapError(new Error(nls.localize('removeError', "Error while removing the extension: {0}. Please Quit and Start VS Code before trying again.", toErrorMessage(e)))))); } return TPromise.wrapError(new Error(nls.localize('Not a Marketplace extension', "Only Marketplace Extensions can be reinstalled"))); }); @@ -269,10 +269,10 @@ export class ExtensionManagementService extends Disposable implements IExtension } return this.getDependenciesToInstall(compatible.properties.dependencies) .then( - dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + dependenciesToInstall => ([compatible, ...dependenciesToInstall.filter(d => d.identifier.uuid !== compatible.identifier.uuid)]), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private downloadAndInstallExtensions(extensions: IGalleryExtension[]): TPromise { @@ -294,8 +294,8 @@ export class ExtensionManagementService extends Disposable implements IExtension .then(extension => this.downloadInstallableExtension(extension)) .then(installableExtension => this.installExtension(installableExtension)) .then( - local => { this.installingExtensions.delete(extension.identifier.id); return local; }, - e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } + local => { this.installingExtensions.delete(extension.identifier.id); return local; }, + e => { this.installingExtensions.delete(extension.identifier.id); return TPromise.wrapError(e); } ); this.installingExtensions.set(extension.identifier.id, installingExtension); @@ -312,25 +312,25 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.galleryService.loadCompatibleVersion(extension) .then( - compatible => { - if (compatible) { - this.logService.trace('Started downloading extension:', extension.name); - return this.galleryService.download(extension) - .then( - zipPath => { - this.logService.info('Downloaded extension:', extension.name); - return validateLocalExtension(zipPath) - .then( - manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) - ); - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); - } else { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); - } - }, - error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); + compatible => { + if (compatible) { + this.logService.trace('Started downloading extension:', extension.name); + return this.galleryService.download(extension) + .then( + zipPath => { + this.logService.info('Downloaded extension:', extension.name); + return validateLocalExtension(zipPath) + .then( + manifest => ({ zipPath, id: getLocalExtensionIdFromManifest(manifest), metadata }), + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_VALIDATING)) + ); + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_DOWNLOADING))); + } else { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('notFoundCompatibleDependency', "Unable to install because, the depending extension '{0}' compatible with current version '{1}' of VS Code is not found.", extension.identifier.id, pkg.version), INSTALL_ERROR_INCOMPATIBLE)); + } + }, + error => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(error).message, INSTALL_ERROR_GALLERY))); } private onInstallExtensions(extensions: IGalleryExtension[]): void { @@ -379,18 +379,18 @@ export class ExtensionManagementService extends Disposable implements IExtension private installExtension(installableExtension: InstallableExtension): TPromise { return this.unsetUninstalledAndGetLocal(installableExtension.id) .then( - local => { - if (local) { - return local; - } - return this.extractAndInstall(installableExtension); - }, - e => { - if (isMacintosh) { - return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - } - return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); - }); + local => { + if (local) { + return local; + } + return this.extractAndInstall(installableExtension); + }, + e => { + if (isMacintosh) { + return TPromise.wrapError(new ExtensionManagementError(nls.localize('quitCode', "Unable to install the extension. Please Quit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + } + return TPromise.wrapError(new ExtensionManagementError(nls.localize('exitCode', "Unable to install the extension. Please Exit and Start VS Code before reinstalling."), INSTALL_ERROR_UNSET_UNINSTALLED)); + }); } private unsetUninstalledAndGetLocal(id: string): TPromise { @@ -428,23 +428,23 @@ export class ExtensionManagementService extends Disposable implements IExtension this.logService.trace(`Started extracting the extension from ${zipPath} to ${extractPath}`); return pfs.rimraf(extractPath) .then( - () => extract(zipPath, extractPath, options) - .then( - () => this.logService.info(`Extracted extension to ${extractPath}:`, id), - e => always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), - e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); + () => extract(zipPath, extractPath, options) + .then( + () => this.logService.info(`Extracted extension to ${extractPath}:`, id), + e => always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(new ExtensionManagementError(e.message, INSTALL_ERROR_EXTRACTING)))), + e => TPromise.wrapError(new ExtensionManagementError(this.joinErrors(e).message, INSTALL_ERROR_DELETING))); } private completeInstall(id: string, extractPath: string): TPromise { return this.renameWithRetry(id, extractPath) .then( - () => this.logService.info('Installation compelted.', id), - e => { - this.logService.info('Deleting the extracted extension', id); - return always(pfs.rimraf(extractPath), () => null) - .then(() => TPromise.wrapError(e)); - }); + () => this.logService.info('Installation compelted.', id), + e => { + this.logService.info('Deleting the extracted extension', id); + return always(pfs.rimraf(extractPath), () => null) + .then(() => TPromise.wrapError(e)); + }); } private renameWithRetry(id: string, extractPath: string): TPromise { @@ -540,10 +540,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.hasDependencies(extension, installed) ? this.promptForDependenciesAndUninstall(extension, installed, force) : this.promptAndUninstall(extension, installed, force)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private hasDependencies(extension: ILocalExtension, installed: ILocalExtension[]): boolean { @@ -660,10 +660,10 @@ export class ExtensionManagementService extends Disposable implements IExtension return this.preUninstallExtension(extension) .then(() => this.uninstallExtension(extension)) .then(() => this.postUninstallExtension(extension), - error => { - this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); - return TPromise.wrapError(error); - }); + error => { + this.postUninstallExtension(extension, INSTALL_ERROR_LOCAL); + return TPromise.wrapError(error); + }); } private preUninstallExtension(extension: ILocalExtension): TPromise { diff --git a/src/vs/platform/instantiation/test/common/instantiationService.test.ts b/src/vs/platform/instantiation/test/common/instantiationService.test.ts index 21234877c10..a3230c93f55 100644 --- a/src/vs/platform/instantiation/test/common/instantiationService.test.ts +++ b/src/vs/platform/instantiation/test/common/instantiationService.test.ts @@ -56,7 +56,7 @@ interface IDependentService { class DependentService implements IDependentService { _serviceBrand: any; - constructor( @IService1 service: IService1) { + constructor(@IService1 service: IService1) { assert.equal(service.c, 1); } @@ -65,7 +65,7 @@ class DependentService implements IDependentService { class Service1Consumer { - constructor( @IService1 service1: IService1) { + constructor(@IService1 service1: IService1) { assert.ok(service1); assert.equal(service1.c, 1); } @@ -73,7 +73,7 @@ class Service1Consumer { class Target2Dep { - constructor( @IService1 service1: IService1, @IService2 service2) { + constructor(@IService1 service1: IService1, @IService2 service2) { assert.ok(service1 instanceof Service1); assert.ok(service2 instanceof Service2); } @@ -88,12 +88,12 @@ class TargetWithStaticParam { } class TargetNotOptional { - constructor( @IService1 service1: IService1, @IService2 service2: IService2) { + constructor(@IService1 service1: IService1, @IService2 service2: IService2) { } } class TargetOptional { - constructor( @IService1 service1: IService1, @optional(IService2) service2: IService2) { + constructor(@IService1 service1: IService1, @optional(IService2) service2: IService2) { assert.ok(service1); assert.equal(service1.c, 1); assert.ok(service2 === void 0); @@ -101,14 +101,14 @@ class TargetOptional { } class DependentServiceTarget { - constructor( @IDependentService d) { + constructor(@IDependentService d) { assert.ok(d); assert.equal(d.name, 'farboo'); } } class DependentServiceTarget2 { - constructor( @IDependentService d: IDependentService, @IService1 s: IService1) { + constructor(@IDependentService d: IDependentService, @IService1 s: IService1) { assert.ok(d); assert.equal(d.name, 'farboo'); assert.ok(s); @@ -121,7 +121,7 @@ class ServiceLoop1 implements IService1 { _serviceBrand: any; c = 1; - constructor( @IService2 s: IService2) { + constructor(@IService2 s: IService2) { } } @@ -130,7 +130,7 @@ class ServiceLoop2 implements IService2 { _serviceBrand: any; d = true; - constructor( @IService1 s: IService1) { + constructor(@IService1 s: IService1) { } } diff --git a/src/vs/platform/list/browser/listService.ts b/src/vs/platform/list/browser/listService.ts index c3982e98716..955b1b34b56 100644 --- a/src/vs/platform/list/browser/listService.ts +++ b/src/vs/platform/list/browser/listService.ts @@ -55,7 +55,7 @@ export class ListService implements IListService { return this._lastFocusedWidget; } - constructor( @IContextKeyService contextKeyService: IContextKeyService) { } + constructor(@IContextKeyService contextKeyService: IContextKeyService) { } register(widget: ListWidget, extraContextKeys?: (IContextKey)[]): IDisposable { if (this.lists.some(l => l.widget === widget)) { diff --git a/src/vs/platform/state/node/stateService.ts b/src/vs/platform/state/node/stateService.ts index 6d49892b033..12e1682db58 100644 --- a/src/vs/platform/state/node/stateService.ts +++ b/src/vs/platform/state/node/stateService.ts @@ -92,7 +92,7 @@ export class StateService implements IStateService { private fileStorage: FileStorage; - constructor( @IEnvironmentService environmentService: IEnvironmentService, @ILogService logService: ILogService) { + constructor(@IEnvironmentService environmentService: IEnvironmentService, @ILogService logService: ILogService) { this.fileStorage = new FileStorage(path.join(environmentService.userDataPath, 'storage.json'), error => logService.error(error)); } diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts index e57a87a3d81..f23667c9b62 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -220,7 +220,7 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(ChangeEncodingAction, export class QuickOpenActionContributor extends ActionBarContributor { private openToSideActionInstance: OpenToSideAction; - constructor( @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@IInstantiationService private instantiationService: IInstantiationService) { super(); } diff --git a/src/vs/workbench/browser/parts/editor/rangeDecorations.ts b/src/vs/workbench/browser/parts/editor/rangeDecorations.ts index b59a0abd867..482aa2db83a 100644 --- a/src/vs/workbench/browser/parts/editor/rangeDecorations.ts +++ b/src/vs/workbench/browser/parts/editor/rangeDecorations.ts @@ -28,7 +28,7 @@ export class RangeHighlightDecorations implements IDisposable { private _onHighlightRemoved: Emitter = new Emitter(); public readonly onHighlghtRemoved: Event = this._onHighlightRemoved.event; - constructor( @IWorkbenchEditorService private editorService: IWorkbenchEditorService) { + constructor(@IWorkbenchEditorService private editorService: IWorkbenchEditorService) { } public removeHighlightRange() { diff --git a/src/vs/workbench/browser/parts/notifications/notificationsList.ts b/src/vs/workbench/browser/parts/notifications/notificationsList.ts index 045b56a5f51..3f4cb3ad968 100644 --- a/src/vs/workbench/browser/parts/notifications/notificationsList.ts +++ b/src/vs/workbench/browser/parts/notifications/notificationsList.ts @@ -74,7 +74,7 @@ export class NotificationsList extends Themable { const renderer = this.instantiationService.createInstance(NotificationRenderer, actionRunner); // List - this.list = this.instantiationService.createInstance( + this.list = >this.instantiationService.createInstance( WorkbenchList, this.listContainer, new NotificationsListDelegate(this.listContainer), diff --git a/src/vs/workbench/parts/debug/electron-browser/callStackView.ts b/src/vs/workbench/parts/debug/electron-browser/callStackView.ts index 8602ce48066..8e3b75e7f39 100644 --- a/src/vs/workbench/parts/debug/electron-browser/callStackView.ts +++ b/src/vs/workbench/parts/debug/electron-browser/callStackView.ts @@ -523,7 +523,7 @@ class CallStackRenderer implements IRenderer { class CallstackAccessibilityProvider implements IAccessibilityProvider { - constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { // noop } diff --git a/src/vs/workbench/parts/extensions/browser/dependenciesViewer.ts b/src/vs/workbench/parts/extensions/browser/dependenciesViewer.ts index 18baa41f67c..0e0c2715ee8 100644 --- a/src/vs/workbench/parts/extensions/browser/dependenciesViewer.ts +++ b/src/vs/workbench/parts/extensions/browser/dependenciesViewer.ts @@ -59,7 +59,7 @@ export class Renderer implements IRenderer { private static readonly EXTENSION_TEMPLATE_ID = 'extension-template'; private static readonly UNKNOWN_EXTENSION_TEMPLATE_ID = 'unknown-extension-template'; - constructor( @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@IInstantiationService private instantiationService: IInstantiationService) { } public getHeight(tree: ITree, element: IExtensionDependencies): number { @@ -198,7 +198,7 @@ class OpenExtensionAction extends Action { private _extensionDependencies: IExtensionDependencies; - constructor( @IExtensionsWorkbenchService private extensionsWorkdbenchService: IExtensionsWorkbenchService) { + constructor(@IExtensionsWorkbenchService private extensionsWorkdbenchService: IExtensionsWorkbenchService) { super('extensions.action.openDependency', ''); } diff --git a/src/vs/workbench/parts/extensions/browser/extensionsActions.ts b/src/vs/workbench/parts/extensions/browser/extensionsActions.ts index e93363d84e9..1e0e926346e 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionsActions.ts @@ -1541,7 +1541,7 @@ export abstract class AbstractConfigureRecommendedExtensionsAction extends Actio selection } })), - error => TPromise.wrapError(new Error(localize('OpenExtensionsFile.failed', "Unable to create 'extensions.json' file inside the '.vscode' folder ({0}).", error)))); + error => TPromise.wrapError(new Error(localize('OpenExtensionsFile.failed', "Unable to create 'extensions.json' file inside the '.vscode' folder ({0}).", error)))); } protected openWorkspaceConfigurationFile(workspaceConfigurationFile: URI): TPromise { diff --git a/src/vs/workbench/parts/extensions/browser/extensionsQuickOpen.ts b/src/vs/workbench/parts/extensions/browser/extensionsQuickOpen.ts index 13df5927501..392a25bbd72 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionsQuickOpen.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionsQuickOpen.ts @@ -42,7 +42,7 @@ export class ExtensionsHandler extends QuickOpenHandler { public static readonly ID = 'workbench.picker.extensions'; - constructor( @IViewletService private viewletService: IViewletService) { + constructor(@IViewletService private viewletService: IViewletService) { super(); } diff --git a/src/vs/workbench/parts/files/common/explorerModel.ts b/src/vs/workbench/parts/files/common/explorerModel.ts index a9813fe39f0..04ae7fc3b7a 100644 --- a/src/vs/workbench/parts/files/common/explorerModel.ts +++ b/src/vs/workbench/parts/files/common/explorerModel.ts @@ -23,7 +23,7 @@ export class Model { private _roots: FileStat[]; private _listener: IDisposable; - constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { const setRoots = () => this._roots = this.contextService.getWorkspace().folders.map(folder => { const root = new FileStat(folder.uri, undefined); root.name = folder.name; diff --git a/src/vs/workbench/parts/output/browser/outputActions.ts b/src/vs/workbench/parts/output/browser/outputActions.ts index 81c9db909cd..7092b271363 100644 --- a/src/vs/workbench/parts/output/browser/outputActions.ts +++ b/src/vs/workbench/parts/output/browser/outputActions.ts @@ -94,7 +94,7 @@ export class SwitchOutputAction extends Action { public static readonly ID = 'workbench.output.action.switchBetweenOutputs'; - constructor( @IOutputService private outputService: IOutputService) { + constructor(@IOutputService private outputService: IOutputService) { super(SwitchOutputAction.ID, nls.localize('switchToOutput.label', "Switch to Output")); this.class = 'output-action switch-to-output'; diff --git a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts index 585dd29da3e..41f228d088a 100644 --- a/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/keybindingsEditor.ts @@ -50,7 +50,7 @@ export class KeybindingsEditorInput extends EditorInput { public static readonly ID: string = 'workbench.input.keybindings'; public readonly keybindingsModel: KeybindingsEditorModel; - constructor( @IInstantiationService instantiationService: IInstantiationService) { + constructor(@IInstantiationService instantiationService: IInstantiationService) { super(); this.keybindingsModel = instantiationService.createInstance(KeybindingsEditorModel, OS); } @@ -210,10 +210,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor this.reportKeybindingAction(KEYBINDINGS_EDITOR_COMMAND_REMOVE, keybindingEntry.keybindingItem.command, keybindingEntry.keybindingItem.keybinding); return this.keybindingEditingService.removeKeybinding(keybindingEntry.keybindingItem.keybindingItem) .then(() => this.focus(), - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } return TPromise.as(null); } @@ -228,10 +228,10 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor } this.selectEntry(keybindingEntry); }, - error => { - this.onKeybindingEditingError(error); - this.selectEntry(keybindingEntry); - }); + error => { + this.onKeybindingEditingError(error); + this.selectEntry(keybindingEntry); + }); } copyKeybinding(keybinding: IKeybindingItemEntry): TPromise { diff --git a/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts b/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts index d98bc679c4b..fd4abde0cb9 100644 --- a/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts +++ b/src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts @@ -211,7 +211,7 @@ export class GotoLineHandler extends QuickOpenHandler { private rangeHighlightDecorationId: IEditorLineDecoration; private lastKnownEditorViewState: IEditorViewState; - constructor( @IWorkbenchEditorService private editorService: IWorkbenchEditorService) { + constructor(@IWorkbenchEditorService private editorService: IWorkbenchEditorService) { super(); } diff --git a/src/vs/workbench/parts/quickopen/browser/helpHandler.ts b/src/vs/workbench/parts/quickopen/browser/helpHandler.ts index 283a487dc96..767ba568416 100644 --- a/src/vs/workbench/parts/quickopen/browser/helpHandler.ts +++ b/src/vs/workbench/parts/quickopen/browser/helpHandler.ts @@ -62,7 +62,7 @@ export class HelpHandler extends QuickOpenHandler { public static readonly ID = 'workbench.picker.help'; - constructor( @IQuickOpenService private quickOpenService: IQuickOpenService) { + constructor(@IQuickOpenService private quickOpenService: IQuickOpenService) { super(); } diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index ba38ee61c97..571bbcea85a 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -1010,7 +1010,7 @@ export class RepositoryPanel extends ViewletPanel { class InstallAdditionalSCMProvidersAction extends Action { - constructor( @IViewletService private viewletService: IViewletService) { + constructor(@IViewletService private viewletService: IViewletService) { super('scm.installAdditionalSCMProviders', localize('installAdditionalSCMProviders', "Install Additional SCM Providers..."), '', true); } diff --git a/src/vs/workbench/parts/search/browser/openSymbolHandler.ts b/src/vs/workbench/parts/search/browser/openSymbolHandler.ts index 4f1a912594e..084985f0d68 100644 --- a/src/vs/workbench/parts/search/browser/openSymbolHandler.ts +++ b/src/vs/workbench/parts/search/browser/openSymbolHandler.ts @@ -137,7 +137,7 @@ export class OpenSymbolHandler extends QuickOpenHandler { private delayer: ThrottledDelayer; private options: IOpenSymbolOptions; - constructor( @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@IInstantiationService private instantiationService: IInstantiationService) { super(); this.delayer = new ThrottledDelayer(OpenSymbolHandler.SEARCH_DELAY); diff --git a/src/vs/workbench/parts/search/browser/searchResultsView.ts b/src/vs/workbench/parts/search/browser/searchResultsView.ts index 7f40ced20fd..188f2c1c147 100644 --- a/src/vs/workbench/parts/search/browser/searchResultsView.ts +++ b/src/vs/workbench/parts/search/browser/searchResultsView.ts @@ -31,7 +31,7 @@ export class SearchDataSource implements IDataSource { private includeFolderMatch: boolean; private listener: IDisposable; - constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { this.updateIncludeFolderMatch(); this.listener = this.contextService.onDidChangeWorkbenchState(() => this.updateIncludeFolderMatch()); } @@ -319,7 +319,7 @@ export class SearchRenderer extends Disposable implements IRenderer { export class SearchAccessibilityProvider implements IAccessibilityProvider { - constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { } public getAriaLabel(tree: ITree, element: FileMatchOrMatch): string { diff --git a/src/vs/workbench/parts/search/common/searchModel.ts b/src/vs/workbench/parts/search/common/searchModel.ts index 45ce2fc208e..a6d04f8387b 100644 --- a/src/vs/workbench/parts/search/common/searchModel.ts +++ b/src/vs/workbench/parts/search/common/searchModel.ts @@ -687,7 +687,7 @@ export class SearchModel extends Disposable { private currentRequest: PPromise; - constructor( @ISearchService private searchService: ISearchService, @ITelemetryService private telemetryService: ITelemetryService, @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@ISearchService private searchService: ISearchService, @ITelemetryService private telemetryService: ITelemetryService, @IInstantiationService private instantiationService: IInstantiationService) { super(); this._searchResult = this.instantiationService.createInstance(SearchResult, this); } @@ -829,7 +829,7 @@ export class SearchWorkbenchService implements ISearchWorkbenchService { _serviceBrand: any; private _searchModel: SearchModel; - constructor( @IInstantiationService private instantiationService: IInstantiationService) { + constructor(@IInstantiationService private instantiationService: IInstantiationService) { } get searchModel(): SearchModel { diff --git a/src/vs/workbench/parts/tasks/browser/quickOpen.ts b/src/vs/workbench/parts/tasks/browser/quickOpen.ts index e760a7201f8..18c84f752e2 100644 --- a/src/vs/workbench/parts/tasks/browser/quickOpen.ts +++ b/src/vs/workbench/parts/tasks/browser/quickOpen.ts @@ -200,7 +200,7 @@ export class QuickOpenActionContributor extends ActionBarContributor { private action: CustomizeTaskAction; - constructor( @ITaskService taskService: ITaskService, @IQuickOpenService quickOpenService: IQuickOpenService) { + constructor(@ITaskService taskService: ITaskService, @IQuickOpenService quickOpenService: IQuickOpenService) { super(); this.action = new CustomizeTaskAction(taskService, quickOpenService); } diff --git a/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts b/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts index 11334a526a4..c1d0db6e0ee 100644 --- a/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts +++ b/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts @@ -77,9 +77,9 @@ export class SelectColorThemeAction extends Action { return this.quickOpenService.pick(picks, { placeHolder, autoFocus: { autoFocusIndex } }) .then( - theme => delayer.trigger(() => selectTheme(theme || currentTheme, true), 0), - null, - theme => delayer.trigger(() => selectTheme(theme, false)) + theme => delayer.trigger(() => selectTheme(theme || currentTheme, true), 0), + null, + theme => delayer.trigger(() => selectTheme(theme, false)) ); }); } @@ -135,9 +135,9 @@ class SelectIconThemeAction extends Action { return this.quickOpenService.pick(picks, { placeHolder, autoFocus: { autoFocusIndex } }) .then( - theme => delayer.trigger(() => selectTheme(theme || currentTheme, true), 0), - null, - theme => delayer.trigger(() => selectTheme(theme, false)) + theme => delayer.trigger(() => selectTheme(theme || currentTheme, true), 0), + null, + theme => delayer.trigger(() => selectTheme(theme, false)) ); }); } diff --git a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution.ts b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution.ts index 34735d73d31..09d1a695acd 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution.ts +++ b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThrough.contribution.ts @@ -28,12 +28,12 @@ Registry.as(EditorExtensions.Editors) WalkThroughPart.ID, localize('walkThrough.editor.label', "Interactive Playground"), ), - [new SyncDescriptor(WalkThroughInput)]); + [new SyncDescriptor(WalkThroughInput)]); Registry.as(Extensions.WorkbenchActions) .registerWorkbenchAction( - new SyncActionDescriptor(EditorWalkThroughAction, EditorWalkThroughAction.ID, EditorWalkThroughAction.LABEL), - 'Help: Interactive Playground', localize('help', "Help")); + new SyncActionDescriptor(EditorWalkThroughAction, EditorWalkThroughAction.ID, EditorWalkThroughAction.LABEL), + 'Help: Interactive Playground', localize('help', "Help")); Registry.as(EditorInputExtensions.EditorInputFactories).registerEditorInputFactory(EditorWalkThroughInputFactory.ID, EditorWalkThroughInputFactory); diff --git a/src/vs/workbench/services/configuration/node/configurationEditingService.ts b/src/vs/workbench/services/configuration/node/configurationEditingService.ts index edcd13dd67d..b242c7188c6 100644 --- a/src/vs/workbench/services/configuration/node/configurationEditingService.ts +++ b/src/vs/workbench/services/configuration/node/configurationEditingService.ts @@ -137,12 +137,12 @@ export class ConfigurationEditingService { const operation = this.getConfigurationEditOperation(target, value, options.scopes || {}); return this.queue.queue(() => this.doWriteConfiguration(operation, options) // queue up writes to prevent race conditions .then(() => null, - error => { - if (!options.donotNotifyError) { - this.onError(error, operation, options.scopes); - } - return TPromise.wrapError(error); - })); + error => { + if (!options.donotNotifyError) { + this.onError(error, operation, options.scopes); + } + return TPromise.wrapError(error); + })); } private doWriteConfiguration(operation: IConfigurationEditOperation, options: ConfigurationEditingOptions): TPromise { diff --git a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts index ed4e5febbec..ecf7e121a7d 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts +++ b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts @@ -141,34 +141,34 @@ suite('ConfigurationEditingService', function () { test('errors cases - invalid key', () => { return testObject.writeConfiguration(ConfigurationTarget.WORKSPACE, { key: 'unknown.key', value: 'value' }) .then(() => assert.fail('Should fail with ERROR_UNKNOWN_KEY'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_UNKNOWN_KEY)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_UNKNOWN_KEY)); }); test('errors cases - invalid target', () => { return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'tasks.something', value: 'value' }) .then(() => assert.fail('Should fail with ERROR_INVALID_TARGET'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_INVALID_USER_TARGET)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_INVALID_USER_TARGET)); }); test('errors cases - no workspace', () => { return setUpServices(true) .then(() => testObject.writeConfiguration(ConfigurationTarget.WORKSPACE, { key: 'configurationEditing.service.testSetting', value: 'value' })) .then(() => assert.fail('Should fail with ERROR_NO_WORKSPACE_OPENED'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_NO_WORKSPACE_OPENED)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_NO_WORKSPACE_OPENED)); }); test('errors cases - invalid configuration', () => { fs.writeFileSync(globalSettingsFile, ',,,,,,,,,,,,,,'); return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'configurationEditing.service.testSetting', value: 'value' }) .then(() => assert.fail('Should fail with ERROR_INVALID_CONFIGURATION'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_INVALID_CONFIGURATION)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_INVALID_CONFIGURATION)); }); test('errors cases - dirty', () => { instantiationService.stub(ITextFileService, 'isDirty', true); return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'configurationEditing.service.testSetting', value: 'value' }) .then(() => assert.fail('Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.'), - (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_DIRTY)); + (error: ConfigurationEditingError) => assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_DIRTY)); }); test('dirty error is not thrown if not asked to save', () => { @@ -183,10 +183,10 @@ suite('ConfigurationEditingService', function () { instantiationService.stub(INotificationService, { prompt: target, _serviceBrand: null, notify: null, error: null, info: null, warn: null }); return testObject.writeConfiguration(ConfigurationTarget.USER, { key: 'configurationEditing.service.testSetting', value: 'value' }, { donotNotifyError: true }) .then(() => assert.fail('Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.'), - (error: ConfigurationEditingError) => { - assert.equal(false, target.calledOnce); - assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_DIRTY); - }); + (error: ConfigurationEditingError) => { + assert.equal(false, target.calledOnce); + assert.equal(error.code, ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_DIRTY); + }); }); test('write one setting - empty file', () => { diff --git a/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts b/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts index 9228229b7d6..2279103e197 100644 --- a/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts +++ b/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts @@ -109,28 +109,28 @@ suite('Keybindings Editing', () => { fs.writeFileSync(keybindingsFile, ',,,,,,,,,,,,,,'); return testObject.editKeybinding('alt+c', aResolvedKeybindingItem({ firstPart: { keyCode: KeyCode.Escape } })) .then(() => assert.fail('Should fail with parse errors'), - error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. Please open it to correct errors/warnings in the file and try again.')); + error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. Please open it to correct errors/warnings in the file and try again.')); }); test('errors cases - parse errors 2', () => { fs.writeFileSync(keybindingsFile, '[{"key": }]'); return testObject.editKeybinding('alt+c', aResolvedKeybindingItem({ firstPart: { keyCode: KeyCode.Escape } })) .then(() => assert.fail('Should fail with parse errors'), - error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. Please open it to correct errors/warnings in the file and try again.')); + error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. Please open it to correct errors/warnings in the file and try again.')); }); test('errors cases - dirty', () => { instantiationService.stub(ITextFileService, 'isDirty', true); return testObject.editKeybinding('alt+c', aResolvedKeybindingItem({ firstPart: { keyCode: KeyCode.Escape } })) .then(() => assert.fail('Should fail with dirty error'), - error => assert.equal(error.message, 'Unable to write because the keybindings configuration file is dirty. Please save it first and then try again.')); + error => assert.equal(error.message, 'Unable to write because the keybindings configuration file is dirty. Please save it first and then try again.')); }); test('errors cases - did not find an array', () => { fs.writeFileSync(keybindingsFile, '{"key": "alt+c", "command": "hello"}'); return testObject.editKeybinding('alt+c', aResolvedKeybindingItem({ firstPart: { keyCode: KeyCode.Escape } })) .then(() => assert.fail('Should fail with dirty error'), - error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. It has an object which is not of type Array. Please open the file to clean up and try again.')); + error => assert.equal(error.message, 'Unable to write to the keybindings configuration file. It has an object which is not of type Array. Please open the file to clean up and try again.')); }); test('edit a default keybinding to an empty file', () => { diff --git a/src/vs/workbench/services/scm/common/scmService.ts b/src/vs/workbench/services/scm/common/scmService.ts index e1ca99a7729..59f0bb7e668 100644 --- a/src/vs/workbench/services/scm/common/scmService.ts +++ b/src/vs/workbench/services/scm/common/scmService.ts @@ -92,7 +92,7 @@ export class SCMService implements ISCMService { private _onDidRemoveProvider = new Emitter(); get onDidRemoveRepository(): Event { return this._onDidRemoveProvider.event; } - constructor( @ILogService private logService: ILogService) { } + constructor(@ILogService private logService: ILogService) { } registerSCMProvider(provider: ISCMProvider): ISCMRepository { this.logService.trace('SCMService#registerSCMProvider'); diff --git a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts index ff4e0414531..8c892684f97 100644 --- a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts +++ b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts @@ -1082,7 +1082,7 @@ export class SaveSequentializer { class DefaultSaveErrorHandler implements ISaveErrorHandler { - constructor( @INotificationService private notificationService: INotificationService) { } + constructor(@INotificationService private notificationService: INotificationService) { } public onSaveError(error: any, model: TextFileEditorModel): void { this.notificationService.error(nls.localize('genericSaveError', "Failed to save '{0}': {1}", paths.basename(model.getResource().fsPath), toErrorMessage(error, false))); diff --git a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts index 9ce74a61c1c..5eec935b1f3 100644 --- a/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileEditorModel.test.ts @@ -19,7 +19,7 @@ import { IModelService } from 'vs/editor/common/services/modelService'; import { timeout } from 'vs/base/common/async'; class ServiceAccessor { - constructor( @ITextFileService public textFileService: TestTextFileService, @IModelService public modelService: IModelService, @IFileService public fileService: TestFileService) { + constructor(@ITextFileService public textFileService: TestTextFileService, @IModelService public modelService: IModelService, @IFileService public fileService: TestFileService) { } } diff --git a/src/vs/workbench/services/themes/electron-browser/colorThemeStore.ts b/src/vs/workbench/services/themes/electron-browser/colorThemeStore.ts index 045952b494a..c7062184e69 100644 --- a/src/vs/workbench/services/themes/electron-browser/colorThemeStore.ts +++ b/src/vs/workbench/services/themes/electron-browser/colorThemeStore.ts @@ -51,7 +51,7 @@ export class ColorThemeStore { public get onDidChange(): Event { return this.onDidChangeEmitter.event; } - constructor( @IExtensionService private extensionService: IExtensionService, defaultTheme: ColorThemeData) { + constructor(@IExtensionService private extensionService: IExtensionService, defaultTheme: ColorThemeData) { this.extensionsColorThemes = [defaultTheme]; this.onDidChangeEmitter = new Emitter(); this.initialize(); diff --git a/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.ts b/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.ts index 7f997baf20c..518e23f8272 100644 --- a/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.ts +++ b/src/vs/workbench/services/themes/electron-browser/fileIconThemeStore.ts @@ -45,7 +45,7 @@ export class FileIconThemeStore { public get onDidChange(): Event { return this.onDidChangeEmitter.event; } - constructor( @IExtensionService private extensionService: IExtensionService) { + constructor(@IExtensionService private extensionService: IExtensionService) { this.knownIconThemes = []; this.onDidChangeEmitter = new Emitter(); this.initialize(); diff --git a/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts b/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts index aef3da6d601..5948058a757 100644 --- a/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts +++ b/src/vs/workbench/services/themes/electron-browser/workbenchThemeService.ts @@ -465,7 +465,7 @@ colorThemeSchema.register(); fileIconThemeSchema.register(); class ConfigurationWriter { - constructor( @IConfigurationService private configurationService: IConfigurationService) { + constructor(@IConfigurationService private configurationService: IConfigurationService) { } public writeConfiguration(key: string, value: any, settingsTarget: ConfigurationTarget): TPromise { diff --git a/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts b/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts index eb05c9676b1..4a3e23ffe67 100644 --- a/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/baseEditor.test.ts @@ -27,7 +27,7 @@ let EditorInputRegistry: IEditorInputFactoryRegistry = Platform.Registry.as(Edit export class MyEditor extends BaseEditor { - constructor( @ITelemetryService telemetryService: ITelemetryService) { + constructor(@ITelemetryService telemetryService: ITelemetryService) { super('MyEditor', NullTelemetryService, NullThemeService); } @@ -46,7 +46,7 @@ export class MyEditor extends BaseEditor { export class MyOtherEditor extends BaseEditor { - constructor( @ITelemetryService telemetryService: ITelemetryService) { + constructor(@ITelemetryService telemetryService: ITelemetryService) { super('myOtherEditor', NullTelemetryService, NullThemeService); } diff --git a/src/vs/workbench/test/common/editor/editor.test.ts b/src/vs/workbench/test/common/editor/editor.test.ts index f1f983df23b..218ff420427 100644 --- a/src/vs/workbench/test/common/editor/editor.test.ts +++ b/src/vs/workbench/test/common/editor/editor.test.ts @@ -17,7 +17,7 @@ import { workbenchInstantiationService } from 'vs/workbench/test/workbenchTestSe import { Schemas } from 'vs/base/common/network'; class ServiceAccessor { - constructor( @IUntitledEditorService public untitledEditorService: UntitledEditorService) { + constructor(@IUntitledEditorService public untitledEditorService: UntitledEditorService) { } } diff --git a/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts b/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts index f3131cc37c7..995c2d814a8 100644 --- a/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts +++ b/src/vs/workbench/test/electron-browser/api/mainThreadSaveParticipant.test.ts @@ -20,7 +20,7 @@ import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/commo import { snapshotToString } from 'vs/platform/files/common/files'; class ServiceAccessor { - constructor( @ITextFileService public textFileService: TestTextFileService, @IModelService public modelService: IModelService) { + constructor(@ITextFileService public textFileService: TestTextFileService, @IModelService public modelService: IModelService) { } } diff --git a/yarn.lock b/yarn.lock index f0d7394da40..aed8675c090 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13,6 +13,12 @@ normalize-path "^2.0.1" through2 "^2.0.3" +"@types/commander@^2.11.0": + version "2.12.2" + resolved "https://registry.yarnpkg.com/@types/commander/-/commander-2.12.2.tgz#183041a23842d4281478fa5d23c5ca78e6fd08ae" + dependencies: + commander "*" + "@types/keytar@4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/keytar/-/keytar-4.0.1.tgz#e2cf6405dc33861424e59b67516c66d2cf7bc21b" @@ -29,6 +35,10 @@ version "4.2.22" resolved "https://registry.yarnpkg.com/@types/node/-/node-4.2.22.tgz#cf488a0f6b4a9c245d09927f4f757ca278b9c8ce" +"@types/semver@^5.4.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45" + "@types/sinon@1.16.34": version "1.16.34" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-1.16.34.tgz#a9761fff33d0f7b3fe61875b577778a2576a9a03" @@ -417,10 +427,6 @@ bl@~1.1.2: dependencies: readable-stream "~2.0.5" -bluebird@^3.0.5: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - body-parser@1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" @@ -790,6 +796,10 @@ combined-stream@~0.0.4: dependencies: delayed-stream "0.0.5" +commander@*, commander@^2.11.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" + commander@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" @@ -1255,14 +1265,15 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -editorconfig@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.3.tgz#e5219e587951d60958fd94ea9a9a008cdeff1b34" +editorconfig@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.0.tgz#b6dd4a0b6b9e76ce48e066bdc15381aebb8804fd" dependencies: - bluebird "^3.0.5" - commander "^2.9.0" - lru-cache "^3.2.0" - semver "^5.1.0" + "@types/commander" "^2.11.0" + "@types/semver" "^5.4.0" + commander "^2.11.0" + lru-cache "^4.1.1" + semver "^5.4.1" sigmund "^1.0.1" ee-first@1.1.1: @@ -1984,13 +1995,6 @@ glob-base@^0.3.0: glob-parent "^2.0.0" is-glob "^2.0.0" -glob-expand@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/glob-expand/-/glob-expand-0.2.1.tgz#1b088ac272b57158870b76816111da4618a66a0f" - dependencies: - glob "~4.5.x" - lodash "~4.13.x" - glob-parent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" @@ -2057,7 +2061,7 @@ glob@5.x, glob@^5.0.13, glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^4.3.1, glob@~4.5.x: +glob@^4.3.1: version "4.5.3" resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" dependencies: @@ -3545,10 +3549,6 @@ lodash@~2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" -lodash@~4.13.x: - version "4.13.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.13.1.tgz#83e4b10913f48496d4d16fec4a560af2ee744b68" - log-driver@1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" @@ -3572,12 +3572,6 @@ lru-cache@2: version "2.7.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" - dependencies: - pseudomap "^1.0.1" - lru-cache@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" @@ -3585,6 +3579,13 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" @@ -4623,7 +4624,7 @@ proxy-addr@~2.0.2: forwarded "~0.1.2" ipaddr.js "1.5.2" -pseudomap@^1.0.1, pseudomap@^1.0.2: +pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -5079,6 +5080,10 @@ semver@4.3.6, semver@^4.1.0, semver@^4.3.4: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" +semver@^5.4.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + send@0.16.1: version "0.16.1" resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" @@ -5675,17 +5680,16 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript-formatter@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/typescript-formatter/-/typescript-formatter-4.0.1.tgz#ed82daf856cc9a379bb16b7f1aac9affee2974cd" +typescript-formatter@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/typescript-formatter/-/typescript-formatter-7.1.0.tgz#dd1b5547de211065221f765263e15f18c84c66b8" dependencies: commandpost "^1.0.0" - editorconfig "^0.13.2" - glob-expand "^0.2.1" + editorconfig "^0.15.0" -typescript@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" +typescript@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" typescript@^2.6.2: version "2.6.2" From 05aaf618b642982b3b5dccbbdc9e6f390cd479e2 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 15:57:56 -0800 Subject: [PATCH 310/658] For let -> For const --- extensions/typescript/src/features/documentSymbolProvider.ts | 2 +- extensions/typescript/src/features/formattingProvider.ts | 2 +- extensions/typescript/src/typeScriptServiceClientHost.ts | 2 +- extensions/typescript/src/utils/projectStatus.ts | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extensions/typescript/src/features/documentSymbolProvider.ts b/extensions/typescript/src/features/documentSymbolProvider.ts index bb052549a5c..c910b5381c0 100644 --- a/extensions/typescript/src/features/documentSymbolProvider.ts +++ b/extensions/typescript/src/features/documentSymbolProvider.ts @@ -76,7 +76,7 @@ export default class TypeScriptDocumentSymbolProvider implements DocumentSymbolP bucket.push(result); } if (item.childItems && item.childItems.length > 0) { - for (let child of item.childItems) { + for (const child of item.childItems) { TypeScriptDocumentSymbolProvider.convertNavBar(resource, realIndent + 1, foldingMap, bucket, child, item.text); } } diff --git a/extensions/typescript/src/features/formattingProvider.ts b/extensions/typescript/src/features/formattingProvider.ts index 390ae6dc91b..ed5a4a0e9ae 100644 --- a/extensions/typescript/src/features/formattingProvider.ts +++ b/extensions/typescript/src/features/formattingProvider.ts @@ -89,7 +89,7 @@ export class TypeScriptFormattingProvider implements DocumentRangeFormattingEdit if (!edits) { return result; } - for (let edit of edits) { + for (const edit of edits) { let textEdit = this.codeEdit2SingleEditOperation(edit); let range = textEdit.range; // Work around for https://github.com/Microsoft/TypeScript/issues/6700. diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index f8a2b046c14..c410d30623f 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -246,7 +246,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl private createMarkerDatas(diagnostics: Proto.Diagnostic[], source: string): Diagnostic[] { const result: Diagnostic[] = []; - for (let diagnostic of diagnostics) { + for (const diagnostic of diagnostics) { const { start, end, text } = diagnostic; const range = new Range(tsLocationToVsPosition(start), tsLocationToVsPosition(end)); const converted = new Diagnostic(range, text); diff --git a/extensions/typescript/src/utils/projectStatus.ts b/extensions/typescript/src/utils/projectStatus.ts index 186c1437ced..3458a21f28a 100644 --- a/extensions/typescript/src/utils/projectStatus.ts +++ b/extensions/typescript/src/utils/projectStatus.ts @@ -205,7 +205,7 @@ function computeLargeRoots(configFileName: string, fileNames: string[]): string[ // console.log(dir, fileNames); - for (let fileName of fileNames) { + for (const fileName of fileNames) { if (fileName.indexOf(dir) === 0) { let first = fileName.substring(dir.length + 1); first = first.substring(0, first.indexOf('/')); @@ -226,7 +226,7 @@ function computeLargeRoots(configFileName: string, fileNames: string[]): string[ let result: string[] = []; let sum = 0; - for (let e of data) { + for (const e of data) { sum += e.count; result.push(e.root); if (fileNames.length - sum < fileLimit) { From 45723adb6409d94faa2cc7e52a63f4816da95319 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:05:56 -0800 Subject: [PATCH 311/658] Use memorize for channel --- extensions/typescript/src/utils/logger.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/extensions/typescript/src/utils/logger.ts b/extensions/typescript/src/utils/logger.ts index 53f09faa4f6..cc57346efbf 100644 --- a/extensions/typescript/src/utils/logger.ts +++ b/extensions/typescript/src/utils/logger.ts @@ -5,18 +5,16 @@ import { OutputChannel, window } from 'vscode'; import * as is from './is'; +import { memoize } from './memoize'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); export default class Logger { - private _output?: OutputChannel; + @memoize private get output(): OutputChannel { - if (!this._output) { - this._output = window.createOutputChannel(localize('channelName', 'TypeScript')); - } - return this._output; + return window.createOutputChannel(localize('channelName', 'TypeScript')); } private data2String(data: any): string { From ecb450caeaaabe9698a945608cd986a1078856df Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:08:12 -0800 Subject: [PATCH 312/658] Extract duplicated disposeall code --- .../src/features/bufferSyncSupport.ts | 8 ++----- extensions/typescript/src/languageProvider.ts | 23 ++++--------------- .../src/typeScriptServiceClientHost.ts | 9 ++------ .../typescript/src/typescriptServiceClient.ts | 8 ++----- extensions/typescript/src/utils/dipose.ts | 15 ++++++++++++ 5 files changed, 25 insertions(+), 38 deletions(-) create mode 100644 extensions/typescript/src/utils/dipose.ts diff --git a/extensions/typescript/src/features/bufferSyncSupport.ts b/extensions/typescript/src/features/bufferSyncSupport.ts index 186cd02ba6b..aa190e66746 100644 --- a/extensions/typescript/src/features/bufferSyncSupport.ts +++ b/extensions/typescript/src/features/bufferSyncSupport.ts @@ -10,6 +10,7 @@ import * as Proto from '../protocol'; import { ITypeScriptServiceClient } from '../typescriptService'; import { Delayer } from '../utils/async'; import * as languageModeIds from '../utils/languageModeIds'; +import { disposeAll } from '../utils/dipose'; interface IDiagnosticRequestor { requestDiagnostic(filepath: string): void; @@ -152,12 +153,7 @@ export default class BufferSyncSupport { } public dispose(): void { - while (this.disposables.length) { - const obj = this.disposables.pop(); - if (obj) { - obj.dispose(); - } - } + disposeAll(this.disposables); } private onDidOpenTextDocument(document: TextDocument): void { diff --git a/extensions/typescript/src/languageProvider.ts b/extensions/typescript/src/languageProvider.ts index afdcf4fcbbd..c1d707ea42e 100644 --- a/extensions/typescript/src/languageProvider.ts +++ b/extensions/typescript/src/languageProvider.ts @@ -19,6 +19,7 @@ import { LanguageDescription } from './utils/languageDescription'; import * as fileSchemes from './utils/fileSchemes'; import { CachedNavTreeResponse } from './features/baseCodeLensProvider'; import { memoize } from './utils/memoize'; +import { disposeAll } from './utils/dipose'; const validateSetting = 'validate.enable'; const foldingSetting = 'typescript.experimental.syntaxFolding'; @@ -62,19 +63,8 @@ export default class LanguageProvider { } public dispose(): void { - while (this.disposables.length) { - const obj = this.disposables.pop(); - if (obj) { - obj.dispose(); - } - } - - while (this.versionDependentDisposables.length) { - const obj = this.versionDependentDisposables.pop(); - if (obj) { - obj.dispose(); - } - } + disposeAll(this.disposables); + disposeAll(this.versionDependentDisposables); this.diagnosticsManager.dispose(); this.bufferSyncSupport.dispose(); @@ -223,12 +213,7 @@ export default class LanguageProvider { } private async registerVersionDependentProviders(): Promise { - while (this.versionDependentDisposables.length) { - const obj = this.versionDependentDisposables.pop(); - if (obj) { - obj.dispose(); - } - } + disposeAll(this.versionDependentDisposables); if (!this.client) { return; diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index c410d30623f..29a50158bb4 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -24,6 +24,7 @@ import { tsLocationToVsPosition } from './utils/convert'; import { CommandManager } from './utils/commandManager'; import { LanguageDescription } from './utils/languageDescription'; import LogDirectoryProvider from './utils/logDirectoryProvider'; +import { disposeAll } from './utils/dipose'; // Style check diagnostics that can be reported as warnings const styleCheckDiagnostics = [ @@ -118,13 +119,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl } public dispose(): void { - while (this.disposables.length) { - const obj = this.disposables.pop(); - if (obj) { - obj.dispose(); - } - } - + disposeAll(this.disposables); this.typingsStatus.dispose(); this.ataProgressReporter.dispose(); } diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index cd97803c6f5..dc3a753210a 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -28,6 +28,7 @@ import { TypeScriptVersionPicker } from './utils/versionPicker'; import * as fileSchemes from './utils/fileSchemes'; import { inferredProjectConfig } from './utils/tsconfig'; import LogDirectoryProvider from './utils/logDirectoryProvider'; +import { disposeAll } from './utils/dipose'; const localize = nls.loadMessageBundle(); @@ -243,12 +244,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient }).then(undefined, () => void 0); } - while (this.disposables.length) { - const obj = this.disposables.pop(); - if (obj) { - obj.dispose(); - } - } + disposeAll(this.disposables); } public restartTsServer(): void { diff --git a/extensions/typescript/src/utils/dipose.ts b/extensions/typescript/src/utils/dipose.ts new file mode 100644 index 00000000000..b7c72f8b8b4 --- /dev/null +++ b/extensions/typescript/src/utils/dipose.ts @@ -0,0 +1,15 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; + +export function disposeAll(disposables: vscode.Disposable[]) { + while (disposables.length) { + const item = disposables.pop(); + if (item) { + item.dispose(); + } + } +} From f592143297747c0f6592a1dd4373391af2a13a08 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:18:18 -0800 Subject: [PATCH 313/658] Use events to tell host about syntax diagnostics Better decouple the language host from the language clients by using events instead of direct calls --- .../src/typeScriptServiceClientHost.ts | 10 +++++++--- extensions/typescript/src/typescriptService.ts | 3 --- .../typescript/src/typescriptServiceClient.ts | 18 +++++++++++++++--- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index 29a50158bb4..fb4bded8896 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -71,6 +71,10 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl this.client = new TypeScriptServiceClient(this, workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); this.disposables.push(this.client); + this.client.onSyntaxDiagnosticsReceived(diag => this.syntaxDiagnosticsReceived(diag), null, this.disposables); + this.client.onSemanticDiagnosticsReceived(diag => this.semanticDiagnosticsReceived(diag), null, this.disposables); + this.client.onConfigDiagnosticsReceived(diag => this.configFileDiagnosticsReceived(diag), null, this.disposables); + this.versionStatus = new VersionStatus(resource => this.client.normalizePath(resource)); this.disposables.push(this.versionStatus); @@ -166,7 +170,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl }); } - /* internal */ syntaxDiagnosticsReceived(event: Proto.DiagnosticEvent): void { + private syntaxDiagnosticsReceived(event: Proto.DiagnosticEvent): void { const body = event.body; if (body && body.diagnostics) { this.findLanguage(body.file).then(language => { @@ -177,7 +181,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl } } - /* internal */ semanticDiagnosticsReceived(event: Proto.DiagnosticEvent): void { + private semanticDiagnosticsReceived(event: Proto.DiagnosticEvent): void { const body = event.body; if (body && body.diagnostics) { this.findLanguage(body.file).then(language => { @@ -188,7 +192,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl } } - /* internal */ configFileDiagnosticsReceived(event: Proto.ConfigFileDiagnosticEvent): void { + private configFileDiagnosticsReceived(event: Proto.ConfigFileDiagnosticEvent): void { // See https://github.com/Microsoft/TypeScript/issues/10384 const body = event.body; if (!body || !body.diagnostics || !body.configFile) { diff --git a/extensions/typescript/src/typescriptService.ts b/extensions/typescript/src/typescriptService.ts index db51d60464c..a18b071e73d 100644 --- a/extensions/typescript/src/typescriptService.ts +++ b/extensions/typescript/src/typescriptService.ts @@ -12,9 +12,6 @@ import { TypeScriptServiceConfiguration } from './utils/configuration'; import Logger from './utils/logger'; export interface ITypeScriptServiceClientHost { - syntaxDiagnosticsReceived(event: Proto.DiagnosticEvent): void; - semanticDiagnosticsReceived(event: Proto.DiagnosticEvent): void; - configFileDiagnosticsReceived(event: Proto.ConfigFileDiagnosticEvent): void; populateService(): void; } diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index dc3a753210a..a10baa5ea61 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -233,6 +233,15 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this.disposables.push(this.telemetryReporter); } + private _onSyntaxDiagnosticsReceived = new EventEmitter(); + public get onSyntaxDiagnosticsReceived(): Event { return this._onSyntaxDiagnosticsReceived.event; } + + private _onSemanticDiagnosticsReceived = new EventEmitter(); + public get onSemanticDiagnosticsReceived(): Event { return this._onSemanticDiagnosticsReceived.event; } + + private _onConfigDiagnosticsReceived = new EventEmitter(); + public get onConfigDiagnosticsReceived(): Event { return this._onConfigDiagnosticsReceived.event; } + public get configuration() { return this._configuration; } @@ -245,6 +254,9 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient } disposeAll(this.disposables); + this._onSyntaxDiagnosticsReceived.dispose(); + this._onSemanticDiagnosticsReceived.dispose(); + this._onConfigDiagnosticsReceived.dispose(); } public restartTsServer(): void { @@ -782,15 +794,15 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient private dispatchEvent(event: Proto.Event) { switch (event.event) { case 'syntaxDiag': - this.host.syntaxDiagnosticsReceived(event as Proto.DiagnosticEvent); + this._onSyntaxDiagnosticsReceived.fire(event as Proto.DiagnosticEvent); break; case 'semanticDiag': - this.host.semanticDiagnosticsReceived(event as Proto.DiagnosticEvent); + this._onSemanticDiagnosticsReceived.fire(event as Proto.DiagnosticEvent); break; case 'configFileDiag': - this.host.configFileDiagnosticsReceived(event as Proto.ConfigFileDiagnosticEvent); + this._onConfigDiagnosticsReceived.fire(event as Proto.ConfigFileDiagnosticEvent); break; case 'telemetry': From 2165496f0a2e26b368a160731ef8588967ead66f Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:29:35 -0800 Subject: [PATCH 314/658] Remove ITypeScriptServiceClientHost Better decouple host from client --- extensions/typescript/src/typeScriptServiceClientHost.ts | 8 ++++---- extensions/typescript/src/typescriptService.ts | 5 ----- extensions/typescript/src/typescriptServiceClient.ts | 9 ++++++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index fb4bded8896..2c324840fe3 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -14,7 +14,6 @@ import * as Proto from './protocol'; import * as PConst from './protocol.const'; import TypeScriptServiceClient from './typescriptServiceClient'; -import { ITypeScriptServiceClientHost } from './typescriptService'; import LanguageProvider from './languageProvider'; import TypingsStatus, { AtaProgressReporter } from './utils/typingsStatus'; @@ -36,7 +35,7 @@ const styleCheckDiagnostics = [ 7030 // not all code paths return a value ]; -export default class TypeScriptServiceClientHost implements ITypeScriptServiceClientHost { +export default class TypeScriptServiceClientHost { private readonly ataProgressReporter: AtaProgressReporter; private readonly typingsStatus: TypingsStatus; private readonly client: TypeScriptServiceClient; @@ -68,12 +67,13 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl configFileWatcher.onDidDelete(handleProjectCreateOrDelete, this, this.disposables); configFileWatcher.onDidChange(handleProjectChange, this, this.disposables); - this.client = new TypeScriptServiceClient(this, workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); + this.client = new TypeScriptServiceClient(workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); this.disposables.push(this.client); this.client.onSyntaxDiagnosticsReceived(diag => this.syntaxDiagnosticsReceived(diag), null, this.disposables); this.client.onSemanticDiagnosticsReceived(diag => this.semanticDiagnosticsReceived(diag), null, this.disposables); this.client.onConfigDiagnosticsReceived(diag => this.configFileDiagnosticsReceived(diag), null, this.disposables); + this.client.onResendModelsRequested(() => this.populateService(), null, this.disposables); this.versionStatus = new VersionStatus(resource => this.client.normalizePath(resource)); this.disposables.push(this.versionStatus); @@ -161,7 +161,7 @@ export default class TypeScriptServiceClientHost implements ITypeScriptServiceCl } } - /* internal */ populateService(): void { + private populateService(): void { // See https://github.com/Microsoft/TypeScript/issues/5530 workspace.saveAll(false).then(() => { for (const language of this.languagePerId.values()) { diff --git a/extensions/typescript/src/typescriptService.ts b/extensions/typescript/src/typescriptService.ts index a18b071e73d..1bf8f12789d 100644 --- a/extensions/typescript/src/typescriptService.ts +++ b/extensions/typescript/src/typescriptService.ts @@ -11,11 +11,6 @@ import { TypeScriptServerPlugin } from './utils/plugins'; import { TypeScriptServiceConfiguration } from './utils/configuration'; import Logger from './utils/logger'; -export interface ITypeScriptServiceClientHost { - populateService(): void; -} - - export interface ITypeScriptServiceClient { normalizePath(resource: Uri): string | null; asUrl(filepath: string): Uri; diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index a10baa5ea61..3eb451cf633 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -12,7 +12,7 @@ import { Reader, ICallback } from './utils/wireProtocol'; import { workspace, window, Uri, CancellationToken, Disposable, Memento, MessageItem, EventEmitter, Event, commands, env } from 'vscode'; import * as Proto from './protocol'; -import { ITypeScriptServiceClient, ITypeScriptServiceClientHost } from './typescriptService'; +import { ITypeScriptServiceClient } from './typescriptService'; import { TypeScriptServerPlugin } from './utils/plugins'; import Logger from './utils/logger'; @@ -182,7 +182,6 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient private readonly disposables: Disposable[] = []; constructor( - private readonly host: ITypeScriptServiceClientHost, private readonly workspaceState: Memento, private readonly onDidChangeTypeScriptVersion: (version: TypeScriptVersion) => void, public readonly plugins: TypeScriptServerPlugin[], @@ -242,6 +241,9 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient private _onConfigDiagnosticsReceived = new EventEmitter(); public get onConfigDiagnosticsReceived(): Event { return this._onConfigDiagnosticsReceived.event; } + private _onResendModelsRequested = new EventEmitter(); + public get onResendModelsRequested(): Event { return this._onResendModelsRequested.event; } + public get configuration() { return this._configuration; } @@ -257,6 +259,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this._onSyntaxDiagnosticsReceived.dispose(); this._onSemanticDiagnosticsReceived.dispose(); this._onConfigDiagnosticsReceived.dispose(); + this._onResendModelsRequested.dispose(); } public restartTsServer(): void { @@ -499,7 +502,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this.execute('configure', configureOptions); this.setCompilerOptionsForInferredProjects(this._configuration); if (resendModels) { - this.host.populateService(); + this._onResendModelsRequested.fire(); } } From d6a76282058f901a05606253dcf206e7b89ff9c9 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:47:18 -0800 Subject: [PATCH 315/658] Make logging methods private --- extensions/typescript/src/typescriptServiceClient.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index 3eb451cf633..f6de01c7414 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -312,15 +312,11 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this.logger.info(message, data); } - public warn(message: string, data?: any): void { - this.logger.warn(message, data); - } - private error(message: string, data?: any): void { this.logger.error(message, data); } - public logTelemetry(eventName: string, properties?: { [prop: string]: string }) { + private logTelemetry(eventName: string, properties?: { [prop: string]: string }) { this.telemetryReporter.logTelemetry(eventName, properties); } From 824604072cd6c26234c3a7c50bb97309946b3765 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:47:48 -0800 Subject: [PATCH 316/658] Moving syntax and semantic event null checks into dispatcher --- .../src/typeScriptServiceClientHost.ts | 56 +++++++++---------- .../typescript/src/typescriptServiceClient.ts | 39 +++++++++---- 2 files changed, 55 insertions(+), 40 deletions(-) diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index 2c324840fe3..89fd3cb9333 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -70,8 +70,8 @@ export default class TypeScriptServiceClientHost { this.client = new TypeScriptServiceClient(workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); this.disposables.push(this.client); - this.client.onSyntaxDiagnosticsReceived(diag => this.syntaxDiagnosticsReceived(diag), null, this.disposables); - this.client.onSemanticDiagnosticsReceived(diag => this.semanticDiagnosticsReceived(diag), null, this.disposables); + this.client.onSyntaxDiagnosticsReceived(({ file, diagnostics }) => this.syntaxDiagnosticsReceived(file, diagnostics), null, this.disposables); + this.client.onSemanticDiagnosticsReceived(({ file, diagnostics }) => this.semanticDiagnosticsReceived(file, diagnostics), null, this.disposables); this.client.onConfigDiagnosticsReceived(diag => this.configFileDiagnosticsReceived(diag), null, this.disposables); this.client.onResendModelsRequested(() => this.populateService(), null, this.disposables); @@ -170,25 +170,21 @@ export default class TypeScriptServiceClientHost { }); } - private syntaxDiagnosticsReceived(event: Proto.DiagnosticEvent): void { - const body = event.body; - if (body && body.diagnostics) { - this.findLanguage(body.file).then(language => { - if (language) { - language.syntaxDiagnosticsReceived(this.client.asUrl(body.file), this.createMarkerDatas(body.diagnostics, language.diagnosticSource)); - } - }); + private async syntaxDiagnosticsReceived(file: string, diagnostics: Proto.Diagnostic[]): Promise { + const language = await this.findLanguage(file); + if (language) { + language.syntaxDiagnosticsReceived( + this.client.asUrl(file), + this.createMarkerDatas(diagnostics, language.diagnosticSource)); } } - private semanticDiagnosticsReceived(event: Proto.DiagnosticEvent): void { - const body = event.body; - if (body && body.diagnostics) { - this.findLanguage(body.file).then(language => { - if (language) { - language.semanticDiagnosticsReceived(this.client.asUrl(body.file), this.createMarkerDatas(body.diagnostics, language.diagnosticSource)); - } - }); + private async semanticDiagnosticsReceived(file: string, diagnostics: Proto.Diagnostic[]): Promise { + const language = await this.findLanguage(file); + if (language) { + language.semanticDiagnosticsReceived( + this.client.asUrl(file), + this.createMarkerDatas(diagnostics, language.diagnosticSource)); } } @@ -244,19 +240,19 @@ export default class TypeScriptServiceClientHost { } private createMarkerDatas(diagnostics: Proto.Diagnostic[], source: string): Diagnostic[] { - const result: Diagnostic[] = []; - for (const diagnostic of diagnostics) { - const { start, end, text } = diagnostic; - const range = new Range(tsLocationToVsPosition(start), tsLocationToVsPosition(end)); - const converted = new Diagnostic(range, text); - converted.severity = this.getDiagnosticSeverity(diagnostic); - converted.source = diagnostic.source || source; - if (diagnostic.code) { - converted.code = diagnostic.code; - } - result.push(converted); + return diagnostics.map(tsDiag => this.tsDiagnosticToVsDiagnostic(tsDiag, source)); + } + + private tsDiagnosticToVsDiagnostic(diagnostic: Proto.Diagnostic, source: string) { + const { start, end, text } = diagnostic; + const range = new Range(tsLocationToVsPosition(start), tsLocationToVsPosition(end)); + const converted = new Diagnostic(range, text); + converted.severity = this.getDiagnosticSeverity(diagnostic); + converted.source = diagnostic.source || source; + if (diagnostic.code) { + converted.code = diagnostic.code; } - return result; + return converted; } private getDiagnosticSeverity(diagnostic: Proto.Diagnostic): DiagnosticSeverity { diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index f6de01c7414..56ff74c2afe 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -139,6 +139,11 @@ class ForkedTsServerProcess { } } +export interface TsDiagnostics { + file: string; + diagnostics: Proto.Diagnostic[]; +} + export default class TypeScriptServiceClient implements ITypeScriptServiceClient { private static readonly WALK_THROUGH_SNIPPET_SCHEME_COLON = `${fileSchemes.walkThroughSnippet}:`; @@ -232,11 +237,11 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient this.disposables.push(this.telemetryReporter); } - private _onSyntaxDiagnosticsReceived = new EventEmitter(); - public get onSyntaxDiagnosticsReceived(): Event { return this._onSyntaxDiagnosticsReceived.event; } + private _onSyntaxDiagnosticsReceived = new EventEmitter(); + public get onSyntaxDiagnosticsReceived(): Event { return this._onSyntaxDiagnosticsReceived.event; } - private _onSemanticDiagnosticsReceived = new EventEmitter(); - public get onSemanticDiagnosticsReceived(): Event { return this._onSemanticDiagnosticsReceived.event; } + private _onSemanticDiagnosticsReceived = new EventEmitter(); + public get onSemanticDiagnosticsReceived(): Event { return this._onSemanticDiagnosticsReceived.event; } private _onConfigDiagnosticsReceived = new EventEmitter(); public get onConfigDiagnosticsReceived(): Event { return this._onConfigDiagnosticsReceived.event; } @@ -793,13 +798,27 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient private dispatchEvent(event: Proto.Event) { switch (event.event) { case 'syntaxDiag': - this._onSyntaxDiagnosticsReceived.fire(event as Proto.DiagnosticEvent); - break; - + { + const diagnosticEvent: Proto.DiagnosticEvent = event; + if (diagnosticEvent.body && diagnosticEvent.body.diagnostics) { + this._onSyntaxDiagnosticsReceived.fire({ + file: diagnosticEvent.body.file, + diagnostics: diagnosticEvent.body.diagnostics + }); + } + break; + } case 'semanticDiag': - this._onSemanticDiagnosticsReceived.fire(event as Proto.DiagnosticEvent); - break; - + { + const diagnosticEvent: Proto.DiagnosticEvent = event; + if (diagnosticEvent.body && diagnosticEvent.body.diagnostics) { + this._onSemanticDiagnosticsReceived.fire({ + file: diagnosticEvent.body.file, + diagnostics: diagnosticEvent.body.diagnostics + }); + } + break; + } case 'configFileDiag': this._onConfigDiagnosticsReceived.fire(event as Proto.ConfigFileDiagnosticEvent); break; From c0808a8ba435d3656142a232eef0e92de757fdc9 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 16:56:24 -0800 Subject: [PATCH 317/658] Use uris instead of string paths in more locations String paths should only be used when talking to the ts server --- extensions/typescript/src/commands.ts | 2 +- .../src/features/bufferSyncSupport.ts | 7 +++-- extensions/typescript/src/languageProvider.ts | 6 ++-- .../src/typeScriptServiceClientHost.ts | 28 +++++++++---------- .../typescript/src/typescriptServiceClient.ts | 8 +++--- .../typescript/src/utils/projectStatus.ts | 6 ++-- 6 files changed, 29 insertions(+), 28 deletions(-) diff --git a/extensions/typescript/src/commands.ts b/extensions/typescript/src/commands.ts index 0d3a9075a6c..1996a092692 100644 --- a/extensions/typescript/src/commands.ts +++ b/extensions/typescript/src/commands.ts @@ -121,7 +121,7 @@ async function goToProjectConfig( const file = client.normalizePath(resource); // TSServer errors when 'projectInfo' is invoked on a non js/ts file - if (!file || !clientHost.handles(file)) { + if (!file || !clientHost.handles(resource)) { vscode.window.showWarningMessage( localize( 'typescript.projectConfigUnsupportedFile', diff --git a/extensions/typescript/src/features/bufferSyncSupport.ts b/extensions/typescript/src/features/bufferSyncSupport.ts index aa190e66746..512d85b12ae 100644 --- a/extensions/typescript/src/features/bufferSyncSupport.ts +++ b/extensions/typescript/src/features/bufferSyncSupport.ts @@ -5,7 +5,7 @@ import * as fs from 'fs'; -import { workspace, TextDocument, TextDocumentChangeEvent, TextDocumentContentChangeEvent, Disposable } from 'vscode'; +import { workspace, TextDocument, TextDocumentChangeEvent, TextDocumentContentChangeEvent, Disposable, Uri } from 'vscode'; import * as Proto from '../protocol'; import { ITypeScriptServiceClient } from '../typescriptService'; import { Delayer } from '../utils/async'; @@ -142,8 +142,9 @@ export default class BufferSyncSupport { this._validate = value; } - public handles(file: string): boolean { - return this.syncedBuffers.has(file); + public handles(resource: Uri): boolean { + const file = this.client.normalizePath(resource); + return !!file && this.syncedBuffers.has(file); } public reOpenDocuments(): void { diff --git a/extensions/typescript/src/languageProvider.ts b/extensions/typescript/src/languageProvider.ts index c1d707ea42e..156858d7b6c 100644 --- a/extensions/typescript/src/languageProvider.ts +++ b/extensions/typescript/src/languageProvider.ts @@ -171,16 +171,16 @@ export default class LanguageProvider { } } - public handles(file: string, doc: TextDocument): boolean { + public handles(resource: Uri, doc: TextDocument): boolean { if (doc && this.description.modeIds.indexOf(doc.languageId) >= 0) { return true; } - if (this.bufferSyncSupport.handles(file)) { + if (this.bufferSyncSupport.handles(resource)) { return true; } - const base = basename(file); + const base = basename(resource.fsPath); return !!base && base === this.description.configFile; } diff --git a/extensions/typescript/src/typeScriptServiceClientHost.ts b/extensions/typescript/src/typeScriptServiceClientHost.ts index 89fd3cb9333..9d552927c72 100644 --- a/extensions/typescript/src/typeScriptServiceClientHost.ts +++ b/extensions/typescript/src/typeScriptServiceClientHost.ts @@ -70,8 +70,8 @@ export default class TypeScriptServiceClientHost { this.client = new TypeScriptServiceClient(workspaceState, version => this.versionStatus.onDidChangeTypeScriptVersion(version), plugins, logDirectoryProvider); this.disposables.push(this.client); - this.client.onSyntaxDiagnosticsReceived(({ file, diagnostics }) => this.syntaxDiagnosticsReceived(file, diagnostics), null, this.disposables); - this.client.onSemanticDiagnosticsReceived(({ file, diagnostics }) => this.semanticDiagnosticsReceived(file, diagnostics), null, this.disposables); + this.client.onSyntaxDiagnosticsReceived(({ resource, diagnostics }) => this.syntaxDiagnosticsReceived(resource, diagnostics), null, this.disposables); + this.client.onSemanticDiagnosticsReceived(({ resource, diagnostics }) => this.semanticDiagnosticsReceived(resource, diagnostics), null, this.disposables); this.client.onConfigDiagnosticsReceived(diag => this.configFileDiagnosticsReceived(diag), null, this.disposables); this.client.onResendModelsRequested(() => this.populateService(), null, this.disposables); @@ -137,8 +137,8 @@ export default class TypeScriptServiceClientHost { this.triggerAllDiagnostics(); } - public handles(file: string): boolean { - return !!this.findLanguage(file); + public handles(resource: Uri): boolean { + return !!this.findLanguage(resource); } private configurationChanged(): void { @@ -146,10 +146,10 @@ export default class TypeScriptServiceClientHost { this.reportStyleCheckAsWarnings = config.get('reportStyleChecksAsWarnings', true); } - private async findLanguage(file: string): Promise { + private async findLanguage(resource: Uri): Promise { try { - const doc = await workspace.openTextDocument(this.client.asUrl(file)); - return this.languages.find(language => language.handles(file, doc)); + const doc = await workspace.openTextDocument(resource); + return this.languages.find(language => language.handles(resource, doc)); } catch { return undefined; } @@ -170,20 +170,20 @@ export default class TypeScriptServiceClientHost { }); } - private async syntaxDiagnosticsReceived(file: string, diagnostics: Proto.Diagnostic[]): Promise { - const language = await this.findLanguage(file); + private async syntaxDiagnosticsReceived(resource: Uri, diagnostics: Proto.Diagnostic[]): Promise { + const language = await this.findLanguage(resource); if (language) { language.syntaxDiagnosticsReceived( - this.client.asUrl(file), + resource, this.createMarkerDatas(diagnostics, language.diagnosticSource)); } } - private async semanticDiagnosticsReceived(file: string, diagnostics: Proto.Diagnostic[]): Promise { - const language = await this.findLanguage(file); + private async semanticDiagnosticsReceived(resource: Uri, diagnostics: Proto.Diagnostic[]): Promise { + const language = await this.findLanguage(resource); if (language) { language.semanticDiagnosticsReceived( - this.client.asUrl(file), + resource, this.createMarkerDatas(diagnostics, language.diagnosticSource)); } } @@ -195,7 +195,7 @@ export default class TypeScriptServiceClientHost { return; } - (this.findLanguage(body.configFile)).then(language => { + (this.findLanguage(this.client.asUrl(body.configFile))).then(language => { if (!language) { return; } diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index 56ff74c2afe..b788c8c42e6 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -140,8 +140,8 @@ class ForkedTsServerProcess { } export interface TsDiagnostics { - file: string; - diagnostics: Proto.Diagnostic[]; + readonly resource: Uri; + readonly diagnostics: Proto.Diagnostic[]; } export default class TypeScriptServiceClient implements ITypeScriptServiceClient { @@ -802,7 +802,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient const diagnosticEvent: Proto.DiagnosticEvent = event; if (diagnosticEvent.body && diagnosticEvent.body.diagnostics) { this._onSyntaxDiagnosticsReceived.fire({ - file: diagnosticEvent.body.file, + resource: this.asUrl(diagnosticEvent.body.file), diagnostics: diagnosticEvent.body.diagnostics }); } @@ -813,7 +813,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient const diagnosticEvent: Proto.DiagnosticEvent = event; if (diagnosticEvent.body && diagnosticEvent.body.diagnostics) { this._onSemanticDiagnosticsReceived.fire({ - file: diagnosticEvent.body.file, + resource: this.asUrl(diagnosticEvent.body.file), diagnostics: diagnosticEvent.body.diagnostics }); } diff --git a/extensions/typescript/src/utils/projectStatus.ts b/extensions/typescript/src/utils/projectStatus.ts index 3458a21f28a..64c8f72390a 100644 --- a/extensions/typescript/src/utils/projectStatus.ts +++ b/extensions/typescript/src/utils/projectStatus.ts @@ -63,7 +63,7 @@ class ExcludeHintItem { } } -function createLargeProjectMonitorForProject(item: ExcludeHintItem, client: ITypeScriptServiceClient, isOpen: (path: string) => Promise, memento: vscode.Memento): vscode.Disposable[] { +function createLargeProjectMonitorForProject(item: ExcludeHintItem, client: ITypeScriptServiceClient, isOpen: (resource: vscode.Uri) => Promise, memento: vscode.Memento): vscode.Disposable[] { const toDispose: vscode.Disposable[] = []; const projectHinted: ProjectHintedMap = Object.create(null); @@ -88,7 +88,7 @@ function createLargeProjectMonitorForProject(item: ExcludeHintItem, client: ITyp if (!file) { return; } - isOpen(file).then(value => { + isOpen(editor.document.uri).then(value => { if (!value) { return; } @@ -175,7 +175,7 @@ function onConfigureExcludesSelected( export function create( client: ITypeScriptServiceClient, telemetryReporter: TelemetryReporter, - isOpen: (path: string) => Promise, + isOpen: (resource: vscode.Uri) => Promise, memento: vscode.Memento ) { const toDispose: vscode.Disposable[] = []; From 57424ecf45bbc768ce246cb9b83a5f2b6daa3b6e Mon Sep 17 00:00:00 2001 From: Gus Hurovich Date: Thu, 8 Mar 2018 18:02:33 -0800 Subject: [PATCH 318/658] Adding Emmet preference for changing fuzzySearchMinScore (#45240) * Adding Emmet preference for changing fuzzySearchMinScore * Changing name and description of the new setting. * Updating version of vscode-emmet-helper --- extensions/emmet/package.json | 7 ++++++- extensions/emmet/package.nls.json | 3 ++- extensions/emmet/yarn.lock | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json index eb8cf684566..8e90e075b94 100644 --- a/extensions/emmet/package.json +++ b/extensions/emmet/package.json @@ -199,6 +199,11 @@ "type": "string", "default": null, "description": "%emmetPreferencesCssMsProperties%" + }, + "css.fuzzySearchMinScore": { + "type": "number", + "default": 0.3, + "description": "%emmetPreferencesCssFuzzySearchMinScore%" } } }, @@ -338,7 +343,7 @@ "@emmetio/html-matcher": "^0.3.3", "@emmetio/css-parser": "ramya-rao-a/css-parser#vscode", "@emmetio/math-expression": "^0.1.1", - "vscode-emmet-helper": "^1.2.0", + "vscode-emmet-helper": "^1.2.1", "vscode-languageserver-types": "^3.5.0", "image-size": "^0.5.2", "vscode-nls": "3.2.1" diff --git a/extensions/emmet/package.nls.json b/extensions/emmet/package.nls.json index 0cc141009cb..36a62bd2694 100644 --- a/extensions/emmet/package.nls.json +++ b/extensions/emmet/package.nls.json @@ -52,5 +52,6 @@ "emmetPreferencesCssWebkitProperties": "Comma separated CSS properties that get the 'webkit' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'webkit' prefix.", "emmetPreferencesCssMozProperties": "Comma separated CSS properties that get the 'moz' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'moz' prefix.", "emmetPreferencesCssOProperties": "Comma separated CSS properties that get the 'o' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'o' prefix.", - "emmetPreferencesCssMsProperties": "Comma separated CSS properties that get the 'ms' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'ms' prefix." + "emmetPreferencesCssMsProperties": "Comma separated CSS properties that get the 'ms' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'ms' prefix.", + "emmetPreferencesCssFuzzySearchMinScore": "The minimum score (from 0 to 1) that fuzzy-matched abbreviation should achieve. Lower values may produce many false-positive matches, higher values may reduce possible matches." } diff --git a/extensions/emmet/yarn.lock b/extensions/emmet/yarn.lock index 89c4029be2d..48a909d225e 100644 --- a/extensions/emmet/yarn.lock +++ b/extensions/emmet/yarn.lock @@ -2052,9 +2052,9 @@ vinyl@~2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vscode-emmet-helper@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.0.tgz#6b9311be065c9c99d5de2dae18ea0730d9cfb734" +vscode-emmet-helper@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.1.tgz#dc4a3c83a3f1d48f4e9e1a5cce0e63f24b6eb843" dependencies: "@emmetio/extract-abbreviation" "0.1.6" jsonc-parser "^1.0.0" From e957fb8f1a3ebdc3f8a466939c46cf24fb130d8c Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 07:14:45 +0100 Subject: [PATCH 319/658] Linux: ENOSPC error message tweak --- src/vs/workbench/services/files/electron-browser/fileService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/services/files/electron-browser/fileService.ts b/src/vs/workbench/services/files/electron-browser/fileService.ts index 6c09819220b..8a3daf5a5b9 100644 --- a/src/vs/workbench/services/files/electron-browser/fileService.ts +++ b/src/vs/workbench/services/files/electron-browser/fileService.ts @@ -124,7 +124,7 @@ export class FileService implements IFileService { // Detect if we run into ENOSPC issues if (msg.indexOf(FileService.ENOSPC_ERROR) >= 0 && !this.storageService.getBoolean(FileService.ENOSPC_ERROR_IGNORE_KEY, StorageScope.WORKSPACE)) { const choices: PromptOption[] = [nls.localize('learnMore', "Instructions"), { label: nls.localize('neverShowAgain', "Don't Show Again") }]; - this.notificationService.prompt(Severity.Warning, nls.localize('enospcError', "{0} is running out of file handles. Please follow the instructions link to resolve this issue.", product.nameLong), choices).then(choice => { + this.notificationService.prompt(Severity.Warning, nls.localize('enospcError', "{0} is unable to watch for file changes in this large workspace. Please follow the instructions link to resolve this issue.", product.nameLong), choices).then(choice => { switch (choice) { case 0 /* Read More */: window.open('https://go.microsoft.com/fwlink/?linkid=867693'); From d9db773a9435833994366f94dbee478540d0d084 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 07:34:43 +0100 Subject: [PATCH 320/658] add window.openWithoutArgumentsInNewWindow (#45322) * add window.openWithoutArgumentsInNewWindow * remove relaunch command --- src/vs/code/electron-main/launch.ts | 56 ++++++++++++++++--- src/vs/code/electron-main/window.ts | 9 --- src/vs/platform/windows/common/windows.ts | 1 + .../electron-browser/main.contribution.ts | 11 +++- 4 files changed, 59 insertions(+), 18 deletions(-) diff --git a/src/vs/code/electron-main/launch.ts b/src/vs/code/electron-main/launch.ts index 3d2556b785d..5fc6bbe98a2 100644 --- a/src/vs/code/electron-main/launch.ts +++ b/src/vs/code/electron-main/launch.ts @@ -9,14 +9,15 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IChannel } from 'vs/base/parts/ipc/common/ipc'; import { ILogService } from 'vs/platform/log/common/log'; import { IURLService } from 'vs/platform/url/common/url'; -import { IProcessEnvironment } from 'vs/base/common/platform'; +import { IProcessEnvironment, isMacintosh } from 'vs/base/common/platform'; import { ParsedArgs, IEnvironmentService } from 'vs/platform/environment/common/environment'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { OpenContext } from 'vs/platform/windows/common/windows'; +import { OpenContext, IWindowSettings } from 'vs/platform/windows/common/windows'; import { IWindowsMainService, ICodeWindow } from 'vs/platform/windows/electron-main/windows'; import { whenDeleted } from 'vs/base/node/pfs'; import { IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces'; import { Schemas } from 'vs/base/common/network'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; export const ID = 'launchService'; export const ILaunchService = createDecorator(ID); @@ -110,7 +111,8 @@ export class LaunchService implements ILaunchService { @IWindowsMainService private windowsMainService: IWindowsMainService, @IURLService private urlService: IURLService, @IWorkspacesMainService private workspacesMainService: IWorkspacesMainService, - @IEnvironmentService private readonly environmentService: IEnvironmentService + @IEnvironmentService private readonly environmentService: IEnvironmentService, + @IConfigurationService private readonly configurationService: IConfigurationService ) { } public start(args: ParsedArgs, userEnv: IProcessEnvironment): TPromise { @@ -140,13 +142,51 @@ export class LaunchService implements ILaunchService { private startOpenWindow(args: ParsedArgs, userEnv: IProcessEnvironment): TPromise { const context = !!userEnv['VSCODE_CLI'] ? OpenContext.CLI : OpenContext.DESKTOP; let usedWindows: ICodeWindow[]; + + // Special case extension development if (!!args.extensionDevelopmentPath) { this.windowsMainService.openExtensionDevelopmentHostWindow({ context, cli: args, userEnv }); - } else if (args._.length === 0 && (args['new-window'] || args['unity-launch'])) { - usedWindows = this.windowsMainService.open({ context, cli: args, userEnv, forceNewWindow: true, forceEmpty: true }); - } else if (args._.length === 0) { - usedWindows = [this.windowsMainService.focusLastActive(args, context)]; - } else { + } + + // Start without file/folder arguments + else if (args._.length === 0) { + let openNewWindow = false; + + // Force new window + if (args['new-window'] || args['unity-launch']) { + openNewWindow = true; + } + + // Force reuse window + else if (args['reuse-window']) { + openNewWindow = false; + } + + // Otherwise check for settings + else { + const windowConfig = this.configurationService.getValue('window'); + const openWithoutArgumentsInNewWindowConfig = (windowConfig && windowConfig.openWithoutArgumentsInNewWindow) || 'default' /* default */; + switch (openWithoutArgumentsInNewWindowConfig) { + case 'on': + openNewWindow = true; + break; + case 'off': + openNewWindow = false; + break; + default: + openNewWindow = !isMacintosh; // prefer to restore running instance on macOS + } + } + + if (openNewWindow) { + usedWindows = this.windowsMainService.open({ context, cli: args, userEnv, forceNewWindow: true, forceEmpty: true }); + } else { + usedWindows = [this.windowsMainService.focusLastActive(args, context)]; + } + } + + // Start with file/folder arguments + else { usedWindows = this.windowsMainService.open({ context, cli: args, diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 6e1dbe926b8..ec9e28a2525 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -215,15 +215,6 @@ export class CodeWindow implements ICodeWindow { this._win.setSheetOffset(22); // offset dialogs by the height of the custom title bar if we have any } - // Set relaunch command - if (isWindows && product.win32AppUserModelId && typeof this._win.setAppDetails === 'function') { - this._win.setAppDetails({ - appId: product.win32AppUserModelId, - relaunchCommand: `"${process.execPath}" -n`, - relaunchDisplayName: product.nameLong - }); - } - if (isFullscreenOrMaximized) { this._win.maximize(); diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts index 03c83a946b4..f000115e2d8 100644 --- a/src/vs/platform/windows/common/windows.ts +++ b/src/vs/platform/windows/common/windows.ts @@ -213,6 +213,7 @@ export interface IWindowsConfiguration { export interface IWindowSettings { openFilesInNewWindow: 'on' | 'off' | 'default'; openFoldersInNewWindow: 'on' | 'off' | 'default'; + openWithoutArgumentsInNewWindow: 'on' | 'off'; restoreWindows: 'all' | 'folders' | 'one' | 'none'; restoreFullscreen: boolean; zoomLevel: number; diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index 09a3d529a56..9835b2a8f27 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -302,7 +302,6 @@ configurationRegistry.registerConfiguration({ isMacintosh ? nls.localize('openFilesInNewWindowMac', "Controls if files should open in a new window.\n- default: files will open in the window with the files' folder open or the last active window unless opened via the Dock or from Finder\n- on: files will open in a new window\n- off: files will open in the window with the files' folder open or the last active window\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") : nls.localize('openFilesInNewWindow', "Controls if files should open in a new window.\n- default: files will open in a new window unless picked from within the application (e.g. via the File menu)\n- on: files will open in a new window\n- off: files will open in the window with the files' folder open or the last active window\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") - }, 'window.openFoldersInNewWindow': { 'type': 'string', @@ -315,6 +314,16 @@ configurationRegistry.registerConfiguration({ 'default': 'default', 'description': nls.localize('openFoldersInNewWindow', "Controls if folders should open in a new window or replace the last active window.\n- default: folders will open in a new window unless a folder is picked from within the application (e.g. via the File menu)\n- on: folders will open in a new window\n- off: folders will replace the last active window\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") }, + 'window.openWithoutArgumentsInNewWindow': { + 'type': 'string', + 'enum': ['on', 'off'], + 'enumDescriptions': [ + nls.localize('window.openWithoutArgumentsInNewWindow.on', "Open a new empty window"), + nls.localize('window.openWithoutArgumentsInNewWindow.off', "Focus the last active running instance") + ], + 'default': isMacintosh ? 'off' : 'on', + 'description': nls.localize('openWithoutArgumentsInNewWindow', "Controls if a new empty window should open when starting a second instance without arguments or if the last running instance should get focus.\n- on: open a new empty window\n- off: the last active running instance will get focus\nNote that there can still be cases where this setting is ignored (e.g. when using the -new-window or -reuse-window command line option).") + }, 'window.restoreWindows': { 'type': 'string', 'enum': ['all', 'folders', 'one', 'none'], From 572c7224ae32cb5c0446f3dcae44e1776f73ea4e Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 8 Mar 2018 22:54:26 -0800 Subject: [PATCH 321/658] Bump node-debug2 --- build/builtInExtensions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/builtInExtensions.json b/build/builtInExtensions.json index 09994e3df68..11ce40effd1 100644 --- a/build/builtInExtensions.json +++ b/build/builtInExtensions.json @@ -6,7 +6,7 @@ }, { "name": "ms-vscode.node-debug2", - "version": "1.21.2", + "version": "1.22.0", "repo": "https://github.com/Microsoft/vscode-node-debug2" } ] \ No newline at end of file From bbf81c5f80b0e4dc79204db39e360c2a3179ab02 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 9 Mar 2018 08:47:47 +0100 Subject: [PATCH 322/658] fix #29210 --- src/vs/editor/contrib/suggest/suggestModel.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/vs/editor/contrib/suggest/suggestModel.ts b/src/vs/editor/contrib/suggest/suggestModel.ts index 0c04bb05161..b1943cfeb8e 100644 --- a/src/vs/editor/contrib/suggest/suggestModel.ts +++ b/src/vs/editor/contrib/suggest/suggestModel.ts @@ -405,6 +405,12 @@ export class SuggestModel implements IDisposable { return; } + if (ctx.leadingWord.startColumn < this._context.leadingWord.startColumn) { + // happens when the current word gets outdented + this.cancel(); + return; + } + if (ctx.column < this._context.column) { // typed -> moved cursor LEFT -> retrigger if still on a word if (ctx.leadingWord.word) { From 1904f295b71739a7644ffa747a31b2001722ae83 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 9 Mar 2018 08:57:31 +0100 Subject: [PATCH 323/658] fix #42878 --- src/vs/editor/contrib/suggest/completionModel.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vs/editor/contrib/suggest/completionModel.ts b/src/vs/editor/contrib/suggest/completionModel.ts index 3241e05a495..6157cf74fc9 100644 --- a/src/vs/editor/contrib/suggest/completionModel.ts +++ b/src/vs/editor/contrib/suggest/completionModel.ts @@ -174,6 +174,7 @@ export class CompletionModel { // use a score of `-100` because that is out of the // bound of values `fuzzyScore` will return item.score = -100; + item.matches = undefined; } else if (typeof suggestion.filterText === 'string') { // when there is a `filterText` it must match the `word`. From c22d8fa9a5295c2d99067c69ed4aaeb379aa9580 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 10:44:16 +0100 Subject: [PATCH 324/658] update inno_updater fixes #44911 --- build/win32/OSSREADME.json | 722 +++++++++++++++++------------------ build/win32/inno_updater.exe | Bin 394240 -> 395264 bytes 2 files changed, 361 insertions(+), 361 deletions(-) mode change 100644 => 100755 build/win32/OSSREADME.json diff --git a/build/win32/OSSREADME.json b/build/win32/OSSREADME.json old mode 100644 new mode 100755 index f66fde6fb6d..cbcef582e54 --- a/build/win32/OSSREADME.json +++ b/build/win32/OSSREADME.json @@ -1,70 +1,4 @@ [ - { - "name": "dtolnay/isatty", - "version": "0.1.6", - "repositoryUrl": "https://github.com/dtolnay/isatty", - "licenseDetail": [ - "Copyright (c) 2016", - "", - "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-num/num-integer", - "version": "0.1.35", - "repositoryUrl": "https://github.com/rust-num/num-integer", - "licenseDetail": [ - "Copyright (c) 2014 The Rust Project 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", @@ -99,9 +33,9 @@ "isProd": true }, { - "name": "rust-lang/libc", - "version": "0.2.36", - "repositoryUrl": "https://github.com/rust-lang/libc", + "name": "rust-num/num", + "version": "0.1.41", + "repositoryUrl": "https://github.com/rust-num/num", "licenseDetail": [ "Copyright (c) 2014 The Rust Project Developers", "", @@ -131,6 +65,39 @@ ], "isProd": true }, + { + "name": "dtolnay/isatty", + "version": "0.1.6", + "repositoryUrl": "https://github.com/dtolnay/isatty", + "licenseDetail": [ + "Copyright (c) 2016", + "", + "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.2", @@ -158,68 +125,6 @@ ], "isProd": true }, - { - "name": "mrhooray/crc-rs", - "version": "1.7.0", - "repositoryUrl": "https://github.com/mrhooray/crc-rs.git", - "licenseDetail": [ - "MIT License", - "", - "Copyright (c) 2017 crc-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-num/num", - "version": "0.1.41", - "repositoryUrl": "https://github.com/rust-num/num", - "licenseDetail": [ - "Copyright (c) 2014 The Rust Project 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": "BurntSushi/byteorder", "version": "1.2.1", @@ -250,9 +155,9 @@ "isProd": true }, { - "name": "rust-num/num-traits", - "version": "0.1.42", - "repositoryUrl": "https://github.com/rust-num/num-traits", + "name": "rust-num/num-integer", + "version": "0.1.35", + "repositoryUrl": "https://github.com/rust-num/num-integer", "licenseDetail": [ "Copyright (c) 2014 The Rust Project Developers", "", @@ -283,9 +188,71 @@ "isProd": true }, { - "name": "slog-rs/slog", - "version": "2.1.1", - "repositoryUrl": "https://github.com/slog-rs/slog", + "name": "mrhooray/crc-rs", + "version": "1.7.0", + "repositoryUrl": "https://github.com/mrhooray/crc-rs.git", + "licenseDetail": [ + "MIT License", + "", + "Copyright (c) 2017 crc-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/libc", + "version": "0.2.36", + "repositoryUrl": "https://github.com/rust-lang/libc", + "licenseDetail": [ + "Copyright (c) 2014 The Rust Project 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-num/num-traits", + "version": "0.1.42", + "repositoryUrl": "https://github.com/rust-num/num-traits", "licenseDetail": [ "Copyright (c) 2014 The Rust Project Developers", "", @@ -349,60 +316,35 @@ "isProd": true }, { - "name": "vitiral/build_const", - "version": "0.2.0", - "repositoryUrl": "https://github.com/vitiral/build_const", + "name": "slog-rs/slog", + "version": "2.1.1", + "repositoryUrl": "https://github.com/slog-rs/slog", "licenseDetail": [ - "The MIT License (MIT)", + "Copyright (c) 2014 The Rust Project Developers", "", - "Copyright (c) 2017 Garrett Berg, vitiral@gmail.com", + "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:", "", - "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 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": "redox-os/termios", - "version": "0.1.1", - "repositoryUrl": "https://github.com/redox-os/termios", - "licenseDetail": [ - "MIT License", - "", - "Copyright (c) 2017 Redox OS", - "", - "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." + "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 }, @@ -469,6 +411,188 @@ ], "isProd": true }, + { + "name": "redox-os/termios", + "version": "0.1.1", + "repositoryUrl": "https://github.com/redox-os/termios", + "licenseDetail": [ + "MIT License", + "", + "Copyright (c) 2017 Redox OS", + "", + "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": "Sgeo/take_mut", + "version": "0.2.0", + "repositoryUrl": "https://github.com/Sgeo/take_mut", + "licenseDetail": [ + "The MIT License (MIT)", + "", + "Copyright (c) 2016 Sgeo", + "", + "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": "Amanieu/thread_local-rs", + "version": "0.3.5", + "repositoryUrl": "https://github.com/Amanieu/thread_local-rs", + "licenseDetail": [ + "Copyright (c) 2016 The Rust Project 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": "vitiral/build_const", + "version": "0.2.0", + "repositoryUrl": "https://github.com/vitiral/build_const", + "licenseDetail": [ + "The MIT License (MIT)", + "", + "Copyright (c) 2017 Garrett Berg, vitiral@gmail.com", + "", + "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": "ticki/termion", + "version": "1.5.1", + "repositoryUrl": "https://github.com/ticki/termion", + "licenseDetail": [ + "The MIT License (MIT)", + "", + "Copyright (c) 2016 Ticki", + "", + "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/time", + "version": "0.1.39", + "repositoryUrl": "https://github.com/rust-lang/time", + "licenseDetail": [ + "Copyright (c) 2014 The Rust Project 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": "chronotope/chrono", "version": "0.4.0", @@ -716,95 +840,6 @@ ], "isProd": true }, - { - "name": "Amanieu/thread_local-rs", - "version": "0.3.5", - "repositoryUrl": "https://github.com/Amanieu/thread_local-rs", - "licenseDetail": [ - "Copyright (c) 2016 The Rust Project 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": "Sgeo/take_mut", - "version": "0.2.0", - "repositoryUrl": "https://github.com/Sgeo/take_mut", - "licenseDetail": [ - "The MIT License (MIT)", - "", - "Copyright (c) 2016 Sgeo", - "", - "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": "reem/rust-void", - "version": "1.0.2", - "repositoryUrl": "https://github.com/reem/rust-void.git", - "licenseDetail": [ - "Copyright (c) 2015 The rust-void 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": "reem/rust-unreachable", "version": "1.0.0", @@ -833,46 +868,38 @@ "isProd": true }, { - "name": "rust-lang/time", - "version": "0.1.39", - "repositoryUrl": "https://github.com/rust-lang/time", + "name": "retep998/winapi-rs", + "version": "0.1.1", + "repositoryUrl": "https://github.com/retep998/winapi-rs", "licenseDetail": [ - "Copyright (c) 2014 The Rust Project Developers", + "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:", + "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 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." + "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": "ticki/termion", - "version": "1.5.1", - "repositoryUrl": "https://github.com/ticki/termion", + "name": "reem/rust-void", + "version": "1.0.2", + "repositoryUrl": "https://github.com/reem/rust-void.git", "licenseDetail": [ - "The MIT License (MIT)", - "", - "Copyright (c) 2016 Ticki", + "Copyright (c) 2015 The rust-void 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", @@ -921,60 +948,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.1.1", - "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.4.0", @@ -1002,6 +975,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": "retep998/winapi-rs", "version": "0.4.0", diff --git a/build/win32/inno_updater.exe b/build/win32/inno_updater.exe index a896061751d4bcc3a187c924fc3c184e923d0916..c216c4043324f683e3155ab9d699768e1d0054b7 100755 GIT binary patch delta 93838 zcmbrn31C!3w)oxMX`mquw}B7>1QMWuuqT3;0Ahf!iWmd~DhiGc#<)f82s#YikdD%Z z7WCqvGmJ8Cm^V7=42}!}A|!wWTo4o#MOj?N>KB(F%Btl1ow~QPAo}Kg|0wsKTXm}H z)Y=xi^8`ofc6U}q`AmOm>3n~RGd2*~BGdfiBQyPz)amKelO*N7 zpKi8n+Qs{JUBVmF%}bgNGM150=zu$d6q)|g{Y@Wtx;8&$`aB(-i_N~Cg|6aH%)fiO z_dfeamt%b`e>FyBv(i(}lIGD#{(QCip#(=(ZR~gSRzH8%!93#`>YDdEb4c@UuI)$7 zYn%6TK4d=BeC2>=SJv0iRBE_Qm$>S|1V{Dk(n^n7e-fyG#1s`xF{iW`;_C6Z8EG-X z_4#shSBp-=cM4{9d7eLYgH4F1^t7|2CnZu<`D0{u`bnlxnW{D~GSd^gCH0)($>o#$ZlT6=BEdYFnB@waW*={-;kT68jk|x+xLfsk z)NZ_SrZnzW*Do{|dV4f&N(Hff<{odm#LZ`GYss3Xwk|W@^mccK%o=Y8*Pp{?V#}_s z*~`oUExVC6rDgB2?`ZiNi5uQD#yC`9YJ$T^jC`P8$#eryMT)8jO4^3v4r3e}Mdu1D zfT~|>knltYv!dlx@3LetIts?~$!1!s)Mn3ss5V_?j%roln)bc<`&RQ^d)k{RMq0~? zPjf|wQmSC}s+aPNRHrl7ywNu+c~AQ>4idd$O(?+ z$uLvfq`UIJFh{iM?0x!j7;cDy{o!)+mNtIZ-Ve=an;X1_q-!ltyxct5ri=IUiSdM^ z6V0w|1Fm0BG*`48;9AketZJKnSzEHT5hMeYuk8^l3r{>XBJ{x5jhHW1c@FlIPD%a^YV7RoS&KZwj0Uy zU+waf-+$F1CGv+S7-g?feU;mv-D!-u_q}%TFDtpdE2*P7F?mkUnU6ainDcmtQT8po z2F!B=(lPQ}HE^8W-;2hX?x475dr#rD5F#7B7ZkTo5_1jdl9_F}|?!iW4p61WqxVV*; z`|!}xQH}_Ti{@q1>wI8ef!5{sxz+tV6-e^@JoEVusU3tk6$K{zvJ9Kef zG2V1`T-2}m7#AdaY-K~emO-_%B)fc*rCxJKqp=>T_1@9uKRR~mP@FQx5liyYwXtLs zI?^rAdf906(~g%WFTV*Q-m+8#`U>3Xd|M=rqzb za+G^~z?i4~M?$BD1nb*Xv^sin6UF#U}HQfNBXBP3BSnj4NqNXVB1Q zUp^$49W=`J(7V`2(#6@J*kx}7RQX(V*{Q?L{ayQ*eR{Stle)F{elsjicl9vyl5T@s zZQjuIc9nGP>pBlJn{@Ykj}46{d^Oa(xcimOen-O8>N|wq*|CVwTS$uC=B)G@IUH=*3CQ#$SX{gxE6ChTiqX`$+K)@#3jNO|QR?bI)Vl+L@F59lZa_iPQXI zj(N9#kn6xsP4gGoaS}hxHZSYp_r6@0@KUyUSC7kGv$M@jJ$iS#m~@-aA%Lm}7fonJ z_G3N!xEvnS*$wIS>=4{~377%@3{gLUHPM0A>Tg#1Oi35G>>!DcTZ!7G3QU)MDghItyNzRsw?vqp!$f5E^~O0IiXKaSFXpryH7t?`_V5w-N);68KcY>`d%|GL?xxC zx(9lco=Pn#V0_E$Kbxe$B}J))0#tX|(uO8psStRG&Oajg?Tfk>3V@ulRmn*6ihdm! zGjHiP#MOSJ`EZ3TFv9hxKfTm{U{9wj(%rl|^AcC?D)W)dUd|)ty3E0@%>L$=nLC`b&6lz+ z4fg3L?WC)2-0gO{1FAM$rdN+pE$Y(~CH+ia@B)6fsJ_5uwFt&-d!p=+6GpXG`z@rK z1xetC^ZYFq=lO>iFX#C^a~O&TtACP=VKf2b?|sd{McrNb9n2>$8W5aHhF16jfYPd@ z(rsUse8N!nOcFw&?m;BS2@n`-Ns{zVR=PGnf#bHCV5MtY6`1sX4kK(HM}fZRqwCW4 zEpY6&$IY>W+PS)3YhFL7eLFQ*hWicMYx5jg?-Z`0Z>q=hW@J!i+O}&FBxhL~L27I0 zQlkdygw-UdvHf2{<<58Ri;A{q^HIY0=^Z`$VI!TRMH=YPsj3abCptDAJUhsq0jS1t(bJcS0MWJnkKladOyn50=T%=W(lfn{ z>(S@Pu_CYf!+*u)Ab1FCcC#SrzF4cf2x2EvAo-UypY8?d>1WbZo_`*o=rS@;+;|c@ z;OR?lQBVPGmACa*G`_;p_?xADG*L=kSdVSdf^%WBD9`iHrexeEYKz^qnQDKnbX-)v zPTgV1U@8%VsZ;oA{y;QnsXN*8)Y89N+Wvj_xV9ey60zJgM0d&V!2hD{DKEvj{1a_& zr0fG22up+7@c!SleXP){wS5$jrR`T;dLeDMls&l)zfJcb1$LC3Fv8s^5E)T5*3$N| z_1ZqRfwqrrj(oMYS0MV#h8jP-e5|{6h^6skEsY;hK0<4JPxY5>GEVi3to1LkBrWq` z@vYI|T3ui4b}`!^Xti_o6fy*;?&6|HnR@`rr};CZ0snlh+{0D7kXG*UEIDXoA{BOSsA39N-KMR|UgGh!Kt~`Mt-dg?u zrF#Bc_&jk(1^FtYyHMdNU#m5afl<<(CEXxNJQrm|6(|-IQxWmQ8_}!kZnoo$e5+Rb zT`VVsyP_tWEPSKv-%K3JE$>NPQUYJPgvO~xm@1vc1yLZxlOxcf9G0mJ>L?&fypwow zKhMlRDG+po&a!Y&2`;P@w-B}3ikya{V&iJ_N42&1G3_x2(;&bSe?JRY?)L*wQn~|O zLXfD4&c$12(nTEX63uR1FxARh?ia3pYXp7E^^jV6#;Nf{0vb;&TBit~0hVhnm&`&9 zW=2{>M!D(Y5y)eD@=7wX<{MmK_Y$FaSULuwXV8}bi2+X-3Wri6#f^O`RRrxi=1Cok zx#(_MWYbO25*RF;g~3ue`4;VTdN?%F>0EC37C|Bgo-G2EQJ@BL^2oA<{bqesL8V%4 z$h6i)7&n0JWD(Mux2=f4DlWW`OxO_iueX3D{xuqaNQ-B1=ou@;Vim*xa3T}GX5y+i zu5i=V*dqiek>Do1@!|ZR40SAoQKzKZOyx;KzpkqWDxX6j^WyufiFYp6&7|34WjHffg0j5VLC@i*(u*7tS{vdHT#?;<0E@z8Er zR9HaGQ)6!cYU9g*XO@*&016JU-iPP2y<2xn=DJ&Ap#X7zf~%=>A)*($B5_Bhr+lC- z@%w%iFCbpqD0>&J)zXj!!I>uFLJdmYIGX~eI-q^aJTm;%wrPkr6 z0MVUbxDV)&%&J@~NXaEgSz?9c;|WqM0nUkxZ@$CguFK9fUbe=k#Y_C<^m$HXxnI`8 z=)e+gv3pO!?lm0+)ik3MQ7O`;D8d)1e} zvor_CMf5&AiYvw}qwbLKQbP-2xoDoaClYXaVzJ`4xXGU?#Jh$zX*G_PBxUVdkK)S; zVmh%hEom`gh_uw+6u7Uq?cM?s<(QjAMHC~~rZY0$ zXH!=vWnHsfQ*gWokL*P_4)xmUdLoUoo{0{}Mw)kQmP;&3m9~~^Oq8^tKzME+~qp0Rro1=24A#8Qmim7)}t|ChKs6>_8FQ!oaBP(F{@dDeh7H{DfoyWJVBcpm49 z%KZuLi4B%f75Zk`v%0Na+=JW#WKDE7_n{&SF+O;SXQfaxHLMQ*62aH&s*ix*XjWf# zf_Z%l$g$`3!f2V-8)4Uc!@U2NF2RqIWcK1w`?%ZFll_2dI~P6qt^z>c{TTBe+8$<2 ze&NqPo=SQ^o&w0(VT8Zt&Jg2gVCd)9`Y+r(Kq>=--(f6H6^|Y8`vRTRuccOSgW3n( zz*AX8Nvl|%beLp42H7&8;Rdk|wbk>#K!yI?i2bRV7>;JYWoFJ(1yGcfuYSk0u$1Yj zRafcRCM8`Xr(SaQ4<-}71-chCnO-Q6DzWe&re$@@(z8wPX&MSP*%I8Bb+GJ2pp{zF z)?WL32_SqhkWJ50_2Mv5qL($mrKHnhKhY+S{H3x;U zk;;X!PD0EJMNJ9?U|W=#Aw-u|1fG=YHB;Za0Q);p}Xc_Z&*2QqG8($Y(HbsLwsDd~=k!*q5y9kGpw>f%OZ zFEXOu-c#~Rq1+#(-DzMZZf zPjPW-!blU({gcd;j+QbKOVMuRL#7f&8Ixtk(8w7zk>OLe5k!>#ObBBdA4vZj^D9u# zFRF<1OV1{(DZZpetp;qarOQ-D7{fob|9tM*d;+K=L#$HpFrD;~oQU1`G4~kfsx7RSNj8@U{ts8pGozwax zN`YT=m1m8(t2_y0xys2sw5p5J{KQqhQHNgzBr*_!Qz;S2ZV+$%(-o;Q)-AF8r4@8( ze;Fj|!d`buCjv9H;vbH@tL~#N?Y-_7B0h|q6~R_#%P`}ptoEQb;quhA&(LZiHhiju@zAF6f%_>!k*)fj(z9Ls~kTe_m`FWMFrAWfrzbYI?nNtJ7FCy*t+H zZl1H%7`=6)-GcArC+J=7StH~k7y7)VwLcoAOS{UtyRrCU5^=|q)U#e>qKD*Hfy!Ai zEUVbyrfwr|FY6(hq$C-6?*pRVCAq;^MK=it>taFd-5WV9Cs3;W>Uyb6%=cOVu?ABk zH;f(a@EL+qke_DQq?BKbp(mxpV`z6uc@VCQRoS>)2=kS0ONxj6D11ufY-F!d_T0JJ zT20knVIf18OcUU_SBNCM`;9Q2BnH`ZeZER$6Oav2Z*-oATYA)8Cc=rPhH%NHm!Xj5 zbAM0^6H)G<^ezlkw}Us|?-Px^nKU$3FBAw&Jt>%3(kr3@@z$#egQH=+W{3+DIeH$f z+ddFPQYGNGJ#&1SC%Q@FN@ftOTv_Js*6i#vb1Ea?e+zq|W&2l&w$DHd|6@ zNgB0W^w@vbx#;+Ympz6_)$uVbC>!mv!A~7C>7Q4`5b;FvWpUB+W$o-iOigWJyRrfR z@G}TGE&_jeq_Xm;D>^(9y~m^dTImR3@eMzyt{`e%^aGUcNGh$8JyHqt;INytTI4@m zL?92exCHX$nAuuA(yLFJ+bw<$K=u=L*)mG0ZSm|KR`%+;>{XJzI-dPkEBi=Ywk-0h zGRfBRUknsKvS2TEp;MoMWIHpME5emOKv@y7L6N8pieclY1VI*S>{OA74R)yqJKErm zaM0fw*vWJ~UG8XoCUBaDk4?{4(^^Qd&|sL5vBp`_4-Sb3Q(HX@a(bP2Gmx0*9!xYM z$H->0)*D;v(iDlvGlw7NHptZX^wKd*j zc6p$+2iG?k7;A3rofE`_WN}pp#Qs>?z{Vq$MJ^;SLq&laQ>yI`5uS6}O$Nza}2^_o)evBE0H&0h@ zS}64x>%qW!QXI@N-fC*Q<~;xy;o!*0(yd83)BOF6vSWD6*j=m-uqGpVt6mozk)s}R zwK(^VpA1_*qHTTe!wU4+5*9)LRfM6>t_{WCwa6 zwIkfPy{Kd|EDdb~gg6N%kw3~QI$DLKpfkV;qNZe9632Pti7JoaQ$o?ZJq<>uI?qzs z#P%%P0pgwow)r;8PO&VwzS9}1eot=Piwhjv)Y*|It$1UJNY@U88;tf)E^`bNPPn6E zm+4j=da@=kjAXfj*rlV6UFPR;7}VzTcq_XhpRXia^VtZ${3!vF#o*@wFTmjDqOmrE z|Bd|A7Pm0?Qvufk+A-L_0By0UKLTqPy9xk3m>;!Qao0}thv|hn?1|5PMKU;1k&F}G zXVVceN->}Hi124ua}Ty{xSG3#`6{-l`xNL6E3*++DrO{n!|Im^>o)mA+=yx_K0y`t zaS=q2q;WvO7jmqXu&5Ol<*S>lx-oI_P|@WYJ#t!II?(0lENdmCmY#N%l*AeSYJ!%B z#qh3LvA2)18D1Xnry5}=EVY?_qQ#2V-#FXN+zUI)hghrcFA8fjsih$HcR+aIj}2|A zHAAF}KFdT|2amEXVlAnyYNJ`ucu8#;5_zJz`L8QVTFk>I)URsgeai80q+)kTmf!MK z+gazWYGoh|@zPKr3tZwR#q}+Pi*zKzd~$N8>r=P+#^h^RlajO1eszZv%hGF7w*m=v zetRmg+&hXa)um7#Pp{|L-%b=U6JRwo?8IWX-V75%p8$ z1!q{lsl%Tu_rk+R@nRZo8iR2!kif#o*CMF7*jW!`4Cu z`?X?WAYXXp<3C>Jc;G|n{Dn@4Nd58nFmf6z)PAn$oKq%R9_P(koA-beIRhJ$_?L=3 z$_TFBYa*QUV*fhgV4S+=T!J-)C;=!v%gpsKC5?5~`VS}e!*BB}{+@$(_WTuQng?&3 z(fQ*ac?+iEyqRgPOb6Eb_pQj?=S&O!6%^5hr@7m@unJHu<)WwEj{(Gv|45m-7RwGG z3rMuW+t%tPDN8^gaj3w!wtfq(Ae?CUqKdg?W)o`)TRc2L&J8s7TYt!4 zCR^{el4IALuC29Zvd^-^#Z0z@NppM_YlU=ZRo!G&cv?S`y^cv3%xyH2ovy|Ntz@Y7 zGKsy97EmAUjIBj7R9}LW7;m}gkuRF(OM>6&Scf<2jYJ1OoKq9%8Jg#d2GVhgj_AB3 zqW2kYHR*>0%buIb`(xX(VOy8Z@^S@99)D@yvq zJ@L=B=Pszt=VX|?0U)#?Pnq3-7f6elq7POA9ntYsU3SU+$W3@mco)D;vu>So36HFk zmHnD$+^mc+P$5XF)#J7TwIYa;3|2NqfJXIhuO19C+sLCnq+>jE0vgnWvuIT8xPT)7 zt3q>_9c4s3b;Ohz;K#z!2k7JGf>X1NMf-*4LcMP6qG#pN-uI0H ztADZ4H8u7yVB>P@8<$(spj@$(yHl6D<0s|*(5T#iyBd@e@vC0CTz-Rc#v-E31~di> z8k89-Wj^$c1R^{rYGO5P7AR zk8{^vVx8X_r_XO0;RUEs`6X7YFkMvYl~XvD*fdF=csZOb;l4=dC2z z!%RrV49hz)UWk(-Ljsp&tQU~M+*B_iOTFa87YfJ`H_cEvn^YN@&O7~Ltt8z3E=;@N zNFk-;BL$tA&-f66R;*C_pKpETyo09U0RFXez^}$%;lv--RlPcVjoD-%|JGD zehnxBv6-qS@N6wK0-!q52%L4k2WQ)HQ5jO!+Pm%zs8YD->N^2!?g@7Al|7t`uAZ;X zov1^t1yo;i(Wu7&HnaESc*WrY^D4Ek9&^87ZjWPD31&aR%oNNF^|yM==LGZjam+so zW-q}E&IVO2;@R>j3xLFMBlQD-IWXdg0u?-Ru zACZO~(lBX_8vgFM)$sq+H4H{w!|Fw{3mxg!GR@y?+!uq$FDlDGlh|A$QYBg)FG$=c zN#i?ssnJ?y(v8Y-k4V*YRqN6L4IWfzwu!9(Y^;Dq5(MjYdv$THc15-xvKYhb({v-~ z7sfX(RT!dS78cJh@ef_XFQT|$fp;%EuZc)I z1J|Bc@{}%FOv%q1H)R*orSi@%brB;i>r?TGyxo#C(BXX4xuDK5it~d0*;r|9+q^=GSmR&5>I!?(J1#3H)q+A_OEaE!xP zR6rW>oYv3tkNz9sK9ZY=g3PuCQxqd0;;Z8 z(QRL%+DX6kifC&fak1T50*GX47dy|bBRAUXGEL}Uk%C7lpsrgneamQ&a`arr=7k&XA|{a)(41<GEvn*gZ3Wlu|2 z`#pd~>K>`~Ls9kpq}j;t0jk&H$U6nOuh8IV0rCri{7gOavx5A@R}6T%>OTm!L^oS9 z1v><`ZN3c*NIf@HzYYE?kjt?@`!)MnQq^QGddXypJmqrH^^OM6B(soOCYD?1;9~i1 zm8Fd{sC#?)Ic`LdmrR*SUJH10KnMJB1@i+jy0~bh{7Tv5@A)-QP4m z3a}%b5Z5Y(n&+sM04*1fu?BF%;&udd-M<#zQrwX8ES+DgU}*> zYRDy8y}pXosr1)?>SHcinT`N#_Jg@)nJDRNKpPJ5CZT%uODR|`o6@rBVxMwf?hnew zJzD7chOM}=hPVM z-Zh>-=3%xnTeNNUPLE94Ug!1ZNV4|c)mH>ncM96(=?7G8x#+$m18h#0zEsc`bymfj zIte60LUU;*zWcV>$G1SVU}VGy1T4Xn+}=@1H=%SYMYzYYI`*ya3`}o@wi#L zh&UI6rDs=yZmyo!?^kE?*^oJ5EKZmr_rP#<{bx2WuLY33kCOhe^&l~W)0N*(@)jAV zvMQi)HGurZZo)z6WaN|)ImE0fod`cfmO1eL0sZ1lGmn!rwI=}*buF zK8^9Aaru;!niyh>Bj;>_B6(@n`v_7sZMf5-_dA7PP7%yd?KNc+gtW4mRLn9(v92lL zpEkO>iQX=O7s5%^^HWsjY(nG!Q%~W9QO2Q0-uz5zW|So|s^FrF&AT5+4iIZp^DMiqQ zkK|@`m~Jsw<;u)eUd3DD|Bg(a`92R-EcbuLqxEJUUntU*erX}F`lr#-jquHgo!XPE z)^vS7>cfYoT1iyKj81>oNx#;%+`m#tSnlVXsEl;FE1VS0^O%!Zk_>-9I@(?w_2x1fBgp9BrAGKY+DF~IS-TpYDF!j6Jk=w| zlKx^oKfhCOROmOZiuuDM2m0Ss%em(k#>)wp_V16b_vY+ZvM8*|KVrM4sQ~4qlva65 zE4?`?A>^{qk$RlWzQ0a_|4He4M9zx*G<9hHcVRm-Lj*Ms1}!Q{+_p59o3MF?Fkh zLMSfZ8+8ZAaWXM=5ytC@%v|J=eN66dq?E+63_a)Ey7aMZ06mV~jpvEZ_XuYbt9#5@ zW`-6d1$P{>>DvWR{V@(zJ3AH|pC^GaOmD0SZ2Rg}C`dyVTO5XGk}CR{+ev@OK@3g) z?7pZV%BmfpD!W|1h-I;w6GZVQjj}hH>c{qT$=My~ug|>a$XSrTl2Up<%cN~0Z>aWA zqNApc0Fe(wQI3_oFTJdl(7e!M~e~kX=aO@92qJPaMnr{X>1XF5Q7k^}!;M^iO`q1G`HqP4< zs6LZ#A>ctg(Uq1DgQ*0w#U2r2;hR5-!EL!(P84`h5D!uo{iQqNSe!;US@b;Yf0HMu z-YJPf^b-Fb?vWPkrgCRi_py0r2sgrm`kR5$@cITYpC-)YfNY5u*D25Hkxp;~epM&M zzw)c`N8* z)E$ZDIoh(1xXEF@urQBHmkiKnQg7`ZmEZfu1 zP@J{3oq1d;zDB@F<~57PIDO{Ri#oT)Nbp<-B4=62t0FJed}~pU4nF7Z*4vEL97}Cy ztgdXw>(6ZPWMNWfV(Gx%se{-ocfKbW)BLF|jn!LQ>RMRdj~oZnm-V6ZZ81FarqZnD zNr>Ag<;_2q4r-Sw`H`B|Cz-JLjMc~FjCYdxd1TSh`h|wvlx!NDGIvJc>c7n z@*CeEsTT#~F)?xyn!ILtI3<`=dgNSm(i85k?`FMII{XPywXiT>h9G+@$l4Gz9^cBC z6e16lW!#K#OIpaPZ6H%@%qp%2+a)0Bacewy+QRmbLIf?(=%YNjnF~)cePzjc|K@4f zG=EabP{vl-W~4hle4~d)k*D-|PEOKsBm9LtVLYVxsyj72&}_~w>o{qN?ts`5=jI#t z0m?%ZrXRWkWxa5W)xC|hJks)L%{tt)6O;{TvLp64b6r__4|&F%ge`&vxYz>a&={c}mq3EA{7QGEN-E+Zm71hX z=x9Rdv@_5nbegvar;et1+KuMzaLeq3iee^6ar+hX{*CBZIeQhUrL{oP9Vo z%&`v^%pvz-av@3Nb6;X;qQ?n~<$<6_dM0(1Zgof8o9XH^B+QApPgmugb^}VS72IN8 zO+g4y=%VNxWil^K%exi^t#htrpYrx@HE*R50Eo{FWX;jq7z%QtL*|T*=v+C` z5p=7Es9O(x4+G@bjhrmm&q%SBl58WYn=NW2J{4+iEBwtLD+gor4*mqpKk>imlOIG@YrAq%P(rN1md~65+kLBOtoV#VW|};S?A1Ugj6HmwdZmp0mxP)TG+pep8=pi#fUuE4ygy%onS0l$1wz~LVAt0q|~qL z66zuDy+^^^?%g6Bw&f|j1{8V9pDj-f63ANjpkJn3j)k>OZue$Z`z#G~*4imuqE_63 zP>ZGN>dSPGt=xM)(I#`s7IE)A`RZNxMzqQxF1o|GBp>c7E??;n$s2{Vx};sv ziTXVGdanF&aQ_sbyuR?geLpF8=~n?h4KZ?{YOfWT2K;_m$sim(IGp5)w`C`pqp`xa z4LnFd+>x9O^UUE<|5PL;0lW?eL}zq3AX++>Fui@~ZJ9G{V}K2j zQB#{>JaUTf%c7Ag6R|f%>c64{&KeYhh<%oGwQPZ zlBK`J^+>k)_Ogz_Q*XrU{|-p%pPh|L*43R_C5_0AN4Gk`5x>_-ZGBz&wRZXR2IZ|~ zIlGFm-xhyI`e=(ksO6tR0!-FI4*R><*&*7Mc2Xr5-qU_JodxS9J>4oLX^5tq)F??J znsjQDYU)U~YKc=#uFycKY%Nh~-;!wc>#!qNnD_;d#l$Imil!<76bIkwlbghOX3NLY zd#6T5r|cM=T1Wfnw77!ua)0Nl(di&dh_u?wf2_|`#2*gDOd|v}}DqxTGYJ)Vv|)p2yOzd0r61`cqBgTaA$+f320W zo?9^~#)DVUh0&V2b`ILB#4}_ti^6#wHhh{Z z&4>ewT2@SbU-BfCfanJ)L!Wfxti8N2UMPf3Rj;m=!LQMYXvzz<`Bd$XA9Q1!%BC{j z=9y36p)z{W<&`>#I4@Tkwbx!goUYD})?*7270Y4Der9;n!2OH2moL$)N}hA`bgRqKq7p$~Y&zusN<%EU`=zQL(jl6@ylMl^drVk}}9c`{{JG zs0vlmBk2MlOX1WYO;`p&ga{+{B(+k7G#>i2*||4DXWerrvv17cCQWPR*|_C{|20o| zXa(}M{|-hcI?LWM@?MWl@_2IIzISBo`is%M3U_sio~@BIAU4rTva5(xlGq`3F^LTd zyZC;{qOPPNNzn${7SXH6FL$w?5x4;%q%g=oLt5mRTFTNWh-;iIRzbO>3YSYyH!;G? z@sp*eS#Et1Kvq*zi3CV)LOhinxToaTM%fB-YH~F zzdy)j~(z{1q-#Wnv!n*23mf*bvO*K>zSHsdeuOJowr)o&$>Anf&`k?H0l*6>8 zQglyF*o$3&F|B3@2pBtXBNst1vj%MYrWUO-2kz_=M5YqW!6zN!y4p{Oycc;FJLVfSIeP;)jATctZ)n8RkvHzUDmIS+ zIyx2%BX37^hBIf6k#`_;y5^qj=xAroyT+IU)dM1LRQF+zE|?ak5k{+ZiQ!%Inn#XT zx6^TT==9;aE21~(Dh~0=Gc8jv@3@h7xa?rbUQr&QD#|v3&C}EiF3Fy6+ROEFOTANQ zx{t>Bp^9TqCI!XvqB4iGT&+k(B~R7?s?6=u^}8Z7)J?6$$I7Z5VXNl)Mn7#AHB%Gp z9LpmW`KB^uQtxaBJw9D)rABYFXGUWI;sNde-~#>S{VXeWnuNU_fc4}jb({J0@4E!I z2u1oUv^~&4k-VHko9j{UZ>2b!>u+5)cQ@9EM2BqNXmsfbU zm0VPS9{Fn9N>KkB7O}e_K(9@GM=1pLZG>d&rzhG1^3L2v1NE;);84=>2SFozn%3B! zktcqWhItATJsGEuk{*fAzHH%Qe$)}&pNRDWjR;Xi6S@>;ajSd7Kf4_cREJdWZtid6`idO)@D^y zx7x51-=V6v$*F)f&hkx`>s}ilwL@@%m`nn~$e99le3&&cw3aF#UhbECJ(I8jdu{Wy zUO1H{c@{@PXPQQ8aD3MGAU-EhC|&PI(an}VRFe`{ zb-U72Zu(nX;v>&5ZcmGg6g6iH@=Ozn{0c}^tk(cIS{I55IcfAA9g#6y{%l{sr?S&j z1h0Xri^fQHbbK0g3&gjwMInpQ3iG{VsQqasV(74qXHD_Qry*H2&>af_{DS7ax;d_S z8-Og$>rPB1UAd~!Fs95p)TKbusk41(tKpaUB0Kono}NTlpM?=(Dv!emcX6%I zM+f~VuYUU!=QEJH#C&^kx6L;LFmgz>lN{k;3IH_}Q^RA@89eyJ+_|6@{x#lCPuf5Kz95)|408nUm`@BaZ><80#(zRne=k zQGXkK4v_GsFZ$kC;60&T3!D&0{^}*(Q$;6fiPs5SK91f{;5`eAwZQ+(^zi>p;FX(L ztFhwCS2u~o?H~_V8&2LecM@zd`?XGTs2 zZQ&=WAyimUofJ7^Z4~rs%OKE=G+Pn614hm%pJ0h1v;{!&@`?U8EglMsy(pRJ1E3EO zFV|CR3+sgMy+U26ixd_Z{!);4C9F6)7ZFHlT!z#awPyF!E_(X}3%*u5<-yj zrCsHDBk=RT6X7?SolT8e>yq)A8Kd4xKy-k zHLXXgD!*{!Uz2jIz-_+7U)T6bt7>H7vHUkRvi2R2viF`Uzx+Ga=7rHEy~{`cfZLO; z9N}V4RUoe*e>$B{QB7qQ41likiIo1)duv$nZKWn`l#oPDlT89*n(Qgv!6$E|rC|X) z>7%hMS|Ql25UO^oj$m2S>SQ2My}4KsrwfbSOf9tFmsq&tC7$y|#(Nvv9ApV!r8@X3 z%;0}s#IpR6lLrJLopC^g-O(R-Dj)rwcIcO%8fLv2!}msXXT{grot-#^&hA#7ccG-m zASZ=tto~-|`sp-Xp22F9j>4`3uzDMmzS{Jcl*itZ_NGC+wI?!+FK|;6Udx_DlclbH zQ7f;AQKMR2Vyk7j)%~3#E04G%!(Ea0$tL`6Ca-jFqGCY3Mb2G+ElB)|d~qj-wJW2n zIbmG&lsXp7=WV@`3DwsPBQr3xd=N2te;seNQs#Qw27dp6CpB<-gsf!-!|u7{2!hHG#~6$T{ixL_ksV9W^C~VpkH7$#4=m6YI&Z zNJie!yyP^A&DKDw=6tf|e6?~(HBw0vfa-&qx6z>Gz~~X5q0vfQ%uRN$_OXTEfaiO8 zw539KL*Upvtf+TyzsN(oh)lD@oe2;3c*k58_g4SEc=+z4!oys;QmjXF%%ll)>Rx&P z5QBUk!vl)}i}~k;YEdKki)E7z*Hc#u7@N>DGqNIa0L=1T!!l5^rR0WJhJp6Z2umSd@0_)`At(i5FqlR!Sfxaaxr}gKp&_+#{Om`v zOy)M}9ZmJoOSa=X41mYu44qNd|=6QJi`a3_t}(L>`aW8o^SF`;uc-*&zBq8&~Wyl&)GoJOr{+Z zefoGDvy;{nIY!#r#RTJK$}qwBH8;7>;m-2pRJE}`eecwU5M(e(!hy&ECQ{Lr=CWrp zJ!|c5nLD4!OwzNWU0tnNkzD`+FLoxGqn;h$Ofm0%HoKots#MuS^I3i;1iGqrPhwK#*}4AYnBIKO#u0{Z3sN0Y#g2=QW-kh zEWoM`>vw}tLncMMFeCa17L9@|L61?!H$O$a=9323#h>KtHNp-s^RJqsV$73Dw_l^D z<6oiwF>%R=t?Y;xgH;TcOELBPF0#VN4_yl0cJNRj_A%8v@>x;#*P8G`o1})dB8tb# zOk6R^>F#JAdahZQ@e*puk{AETv!?7E=LMd*?5x@1`ShUu4){kjc7YL~dAX3P!?2as za!~vOptLB99Qjl2UsEd5I|0*G=|3oOiceFp&)SfzLMssTYX{7PO9z*E{uRsabT%~) zKi9O!yg034trm6UVhJ|+{~5_S57&|WbF>mB`_w~!2hTb;CS%EL9`TG~FX9=m=aDcB z10Dp$xf9UXa$oY9}{Y%QO;=cn)->hueQdCAhm_dpWn zz1Z12@qC&q<5IKz3v+{4NWNYYp8yo8iceXHO1q?L2Qb6>mMJ1dOPi_Gx&kS7g(vvo zq(&bxjZ|(Fw(EVfk@8k%vGFpRGAA-pzF}HH7CO5|G_01NXK<8zqQyROi?>J^obN5? z#B8ny2bO_IaS7u5@JE?)Tdsw56`z%BExr5fd7-(K^DE&8skKl}HuECcO6{4aszfF= zgpGx6igM;*y4oatJgt{I(v2|o5_DYJMCv8LHA;s{M@~mR%vZOav*wI5*|BHcLo^>1 zyOE#jN5)Q@U7G1_$d0j`!Oz1z7ianjAeytnO(VRP9cj8E!w;h_qezy6 zpG1jAS;80=DUwy^VU4G($uL948f^T4dDTA#w~z;12sN3@{?RRXnY5>cI1H$f5TD|s zO?dH)xDeB|5L?w1XrT!-!uNr9o)Fnr((4T)^$!#Y&9U#HaEelYm?Z4wfYn}&C<&c=9D!l9v^nc?(s(R?lnV$mq{fS;XsWD_jS;OpQnAT z>I$^58&xSkC0sUag=%OKX^G-#jTDJ#QSIkrtf*p8kE;?~=y#Gt-_#4w+GFb)00~xP ze1(I=&doTOT|Po4Y(H|)MSmF~S^YMSAF}ZUw{(XtRh>O(?vl!XR37m(uZ+AMI?Wq|oYxQs zDC>)M9NO=H+fp;AM{G)Qr_7gT#fwRUZ1u!_uj({f#Nd69y+A6kHqRdg5@LUBLj$}po=t0B`A}hG2b4Uo+dUj;u&RA6 z1?*Mr>i|I-E=V>?Hn6&+9wi&lTKJBwJfh8Jlk7A)SgYdaM_FlJF9n)Of!HBZ)ZZb$ z+9zGY?@c0;@i`Df{vvVP6%Ka>uH#G4VL7rXpXs_rwjC|i;8lj`ERS?(3T4X^c&Wh% zS6kKaLku96RRsAAWjiFxphSk;Wk__qBA3{2Wf-yQiq6gDDAR%gx|5bn%C>?-mvO!h z!YK(V)E(4fY0Yn_RSo|OtkowDvVnw>)qF?1%AuRemBEBx6`SGNk?Z9w4QK165IU4c z260ppxALXSs29tUc{aK(o~2(hdyl*Dr#W$g&6C+b5=!-@nWJ;_OjK)9-6dAEZzvL`Zu3xvmC_3xn8!S zzp|h7))j=yu9Z>N$qFom;cD9TPDiW-3B1lzKFe1%4#MEcIIr9!atnKW=FxQ-gYN`e z1c`thugE2KGb!w+FWwFDy5Y9nMMwXDBH!a$<6IFzb2w87?1}9u9@!E!?w(rwh=h8wWrcW!IgYkhSIqGS!Vpo%Zx0!|ypF#UJ z@r}r6X_L`O$bePlll(JiUaXc*k2epjPYV(ft+i6DS(=(Rhd0+hP0;j(&SIVAEW3ox zIs@Ip2TO)GHhiOO0hy}Zr_d7sIzM-|IKmgEKZ8qc?b%)x0=Dzk)BQ?CSE;Ja6HMV;jqjw!}ps zKFNlK9(rh${f`F|#3zS)G27ly%q!R%CB`Y7(UG^$C&;|sYG-=+WUqQ`meZl$8s&66 zJlPlCWt9EFr-!@z(1Kh?pjXzen0%)sa$vKxYAfk{X^9PkvYnVf?6^FC9?B&XCZGOA4??u-ON*hq{E1#T# zrxO>4rxWd~^K_ESM+1H4m#+*BK6Vp6=YX{g^CC2f6}%<1RTyP4?qZRRG`ehqxDgam z^%DJ%FSRqJ$R}R#sIm!hk8NUOYT8qAYV(1tZfvB#Rn3I8RpZ=F2ggSuvphTSJ2kb< zj7Ku)M)}y(s=X5Q#ot#7uWy5cZ4BwU{8}mKeawH;RHI*i`8ucSF)*6k&M|&JYAu)EzVf@Pns_P6V zG2ii(Fy3nE;c*NNC2iG=!#`)8X+n^S@lu(X$-?U}lT9P)%;aIO`Re8#u7^jM1GjcG z&uwnnJ^C|3STnkj5Uw`Ly%px3N8c=#zxd8T{&fB!$jkC#xu(^-k5;;Zmo_o1wc* z7Pw+}NvUJ%Ggz6g*8QG|*>o;N-6ag43M5@f!MbdpiG@l#-Gwx3kdqoOx3!hYXLt1g zKf*4DXsqn$`0fxTqhWl5ynA6T^NM`6j9CejYa6dF3^7A%`Ue00BsA!G-QR$$t?wip zrr3CV2UM05nyPReW=Jp_u0MQ=vPCYzc=hi?kJG=Ht0$!6>L#RfBIBB?ky3@;hrHBo ztSc{NQg}UsnNQd|TPyC!A1szQKyuLF|3ZFx0JAs%T~-L%%Jz zp^kO$qY)aKbw3N?ry6B$+1ft%JQ|s=7CeC{Y6HV;3whBgVb+=}<;S3;z7kJ#vPbQO z&GA8BPY3D-{kg9*=yULkt@UB}S}9^zF|lzKkDOmcL0uh#sUsTJhf-{Dnak zl}2Opb@ELOlCOV{x+*dVlDxr=5C%>}Qew7IfDauZ^?*a%4;-lIWsU+Rt}kzo5y+p>s8oXCYlkxql? zSlo4zq^ZXyJGJuBChrlSG`sFd@})@4GR8f)lWJRhFNwx?EHvoEQ4+@e+f3ilF1RP2 zcIS4|w#rl3AEGAgSZY7=|9{h|hNARBQ44iSWz_j4H~x<=0CcH4uy}!G+m&}&2Nv0J z!WTYRT*zt(x97Oo z-6B0c{Hl+(%F!zMufeB!ravKx@~Ivs#nZ3nMyL6=s@B1;AJ^WS&!f~yQV1V^!6TToAfgt*>$l=r zr8x4iKL0Axmp|zb{<2Q^7g+w8e~0kSK009z-I>H`xP!4{yD_^ns%Enm$n9NV^6KT9 zp~uv3bRsKr>B2Y^J$@Q+T0NEGx*<(icK+tGu$T=NBqM}FojzAvud+c$?CpON(U#pM zB9Q;Y&;`|EiS$d&I3&WO?R0fVh0qoM!q4GXHI-w#ny`XZHb62MM>~g zFSeA@vvIL?rTX7<3Q(-T))m`F#Cj6LsyCOJlXrEMFVWn+Yd~<-L!4BxzoDV-93)g} zlC5(t>6+MEKGvExjaFxB@@QA6(iCnM(vXt}uuvCr!UyFAGb&#g74L zs_bZka7_*j#4cxkv|-O%DA5hVn`gD4csI~kw};r`fjfnd8;+oG)?CMPF3%CWop?|a zYM;%qW&jO@`B|H~lLRct#Dy7uzk+7<=*;IzMT*dG?HI{RnY^HBOKjs0Qi=VtrY&J9 zrp8?)9NFM#jkV4op>PIJ>;vYA8D+Fc>F!ngaZkQ(-hpddciCeI6yv*EI zQBr!-U`CfM>5HYt`ktpq&t)3BVX@2s9 zew=?E;4>HDYP${Mfqw@7IuA0}y?JHA%Qv`IBtGLTGox>LTh)Yf9fiIxN3vg|URz@R z^{u|GS`5~aR_SoRb3=YB^T=DBI$pK}=W=SEQFa18DJM@wZV7FFEH~Tj_B#ieLw8@C z`6}-KMyk|0ibsyZ6F0byDmT=jSj^_s?H4(nq-sxN?zcaPd`S?-F#Bn#h)4%(p57|f1mjkeZ#rM|Ql+WZ_Ve{e{ zzcIb&jxt-mb`cHKDU- z0jp3vZZnhj4R7HASHBqC#GJWrHUz)AZ>IC8*>Qi*RGVxs3hRh`0>P8gmoQ9Vvz*VL zxqp-RvV}*JT|8a-!%T`UeNTG4^u09mj!#m}ZtthIX;=jXQ$fvt|JL+vHxp-$^TiI} zf%MW`O7*%8`s-?uGO=K@!@isr;}_YKjWJUX2xY%LFw@obQM1$j9v2|3Up;B5AN+5m zee&VYkXF>`#-F2X*Fy90gLy3$F0iRuV19b=R;aq-quI_Y%)fusPuTI%M_pX2I+;Iw zw7#R=b(v0!Z_|SwEZ_*Ex%=ZADA@ndHTs%n{`aAaeiohDF8ca5^ZLUbT>t*9Iq&eu z#6LY?Q}EOS=Jvz0sN>arqs?26bZ|akE_2R-rgoHWZl!tj-yNF%>OS4vs)IQ#x)R)Ih3sOE{z4f1!WXk$UoABM@loG6haG3l znd<+_;kXt4L?Di{qs-%nZgo{mF`xRnLz8AZOtZ;1mVLH2fBVfC zXSTWR8)5#6%BIeC&9k+E&Zs$Owyaqzd^&ne8|J|pG0bJh(#+|{vNd#NJQv*4$8JsS zIPpAJ3BiwJ3G5;)F7VhIYSkwA7`C-rQV;_VHuNk zpi&z9KUQKH(<|X!r0V}viEHtcl8-gDPm4A1Kb0=!lQodsjYj2XMR~98pVh)<0^Q2b z{*QfNGePx%S7YcU|BVGFYFU7_a!8LcFkp$H9}6%L06EwLy|XFNo>|A6w+7EmNo%lhCkRq(EWF0$;uu4U@HmWO45#!M|XvngOQfjsl zH|DvsvJQR?fCJ?+QHiR!v*M*=he?7ByLM2ff;W6oC}93j#7yFHeYj901u13ma(x=_ zuFy~0-Pr;@vm8Zxuqwr~>KQ%!GXU!qoqJfKk#s>w3pJ_5Zn64HKf<~pS@CCQrNeWac}aNH?9 zyup{n+`K1?**jo0Y6I)9jYw-KYq9tFN(4yn8ZlZAIA;w=>)fSd zLIx&-v#D<}7QkQlQd%+QNAHWVFg$J+W4^Qzu+v#sXj3x%Gft^L8s)_%l-gVyE;Vo; zUW2D`GVWS{=F#YDKM;rA) zWiqISH~YR0lm|I?bOQxSBd@32_knkBygTCE-*^wlyR>6O$eC!2cmoX|dT;g^O7mt# zse}(J)${+Yq;K?+QZj3H?vin;O?+I+6UWrwQqPLBHLXVJlYp=yR3P<^@TP4(%%i}? zV^%HP)fWR|5l!%Az4-WOdgRN>K#8XJ0T^%~kP3dRBzs74eypaiC)Rc1;04q}BFh6W zAS^p$ZYeOP{8;NM?J#=S<(%8nMQIUSPt0{vKOWBUJN&UA45~fij)apubS%y$$V$YSJkbRa9wzNa4pS*V8j4c!c6J4!-d zv`MWQgzjtr)DKR*4MZmy=p1Q|lKn9Hc@9~E*!3^c#;CNhM%s3I+D=Hjw*;%tZd*Q- zU}M=huuIveE=C`_sXm1T2IXQJq2l~iK|w}ArI9ibv1%6(a)x3iz7-8dP`E)55vi~7 zR#U#28+)2#yi+gZ?2t2xEP&*$6Tx7I$<_ObLG-p1n^)IpBue|ADs3$ZA8(9gxkn4@ zB-fwLmu6!NJuj>3D?MZzqXM!1E$FK<%#CHy@G|U&JYV^r(3s~diU0meHnk3BP1#_} z;$XHZAFD^rLRnuFzB`n?arc26%$J?tq#PX$12=wR38=`HGAGDq>7=A=G3f6zl~`Ll z6$XPFvEs~)>Vz{psbNv5AM>J~;Vev(LVZCvtEqqpKjy<59i~^|tgNdwtGTVDf>@MT zsWM3Vcj{1?1*_zfE3@8`vYuCF(6<{=k1DK^ec>R3F}u_9Dr_WADNSBgS%q5PK2Ylv za&kV$%G*K!i9Rs)Vn8E8%)o2)l8RN%Ujk#&)x?=#xgx8iWpY&(%`h9H-y&G~XoFTF z&=Zm~)HL2B@h+$D4UG3(P6FA0ZCR@GSfLSJS9A9lljxkPRxUmlGIgwg{wK{|#KsTS1rmt%eD6$%p>$WI7W)EJx2=+L>5!j< zQ%ylI6WgWUff>gn9O(tV&-RgPZPw1Z1JDh8&^!Gc@}Mg`W6IQ*Pw6LQBZl}R?S>Yem;9rmrA42ThBcas*$+7wjLu)oR# zKU4Qe*7UQWVU!-pVhR~Xbg4Yx_NN$8Xcu|cWsB-7=Fut0gwKZ@3<;tcz^_T~{NN?(~W+le=1fMbm z0t+p;o&oBkd17#S6(NPP>9 zV%l-))|QnX*Ug$R^-XJBi*9{W1){jwxtTyAacx8;YXbFF!ulpxbCA8r7w`GLc>g=g zsBd}TVITf8ECu4&LB?KMPQ2 zPnayp?O6=tRZW!Dfi3cCZ&JKJRw~4aHa{<{0o~XW|BhlDjqS*W@fsiKua2xbAH=9a zCsxEG4j%COqIzpU292yNM;$vc--tF-40fw)dDh=N>QBxGYxZ}5jO@+nFqjiJO`)ru zSXJ)@h|zbB0qC3|Qt>c$mrbQ|39NFp#t2cotr>unv2HfWp4p{DMVU^&V4;!`j&;W2 zE}|&jRDs^~LjtQ3{8LZ4^d65;=@FFVBz@FI%O zIhXB<4a*<5%Nm@c%H3H6pD}<2b!S11%QTnjKSrsG7^nng>Uk{mi0@VK-p0GYegAo* zOyG7qL1;LuV)9$Xh2-pG2bi^59?f`1*SfQkw%2x{IqnO{t_Mr7kNSt}L$@9c>H$@8 zEiLK6qJs|pZFI~L0NFul;ZH&J&_%==8KIa-Iyv`b?hca>pu65qu!Qzx`B>?AxuGq8 zUI!&CaJ>-AfF^TQ5&zOCxdSEiV%}^eebWn6eEf%8d^yprUd+jP#t)z2i{AHQULHlZ zNc24XOL~ALg_)yquDYG*T7b&;X70}GP(|?-;uJ6HL2Y`o3c(vN6$2W^Z@0><0{y%Xp|Bx5P*h&Im9_uK&S_8Vjz*!QrwEz>?kPT(` zV_}s(J~t9GnRwK5@zfgd96-vb*K(zQ)JyT3HTcSNYT2I^F|CtDB=%>%K69*51R&c> zOvJ+&#gm@X%Kj|SA=a8C{yClR&paK%5TFKh_;Y&MpVbXhXST|Fx9_BfY*7+FTn0hf zxZy)s_WNFTPwvX)I;=O%(aL*H!I6^an3#>|wP2)6oQTY#+Y8z_fO+|qK*-)mgrsBr z3WpQQxUd(7rio7at`93)UY>m*)3Gf?slfK+6xTu?sgU?TH&IcQCC z1b}(0H+Ag?rK>xQ!-JwvYPRt*ujpk>)<;h!+FAqJsemBSz#7m9fYn2&A&&c(6)A-< zg`{8rYNnn+zx83U8<0xn%+(6vyqV z=ZThibY9y6;FsSnk1+M^FaUA}jK4hv3akxH|8A^zWX37#G?2vxs!1A@C$Jp&OOqsk!!`3rDOQ|z#TyUYgeM*nR1E>Tz+m)4a%>F3g zY@R9$uFNmZpo3GGH>C_?Ud~Hqd{!`R8pb?)N~=QNK9v5Upx314*)b@(kP5v=chH!k zbwj`KHj_RA-Xi!lxh1hG{Lfd^Jc*TNf|8S1^OC9$Au^Cgu2{MqLia&6FO7FO5tr`l zHsS$2Ok(Z-5B=Sjx+k+xhfDXt?bW`W3$!GeHO+qy!x*GEFqxHbjF*vW7e<@=l~lPf=nrY=IB&S@Zr*(}%N0`Ck=QdHW@^(vH1zBfH-t=Mk)0{)u|5EZN}|oYD2q z{zYR);IpPrk&YvBBZvJ?IU`t;{1Xf1R?6Yk-8@-GvYPn|>5+qzS)k+O+{l!>^v6h6 zBmW9ll~u)h~|QzPS;_?ohjLFpq={ z_ZwExaqVs7P`6*KyiI4nVUcV858aRDwv*o5Wb_X38&8o{e!e~~(zaGNX@T>y>DxMtQay~3) z%HV2csqq*V#Jdilfn%6AAODo5jX~{xyn)ixF0r*Y=;RpI$gu-lS(H9v5?jc3EQ{t7 zdeeZh%){Zqb!*zYG-E7l5dFqMR!edj{Kdzmo>6=0TyQ<{7$jAd84o~;v;NkAK>(!g z2njV7r+rw1+g&IBanMFfJfmvkn7@xJA`~-m0|0Kx@Gy7>zfQx)u{r#1PjVd3syUXp zhHClC8F9chYBip;vg(yxWdfz776hbwwl{${IEwya zYvjYr)|40!-?Flf+hl<9i`{gYj(*Gh`Kxc};kPWD2aK2Mkq=c*0Smh~&dNV@)wOpD z``xznJal2&*VJkvt7Ml5sTw1yU$RV_$gVOzd;}$a2QIX9v@E5DbGOl-7x3siHiC_& z-rvE-|LtT}gsr9}-$CN-p3Hp15=VWOxZdY_tMq=C5&^2qAJgSW4_}~=so?Cs-sC@p z72&q`sOl8xvZsHiAyW|EI+>tA|RRR7ZLJJfk9Yf^6R9e7v$Iq?_gi9_JL_2@Vp6+q`Mq9FX2 zbS)Yr4}TZn>#7f3oXUapdt(H8y_Pb9_S zkjf146rN;yM?C_h_i+hlV4>=iE~cMM+i9_xmEh~nQl^>JO;a{lZG+1^1 zJY&uMj8dktAa;$`O+)&F7~|7epx0w;+LLzUNAIA!ioQr~2=snus9+ikwCxXUh_!>M zY8tCn%=>G6_n346Zd4G#*{4ysV!{t;Y8q?COHHOrX|e+bk?V9;#q@U)6udj{w4&5w zI`eL`53l+>$e)2kgZ8RD4pE2m$hmCKJm=^`C{@E`GDbMyLoo9A>w5=0tyf2ge$G^6 z4hwS5_Z?`ynWI>2My)Onr2I2jWB%+q#mrz6xWhmSm<8L{Uo)U`h7Z$gEtZt!(NjAEKK~~ zebhWm0Y>Jcq^4zczGp?t-y8f{2|E1+SzB+NmJNjYJw`;HpzpqCf!?!SzYxUI&w808 zsIRZk(eGKX*J3nD@08;>4@C4oZtaxB<77XZHR9&J)Mhr?vvZKOH&)MP-p-@&nzudY zW;2iS`BLP^FJ(#9APmPB%Hj4x{PC>}J&e##z2G9s*z4HO7_Vc$BYHv1>tks=2Znj> zo=C^%vM^Kq0oJdo3GtW(m~Yu5Ebpi5&SM^Sb5Kl-=yjC3&ch^a#jmtz9y{W?A`=Yy zHI^(!X*M=-qDUqUB36gryhvM#x%qhhrqi!n)MyTcNX&(ArOtk5WzZeM#3r*f+0SQF z94;S0jAE7-Y4LpK=eRjHV8anQKA*MVu}8>r0jq9$+{aqyK?{JXZFtRF-GvKSu~rdd zWOeOP#-l%EcdR*_J9gFr6!Y+-kK6A7>Erec5~gC*-rEK>*A}>y#~`?4J4``wr90(Y z$ihup?x*7x;?qATe*WnR3z=Wz=HRI@!WYG&*^~a3KJq>FYZ$Q z9Oc0{^GB$$(=z0{*g;|;SOJ!joPS{9#nl?4)z`Fncf$CHqjj`-C{-6~lqXFrAYO(*# zx)WPJLtJ!_sT5axA+&4-Ye`F&V#Q|LDnR~g zSXijzpp&!HGbU!A*6Y6K-RRNp)0-V}{a%0H+f^DNa7uzYhEF8)q6urT-oLd2ZC=CX zvIW#&Ez5+iR$v`_%6ieOb!?c!p>0;g@1x}PtOWa$ept^swh5QvYT$$d(z^|YMX6=@ zr`E^rdu*EZ#C{!3*ypCq4@mkUoI?#BT|ytHo)%BGq8taQ&IoF<0hH$(NrN}AxGFtl zg!({NK>7#5k>}qZsGgg$%2s;6fqiGcZi}JX{YcY(WMSh5Slr;Gf8DGvC9||BPGf0sQsAz<83IF6$(dfM#AWGG2t4y0N7$}b8spdxJ zZEG5c@lvN1b=k;z@GCKNbR*_7wsDGlVCpf^@?)^qUz@@TlK&>~!!vEIquit>inTU@ zAGQN0h!Me?snaHKu{VJcRi`C%&P`}s~_pk7Fa~e&D+YtSv#t{^^>tcU)HhNt&9bp{)Ls3e5mB7;tp-x z%6ioO%&K4{^bS3g$Ewg_lWd9VK>X|tMPZ-DOIk;2wT&I)yY5iY?W}2uESRdKlfpqf z4Qe_B&^*>oY?M(Fhg)dMc6MF6oR3lO9jspHgteeF9Skr}Zf6-|poSWCV#lDu}q9cl6nYP6d*F7d-Ey&1FdG@3C7plrr?86_){LOXY3hX4I*`goT` zm3XsK&+-CKBg>xvWtN*VN@lr3aTXS?ZD)*f?y?3Y+Z%aWeah3?$Wz;zr|wF6Wnq$s8rpydzQ*gcfx>J}vq=ZrF|3 zE(a+t^31M)(`e0YFCurmF#V6|?Y3JoQ6gv6Eq|r6b&Q98q{aJ~x9;^Bg|!%Ps;EtQxGN<0-z%mI)I63>@SwD4zPwAPyEHQ z{xDm>yn>bBO~-Tz2P%ktnflmykFj%(5;EYF)+~++XTo@!UYiyigX%c*d(EEuWHOg7 zxROZ;n=wzU7Tl=kc{N2jQ*mxBD|iRnn*PHE{!0sBupiiyX{HXE=Q`S*d%5PvSw%bNv-!g2G zNj=cHJwzEK(U&wz%%y_Im}jY~_kf&?oFX-mF7+5p?bX%MEvF;_Jep%oeV>{i!vv#e zO^K(GJzD7IHjDW;R!a2vA^l^&#VUDTi#OSB-_RulBOFYa>#Vc`BQ8>W8s$8XW&JY z|0nEagzfCoIp$*@@e=MmkP?^8^zj^XxA&CqD0YvTe9yB61H@E)$lu1(81i=jnyZL2 zc&P3^51@0G1gUGF>hW>rF?M;xQ0ia$2g;a16bq45af!vU46CH-C6nNr`N{bl3$m|f ze=_B_*8bzIxAz4vE$)at+wEqGNaO^Z01g6AlyUFzU0xRP?{`b0a zq=>_af$Ve0!psdc*T|F|Cu&Tlu#2pG@oV4d-EaX-mdBk(YI5NPtG?DUx<&(IX~$d&Jpc1 z$v}PoNp$^JRxU7120;9k!PBUIFhEfhKdSoPlPKgjR*7x0bp4Gz&d&>#q2@POD>)xo zdV_iLvh`{24d(3uqs?bJyKjcMJSC;ANsir z0D~(h*)b&;SW#-vLv9aF@CBnWvOI z4S6*}N6R008fbYAP|DNmGD;4LTQUHqbegdp?mFKIUfA9DQ*}SNJcdw(yUd^dxXTK% z!SvxSYgp1lmI16g<7pJ{B1=Q@?}r=3=M1Mlzq69m@-B0*?Y2dgOfPn`$Z=oGB*;Ak zPb2qGfHHSyYwoXP04j&0C0dwLJKI^Oo;oXt1E$qg7cS;d5saj&tIGlCoRA?o@h2xp zM+EAl!VZum(tK&rLPSv1JvOXikDHRy*&rr0L#|Pj!Sx{_so_C5mb`Z|GOFo9cR+Gx zo$R3|b~BGiCMVj5%126uDLaCgg$FvlyMeLw4goN+QZiMz4{z2;>VKcb^5^gA$bD9# zdSxWR9fV2N&y~XGf>Ub-iRuW_KUPIX%8z;Lv&fZFnu`z$c)%(aJaPTgCwfxX2ar|Q z-_xcCP++&wsRyie;n4eF6|q5$(@*`Z)Yj(9FwP&c1@?o78dw@e7ay`d1^TZ4;Y#IW zry{#iLjex;mpAnjY-FWsS7i-<9b&EFH>hEttYK{g>Gt{RGE&yCENU1jdXxJj=Fb*W z)kmy^+ac`QNBh4*8gtDcWVRJIXz(K#x$pl%sgGEP;_-vg>p0IYyRaFaHFDArg%H`- zIYZt{x~xa}9<#}OW*M6P80!Or=+t9YHlPGV3yed9tQG5wvfGGqc-L!HhCH)b#qeJ) zft6zJgE2M;aY*EnZHqopHMw6#by*F#U~s5iaD$4B5zo)j*lae`qv=3ZFPH2gqK*Xh zyGA0(_6by5mk(6w2`lG%b%3g>i&51}18B$-R;$u91fxx+?4Z39_e1Y;!cr}46MG~) zbg=5dK6*}*k+T=wdBSdml!dF~w4io!7TQ7{g4_v^zYLrh)KvyHbU|PbJ&>L}Wkq$* z(~0V86+}r_Zg?&hea0FEU+rf!z)_q92rO8uc?z%MC;TY2=|Df4`V1;XB>nb`eN|IK zc>JSv5Dk0xfYst?8xIkH73xHPn8I+7CEUsjNYp1|6BbyOxX>3Ux0fAtwy$N_AFPZ9 zi^JkSVcOr+n-2cTyzRU6Honx2?*9qaJBNz?#j3#85c3zS4I})Fzu=Y;MhE_4-*H$& z8@^-#wrvCCH%igKmn^Kq4?RJvU=XwMH2Pry|e!v3-JFqPTxxrQS}X{sHOEqDAsCnD+m} zN)&6?9Us+~o7)2vjq#({OEY@^4<i{8Q^ad{yS64MpB-2cy7`)U zf-S##&1Qi2O@71r^PEBS_Zv3Ie`;55^Am82L$Th#oH#nDIY=fXCpIV?&v4O?CcZ^2 zrqJrQtab3Djf#TgzUr`FgvT^VL+L%F^nM`9rdX)qJ1mQJq6zO<6x&T% z?^tL+i7Yi{I!iRAd}K+DaG6CTQ4a69W9B^zE`AltAja${glF4^{gbVw95bap2L`1Y zlNS9%z_9+Fb+>DabWqe2=DDFz#VG#R5|CsFNxgMO`0*&J`4NSn(1i&U@&RUv z=N_^>vM_h*{Q-M}oao>O*3>hsleLs`fFyfPi@qnupj97P+d}yf7IrA%h{*;_z3)iz zPe+>ak(q-^VUrNN_wLC)tp+%EV()|(o!i?})f}KRf!gI@+r`VZG&P5nC}HmKDdS?m zxfzGzMK|aU>_8DYkiSh6=w%Le7NpKC$pb6CXb;j;!zZ80mRuI<7rMhHbgK}6=mN|DXuNu@ex17#^K6$9t6rnOkHmDrAG4Ah& zGwZ-YHXZ;A`GCWT;At2oQlpD544x%+sk^sTbnJSNIzGyDP2bJRo3bywR9s0GO@FmCs}$I^s=@rOxz- z^Ey1KFa>M8NrO|0te z7vjcPMFN?y8Hri3wBL@$u!H1OfH#1Vx=jHd$5*z&wlMA$)N8LCnY@)EX#22#z>J)u zo@dt={bHnku=wpS8%oeBG`t0MR1{?8-JeqP-Aj0#LK%*{UUrkwUxomtijoO z;dNywr_x;x%X#c`WmJuVvj_(0lSXPF=FX{rCaK1Irk*udh2Ux@`ZNGBD>HFVdQya! zj<7@V>a5VJsaZ+xabhrF(|R_-q^d##J$aq~AzA2bBwK|;8o}PDd+;dVe>E*~0k#1cO{+;S zJh&URb>~$BRYI`wa|RAxj-LU;vR(yoAxf3#=fNZW{#9bvJS7f}qOl(6^n9MYK}nTT zq(vV$ihOb?T^4y=q4l2z23l#0JC7_b(<&)~wk`|(0tMK)!ffcPeY`M*7v(MmmQ)(I zKfTD3Vhbp`C@+q6guz9@8-~$_qP&VzO`#|&WsEclIMOqCNQAi8#jqM{vPpJ0hO2WG zg(PIeiwThsO_4{y!u=Er2ZTelB8u@8KBErpFUBYH(l*r4iatp!TA!P4bp&k+;N=|$Ap|m07CD$62JkYzA)S@bYPs zXlNm}sSQoI+R9BtQ~Bapviexn7-{fxKt)5;NRt!SM!jWs0y6Xu;SS#b-N1(dqu)$m zO30w|KG-NVv#aJnKNN>Z#3aEBcBtZN6A3nc$+-`flA7B*Rf`od>oU}IQErb~AIMv= z50-bB6q=Zm<&V<*JY)Wr!@+zvV@E9`LwE*fe_Co*;9eTPZ?Uwm$S>KltrS+BH^-{t zSov_Llht`M_A`0Zz}pz=Q3G#bw6zA0V^_(xCU46oQbJAMiIt*s`F5UMYVj^?h-Gjs zzMKd87+u>s{*g3mZ)eWCe->-KuL-TW}?KKZL%{%Xo=aqpf~5e8$px6Npgl@xDVLYU)OLh=J0K@))O4h2{ zO&G|EP+W6foUiIj-!$iy`A-FDTXXJSa9BYQ2@Y+MRDub5bBOrjR5Y5G!F-^8G#_3y zv}ZjVP41U?kb6h(Xgj;?x+2jLIrX_}AAs<(aTKut6q}Bx=h3L^cQl~|@5USSwA^pO z?=#nW@Q{Is4#n2ZJ;1K0NY`TcD)tqPZ^eUQl>D(3e~C_8)|wxbd)2;b!&?=Td;`aH zAvtD*n2XE3(NFLIwobL-jSH5{uUg`LT}@F#Xu(xWMQ(IA5UZ6XA4mL z!wiP=hEdCQJeFOcGb#LAD%qYVvvahlJuk}6S$4NaAMsk9=uQXjZeJf>R|@fw#5(fA ziRI;3-6JOl=C-%NUQ)+k*h;LyW_mAPlz~Dk8B^2~tZql$19wWjni_Quj3nxKoai@N z#iooo1TJ&V9DQ9TI-Xir9z@Sz3qA3X>B_~ak2Ja?_X@#%XVx>su85Ik4Ysda%#=ke zDD@2FPEN9&m}<%B$Z>z}hYuKNuX8@Jp9lotbWBy}tcE68RWtOW{FCJUZrSgR<~@5) z9TIp6_LRmaKrtTqfi@=qqo=4qXI`$6z-v~1i3AjEl$l*qI8j1p z-rs)6JErsXfpnoWFUvYpPG?@yzKAur5LM{H%Rwq7bm67EBSspm{JJ^$cG}|6@Pw0# zWS9zyO|+~FuV|l$eIlw0`qA|+JTU0j0+N3^wn-gxIbH;zRCQNJ(m+uh3H52PF9mkx zt=xL)DZ{R%jJb&W*|4gA?+s1q%6+TP!B&)<ldUiaDapRCi^(cfX*;??nDPYbD(FJ?Pq81>{04S% zmh2$=U7*wRXIIlr=JBYRLUDm(`88O!+_L>eeuO}VWaXD#rflVzuMJG_tk*Q*D;~f$ z(8{lX%h7cHD<0IS(HCVD7u}H~Zy7Ek03kWasx8F<%9$MIacI09-c;iqsAe}_vgPCT z|9gcGAw6g!PlbPb_4&t~#2kdEuA^79ts7s>-~U6f#=K%?OH2=bM{}=+JrpUg3pr0* zgAF-h*A7UU5(u3BKw0WbsfqJIL%%G-2t~J%Y=VCq-R69AL~V!>o#;vK!*725!Tp|M(iKt zG>q47^z4C*EiE44X>gH;0L5?kQFyunAiI({_9h$a3wFg6Gl-_$pWA$Y{$ zy6Fu&=;CnRIH>&ZMh(IMOnIG>>GrRsi&NBf1TPtW@2+eERtWGk+HeCPR^)!hL$%^G zfKQ8CAYNLCB}mE|!Ta-5sZ@C+4{;1FQxCdyW>(a3Y(5?^l1Do%!*u{EJN(Lzj^y{G zX#MeP4lT}uj(-haUX4uO@I`!4O+DdG zW{u^6mYHMuP{yZjAk%n0Hu&-t(1&4SdJK54BsPd~uSdYXjo2%rB}3SK1@6|oR?i{U zfFuCf9yklG3xGI9&%*$zTDDAmo%*MB9*Cv&^5b9#>|!#Hu*;six1BW1guucNUf~Z| z-;nHp6$&f!aJICV!0R*CjK2RCI@8}IzU39!5%NmmUgg(}QO%K8SHRu7rJZIQmy;}F z#70n8N~X8I%5-F}G(d{#ChC#G+jz8Hrx2X_B6ZBYw6^yWBXP8-h+JoZpc~H|9e>Ro z`~|7QB;Kb4UDPRL2A&3m%mip2ZYM_Lsrq=FMNHzSv_g@$)womlwYSNsDpsAh981NZ z#*$Y5X&9fHWy&<}Y+E|xnEc8;Otkj`g0L|r+7`TtHTY4bu0KWxXY&rhDOkeQtu<1j zNt036)HAI`?JSAmuxl_vI^rs(WPj0^>d%2PV@m_)@BsewJDN2I7NK3=(TO>bGT+hP zb9i+=rZR=i1!F8vZRYYQ{%0mFoXdSZSHOh=+L)SZO8C(j@YB|=r0W7GuJjXHhFb?-W@m$tcu5G}{%mg3&aH)1dDGC*}zonV;_^Ku) z;X@FYU04$MOU2^@L}3IODxDiZbMk9pBU4Fo(*UHvU(C8F4lL|x41OV8XbkaUJ_)}l ztcU&clMQTKuQ2nmaY^z`{00@p2^~8L17KB#tD0Gkf#E~PkXd(Au zJ1Bi2Z_1uiz8^4|C`s`@@G>R6aYRlW#?*De59tE}`tjf3;$b-$SdrCUK|g+QfY$uL z{c4Z!(y2Ki(>&(5IrdyBY#0l8L| zE?3Q{;9>~TdQ@XEFH@}a=$xG8c33w-3+(qwKpZV0jd5Sm*u~t(@!&oytNLjltz8UW z$LaUQe3ENsciBKpKyNe9{GRbn^z{<{6O^jIm6V+YHquCOgv6NQ{>D?{2P-82IyhbNK! zGG45LX9Ib}FBRO@Q=v zPDQt7)mN%#mgH78!Yos%9m%{Ob zUw+t~uC9O;JY$&A(!J+oZ(STJE3?J|4&U`Gm~K^kFmXO0QLHWnt;Dp|hX$|Yo-B@1 zS8_kc?Ypf#vw1h|T*+(jzjqVd)`o_RLX2!dQemtlJ5R((1UP6KH^#E0PT9RuUx`b* ztT`|2q8Y0|3dQK;D&CemCg=#OwVD?T{k2nWz2S-WAA1)b9hFM&3(;w?tay2vyqZUs zu}9eoFNM_x^CcJ>Adr+gEU8U)f=JwH{c;cbu$tH8Kkk%dQ-{7;!=3o5j{4`7SJ;*{ z+$Cf{$J{zt$w+)jMsEhn&!5~u*=u+?C$~H~mN`+$wLCB?5Gf=*!9mwbPc}moJ#{?; zM0-m_j|L=uu4(iLlwaY4U{KhD0WzhyMbp>vFsUaTUJK*U_}BDkEst=lwq1_(+p^cI zQ@M3e(jqB(9U8W>Jq^eN?X6kIi@El1Z!|+NOtFAUI=_yWuzS#7)_l)4`nZm_bSwx@ zS3|>fqW0^#Kek1Ev!0jne}n_+%|53f zeP4WDywTVVJfK~ze)4P1$cQOIa9oZDCVa|i);DFGogM7I3%5uCU?;xE)8P8E0h*&= zxHNo2u86EyRHnY&BNNn9iKVQYmRB2Kqu^(@Qs^dLqvRhOb;bfac*QaS=}? zJ1%XcS(|v_zKI?=V7N&IO&n?JDA z-ezjl-6>JeoGnqed!!6XzmXyznEZ&D`H1L?%$CjnY(YGw;Vd zY4v7)kyWyMvjvk#*iM#h1`vGo^vwvz{W!K2>h3t8cTl_{*;t)_CjxOWlP)mHK<2uSCKuC#SAFIjL8c0yU1 zek{$}#jo?HD{0Vf?(2JcC917kfX)CkV=kPIr)uf`mGt9o9)yLlbGx~Z!vKWqigO=& zy_-kyohzxLg_rYhi-?rWP$e9NO=sE0wCGGx5}Q6S3jau;F8g>;^98slAg_5|%y-JA zq^-G>l(N=JNz!^RzFlD@kFkK%3efO4QJcz@8UX!k>uCe?NdG0~l~cox zWd`P#SrJnZ(C3(!T8<%ZV`)e_pTMtHC%4_;6o;s?MB>vWMn{0{S~~)u>Igjbj#wf) z!q3)L_P6s=I=`EHI}Sjs(H%?Z&2Ao25Yg6^^PNkm&^}(yuPqXN>Kd>#qieGDuA$ER zFnOJ`k5}_@MasMj{bLrRc(tYWYZCjwMo%s#ul;5UgLfn3YfeO8+nb@_+nt0nH z+P0sE^PENWa6cbs|MCYpJiZo7^3&i0ynXS%+NevALgk%#uaNywK1dre3aO02Gn%pw z@I>CH4YfVUPrB-6K!2D45z1Y7pc&&mTW*C4)pgDNjJi&tqjLrh{_LD0=2CA zXb~kJ!kTcM8j9dXq(rdfp(3mXecaEB(t|_1rG1G7dNrN%$!gZ&V_(y@1Kcyh)cU`w zyK#PQbvFS_sf}fT0cc0sSV&Eqqz>>}I(L{yc)xt5WYcG^fxV!_dx~#b{cp{yHKMwz z{ik73a*=9Y9aKkZ%hEL{aG`aiDD#|S>e;=wrA|_VT4#W{udFSFSut9j!Tp>PYv&3x zxrK0RCNEN2VIK2Gv4Zpt1?Po*Nt%DEi@14K;%ZIKnXt4Urv8~wjHUwbO7Rp*BSS#} z#T;5mA$4OeX0C2}72d=s@jjQbGkF*orO#15pLe=!u^i>286SL^DrfN-eBxy~mc_Re z&(gJZ^xpmhvPqZ~xG7B$I-a~W2oAV(oG0_aSIFrE_r;E&awo8!w2fj;U_Lv*GUo(e zz?rk9{3*VM@k2N1x6@dDzj%}CpW(|r_rOREHXHRM^=(RKJ6(Z)E9&jByg$QnHsF)H z@b2ZY+~#*n&vSeecbmFX)#0j`paU<&$eosw7x)IoyFR2}F7hm%^w9FduNc96%0t@! z8_)3G=cxJ_E!YlMMLZm~$_J{xVhb(0#HaBdA1L@TFKc)CNj)2RA36D6!N41KnK$82 zp3s5I99}R_$>$312)oVKS1{3Xc}nZA@L_!LJMz5>Ye$=RRO2f5=9S-3`>U9YHh)U9 zu42I<=qX*i%1iTzr}XhE&*VS9q0DQ%8t?j)a;{;5|07kr&fD=M>|Vdl#}t^oK~-?t z1}b!epXSlm>CO#amXCi$PB(dj{MVn=v&nfd`}DdpG~p)yo~N#(BDeTAkg_vx@o>B2 zFcZXyb>GmbTRgO6=WpboaooyaL2M1!7{P4-ihB4_yeo=|-{w1A=Hnf{0`gv*IJno% zr3bh9$bv2il|k|FDsZv%yThL_oPg8rcfQQN+i;_Ro&=juTVD1iA-#)wa ztz^WX`|KViPr=)00Zumb><$Yq3S&WT=1(59PbM%5gL^L7KHx5~fkTZp;h>Ixq2Zw9 z4w%wF4#3?fLHZWS#sX7ezqAoejpC!8%QH#gOdKWTp`=45P`?N8K*h3-z7nW}H0=|- zx?BNEi+X8p>S=E6ofUO4^rCF{W%&Ut5JRsn@`yL6$cCV2lsT&iAmI5wyqijhYlG3% zY8rNFFqt25Z;v9&6zUb8*AL76`rHG&VoYD8*2^3VNHGEw>;}t!jEs?LWi$XNqQQC2 z;)6~ai7M*0ucFDHipQy}kNHb}d?;1P<}2v(6Rb))(uSveZ4q_wqDxxO_ppkjk4MYE zeyS3Vw0X_!smmYyM|a42DAQ>@Uw6g{veqPH$p1Ni!|bTo3ozM>*PVoEaA{23R8h~*{a2^t9+3u=MVil5M3Rf$ixO23fAsmo_K(hGeGyc9B=xIOGnLXh;1RDxdrG)o;wh zlIX2fGSyRS)6qNA+RjOfUX>NK=TIOP5Zhvp)S>Zx0Yzt~MQ==Ny9nc7xyZIXl^TsT zvy17cewQ?T4uN#TU#nK$T8>KX+~^pJ(lhKcGT7aP=^$zj3YK{q1ZdSOsyuCXBB`Ex zpY>ZZ32KpPWIc|odIc<71GF8Sk7;P>8KhOq&+A26mIZ4in4?S|bsHWXvhed|waWb1 z&lbB7?G9(ZTOOC!+)eyyRSU1AC1`w9xaF%V+D8DPmanR7Si9^{&hl+7&0XX5f-MUp zwQ`&nE=?!uY2R^kDQZ<;o6g?R?fO~>KVFiY8fY82e@V-}23l{`kyeR+8%Q1G zGdj>Rqmfp|#Ebh`(wk}R^YN^rRHT(wmd`0l^;&6tdHJHWxs?`Ec)Bxs69!7qxIC8+ zhxEQD*VbB3H+MY(1{x?RSk7}36P+wmTWhBoPjRRAvG__0cbXoHYWlfb_Qz_cOuU(^ z#oS&C=8ifdUuQ+V2f-iis8!*=F0{PqsEy#5tqIjOX-2kI`Y#@Nl`TJLv$kmZ4p>1{&|R%Ce`scHhLuEwwC7)NX5h@eh^> z{k5+7c#V0M--l>-9X$r)Ku-9?4~E({GCkxKIuM5g4=!W5K2|%X@y9nUtG?BC=hHo_ z+bYkTIWJ`|qb@XXiq<@DjOlM9#&Twg_JS$P#8fnY{A+qXRrBVD`jL}a^Pu~)G`CNu zs(Ct3T8M_oQ`P)te9RFYhLYR&T6t6O(2qHk)t8my?MG1PNliajtwP|4k4i=R&n@8A zbJaFa{Ro|H{8?xs3H?|Azc5^u;G-P80{S6X{B{QXO7ht&0L+~o#Zha(@iP=TTMG@I zY7Iz}DQuPF%yZ|%jZN|nCnwPlp-KZ7c!n0v)*`KEpM}8mJ<(0w{S*4x*=H4TK1rUl z&oVaZXP;$YZ#%H7lD>rt0lFXqlMbFG?*Wy_F<(<{_Bvl2ux9ww5S09 z%AeYKP9A2hl*{{5MgwyIz=KU4ZpN1-eL_SLJo+n~1D=wWhDt`4O`Od_M95#%a&D2T+*yC#=*%~_%fVoSM=wS`$eNxrVAqoMi zc8yQc)|r|o4|S(|g zI$AU9_g?9lW2~9=qwVy}8wdQ4nS=6X?)qPuTMYO}+cs+M^pLbd5{vIh^Y+fgmA~^O zcuU}Xl}}itO7pdn{IBNJalTg8R0Xs}+lJz-^rj~@`+(CYfT;-l=(GXAJSs?(vIYd7 z&@p9)05t|2PDo67*xRX_uh43ZzKVyazr8>!P)DN3z?mF8vFP>Lt1Mqk;>;GfK_Xf^FgMVPmczN%m=4G4GLCMyp2w zNXZPB)SEUc5-X08DKveqR@eVSPEPhTbNvR^A+KMWK0=xon>7%182vF<^N0U3xz5w- zlr`$2Z-~DKO#)=&X^i|(g`W+5B!1+Au){sASSz_zKy^$z0P-lT2G)Q^06rasRn8h5 zD$_Oe&Rd;i2XhN=bDY2E3o9hm7>5HK9~?Cp(jx#kl;bx%42#R9qqOZF{9CI`*W4v_ zEt#iz@ep_VX`WVr4_!)6=4r(WhRgK27k1^NYUEH^(#n+j)cua>A>d8_8aA(b%jS^} zX;n*o>S4$9n%2a5hsgpx@s(Mc|7RiqHZ~;!x}-n^EbK+G3n2pf_OgnA1^x1ffbO6Y zIZOXvMZmMMQUn~rf}Ab_3ab(f5%42|g*$!}`4QK`F5Eu8Qy08mt;t)FC~Ll zsd(Hlx_6nB8evjuTm&TQ*OwHHlV5TTkvQRTn%1mxo5Mzx;sAg)>f>S1MgxHIsL3f( z?37cVG;-4uvlce)=^=w!p94VF8+aHq;hO-h#vkixmj@808h;poapI(Y5S*hr;muAg zLWCm!rT>wAoHhHmMs^CBjIAKiSA(EE4LP8X*Tvl^Y=&07pytm zm>q+Rh5g}pLk}uDj@~65V7|rZx;#y5?wud8ied|>WCrVU1M52TEk&kjkx`v+E~?~R zo_U#t^CX>jc?ut}wnu%z$o`cAhDC5UPtgo6@pLpzt5y25*8eA8i|DEb{?x@<82z+d zbFyEFyL{7Hn8Xhw>A+Hmr;L~MZn;*JC;mxn8J>&(p|BNNQTw|v9Oevn6EXWJc7^8e z+!wTN(UeL646)I0pvmgbn_zHwkuvA7sm( zRAHqS&cE(Qe#^D8K5x?vjC}xrk{{z?kVAGlZCa@X6kYNL{tFg_D_TkikdhgxRGO?M zS_x@rdbUKXhxv5aQZ0dR<}`DuR>V0T_Z4RsF}JXjM-rze(9We=D35rjx7X*X-rl>f zReP&@JOaiWy5#MX0JN(bx>T|_bgZGL92v^lQ3;^~e zH7;mYZ5-Y6a-~*6OG$w*Sbyf``W|#|_7!cc>Eo#GDy>*>1-vV6R8i(12Nq%{JBXVnx9Hoom?s`8Mw{1a{`UK}8}-^tm)B~3{O>#TW-a((yJFjH~Y^Wt+omQDSyoSwIHQ?{9w0OOCgRfX?8NER(z=LPv>$*+p>2@V?RCQi# zl`z`mhH>U5#~Ie8wrtcM@rwm$;U>)=zEwYM(t;gUZ^SyNatB&Y&o^O`e~H{TYyBJw z$Z)kQARkTJtd(-S^rJQ4!jE)tvsSa<41@q*%0poW*=^Cfl$>-`eijZwe~P!46qtL3 zR@2vp8U;nF)-kP4r2{bb>eK3?FPR4Jg$-N9gG9@fu!PT zW1cHgDUC#`Ps^?&pA%YfUTYcEJ)yNNv1+Xmu@*q~HJoWL4^I_ocmp!kT5{T2`ssvL zE+3BOgX~D#0^a1ej1F$WWZb4YJ=>ynt~-4VlIxOa2Egnfd3q1{f;=(|{w_J$ZA3qW ze-cf7@Fv>fN1eCcaSf$y)#^8GenEcXlfJRXAoSFZ<%b!6-A@HKc9 zbMd2)Gk+DuYzH-0NYeB5SecuzJ-|Hq;_xb>@T2lIUP;S#z*00PhsxK0jbTV_`mh5d zYoqZVP@AH6YMzyB%y#A&JGpQ!YI3P|n)G_3#lV(H#+p>DZ*DBj->LcdlvrU9XK?^9 z?iTrUa9RKJ)M}UJ%N=ilTZ*1n0{A@3({p;3wBss^Z&5Ajk#R*PS0xEN(~*d zwf6q9=w)9P?TK3ZLlxO+6E*w%Z$^V-`_h`j6G@h=m zWn~J?F+l`OhFc9euEX}9w7r^#hU({uw7_L3Pb4akC-Na&g7nC8KWPQW9Y^hQ27BhT zas*TPgzAHDY+j`oELhq`5887fs*HcS?WS%E^mj$jc?jMyTCMx#=KrE=o}kK~ca3^? zV>Yv|j41Tqy+5tW7rpP6554aK%Fw^^#V3Lg`}rp%Va5J;7kycDgD;D2hX!_ndrDVy zQ>v-oX&^1PX_4UwX>6=8VN2O_8<<;h>VmQ0A8Wk3s7sFA>m>*3s0B26zZS%|m8MPmwc(DJ=I2V)`BdS6=IgjAH)Q>M zYJWg$#h9+&0!OvJr1rKTgj;9D^sk6V26IDNmuY4>?T@PwQ z9ZSm?CCr0}ZXVQ%72>%eALmJKl~j#3`ttLT;|HBNZagF~vG z!O|!fStv(sJ8_-}S15TTMa{(0h?Z@&g|q;{L)jnukhUJy znnW_>P-4ymASJ^k<=FG&yAZS{T(abfOyc$&qwL=SJo<==i_?Jg-I2Htq}ma!RKWW{ zHGV*KposuU8aQP}4RM%FuQIeqe(igzmZ=3* z%25+aD0YtGr4>}@1?}NDtXs0DWGpc5sDd`%qM693VW{dHr?eAzRTiARbdEFND0meH zTb{^Q@U_(=pPtZs{J1*cRc=_e!yY_0IB43O{~-M|`yBd^W3H{6rYlEC6Hid^>6xfT z1b$TC)c}Cw<4arL%gXl_IMXTth8_Q9S`oKpC*|Zy&T259X>$cHV_ozTmsC|HmaKw2 zV)+cC#8m*~N%J$U0kc(rVIU9J^RzyNKvC72q`IC&l(Ytv0Wh^;(8NPYjx~8wot)vN zMRA#?VThXK9fSgvgT(@AIZU=oYY`&O9441jng`!?n#!EgdSaDl#wpxfR*TM^((3Ye z+o@G^gONk`Pgh!J5Rl($P_<>S_h9(vkbPd=Cn4xVCFO>^HtAhQl&FmdEZn7 zL3lbE28HkNDw6S|$ay4nLsYPE%FIxd{&NnVnvbf6FZCU1v@W-C$6 zqmE}aFNdVufWb83tX9{nFRVYx9ce=P=i|NAWy_7TS|D?H{QnjA(Q@v2W+zd-m-n#IA&@t(MqBEwNUW-l(NWDJ`99RYSFg2W}auBZRVUaA9d7bBzu-tI^b&LjEke<0oUiw z*I%Q59&q)lv}zs-*evHw+T);S9zC?Myg$-^j=3f|6PD2N$6Z;8k8fZFLmmBNeP}F>2ad0& ze;s#y>N@cf_ex%qX7u<8*RPHr=@&n{wl?jF=ktOlLCMZ7_Py1C&jBiXGy9W>LAhn$ zTm6u3Jc+Rx8eZ_-N!J30V=aB+w5x^x>FFhmeHtRU17iZiLkS}hndMJpp2UGQ16@PO z-C4PIDP{aCm2$hL+&&Ed){fjC-aTote(Y3n&xJ?FrW>6vq`y5(};M*daWHGurYfU80|`8_1;2qvT= z!Fgj7?G%97l7v0B0eGi2!xN2>#UkeZYEb4{gYL6pn0M;Un{*WlIA`CaTLZ3P&dAQR z&Ux3kgiBi=6o>rA<=N|4=3E7%13kR5hJJ9~H9dCLco2)dIn$3=aL4Hp$17>&s?m%K zt~gBjQ5Rfd^umtlcsZ1?wSWra=|>k_>CWXM{p*6OvD4Z_lP|jJ;z5Ge7ty~XAJHsa zI-Pm+#fz|qbFS0v7hN@yM_ey~ewN~#tZ(5H(S^pW3;hrabhvJJA(9W30+cst+$C45 zmIvCS^^W68T7L|Yi_ZB;TX^(*Yh6}B4>ks$Un{Ae_N_tYR(gGG2_d~XmR_tu8YGQG zLWw7S6rvE1O5h1ZYm^KJ@QPrh#Ely8Y^5*8ktdzMjiKk` zNDt?!XYsXZ;&XN$Lv!Luyfb<2ICoW&3-5GyNfvOm3-+EJ2Nq2-rX)oJug$7*TX1JrIM4jhPxF>G)b?P{i6S zv}22}HCgm@Et29oar*%s^rh z5p->B;!8NZv;^8qua<@O3p}QlM7kw3&Sa`F*jWVI?bbEI)sEolvFMDzhADJx65*Zq zM$o(@jN;khbaxV|Ti#yZd1)lQnne0LyNsY+l8Mlu(Qp8@+g-T3bu?B`qUKxz-JZw3 z7A|ml7(lY$^>JbtU7L)GqW_}%l7WtEKy*fcpG+?$ljaeFSUJ0c{fE)|bx3lA_%Ovi zjCQL-Iyo0iqATl=+P!TMJ`X+tcpfBpZAnQd%iF!(5(7jB-U#MDlu6%jETjD}CDOnM zWE3E{v**tbtCauw!G;)p^Lem

-KI#lwt8s+#pMBctpcqkd8U zKdpCrc*|nedL!2QXRLK4ltJ&;BXQ2*ztEZ~3Ze@sk1G9;THW;_Dzo1u)5dlj^w5)zzgF|%k=6Vk5Zlr{fKQ~Qe>S%8BCk`_VD z=#MV+!DXWDUm)LL44|2YJ1`*3yxSkVj%L?eZ`PpsO-Nij=C?p*O_mrK{@^~C`<%k5 zwP)eMT6_#T7ULPu#`8nO0`Hv+VIY%b)MOb18(ad5PSR*>OL4TN?V6GX(e})Ly+5OT zyDxP8C0FzAnSD#9)DT2K>KQndka{;n+4ET@&Niv1A`&F^o+e;m&{Fpf@hV7+F%4*1Cdq$_l4wn=9Cm zaMTsLab{KA_-^mejjMapoGY%!uxFy+$1AQVN9?}&#l?92?(7tTVZs1s!Yt_fbHUB4 zuE7px&v~@>b?iF4`~ux^9jeDSFBF`;?i%TE;)RsmZeSzaTl48Sc0RC>E@bCwFVPQf zxEhcIyz-USSn8--@6(6}#dwJftDXJM7ySdWoJMlHMg+8~SX`U@*L@m))5R0d4OrS; zZn_c@e!35n+V1s?2mrsjdkFZI-RbO`t~Lz#?{B&mJDt~Gp#5*V#2WF>+nvD29wDFE z*Woe)N3Rwa7p%MOdez|^lS9+)xN;M+{|?m~Umo@P9t+j0KSs~padmR_y?URDcU_9p zf0L$FB-Qb*PFIU4?dE-`0ql#r$@a4pJMIG7e-@Q=u*I@4bPz4uy_<9oHqXTJY{N#I z&X|h*@SUmF5%?%i)!~Z+AB66SZi9Q+2%M^j5vY0PK7INhEYY34On-TRojzav11&e| z1_L31-u=gw9Ch%|vLH0R2NcfDE0}uEHQf=u7F3cEnAU;byYD&@bz&Nxgu!F&vv1)` zK6x+${la0xN zf1bgEIkzTx=1)pV-soU2Wy|jp0oj$zTm#{O#8P+J6F7L+*U!-N#jY($qo$YG3ysPc z6U<&{6nHad*$$H6ESkCOG^vvq*@?|CyUhucSrm(%_;fIA*Pl{of`jx*D_PWMEFyX9 zy{a}l7+tbiNpJ!gfzJYL#1J0` zYC#)Im6e^Oj_-0i2H2LYD)`pGiJpPy+J`vERHOuc4CZEI^*hM6+sC)z&coWZCs`nR z5*_O#@iqU=SCD_P`xg7XSI@Phc}@}={Vy+?3eYa5yi#RvHG14hsycUkO)oo1>+*>} zTcFojD!WKMhlfVRf@HF*lX7&ri&U@lCErDAN7W9df}m3wK^L4t zqQjY%NbeJ}t7|G1LNtL za^#k?;SPGVJZV|!-Kp%sWpI(pg|tdIx$9i@G>xo4r0_m>?t{XbTC`IIvZ3a^%aQ{SANdF zq*{vT^2gE#6`}0iwP;Eu(!jrZ_J1wb32PA`q13>p#kK@Y=O$GJL8k`t^b&skHX%H0;dT#2NXPr7>_ z+k{V1A%fI%il=CFEQt@I@0kcv-8tY_x;TR9QFVR|4Mp(7i65Q00zp6}HMt@KRxhYCXZbQ7hJc=Z>`tT`;^z$&ALbBIo8?8r?f8d75p-}A@mEsil8OzyIzNi6bH1Qb8cnS5J=Ym(mP_NpAu-lilj1)u8J?3?>kwxcg?Gk+Tq=!)ZtQS{Bpb_ z)^*~(y`?pQeaJVd^6^k_?e9juS{;U|a_HeL31kooupO`o^!@6jcKejF<=HnGpzoA= zPCwsqz8C<(2fgkR8?$HKkh1k4ZbRSmt%=cp?kCoQn|yE#mG77bSHeJW3jYLL21VO{ z`-mm`3|Vc|dk_2~Be0L>@EyO4X-K$eCu~CkI7`hR z-G#U(nt7AU&8Bx^Nh5zQQiG56Je)HmNPotX=zIl_D=u{7^(zr0D+#V)KO6H7PL=Cm@370qdjj`FpZBzkPKS zSCHfcB+Aa=44XJd6sFnh`_T-oxQ=0Ge1@_njdPPGO=jV);S94+FkKjnWLsZj5Zu9g zwzh*aG6?#y=Vt;-=@>U@R8vNI8=m>Q0TG35Xxo;r)Aeo=-@FoXdj{AMkJ?nk>2tOz zbK56qvMDxMH60Bf(j5SgNBjP6LT|c>kyMCFFk)eAKH42sC2(>|u+`})0$SZfyLw1c zvjHfCRu%X=(CT(b85<=#5Wza6Bda33{yhVOQ7UkozV0Cj@ipErnK)arQSa6ofFLUm zvA_fRqlYw&?cF+^;Wx9m2o}j`yjwY&1gUKBJJ2N9Y_q16d7GG9oYnr;MI~;W*)0lKret)dHQN&#{qgmcn@G z6CmNJo`DW1f`{%}paygeADf#LXoV!(L)E4sbqORTtz;iUGN9)IjTSy&A}eC+HCAhE z;Mk;KtyqBQ*(eAd==&O89EQh3%c!c)&)OY6|N4OQd!H!viUe>WEDx|3J?BDIc216g zoBiARC5`Sygl)lGIFMilSXgCQ{0qGz5U>9O7?Bs>%T2%*sa1GM2m^IE3fmMk5|P}2 z_=a>Sp*JG4{59?6f|!66N={?t+9j8P5z7V1xxG>X&th3Kw_UU1ryG?l7hsiut@^rQ z(dYUb(L9lquXH1&gnDkJ&`l!d<7a*85qAE40KJQI?PR>!=lnXz|G*>^EwO1QBYJ)* z66pzvOs;sbUP)(Rmdd2Qv!}NpM}|6DyFwjCBt7iCj$8OzAUzKwy`hK&BG=Fz3aJr) z6JC0d0~G0NNhkod1%`Jr3j9p}R7hhyJ)WqN)Mh1mdS~Fg+15*_0JArvMBPud)%`2G zn7YqI0{vShs+Awy)DaF1iEV^vhRq6WB{;g|Ykt99)BVsU63c$}Z&eC<_EEm0360Z< zT=paLB{w7%eSs=zoRH zejzlT@Ufe!Q;&|($iVvlwXJB`=5E1~E9(~1nJVepsHA8#)9|*Iz#n73jvCHpyV53g znbJe28l+pq_}ZAdQ<;V|rZzonkjzS9NU=GLvo=jNNw-St@b;dd6aO8$!h{p;*oSnt zNv2l12O~Hr`~IdKERs~|;KPJ{bfQJtYgq9L*7ZCh7n5?^IM^^?6gYf#FEx;f)DjvS zglHfG2V0^%o=E?)NV21d#`=g>@j?Pi$L`j1w6BjWab9ggFZ)P$XRXyVEtPbQd>>jk zxJwr6#{2ZmRFV{z4ax#{>wR&xQ9P-xaX)Hypfbm8k9N_+spPD)%9{n-(um-2UaUfI zv?5u~ISpz5*5vVu3&1Vy-oHS%wuX6}8g{Z8iq_4;$o^ z`F9@=aM9F4wsUp^+B=>2qlUzSt~qdK22#IRdN!Smt9=d-FjfevWFI5!mlBOC!X4Lo zJ&_T>YxpL%A+7NCk#9|PEMmK8@gY=7(9EN4Qb`68h z!zc#W=it){fz9H8^ZXHT73?eBi_0L1eM6sV2NL^dwM}9XNi4%wuM(=!hV4o1N`Ju) z3Z`7A8SP2iiffQy_v$^G*Pb*=ntSaQWDFDP}pq#{oAJ&W;oarX1F?O=EferMJ8AgbDpsein3i|jdJeUyeqhQ1^3_#QgH&8FSJA*vlG-uAwQ?1+4ZQ9+n@8i&3ep{IG}RZ+9czo1~Vsa~{nH@4JuK!}|{6 zBKRh|ee`5Es2gkOqVA+Kz1xHEe*WP->4L{vkAH7D(7N4L5n}(oS3(bL zVmSjD6lp2ZRu#%Cuhsggl65j-SZ=+*x_`eVp+VOuOV(5r?1R^&eA-VQ8*5J-;1CAKT zi-+4-?fifDZ5KSC-LS=y?tX&&T9drZ%3`VRN&6+D54%bCk8u1JQDHU94Zgd9p6N+m zuQ_BDOL_F|8TVV#CB3jz{!2f)z89%YstkZ?^isT|7TaF_Al|{d-ek{>#XAz%{__p- zj+Xe6+t}WalaCFeOL~*q&Ka3>V{b688Q?NDr^_ig+M7J-@W)*e)cgl zhi>mnG-vosdbcmx6xYZGfwS|b+VSc3@kQ$EOKS9+WM5?2$I|q~!+sA(PG1EQ{ok^8`@FAsDp#A%igf=awz-f2_v=^9*8J7`w8RDW( zAFzau0Y4G~2ZHmkQdah46dcQP1Fx`*MeLBp4!?xcZT(2iq&?sp-ol+QWmhA4Z(szD zxDMPxdf@$Vdb1y?@5rL@{mFF48A|&@xNWD~`xDV|yx?Yk(wjKMg2x7vK8}WL%yQfO z?Zu}-+uSRzeh-&!7D+@G5LwvfQbuw0!Nv{nf ztDK)tp|1>wiZ^>|!TsUnM@J&75$|IUR+v?RaD~Oym!ex}qH{qYi*$5^A7Vx7M?6op zQDmqirr@nnWRQbqens5==3oK%O=uLx4Mxa7NJn75)i`fJ*ov?h;RHee;T}SG<1nr! zLK6fDp)EpBgi#1n5f&qCK==ls2*KGTjEhGQ5LzK*AY>udALl}ZeF(oI z+(M|>G>l6`P!KW@vJj>qEJb)1;WLEY2!{{?2!A7lH$!6x4G<)R_6UO!#v&|0Sb?ws zVQaH6KgWB*xOr%N1saP%oI~h>aKVjA5w;?*-)Y>yew$hZ&-*ZPrxE@{a3ZZLLS2OI zxbBSe0EBFW=MWYktVDV~LJM|{b6o_bd2|?;iO5)l=?I;h(?w%QTYNv_dbKdwagaui zB?%3yO-i?${$h0S%r2r4|D@D)a-CMR+gGGZJ8kgKSjmvA2#+7a(uT#Oasbn~b zEnWB;3h@XTO$u&JCkwqN0S_KHpXAJnn$ZmZU*1P){xS_jZz_93>LV3qd{Q=_f24uT5`ft1KkI4gN5S%;>+F*H zL)V%4eAx=GJyKyl8qCKCK)5_#^oSzFQjqV2t^1P^Dxv18S~S){RkPjCm;9Z;ht#RQ}iOWR=|C;7z7!rwq9S1OR! zl2)$Tr3+j;SQeC`p9)_6fV^I=Md?EO(NyWClktTH4j~$WM@Y>o7_f;v=d4`%ro377 z!YAaGzjRvk$W~mN2@}Rmm@q7R0FLh2UuIt1hs6L z1KVlj*rBWrM(ivU&H_-S2Am(+iVoaN4kVRsh`nsT^mWnEG+I24G>^?#*6QKtCVvgm zFU0iNRq%2F)YRD0cVq&;$-r;UwSup5n5)GBV&WjoapUwM68|jQR{~cJaZ$O+|>Hv z@aJtRIB}k6j*2`MxfzekD5m>XlNL1bF7}$#yhxgfrQ6HMO6Rgiq{GmM1T7_&vT?l_ z>G>>={b-++P)6I(w=R-4u2ei8c_yuA=-I1ae)O0JLKTnX2|lw4oN8BRX#pOW-) z)UvJ`L)R4J<*keurXbHOnic z=l_OlH`EQh0>P%=P<@58&K=UULnwRWquC`xl00%^^4M{ck|#_aJ9gyQ5q8&DYwseI z?p`5Xc89cX`6z`vilLn2tvT$wup!C(8Tw&dR3?%_0szvI`tOn*kE&B${vi*-A~Ufi zxgl=;2qBV=bcMC7n1>`R9&-Du)77r9=cUrhUjDb3kh?%3dl2v|!Y(03-I3T1$*4OH zXNIxDSlX9_wQ%CRfP{J2c{>SPz|I}R!dkKOqOdTndLizIx1Z~Vo4hzDV+Uj+O}kDS zRt;s1K^9!3tjgGOVVXabehcYvi6K2$#qCF~|1P=y-!uU>oT0JG`yR{*M4y2!rXrsA zL+dhnEB|9_SRYJF*azl{P!)%#i0?m{TBd@+?}82RXdn}D zZg1HJ@_r2F=b`RY#1|h6=A)nXxL*6-9W0QH3i1JAHUpwm5BQQEq#}Pm8rZ+LHGL~A ztceT{IMy(@$3b9qaK46XhU8={46$k26{E$@`%B6#Eh$F_EyuRRubp9!*9~QD2FvD4 z72S?&Y+}HzRC9&ZwpBS?+VEy-=^P6=2!lpX7&d6=Gs%M?=f^!gY-o;^ZqqDo=ZX;j z-@-MN$@Hajd8|GIoD#o0q%q}~)sb8-jpJ^lLPNip%B5b#z~4&c^6ml=4^p`dCuDQ5 z09RB2`eP*IbQNH_I@05ypPozQihfJwxLRpkZ>;cQILcT#90))E>(*Qb2*2W(K_kZw z89iv?L=-CZYdvoA=%L94Q_6=`C3M~lQY!|&LAJhFh%@6e-@(6HfsUL(k{pZa@k(Kz zKk@CfRoHyXame7NBMhw*#tp3!v{plTjJ6mzD?(n;BYAMZaJz8xP2}Ay$?M0AN}Z-e zh8Zq<~bE66>Rt`Jp^xqwm&Q%^89CWOhunj=mv63^po;x9(TaJ*@ zAP79me~vjFatNoCO4|>UJP~Q>4gW273u%pJ5-zb+xfod19Ln_wmSZ9g3=(#@GLsIk z61LgTu>$!0A9+Fi-2bf?#2@y5>jkNT;s0N~AarbeSbF(UVULd~Y>x?xrSoFKq=G{+ zVd;*7P4Qvf!@B2xfw_)f=9%D`#q&?6+0&NAlZ%4s`K9t%dd{|1?DX)r7#ceJ<)1F- znH;w1bN?>>4F8NeOI@HYRo_;3sz0cQ)YIx8>Q(iwO0-H^buCG2ta&w4Yo~S7p45_c zN$;f((Q6v@jVvR_*l!dWH;o9hni+3qoAb=Q=1=BtX1JwU89pwV;{-G|%KftYkX!L& zc%}&pgg1n@g@eLL;X5ft&89D$3>)uX=~aa-!rwxySVxq_1>)P{262x#SE?hsw29h$ z?JdovSJ#vE(fafHTl!A@ihf6b$4E8LTBtpP;|!eQ_*`TH)S4Zve2@E-`-VHhqkGzVs(XFjk=|FlQNlAyef4>Du69cst{>5LjK?w~%B*1~ znGMaG7MByeH-qoXFX317*Z6q1&;7mUCE+b$tMH5Pq&!saq^wuADSlCHrEXLgYIF2= z^>apZpXlQjb2guEEcv7?X_C}eeO8^M^)b0TjvEcQB)&bWoysrbSMeY7d-zNIP5utQ z*e!ZGc_w)-c$Rxlc&~Zmgk?g3@PqKDP)$q{8;W%$Md~MgD5WTFWsvf;@}kmA-KAFd z>#OxD<~yd}T4v>0Us=bjBI_a>+I)^{k5e^IWAwX=XQJm>&sgtl?<(&)?>_Gl?;h#8 zENJOkFKq?rV`ilUHx857V>tIJ2Q|IUB{oU_A|a+5MP%f_sj8iF>*GygSmn z#_JVVsQ!1=B)z%O&gf!{Go~2}j3vgq#%3ed;w{g2FF4}PIJ#7Q%b)VKnzo|!H&|WvT8bi%V=8NVb z^OD)ZYHQ82UbFHox9@x3Z$7%BC@jUF>wVjsAT$*^2v>z-p@!IBoGgAS{vbw5wIosc zRO%s*mM_S6<#=V6a!9$P2x@0_k@~J0Q2$n=wI!OMchT14l-oLC>n^E3J7;4-&)+3)V^e#!loyTC1bPI>Dd}=2d88brBq_2oLs_OARxT^eRa1RJJ*_nHQ@nG%E4{ya?|BWOhp<#wBYYtk;u-O_I8O3QZ%VD@ z$K|Kwjq#9|3)$sNAP4<22`vDBn!A%8Vk$f#)D?QZMtkFXRY|1(#S8OeIq4DD{;-lD0|5q>Iu&QhB+$ zTwhk?w(@lOMVV8oD9OrFWsUNs@}plNYK%HleHjz(h#qe|3mC_n->z3rJuN+wr-$cB&uB32Ii8n2KY9GefXADj zI^O1xVPR5DDM>P=bg7%vTN))j4Z-=dbVsTv$AaLF$^rSR9HCTGYJ*uyN^4O21mzj! zRV7lZrHNXq)?Rx_dqaCi+p8VXM(Z;`^{ez5Mq^Vo+nbr@7<00D#P_T3l8?*5H`@T$ zAbzSJ8!+DF*Mic&;P>%A^P0PxySICadnN{RnfpEP@ju-aJkg#O9?{dv(*dw&LEI*J zRc{AxPj7$kc<)T_7Vo#-V~}n4y{Vw&Ccgq6EteN_O+EiPsrRYob z^~N@1oY~*Xwz$P?RQ#~x`3(13_m}S7?%&;4-S^xsPjydSPj7FQFhOV{rityv;o^Al zIdP6i#WiAzq)V-&OzA0`#Fj`ar7rRyIZK`^FO*-GSIHmCh4M%0KJ}P-Mm?`~(&p>O zjC01HkODQ#WV5N6W_C80Ssz*-TL-L@)@8qS(<l65oW^`Br=n zeh~j5|0Ta0BzBR%$GhCs-Ap(%^LRboJiR@`fXU}Pxt;~Wn_x^|fo6^fr@+YX3G?OO zIne z)cR<{w5PR;&}5?Y8hT4z)}PXA86Avgj5Wq~<7eZL`3Gc51uNQ0u0=rb^}=r^-cz15%9HIf+nO1kAe3O6UGb2h2OwxqQzQbM{$TaQhXMy`7QBX zag(@3{7yU~{tVKKlj=$Br3|URv_N`WS|@!jeI=cd&Psol%%lW4MeZ$+m8Zz>$%p+I zh#KJAZ!6c8TgrXqF?BA4$1e4XnyA&$x@x&>Sc@D?E#;nZ&vGwtFLl4|{?(n1nK05b z!!ytGlIMo!CCJRx-jBUsdLMYhLAE)<3&Lxli1A{ccuTAz9g#A$ceS7OVbG>#7_S;9 zj2-5a));H0<^Rh1&El>(m=?(`#IQ8SczD59UlEFg8z7{XVkhvg7sN%VYQ5dhuf(cS zePDL7lqxG;lJOk0g4M<;f zk)Mo3LMglCQ{jAV3wRt!Q&Tms&S8VHf(~`&ALj?~3E-|fJO?~?JpN`-Fh+Qv_WHdqcz^V!3roPk4?t_l z&@WigY?`GyZMV!0{sEuq&G%mM-u8AAUKLh@&3MJ3;yRH?(UK&+E)7z0f%7xae!S{P zb(*?ey{}f%I%>T&3YqYmc3tD42~F1*==&kQ8W^%M%UJ3+jvE(Xw{edWv zt#!zE#&?c2o)JVtB>#*!3p&u(;!ol);$I>sm6z^A;fhvSJg& zRg2b_n>*Re$#im^aS|Zh+If3c{GM{RtnJ?X;boXL;0^~miS>D90s=0 zT0Vx?!K7bf-pjwnzs;}Xckn;(Kk>(4DBtE|+zIZ6?iMhZJGnF5ePH9&@YI4F)I7aB z1E7+Q_dM@eOvmxEA5#83xjdM5Eu{fa zrYY&rgR-FaKdZb1^YJZZqtZkb)P9%)@4zVeS-q^@RI6w;ZP{u-M|w=_tL@Sb8fT%1 zyyCasuvS~^tZraDnZ6Oer+t1%xrIKi&}pkke*Ohm^vn1rZjW1ar@Fg(dZM?(JQaj0 z=v9(1RG28N6pn&f*ApetCw?Se5ucT2!%{i|q2rfd0+NoZMQS}w(tO%S+7<0tsAW6h zoH(OD1BCfMHg*_47`08)Y-{>KD$C7$Ux9BAP;%AB?GLiuNWKM_hTk*S^QvcqXS?Sl zG{y*T9dAPnak_VqceHmZ_{U=J3ituegFm>03IMHv&|2sy^u*A!8R3UoyArn3Za5!~ z3X{bf(rmeb!uyrI$}s&seW~fNVEq(1xn>}RdVIL&G0$S55BlPkb-B7S9o%h%+Esg5 z`$F5McQmR(Xa#}$fuAQlDXxamdJx2V1xiPx6eIPQvy{ckYhXxUD?ce?p^DvAMXjec z7zX_^Z3P6g)AS^?R5+ZOtdm(dGnmsyWRX072ri zRjO?FCifYbr42ob$MU3ml3)X+2~P>L;LmwS_(0ew#Ea=5<;hS}bHyd%GHJWq55&i5 zjkHeMXl;vjMsq+8erNt@K5g~%4TV9I>s#jYzvKHDOyQ{S58o{x$Gf$=@ zx0g0V8wWhU1&ZIM{h?pdZ|E5??9RaP5^f3B6YvB~M_mUk|7j?gx2*a;ug~Y}3Lfv` zRsg!q{O7Rij`L@sc3*?I9O@qFo(iL6nLEtW)Uy%zP7sm>L+CCH2NJS@00WjnckxLv z8+uY>X$}PW0VxgI?ix8?o}@kl1D8T5uY)u>tv1w}X*#@Qy|r)rn32=;xw?W0*cVp$ zY;(Rz&F{>?)(CjGX2D(a4XEIApa)RpxNK=w5$5?mJ^=sTAoqNDPKw-j-Lan2!daoK z_=?m(=>eC|3$QCUnOo84Q!r=$!t9E);;i~s7vDr*q0RqYwkGUP;K#b35+{lC#HE1z zLvfFE6gK;xQcbymtjTTU&d})Qg6F*>e<)wIRaBxzt94*JbXG^JFR5>-g|K$wv?*}D zEYd#EHetYbVRHSd-Gk>ZMt6hgeua04`Net|nZ_u%^4>67nyF?xbEtXVZ}02^bh zN!H8O-&QzmSLW^P2@&xeDD)NIC%#>fS?7J%8Ps_$=7HoI^X*_6QT}~?Biv=8yN$a) z9267WuRu5c-2Dwaf7jg(Pn@R#?8Xtyl=J3z7eW?H7nTc^#01eRroyZnDLy0mmq0GR zD;^gmsh!jXR^0??2H58^X*CqFAEZOlb?FVb33tl-H$m@EHk!p;Fklk3yvG|Eu zWJW;Db_2znfj_CD&ka%@=$qzS<=YNF*B`!{VC62`hH&v!F|~QV4gUl`+uhRZUk+`) zu6zheWizE0q}Up0KlhY|YMS~wRLD*0kE&a1rFDRJ@eMeWKGybYi}Y9Z4fqy}stM9rR9bgx{Os zt?xaDVdmtDa-3XG{tj-&TA0Za911phzd6T2sI{NtW^-r0gv z>?cl#VRA&83y%N3x)}udBb1VW`lsr^as@ML*j~L=&4w|KR>sZfg#LQL?~XX1;5#H^0PM##Y$v$57tktL&?8yIHto z!mY(^H{kh+1b6UweDIAkm-+>h0EEbC2i-*ON;#qMl*vX61`|xFbC4CErOhAf*ey5qe&4G{< z6U{m1%VsTWvGuz38C><>T8BXeXRW7v&->>4-h=S^(zn}pjBya2uoVbyvG*&0Q6xMN z!bE>nF-~kMD)9IUk|ni)Dbf@A&p6nwOQkoYcd#^21s2^}ET8-!AA_s>lKeof1bxR3 zyJwB^k@AJI6HeG)mAa}3cS2uvkUCbK483`&s%veu1mk66v-!34qxBL~J5vca4*-aK zoO`Z&G2FiE{O%L(b)Ku9^4?nB#b7h*;6V9G-Yfr%hHl9*3UhXMP`W8Il_k)Nw_xRF z9}J8*wUL?%UH=Jq4wt}lxCO@7K47~FY-Uw!3upLjZ7D?27m)J@Fe#&TUN_;g9|lhN zF+*_%v3&>21b?j9Olk#3(LK4L)zcb|g@qTacdgCVPWa{taNN$<3kK+P-)t-m5iT4G zstML}1afc;)-39I1ZV(9Jm*03bG_87!M^K-MXN?)A9#%37GtGGQXg=Xl~TI=1$<{t zEnKUt#egW2wFZy^9>1n&7DPcuEd%t~5Bf=#HddRYP1AC;x!Q}+cV5$0q9^Zb`Pydm z=PT_SIQS1~C$u8%EM~=@U^)*pqE|#8WA#KVQZ>?B=z^~4sd`(u=DX{?^#S@&eH0d7 zroi}m9zuB${9v!^d01KcQ1@?wKXSXi3qJh)Pzq0iR|l||b`u<%Gs+neMtfttaR9t5 z8fHbjse^AnW^&oYR@HgE z{RZw3A=i-K0vYDZx3O9i3Fl*Hr4JbK7-)ubVFSMdk9Prlx~G)iU^QKZ-Ed|yDy!qLfv*-}>EC-I-~dG60JEc-nf zP!+Sh*-)C73VFgMAqDflA57`d5W~~O*)SD(T><{u1Ao1NyDZ>tDsVSXe+^i>hozku z<257CSZm~C$)(Wv#@OGftxigOc2YN|% AV*mgE delta 93115 zcmbq+3w%>W_J3{~AZ-ITg#axSTHu1^-2!5Z1&S?Dv_g~$s3`cVwdz_l6;w2VB+9i! z(ZQ{{sJQB`>!Lpt26Ru{^7Y)VoVq7iCb)4GUYbE0hVb zxAw7E7Nxeb6h76X16!`-#JyGoTqjVA*%_t3au@4ky+}!A6Y<@X-H&gLy=c9tZ=Y6X zCE_>7V#yhF?`?P8bBo17BrWN!EtWL=9$fLGwY|bpZN06t2e9$B7p!xxW#8I*I`&>; zvy?bWEN;H*8s=(scl`B8m`u+%Uc(l)y29G|8umr2v;lR8V=Vrywv5X1=~}XXu9m2T z2cvGiP|Me+YXy9LA?UcM-0DI$uyuFGQ_+M_A)DHIsCqRLiY;h8Aze|p;z|1Vq(~{R3jM)9Bm9jo4k<9!1k=gY(nZ#u> z-}orYiSOw;InidB!s)w2{5OTyPh|JUKVZF~f*p(R~crf?5RYbD!2WnavT3(o>6)8Osd?*ZwRuN9lcwhoF8Ke?`8Flj`17MMk2^62b%RDx*ZBL}lYTI|*Cqln!{MrxIu@=749b-}B^)Gnc02=_1 zNaU7>DQ&I0(^$(ovZ>;wfa>0Fk}#(et8F{ku{04FT?k`CA{*T7kM*MQY;}i0)_q;scO6nke>TqO1T_H4muQQ@1+O#{w*c^O z(3T+4;^~O&XDRz-GyBzXY@F*NWe)p`D}Bf)O0DZqR5VCU2~YtG?~kO&edmbF0RTfw zv;{~G6>2jf?;C5_F4x$8)nid_ftDVbCGfV=W1g0#=V|Hu-*||4v~(iy@3Cxj$NtLe z?9PrCDMuOWI0oOJb#!-{y3Rr++}SZ|@O_Z4wrM$C$FisPcZB?|>eSg<*qN1dD(bWF zX~lx>oNrNs$02Kgc@|G9I(ZI1mTL&%=UjHO(~B_+>S9<$=QQiX53{PyU9FXmurKiw z<6~z#ca84@n*&p&{Ikngk3_9!#bxLKb$0$Fek1pbMl1pty6xv1XIy{77QVU%yFIa& zx0#v?waj%3+6ld9SC(I9(P6l-yiBy(4cMt4f)%*PBKQYiD`cOC__0~SD3_GyS=On@ zDP9JM@3f&+TWy4ah9lX+w?AP;3I1|VvgZ$tPloY3MgO>XK?h(R8e{a>_EY#+z&CCY z7;CnDnl@_Pf-al7ur5idF`HZ4*vO=Tmt74E;VZ8JQ0L^A;m6QyE{J5lYJ!~U;J*CYozUD)M7qxfj@ys6Uj9vaP#bQ#%cD_oO*t0R=B zl@?b*q?6rKdD=NPylY?UK%L#x^)QETOVD3L>Eg=?rnW&6w6H> zZtWmbo! zBiT*ehFa4;WOwxpIiAZld+RgVY;bqYaYr=awrn<|`($feHe1>KV(X`uvbyfqPrm%I-hG(H=x1Vot8FZEx`k7a2Hw^K1fZpHkOT{vd1%x zvcF`q&wBJzWK(P0Y>=>%?pvQVeF}0rE4$jS7DSAec=tm`w$<@E|kcOaici@FFsWoxn1Re+ZDT zH;Zo^&Kz1l#rJg2j;ugSa!f^rH$KSK~`a^@Cwg_vyzXJvy?{eUiMl5}HSwMutbQ;MkME3uO9q zN+&pY0Ew5#MB!`+MthySCji;kx)UBu;uZ8WJyD-yt8PvHNgrpc9%mnb9w>Zb9I#N! z9E+!Yxo5cM;fIGBef%2$rcd;rxl?_t7{&P(q)JI_0z~w$b_kOTY$l0x`eleIkz;`L zEijOPC!VRjx^#L!npH(v)xn4w$ctyAdu6h*X$jV%A#7S&PuFFHC3@Z{Kvco*I8i}N zm8igzVOCHINLFwnR#cD|&B~!HQNfm2R4}})XLfmte~#Tgdj|g@o$c=1chctcs7AH` zZ9>w15f9?2mJ4~;km#4SCA-QY{M!xicP9%9QDM>CSpsxF-_NZcgDZ#@<{vyin zT+*wU0O%=`zc!LxIUq@Kv)cy@w~imlUK-FlzG0x*y#}&R20UsVzm!cKcvUYKk|$$) zbKuvo?zRB=ImAn%g^>Yl=fJ+!tx6we z-P4yHP2Z+C*@}#j-Vf8Lo>aaSzeYXp1LQ05HMMROU)GrZCZ#W-XOCth(fnsci z56VneAgBaBTO!>`NCZEgr^PME(}t_7^E7)A2I*nE5XtBmt$^W9W1b*qh*INh`sKDQb7ANB%2HnjNam+^!H@C=zav7ef2e&F8V6LNFQKP z1MCD0NSAq{e-j*j_yij_w4-&*RCdGA&K=V{6bP*KMDi>ddy3s?8*lY5rVmX|IWi@N za+anbd`$pf{N@27VF40&QNI;6Loc&>)02^L1KL?W)?OXZcEwsOuLtui0QUlf!y~W; zpbMn{9&Aiqj?Ci6@+hvk6*(*MNX`NvW`36CdY&cppj{7WA0ja%fAEwF96V8BV0tw? z`YI7M2edSqLkP$jfFEb?F_ck@I#GmpL&nzz2guM+4^q z%70LtV&ijr!4&$Ct;_*LE+&`>#~9^`q(w7SutUw??a<=7JwvD$t9}j4Iz}ABC z@#<>HSdl(H7C{^d3@sw`t|$ZIMeNPRI_Be~!)Kxw`xk;Z8^J4Ad~CZUpb! z(kfE?Uj6Rq$+^Q?pV{9V$%RoTPPxV00k^y)FK>i)RgoFAXKxm~1 z9`*hDvB)ru|N9{^3Dl3RTLY6Waq#^wN-ZoFXu#g(MQeb(QdjlFOv;+)0>1VE%4Q;sq!uo;lC4;4o^U-h5?+hxIp8j(N~77C*V)l@v!!lCFZ zHF6k8Az7Jy9w7C3QB#8?u~@4I5Sa}dV81Aoaq-xz`-eVSKwl4OEsAb>PbY>KPCqOzP2mW{Y7l zzjlH+Vpw#7)_|l@FTJF(6O5Nby3q;R@cms({LcaD+kz+6Kq>I`QPtz*h(6Aq5gpRU zH5t;!#ex|zq*ubF**$~sD2DYsZDvKnI;+b&N{r;G{0>l_T9>MOwB+hMEs>NI+8|tL zcqR;iPe6WTwpcH_93aoamsl&x27m$19`b0#uw{=nlmB|3Y2ai^!obPUc<%}+=t8X+ z_E3s$k?I9)*aevseTo3*2pB-NkqD4R8@NA09oCpi!!do3O2$f00BJy>4?vP2K2{hG z^`$9peqR@2!CsEx2MPWS(rqbaeGR3d5E%`XGnx+rCbPhRMIEoMFK7{lew_2JR;;C8 zo&>9ql2VK!YH$_^V5FvkAWQ`jTPH&WiI@=FC8pb2F+Y`P^GYF}Nfgu0MBmw%vfCgV zS9yWv2`v_?3)y@aQAvp*+dR}RT#2E^g_@7j(L7WL-UB2geE1D#Vl2K5LT;h5vBp~C zdMwjeGAhGUW55;^&1WY@!?ydt0red9V(^-%m$nGmoK3V z7d?T5#5;qk+x2336c>r0kqExhV^`>(E2+z`qoSh#+=u~llY zH+WcsKg)Xh3eSSg3IYw103rvI5(luxi6-=t-bi%S9BP7BjfQp6P!7=wu?Jd@E0RK4<9<>LcL-6cLf!{nBi?!Y2LNM;e z6Vb;iX&-jz+74nmdkfbCSEb&po!H$N_Pd%byI=pnzgbb|cN|Q18Jo3P&E33C zRAJLj9oDPWob#&hy+IH{SHW0Ilh`OKw3Betn9R71hxEqK}jI!~agbT?GR<0!r zRr7Z1UaYy3aMiqh2r2D#-OODI{gm#|>bmfiM1W>-ZvzODceAO1>p&h&5(5tQonYfm zqZ8?Q8Bn4z2Wx6w1sQO*3APNw0`l{Fl;dy!XCy{8N|VVm}Aq-{SID)7nI~M(Yo&kz}q*5DaQ|S^_lrIlYPW4;Jfe z`ss{FC>m2x@3KD{4I~H)euGT2*%ZMW^`AKu4ln$JfEG3)oRjUp^iw!tj{USyXh%VixwYJ(!8hfTZ*rk?9RxXxCkf7+d?J6XgCVci0T2o- zZ3v2ast#F0*?OqduBP~?h<_A`_{MYmJ|K#HlKTNb*;2wAFnvM$Nz9Xx4l#Sk&vqQ@EiWrdZ zHS_lYFxO*YSI>e941Fnn^toCljiexFDBl>vkVmQ|M`VB$A{rod5vYj}$T=FRG=Y(z zSNkyvYu_8-wt)5nKn1_#S{1Tsz&{E2*i<*~)IpA}ON6k&5qC%e%lC<0v;@>7n0+UcgbZkNrew`Z3 zUqE)TB~@-M{S^=B95$-37b*-DAXLGc0T2xVJ&Vv9Mou(f&Z2&F8R`{4Al8W#Kr>E3 zt7$02!3n3VVoECXhlMBV{-~u}JMxO6b7$;Z-gB zPIdM6d8b35rv{2pvfRFVV083evJjiA~>z zV;9Y_VSU7xej3}jROk}}d9s@iYmTV~zXJlsr);4FkBi4(C^jbU)UhmhEJxe?n_XFj zTDlti{(R(?NceAUp~o*&SWGHmeFlg`dsq{VXrjDS@B!VBw&(*-PMKJ(OXbfS>qIg) zl%EQ55+1zuu2@!(o9Csc=)eHs{BMhMXWN;P`6)m$GJmQ+=u4~7$2E)OTl1Y!{AxgG zjyG@%(Dn4{92v;xU}r7Qrf#U`S>FQ1S}` zfZ6!siv&kT+zR=SQ0T+Q6BAPCiLcMZP>-v zm&K_d3spE$Td|eb_sILlMJN(wjY_)tD|d+fewc%BEqPixK$@$7ujz)7ko=!Sb%<8d zS<>`$>w|W7#q{fLn+^xDjXxC+WhGJv2muOK8a1eaC$LBjF%exTmuMz}2*Q*+JPMbE zM|6TjJ~6tkK*^!}M05gz&|&C~Ls2tZCiNJ|xIiF|jQY4INc zl5^L#=#oHA)y2dWh6>y^{GU66rIf+s^T5Y(+MxD$f)bc5(Wi3Q!cUM)|=ncMLctSobe zKcUv*IEuba1oDOs$gohnne6p1rt35@#`K8B4@t#; zwpCdVy?%uABW4wk8blvWst!*rSt zB<8k)F!QuIdeyveS8(I`S4pd40^EFmXG5T#XHZlK#;B|sQ;#8#ahyR5p|L{R3 z@h`1g5LFrfK6}KBfAtf;S9K9p?q6B14; zE##9N@P|;17LH6A34!2Q%1TB{O$0%Nq#&L;YziXu0Bz@;R;tW3eJO_NVn>f(-Wq-< zf&Ab&K-6(3_CSNAIw4+CCGCy2=zt{&-1$ti9+;od)ctL_vfuyY{$6Zly1(ZEN%yzE zyHIiq_veXXmI5M%-vOSU*<_@D$EvPcsCk9=%a7M>8V&f;0p`bINP8Xa!CI02DNh3l z(Xabct^19BU6)lZ8(vjsH_?qO5c70iP>8MXA8ba^dI0JwBtcc;6sNx-PJQf48aBv4 z0-vF>a?Dhz)VfcvyxGaROiK11%ehR&I=#M6uUB@i^?%tl*T2tl>QL49?K3Lx_<%CA zJ{Dd>eWp^WL7u-M;{VE`=2p4+gQyYSAfwW71%b*k74fb%OpD33s=@bg2K2X^ix(N2 zi+0`(#l3V^uOk3salI2jgBm{{V}u+E62qmShISa4YVZ)kNByjDeBc2t?-QUStPw7c zV92hS%cFy|4jL25Uu=eZ(T{}|dqqgXw+^zJQHB4!wX92c0fe>22Ad1FKZRCc^vO67 zt^o+=gMB%&Ms!wk^k%3*u7Dy9j=>@*vn0`$oU{6y4w4IZ-2>kVa}i^Ys~Jd<*%YhMb$V9ki`y!tVI z9gY?oJJYm2N?X&^8l%-yB5tQ2E4p$I5AKkbAAsjc35!{>Ou(p14MsFpaDA*GxCBZWWBQ$@b;2W_34IxP8d$-}7cO`7N9i~?#ZyptjMvZwRqpBCxfwn0p>s9?8fBqKL8r$YYeGkpMk7f^iy=w zZ9p_TDZzi(N!Mlp*|7aB5?R>(;HGEesY?svUkGer{8%Ua7QRAS{Um^F%q<b+>8oRP&`_vdD00U8Z4 zT7(>}LsOKx0@h=C7w?4e!9AWd--ws=^Y@PozlRVt>jO3KOlY=}^@*By%6GQ@-af$2 z`dA%%ye?TkUzez^>K-^S$EJT?*VcFTtJ$xH?p3JBae=i7bzrsoa}*7pEZa-fktp~X z91f6kzLS8+Rh;hxi3D;*Q;c8-ZEGIv7%jzwZ~fz@*@-zv^9i5*hW~BCH;R}Mo0TH~ z$sPL#vCt0_OO=O@5_Sj|pFG4B1L2wsfG~ z`!4pc=s@C|_%#j+z6FrKfG^SAmI43^dFXO>c=bw119m_`GJ@QIwiN)n;7ndnNb#i& za}7cfdy$mKJ+n<2Q5l##1=eD}1e;|;X!#MUpyjsAx=zjJ|Kz6qK*@zsRss#`pe6(w zgJ%qire<2qDB%1E7jbc-n_}lB+Sjrono1Ce91%HtX{5)48BUv1jz2xWsQ8SUO^4w@D=UZAOea=V^44hk7=1lbyo8(~*db2R}IziDaA%FQVWUyUbwA2n2P9 zW`=vsW5K5}p@C%0OvHlN{g}+>%4EbyiW+ zQMNI5_^X&}K*ldU?#DyqG|Im-q;(;^0qCoK-^$!YwyUC_^k{S9hCDRV&s zrdbSwxhsU5d-`#7(NbP=P7KNZ2qqe~{m{d;-k%NAoem&;>~V$D<6hy8xoGb1SxJqFYR`p==AbAWoeS*5^YxauGk{5lx&4^Kin! zdnpjl+U^Xq1wZ2~ru>GmS|p|L%AT#t$O_YAEL400{dr-QZg& zNuKrD3Q+%wzl|T^OI9BDibe>kI_A~15lZ^yPnsxC13-(64J3}*LmM>O48{0NX3D>L z2y1aNEYr{EJNakwS@@dcyc$m!j;Vs^n)C_vo`vGdB|M5Z895lv$w{JkbZBumpgJUmR2`sn4kHZlk)- z&Dsc8)aIq?xQ6^&wMEivmUJJpqjfhHxR&+q_(n`bZ_(nqOj@$}{_RLY#IZM4OuW2m;8IFZ(J4rRa(;{ba0{>b zG3o-t*jvSkd?cU)kbS`#s5{cp4VfZF&zf( zqGw}SW+h<0>j${d@Y?_z3-zT&7)v<=e{E9Y5S0jt5??keF{McfZ$El4>Sza;UoJ|- z6F3^6F`VZB}bF26x~lwt)a?yDn;&lAND0U8uP z0?0SuOHkYdU}G9lbQ8sX%_#o8k)q4%c~HuI_Rahr6q;IhGrt|b2GwGKd@8;K)$0IA zK7B;>eKPwIjmVc0az7J!AR+fB7M2t8vxMBX5xE^9|N1?~LqXa?*dj!%CG0zaZTNyF zor%A7iMZ`u{XK?g*&~gc^i@dV%kd=)V+B3^9bbap@Eg;3+A2K0Lv(=J+%wtIQ4jpGPKoI09Gs^dfkSkfuC3DItrM> zFJ{~&HaCyI(sZy?GN$ah5Q1)Tk_WudKzo&Y3jg*ELUO`zB+?wym*PDPJp5*iX;K(> zUI1l;a*62wWD9Gb?TpZ`^-+?oEbhSS?EFsBlr@%cU#EfJ1JCTB9|Pv&IawjiQjHo> z;{TeIDDl&S(WP$(%x$8?t(3e(Bbi{CSq=UI3X+$=M0j-EK1`z}P$Sl)wi78piw}Kz;|lgjw7LV55fG*XO|VhxY+mTayAoRDVx` zD964kR!1_+agqp1p?FMREVdso7LfAi9p+vI-XY$3_D;(p;nl9+U-{D*H% z_Z|imq@mZY2CzU+o09eFs!!Er$Lxsl?PNQzZntBW75f2h9qXNh+pfDFm6CROKvc?K z02SFdFMkm*58+F+ZV`Zusnohsw2qhIQI0FK0MXdcmMS%mj%_@Oa9d~rBZTKZsRX=U z#fYrQg6{kGZ=&ieL{tqOjtpL~Q*X0E(;UYN-}a zCq&uFd^_dQRDe8sH6F~d2`3YmND05z6y;TkQcuH|K%wY~&nFbGNoJnJITyvDfQip& zO6Ep9h`9YG03zJSN*HwQ3hq$@Vl={mN${Cz(VZAVak6Z8Br-YD87PTZ5cA{Y53X+` z&F{s{XgjxpjF*<&&U_8R@--l50fzen$Iu$w1SyX`d_@Ks8B)lG=o5Yc$Bx(8kgr$q zj_t{&_*+Cv4r~7hkiUp8q1~4ONFn0pIfNJ#8Cdt=3n<4J-No!e*l3Yi@D74B7Off&rAAMq`j22N5mxpn@Xh0>;dm5SJ7+Hr ze;oPN5V;wfK`jLGejP~Kcp}Hmlf_e$Q3oJRPDpbADZaZ4U|p5*k`e#WRQQTCw1z!C zrz2iqQ!#I2Oqb3(axLiHiSX2RxOtj&K|4nuW_#xJ9a@j!m|_geG!W#5Nx;c0LlR$( zEq(Ap$yd2~Ewvp_Y|sPU`W9%V!15u7f39EwcCJ=x@f2e=Hy246JHW;qapI_y`5qWB zW5<;^J$+JLut)rQviX5ShCpio&;oPW!0=`7b!0Axu&Ye1KB&06ijcyi-Y@0As}uYBTD=sF;UQ z^UB2W;&oIB4nX2%P#{;TPTahXc1Zk{ih9{*{WyeH18z^#D)d~i3F^wKyLuFwP-K6iCB&p_Zx!hC$cFPef`tE3zdx1B&7H)}=to}h-h>29k@FICu#JQ=r8vsl^7 zbCbX$4 z;7S-S7COe+^?HA$JzR@Ne}lDbB$U~z?2_h+d=mPbtOgQb*f@ekPjH++nA!}S2H%i4 zX+Gr0!6*%NhK4<<2E-vC+#1Q)(Rkqiox)k3Y^Qg1RI!B*clGA`9y-cqeI212E z^2DjDV@3`f2x}jV-LGWBaQP?yF`U&N0MIg3=C5}6s~lOU%AOHRq&PGp)A`?lBR7#= z1Vp2^djeEJFD8N8vFo_wBmD@vt(WwI|H)U8)CdF;osE+X3jK^uk#!o!pwTQfuowuT z0+n_{9j2oK7ivn5rTp5TsaX)XCG^10<>T$;Q*Dqb1udSo=DnMsM7^bU zQeLs=SL%d+pG<4n6o=WNU6L%?LjDG4Dc=NXm^nFUuv|ll#4)09{OWNlwXgB(=EeJ2 z#yofzJn&E)>;=njfUzZ#juS!Rh!Q>XG4T)wgjLtM$%U@T{QfUssp4C{;cqf8MG6j# zejUCTBY%-PwX#UpZq?ewy{uJXSwHDRsrl7;=74s=7*s5m>j|o`AEDD^*4IB)No4o< zyCtA&z=751XR)|ejXW27!QVS6QTaGwi~1^p+m7n1RUP$uFz3p^nJIR_Ke(@JD1uDo zbHXUpTy51?H@6j3@TMRA1TYgb_A8%IcVj~X8L`Pwaw3&ycL#=cbWy%upKuEE8K?T{ zF{i+LH*k?RiYIe-C8)0+PoUhP2*ooRV95@BoAPNwwfgGkqRx!-^>;K{+R4<>q({k7*q z1<%@ge44SxpZzR#01xzkQ5}URAiOWH#uIQDsi9zg8sd_ATk=f9R3loyyP*W zS#wBB87IpfenaMU@rK=yfWTq0?(zf2RbIG7+-)p(ZP7gdAxm}jO2Mu^Yzrj3%z`mX zKZE8A&9jXQdZY6={E(@z5A?|*-LYBU4WihUt)g`chtWC=`y?m`Az}@o;V9!odn0s@ z)Wuiq!N?}pqiFiQ9FI8rFZ@=0S!~_S8GFJuY{;vtaL0I#3x0~~Q&;bp=au)ZfyD5L#MF!!gVlK^^_hp~E8~ z`Ti3;&Lx9~A~X<(gxw+hA-S;jX6)-0YSREu-*q2ev$Rn20TbD!F!KOFD#*VWYNhSS zKH$L~a?~`jP%;g??bV<(|Mmy5K+o##<=l_y18?=F$wDc0NE5M z$ZU$<`7!JSi%IX#v?aVjqX^%)@d$|TF|$9D*>h>SA@k=@@fBwNDge+mg?!NTK=ADp z_c$knN^M1p8Yj&_lXGUGx6R?N{#m@h%M5*PL9!Y85FEWk84WXXP<=a|jXa^<(L@Kn zHb$M_2Z1KK9Sz^;AI`>ASBl8oJmV{1Zgp&`@J_O(unr4d-mJPLA=t*?T8YeyV4`ce zuX{)a4bTZSiIh?|yl9ckz4x#%{0355-(7Cr=YFvxjzM7#{%Am@GU#fhISIKeT037SH_vy%{Gl&R>~zzN{VhknS2DR09t|n>cNI>b_^-jfqUwadrOgY+)g( z`u-`rWPqp)oii22s=+|9#RLg>EM=YRhVcGWM|H*yG3OM?xEzE2uYb&IKNhkThrj0YKx48KX|p0KlV2F+j3i10;jSItn3(z9T_12u5ma zGHIEL1D@i83!!%F)rjZ-v_cyF;>w9dp@vR@hoX^`|NUbb9eOmef{2)~4Wd^5w~uHu zw~KTdi}64a=eR5kaz0k}gf?C3tq9%ZV`YA;xfAsS|kA1d&TK zY#G*zN19zj0qp1#w|9E(LvwNU89?%kpF5M?@uW83dr-#_u6yY@n&S{qUL-Ua->)+4BLBa9UkLA^SAD2-%Mh7iYI0l$>5ooRTXcPTl<62Pm6H zoHhWWvhMB%S){-{!m2q|H_qm!)hZE;nXM( z+OyG1Smf#qFQbaYQIJ_iMT1ZgdWr)#K0sV7rpXmTtWNiYOu;GQUCHJpR9ei>h5{lD zc-6p>i(!Pssiitskf_eJ%O?z{kV{OoP-F)Ri5qt7P)6@wJx;jY>Tz~3YN;M4@jnHY zWbqR~B#VVqLzF#NQ}(>1bA!K9{#>-^Ge*&?n-rC6ZAR&UCTu34(e_KD+2CXap3(Gs z7X-8}A`2!$x0n-U`qfD9Zlt@5beus-rVN<~arGoxltdCsMLH2NO_OK{(?mMeE5$48 zloGDlj>hMZA?yVtZT!h$Bw(PEfawRLOd<}oZp(F8*bJ7`%cbWgZp%%UZ0Dv3t1i-W zyH)3=0-L60+u6&k-xO&!dhRe9UiI9}>RdQjXs91mDvY8JRVp-e2yZ}4J-mc110du zLKi<8^{j9LM1_2XaVC`bDYi3%2(^F9t0#M$fmfEW#u{wiBtm){~- z>spD4hkmB-2kQLwL)pP+x(P=?JiawX@+b#--`UnUwh2;X5*P*ChEi%9l>!D$r5I=S zNGX(xuursep=bq4Q!Gc4rcCl{kaQubga2z14kV!pW8EBiv`z}0^3wNVRbp(u3y}2D z7i9>3(h!W0Ho^-*4@NA+ccjhvoxZcS*_UF^7cD383Aq`#<-^`BCh5tzKJsnoas@k0 zc^`zl1$KMZC-;pB{}tCf{gpNYzb*!_UWJ^C!gG-m#V@d1k=Qi4UV$I4|8y%g@HLv_KaFKnnheoe zcQV2XHSiZ~RLslt+*@`VUPAyB172Jio`Refs&QQ~68Uec@&2xE5{TCesitO&shYij zq-vfVEci(?FHxsLjcqX0WTHKo1=o|hNd45dRM9p+#ssYXdg;l{*J84PXp}sMIC}si zA-gdxiPpnq=b8CuT4~xB+zlB*6YJyIS2k~zH)?S)(Pl+9o6TA`=)%p~K+O{Sd!$3Y z9RT=rqo9Or}V3Mi;Bcjb%dwpif=0i6jh<*S(p`L#Rit+W6t^Uu28^(LEEU zU5LW4*aH0M9|U)xupKjF@-=GUX?!EPw*!q5GERnE@u7#5x``E$JX=Tav@w{u_4kc_ zN#A*YLHI6s+t7F=YoD4|9h#Jpgsp44hG@jFr3>tf8 zCDE1Mb+}DnDQUy|7+KQOmN+LP%;&#s5|%>|8b$wCR~i$;YXF#2f{}p5lpseY77}I} zU}1axE1BbO-Mt%$f_TwwZwy3aA#`dETjbxO209(^C4P-v?XL)IuJYQy5#RQ;n0G}s z(U*Ccy#r*s64c<}$VB*R1p}TO&ViEYk0@n?BF0JJR1%Ks7^XCG0!6)LgRmcdBQZju z%uN6gFF3Hmu(;B`r7V3a%*Yk#KpXrI*>FG9)7{{`KNSJ*y@+ACBd-C3M}2z$t>I@> z*0o!^9leHo=WV8K=H+xxP59%L!XG0#TLF%spi=$J6uxkT80^5m52=r1i4pS&1a$bO zl}B36q~&p}c=*n=*6ZQS3QRxYp*P&k@f~h+{sZ3`+w6hrsy!I4iOeP%r@a`b=QbUu zqXYC@yS=UpjVjf39hxL!P~Jol2&g*yVmb0w>{Z2xAj;G3ado-kJ3ZLb#&>$U$BKU? z2y0VEWE&Gc`lWfHmESsC z_{Y?Ylm3QQW!Aa`e}j#BJ67&Jm|oKsG@kei?_mr`AtgQsh}`zS`lEYb|I2VQ#6$|3 zg>FK=i$3T>l!>=`r0^RH#AFu=pxjV?3YaA*M*69elwylxEU4d#2^z))0}rh>LMSmV zAy6nKWeAaA8=6$)714u**b~vixeYKA@hbn-X+p?p=Cv;pN(}!T`4V#vAZo~yz|#{k zuMlsW#w%@b>8k)!9(tnO`jo>(vzZXcD((}ri89i^qq^OKeXwe*4;*~ zFfMeRf*052?XR2SJN-jhPlPC0n|1FNL^XKtTvnAQXAE{c`_p~Do%at5Plq<>{vJvk z58bF_ZG+n+$J-@zg@TuhjQyg{sqbvEuto}-OgVY*v0uT#&O?u)_VU-(LuBHGr7r^_ zk-gm)$Z~1K3ma%+0)0@Ri3#BK7RT@!@>}6ANm{1%={4j{wcn>WRcOBiQ^fyC`w4k? zB_?l83<~XA0ZHw@2Tp|biZ_nKs|)QPTxVj|0HUTm1H9(ikKnyUVooSuX+(`98}M9W zE^M{XzY#$S7knvPiOVpAuKXU0skcRqxd;w_525Lt$8TmukZ(ZzEJ zovb65Qsg8JviuOG=>tLMfEO|nfO!Dn1qXUzMjpCD7DE)Vo<#%*1_3H*aA#;MC$vEj z0a&+T%-9JnA931&7~wAZ?YD(81LD~Di^Xe zVd#sFjcwq2h@!_2X5CY|0m~Ktd4%gj^NoLwkcPHaBP!{tWm7O=_D9 zevD#)kd(g~cuvx!v}&}Us#xAANFg4{RLh`4x?~6>wNi?+z#rnd36YtSGlvg(Kp%h2S5BDhDr(FoP}mlc{A0%5jj-?i+*6L1VjrNY{A zYzU>o-{31sTpIME-{-a&W2s98<4yR+43(IRG9BpAaw^e+%h#U%9WD)l;~F&t?jMc5 zSw8z5AHT{7+b##-ua@#gi|n%hw&Q(FguVa_(+36GL3BV!0285-?PxQ7!p|cOUc>A9 z&5c4&e|eh_A>gO)qEd`RJMn8A>HiQQc^jh!z8ufO>8y|$_Au53$n?`lGq^z}Z_x4u zCSEy!OR-K^7GKxfzs>6;*ppm73PFD-ap|m%-(cd-1W|utKs#o+fax`GJT)&@r7RsV=TN-{7Y|!sW+q(eL)N{DP9uu6n6gU zT(laz7uR`xM`C=>t`l&*I*f0x-s79RlY-QJQIDipfm~wh7ev2UQCvT`3`CV z<{UNH2beIuxk$hwl_zUA*Z_|E>Z|zmm|GdEG3Q~*;j_RAPJodg!xM%-DicB(p3Dhd*9U6}i=Hr@stj)yeqk)405XYVu$bS}WOWK^s*?`mLWZ>4(w zn7hS~x8P3vTR?K1S&siEYm@oRw}87r^fcP4&%z`8CiN@wo5S%)E(y^tdgeV?SwrR` z%at&)w5D0mKlN3LbFTmrKk;TWGWB>2521|xfJ!CXWX{=Q^(@$wYwKeO4C<+Htm zC|^X_{Q$`b+mQ@IqD6Nj!gj+fW4JAfX(3Fp*LJuo)Y|ml^AQoT*jJ*rYCzER&-sKm z!>Gz9I?7ucvx8tIjDDOgbidOJ(sF=T1F>i`%(x!yLbgnWiz5$)a?3?BkY5J?%T2=% zq#%=lP09Kg>i-HvmX0U9qgPxo{Kqn|Tjf6;@jO&ao08(f64e5#-e)0aeamF-hQ!fP zifJcgGR%k4aS@h3`fn*U@-ZV@;Y;&$?=p!ykQ9UJ{_@g75&$T)k z(uB-7d+42Eaa2f3j;(#Cr#Fu36RK?uNUF99^r6}oQ|H<@Ow5CTq-raG*-W+A^AM9K z`MMP1Df}ZioXppu41a-0$YlgTWM`?*<3a{{7xi~dEFhp>*(Uuo77p%W^HwC+96vhdT=$|*BQB(~a zqqo%lihmRhGI3>jzeI#Z;ZAQ6?zHFgL0g1SK>&n;a60SDvIBKC@vy;&eiHe$$Zrz; zOfk@*8H#0A#Nhgoy6QkI_BC)(>pmDmNUmZ*(d;C0A4nOsO2 zASvr~cKF@C-b@52Fbi6b!(jb0e#mr5$M|6UrO=Fj{`WuFaYrC6JOG(KU-ko?NXNv~ zEsn|VhXwMQf1+~n?`H1>Bu(N;%(H2`ls&epW5KJy0uR@L0BYQW8fkx)hGp8*rKubb zL}~Z{k!_9y1stQDW5?nUFf3RYAYR!wt5VWPh!{rg#T&$)`$&XX{;hUID#Rl^H|1l` zJ&z4oo#gERg5oygCJeZ=!YckbZTi=y)A;CpVgYV|xu_Zo_b`B;Mk?GFQ9%^u4nK-| z@sihf{(*LiDgIl4q>%4ukF41?Jw@DE3(37QaIgVoY5wl?cLfuaTvyMRz-Ob#9s_~lo)t8?8b zh<%b%d!R(N5b!)&Kk%u+iBv&3rL3cb#}dMnQhtMU-A%`@8srNb-vt1TqaVl$Z$Gt! zuW^Fj7!)+XQn4YJ8T!8?)4sMNo#SKp3P zgW?vpGY>lD`PV@HQksBZcst z(?YrDsEhhb8m#wPms|0+Q0T1=?WDJc_J<1*oEB))!Y?;t4=s~Ju@Txtu5g2a#?cvE z0)^}%up??2o*ux-XUYzjmyDNN!A;a!f}gZSZFuzx%782Mx<-b+1~xHtAG`%f5DLUX z)FF}SvMzFmZ~;G49u~_ePxf`7P$EP?D40p2fS0CR^vHj@8ke1q#0ZgMI_w$bJF9pm z1`d?n0|B>2AtEor>nre@DZcd6sA~(4K|)KUK7@2B?iCyUCY*c$B;~9ZSpV4Dh;<4F zXIqjwh%}y21BLAYM3N)+rJcj-Z$I+ite)OSO4jia1`fCcGB)~zZ~isnC2wg+g)Ay` zqg~(6gLgv~()(kx4p10b@UG+VgZjy3L9~Pq)3HNPYOpizIrt*5nX53(UhBpS=+{vI zRGirv*Q9-pMwLu-@YXXF3(vsmlE)`@b_RB+!QEKx#OWco?~xpf=c0@q;ePDkdtEvo zNB0ZUiw*sc3`6a&p+4lDW^FfKWG!*B;T!u8evD8?0|jCxYv3Qdg&M_z2K^%$#9Y9M zS$_a0B!{p?8?}LV?S?2bFof~rxJn~E?dEnUJM<;f4-E!Hj`nCAIoe^LgFgtIJS-gT z>(u;-iSV)HTp>{EQBfaDxoYrrm8EYQ(f#vD@MksR)w_Wm;D$QYH~6L5rxM2&Z0dH& zL%YDuzu}HBlW;=_c78e^T#3z}9q0*s#ET|Z!vRTlkHxZso4RV((JJw{@_|}Os>FZHuoh*a?N(P{;S!BNqFH|&Er>h=oOJyfVc7^Ha2f58x zAX@1*yFyQJn-Cq0SM+|O!1tq_>rA`|H!3KGVQi6LAW zkV!*P$0r>95b5+NgU>=m!XEk{F`U`TawD!~gb&ldTZ%<;utHAGh0BfOpNtQ1R ze@Q(1PgQT*2S}-y*WZ@Nx^HgXi-E8y_@>IL7w56)w18CBHENI|lRs3}o3hLwDr*Xq z)eVHm;EUqf+nZfIZ^b$#&O2o6Idv>FPSdBPV^6aU2Cc2w$ICjaKI)EV-)-*Ec?8hP z$GINI8p$R|&vY&}A3FR{ORFBIhf-n?PFam-gz0xgw55C~Y23QhSFWFp_pExb0mnOl(Oa@RF=0!0$zzu6UTi+89ifW}Tdp^UIl1o!CC3N%GS>k(^4&x3y`K+^_@5Cw~&2i;6e*T>n7^suFY` z`3RUFB0=0QY>ypM7q59nT=^HQJTg9pCWZtPlkD~C0j+z1m%7_o>UJ0Vu{ySOxQR`FxVpaaOvc zqk0hZMcR+mNc))5ylc#~2T9OxNDlUb1H2S815fzz;0HBOZS+9{Ma8jOtvGi>|226P zOW-+5l&@l0P$A&n-4M{gGg2Dpj+4q_s)lzr ziL!?0gV7NSYu!7s%pvE2y#FMYzOzfmN%zKpfpT2X6X7Us$gR}s*^Hf?yaDhF&r*sQ zQ5;^P*>@>_aSIOcOB*$Ii%sH-Ft6u7%_4GZ3$Y}!j@n-rCt>m#Q+W@x5RM)1vXJ62 zq?CW56KMG;AskBs=!l!jSf{DQIt>b)Ger9*R$~6|FLXi=S7-17|B5{rTF>xal|qPj zb%*HoJwq_O##=aJ1OVq(ux_7Z*vO5P0cd4s(K^4!I3LC10J;}h{em>6XQvhG~_u_R}*@2@3DRboBFR8@-u@er0!k+dQ)mLVD@jfv}ZZ~>-fj2n0S0bJFE zOsuAM^}PMOg-MMZB4MQA;O_SjGO|1K_B=2TS71x#mMe?-(Q1~rMt8^kQjd*>X zB=$Vga4NNDvc+-({w~2E?p|1?;cs>~i=`5O&*JYN_*;*^PMXCs3V#~@`r|JPfBImH zBYaa#@#WMl%b|zv)#o3q_SZi0t@PlXql8IxF-eSPDT%*W)%*u;I;#Reu|E>4oFIObG(vJ?AK;z}Mhs=S>g z*USW;57$grcC-C8eUc4s9pvBi!{DdUsl{3 z^9{!S$qpVM#zr2TZcTWK9jNJj0nP?Aa(3|Gf8*@$UtW+i=Ycztb8q@R*8Vl0UGr65 z+>u8NwrbfcU)=$=+SblgMzX)u4j^$H{3%80%r?}n>0-3pC4@(VAO0W#97OkSf3iXu()?XiP%1Ww*o%`v3W#xAj4r=clzEhdV9{Djz zxrfa;o*P$nr@_NU_Wp6%MLV;RC&nsi%zuK!UokIE=@^?S`slRubL^uND@jf-|04S4 z-+rdP>HZ~!b^aw&K$9qU*6Gg5IkxtfJCd)vyoJrDn%%MTPB!Y~m2t;zHyHSlJ#*4z zpzW!#)@k>%z=^&sIVe5DUO4q9I3WIj3l_RQKJNEesAp}@6vX$s)!-oYR(9(d(*)a` zO;R3bJHh!ZuxCRuyl$`1ZICVs|Dqq6BUS=xECvYqFXlx^&r z^JZn%S`Ye{Xy)%a!D!#A^@zTe+%T#|JENZO#+emM6~!I5aJu2z^@=l!0%2ENZ&jvS zPn1-wwJN5llVh9_(b9^}F-nuBR_uyVpzMl)HU*xTeo`u4wJA|HP^#i5n^K(G8&}OQ z?19UtlkHdhQ&A?wZJ1{8vbN%bR)UxQt-(vL+ne)J`>W*TyVm~;FDNB=NxlXbf-lU= z`e_xpvC8FfKNT7ZIa*N>OMH;StGF~yNwQA4r5P{Q)JG~_ic|iiR#G1kTIsrA=}(53`zzAgDP|9ZQhJXe4_NV7yZ0C@t_usI>s6!_@#;aAePm>h$yXWzaRUfqSuQ|BbTs;LJ5IYt|Y0t5g%$QMpw)S1~3@8AI+QkfaPv%E=o;(=Q*|hWMD8`2R@z^Z1&N?++Z$%#-4qb!Vm}PB}n#x+FK3xS5 zX|E!N=pJY79)o%T62F%-7{1g4vy7O7q5+8|CL=(U4pLbM%!Y4pt*Bf?L+7b`=B(~` ztwMbMK=Ig;0X}(>uKBQfYzle#vR}D>Y5K#L6)XB3wo0I2t#SbDe~+GByB~(od6-K0 zv68%sKh^gGDcbDEsxUX2;m7=_8({PPt1{OBl`C!VXa1#4rBuDFO>p6gm!*}H=GYEz zq>pQ5Vu%bcA=Fs>+0zXq@}{r|t^6tCx$ zoL)}~67AwTCO@)hwJ}d_Z(ALQif<<=< zD9zf|6pb4?u**4_QpdU&W-Zom%lm^l{s-R|go?9YTu0F?913oEk&&FZhF=1$FU>0P z^^I+pOS3sFPx-c~L97ttXJ66x!7NsO9|f~YtPy#aVWApiDQZ=Q{S*uy)xm<-BIQ%U zm`0XN4AdxNI1;T`~BH{y2E<90*ba^+ZKcGfnu92?IjsFMMa z>h!+E5f6nEFbf9^*#+cCQWRNepplV0Trvo5{cs5^bfGfXiUz~0x`9x&EwA9JCtcQP zFKeui<#McWI<3$Oo!o0O==VtMu~{bvQhWtAzoF4cl=Z(VZO;jX%Xg-8@0-<8)`uE~ zu%BuRxQxDOoK>Ov*>0Ai&U}Na_5Vj~!DgUb*^OQ2^-=!>~Lls$b=58xkiT#j| zRi!=ESUj^)aCP>&*v}RJJ@{E6RHFun{kOK+HP|xd3I;%0%;>t2SJa>u>)@pPpz@;; zLCk};)M8E=`i+*CV&3#?EmlR7Ttk7{teyhamtwyB?*lZjHmgv`p48ewVgVi#rd73p z(sSuVZB|}I|GPFDC^4&782f_HYD^cyST*OMK!fa;r9yRBA}>;otaVuB`i=0$A?7`3 z?DBbb${7MkbcPmL4-hlqJOP7dL|U*EO5m%5W`UrKxH7iC>#!IG35=T5W0hhIT&azb zkd&pK;f{b?stO_vcP=FYZN|jgzE`I_pP}!~h$<1%9a$bkmW4k}0z_u@F}O`_#p<)# ztjtY+ojhK`*C3C-0aWDikPMSk`-s0JkKQz^0jtYq)5!*GM(}w*J>dy_jfB4dR0(&< zFqtrwCWf;B+8WM^xr~;cN?Mym=Rj;-TERot@HD5_;mnV%A+HGL&+b$02v(-l4PPwV z9b_(l1Hv+0gXLspb!A$Th8KW8E?XpBo~d;SyFCoY2PA67&0=GxByl#v4vySD>5ZP7BO#}?-*iKxqM^LUKc9+~%Lh_xTxYvB* z{?6{MgnrnI-(j1jGuzMDYFo3eY!Hjwl+UPRs)Hn64+qVb{r+99@39riSCO;{xxR^c z;(nIT_Ocs`W&D9gO?$A#-UUpG?6;Sk_8^B7-`54x?S-FNRHpYm*hrrJmPYnub+{X+ zEj?LL&&2oKz>!ga3>;}(iLUizey)E`&CB}`f#j5s{8FLZLYFMnuYZ`ceNV!yhN- zM!Sm&aH$L{kxOq@v;5%xazlI=eC00wC|BG>;5K=EKGZnFl-)|4e2a!DtAb-RxHk)R zFNFBG&-|b%&T=MJ6nRIRdb3K7MfRY}8_=!Z>;-E^7yGbkJYglZwty&4w=!4yxwOgE zt=>x65AukfyR_D!)_s|0{!2UM8WBK4`?50JsikdxUv`t_PqZPwRo~Ot{_OLTjbEV- zO6Ca%1Tk^4Ge&swHA(Jj!-}8?IS*h}c*A9Sft8Dy@>9o{^G-W}Ubqy&6UTh?_4MgaAkk`{wcT54F^~o4AB#qcwF@Y5AnWcN_ZQbEY^KauogonP26r@sTRIc zJ@pD6cqdZ9^CUc*d>gh!k3ccN?(rD_yTxh~+zHNbWnwe07$!!+Z2fX$~fx@dR!ErL*ET%m9(tc4s(4D z6sKE*SyApqG;s(kLGJjgcxS#oTG*m8Y~R3J*^wKDZ`lQ5DVDTRj$Xze6gLF(YsP$; zKCsk}f1t;T;7<{bVgRh;&4SxK^8LZ7_e`y%X$>|uD0>L2Qf>JYBl0Q$*0E2;OuNS% z0Lf!t$%DCLUx-Az_t+=YdMGPuN|ad)8p`~9Yubat0AzcMV0;V`Rptq;8p=w${Pox< z<@IAaHADl68Ca#)qNxYh{|Lh!P=Kr(id1Gkd}ZnGwOq?`wZW% znowOe;e;)D1UtmS$~@#c=TIJiD2_ihT0Q`#{58r)y={lqI^4%y*hj_dETgoySu}nm zWZ{>uXyHiaTYr}ffP&#id<|^e0`P-o=ts1+5Ke($$_4;V3y^&fA$_}M)1M<*X#N80 zfsoa$RDKjI&E2e&nE)JISi$5&JrXbpFH|u3yUw(e4ktz1&yHdpSxvf?fEAz-{&>%s z)H8wAZBpvvh&oNi0~NZxrZfTEhw`CwNyTb`yB7ouX+l8mVZvvUVyh1b{&Ro%_&bze#OBUwXUJsQyyEMxUjiO3lq1cOs zKNNfXjy>s-JGA91*37Z}hftShxuHlpmeq5-Q%EHZNMxnWS8m&r{(761jb(KmzsM8% zS#D_m+vGM5bu#IpsI&3v#KRMT_fbIjzplxmz2EGuMpDoChF@`aZkIK>(6H1f3r5F4oz-H(sN&D1)zg zNLiCufNx&}D5^C80Ek>WdT&9VW zpg6#K)QKrGg#On?@!EI!*XL{MoeK9%$oF2#;Q5L zQNk1!z%#xin!>8{XX7OcS8qBi^NPDo52k}_^}S6ct?(~3it1Ux z3b+1J62@AUihXI%UQuN|`&?ox8Q_9ofVX}t^L}$~-9;;7PV24G_57?}(gQEOq|jUB zn!=h@ynho`TF)ornXwTtB+EL6)g2h?E^g!)$mo(B2U{>M^LqyERa>CPBRhzk83nxCM)gz23Gb` zC7ksS_8-Jv*s~f-_|K>4XGF-~61^eD45J4#Sy+j;V^HoeMs;Sf z7W~0CG<6mRV9Dona2Bg+Ix-UGN4E=`ij&7|=F{$5ICY69fB{hhQ`H%TsDpWyyKJvK zFL+>WDh^>WR`flImg7*fZrAT+e@#Gib)_ToS)kjIDZu;|W|1@Qy_3);eN2w!hxb01-|AzMmO*LX zv8KH1XQa(XgC>7&uTqEk%*U+-oOxtqi8e@p8636K9lfark~1 z1b0!qfZqAZ6ZOuoi$M?r2H9TChsvG*K7bMzuqvh^L+qt0$+zNS2v%1Ie_Zsl1ABx;9>Iro`rMQbJXj5=HXlRl8(M| zyP_pS`40}E`HBeNJw&s=2a~^}4W)h0rn!`tA&O!KQ_LdfZ+6J_czci%7qM1+?Lj)W zh}AKr4YJqSe=&M$5}bK^s`+A8qK(%$S=~Md!H@kRhvOB@IE|_E8lVvP)2Zw|K>D;j zjffUZS`(zbjQo-}!r`J~IH^)lZ0JKf7qjZ73j^&%J1#-d-@}===qgK?e{=|lYOENI zY|-o~FQw&r{})O`1nmhBH~vt}>j#t3ZbzhtvZ9=|34Cm~!_qDC(SjwQ1lT0nzl2pU z^^w`DPai|x4*>lNKt&xyn3;+$Wpx_8J7CwKKLxukW*kzb9RqB69w+>fw=VWymZ8H{ zsIf8|pTktB5i43V8Y-Vd`|O>x50HMi3MXSezKB{Zma){G&_US{Hu|{ko zjakPOxVz#2UdALD7l?*M+p&F04*+`N;r1=02%!^J`LW*KYG8c^%yY?sTJ zUvhHv4bhX-YX$4guXU%xE3gK;^!*@iR{s?}BuC~y#ZB<-SW2FW;iKh9rR~vW=)=@v zJsVBi*033rvzGOu%BxvlnzNE6(ahB>ll<4i@60OvxvhdK^{2J0HGQ#)b*KI7u$BIF zJqw^&>sVz9muY*h!{4wqtO~hrU{ykg6dN!w?NHi-b$ZQrA9`A_N80->{VM71)Lv5i zAYZ41+RjO&^rsOUq~$DDWfXtxi0ru-Uyl}Ec6N__WE&wDA8qT5ySvYjyU^ykm%TO1| z%d3Jh4pFNkF3gs zoF5H0M?iL{_ycZZnmz?6ZsAX{Xmxk_fv$dAh z5p1_SSUMPnvGEN2=nts-1Uxn7l+xNsD3kZIn~i?C03bI(9hm^7G@^e%|6L{`Os8Sv zsMa=C)+I)IDB+?R#cyLx3tqdXW`8dz{lqZZw~d9E4{fq1+P8^nZ)0W5Go_D8W!*%B zx3MM#ee)#SM&q`#s-@p=#3WW~GcQEX-9LH&Z+-6H-AL!QL)BHEo^EH=*&qt~>4W}2 z-^X#-rSIcJxG4+%P)T9MGg|x;>(}rjMS~I1C*tQkiiY?fWLxaCDm4_DeV8#nccF$m z*in8zlM3u)&4W6xNB=>M&<0-vpV|Vnj&~9bWRUE|hLpIIUDu-jaiF+etWju@b-*>G zalzM+A)1JpRJ|iyVy0pK%7rEuaRUjK$&E?43bGkQj;`RT|4B!=+=D}8JxXR zPjeSvBh5X4GR;{TB-312Ne|Lk4Zm6NP%|HvwG^j8Rf+o)#L0Ah_PoXH$)uR0YzG@m z&okJ_cKYGnsHb_ELn)h7ZX;{(<$UzrzxCVaTcL~IeP?u^10sn(;8MEs=ikw>448(D zZBJSTtIV#_wBt|}ZJnVxQ|Aok-eXlgo#rGxva3)3U3z$|EZu@U|D*Invh;%X(%k`w zoOwp+oNUKf8UGpWa4fbq&LKm|JgOhYwx8I8DEelGZ63Wl#=Oc5yo(uf;>Qpy3axEHn0(GiUN3YX+ zyjmkU1ieSe{0sASnj0hQbYl)Z1H}g$6ZH$L>Bb5uZ0;yd%#nHwiXY2;3pz}!?EoX8 zQI6fSn%|<;zpxMt*STL<6F0R_9F>m#KvwHRY{4hlY{rVx?o+HTzf#fm@)X;~T>eTi z=GC7mwrywFM8>Mws-AqboMrQ!z zt`s$86qMh9mR(?h&IODVg{*Yy0`m=Q+X$o8-JY^n-jo^7^^|AG^&$(dwm>>j)^fxV zF7_0zc~c}9DU#sXqi6TSwC+6fb&fU?#!jcx=UFl5vPP`X>Gb40i>%Paf_j76w#C<= zIqd*iYl;Yb6oqLFKxH`eA~d;gBWTV=R*NTBqhBtvCj6fhRODAEIttOEU)h8b&(DAZ ziMsf&U8OGJRQ(cb7O)k@1C|aaQ(`WrCGN&L6m?emWJC$I3T-P#OD?gJ=9}LDwUqMZ z>Nj-a5-aDoJhP#kqN3SUwd}cMK#BvlH8o{-6hD7Mg??j|N_9sn*_ICY8g1zaP(W0g z-*hy_J+jKi8T z252JJlmp4>?mGYXOst`@_n^i^+RyL71oFl`R*Cl91B+boJ|LI-fRZHCRYEB;bklw4 z{s;Wd3VW{h`%usaW5~TU^LKFgtsgL#{42Mr7<4<8MFe{%>b+M4U!(Ut0LsPFK?ccb zs3lUR^1gTKVl3)$@>@HG;C0Z=CFA%kSX-eaiT10+0ipB3cpzo>*E zS4Qgz&*5t%JP%MN+$V!%!h_NST7R0blX>|WCXX}VsblwaKoZ$fVua{KL4u8JGWn(? zSkn+-IV?9H%HbOD5KDDjZZ5JCkWPsd_W?;^Il&XMtcTcoNYX0tS*ZLZA2wyzrh{p` zw5vDrvit)N=uZ7dlUo)HSEH$A7HiMlU(?Dg7F4Ih4Ov`gnV%}I42mmnsTU~rjwFjJv&XDUsVl=VfDrhyi&$X`Bagafz()>S&WN{i6w~ScV>Xosl%>y~K=J>K zHa}q%N=D(3d8}xLsCvbEAn$f!%P@PbHqommtZMb=SV*M!f+_Mh!Vt+lJ3q!m)#N2i zlrdy=VLrjZH^FczA{Or@Qjb5_7oI0SSM_qw9w81&aI~t-A$sr!c+=3=ROBhESg0F9 zkiEN6)y|(&o2RUPHCH{YDLXKA^3PzLdSC++dv&`d{KW`0g4sh=N|TXN(7~tdR!BBR zOTS|XSAM|qyc?<&AU!9m+gq(o+~L_z_oS20SaID>)n>4*-Jh(S#x7FQUr^as9z@IjVm{8d2O1^aqa%NT zg0805f3ccuD24vb8i48y`x_<|skHQO_6>)IGx!xNnZJKYS;iJ>^@>&L;yVDi3L;Sy zUt=7K0TlW07nfBNix(slv)BbEu83PAKaleWokT!9PN_R$et|Z|iA4y(Ajb}JKsU)6 zKeAnUg|igw0o8m1z4IaJ`Ua@Gg2u_uL|XEO1(mqk7lrC(IoAM+6ZlgL!YR7`22x8j zRrm+ir_nV3A82x6nf{hFXML#eTh@gI(Z09L3xdsWZ`n-jtqy$0hH$sx^y@n|ETC|2 z?yv`aitEi@Lqj+&uqCEJNKX5}>iAX{e^S5qsKo-B@}9LVzh<+-AXql!R5>p^QzQ(sap9P0b z>c7QlB_6CukoOuf_V}K0<~``5#;dUD_VSE2w5&sH=(l=j$%VjaqBGI22h6 zO}tj%$k<|&+ zmquDs9eK%;FXD{G{0#u&hTPLk5aI@0YBFWgaYr7`R~IGc{JbVRNzZO+Mf1N(epFkq zg%p#Y59G&OX;*$;s?6jfYAVF;hwdX7ts7(pB;Mb$t9%ueb?ZVo`FSO9sp}kA2HGHk*qud#W1_a7forBC-*2C z3lBAK+W|nXiXEpFmzZY_cgtz3U(QG;u}vl(>m-WU;}!!jajXwd8S6f3R?o@K@OfwxQHNYPrUDFj~k}aI(x#c@+v{gJb4WtxsUvj zm0d=Z5#dA>E%$`soABbUF7x55id-0_y2p8pJ=#~~U!1pZCb^pqpfe}a+z(2T^r_N} zMrBIEC9X%Ssc2Vt8gufIm*tGL78b8g;#wroS?O(mqrJs>*;*5ky}TM~TP;h*sA3&O zCAh_0#8PBtJ^;&miRWJWVwNf5X3LpRExdWd(yA_?sArA3yf|QmmNx31s>`2EWnE~d z505A%BP!CH5%uCgMF`a~nMh@iITJCd%_d%yc6swK|9`b`;(RG|>n#j`EvXOpr28d! z1HXU8?3E|xW@_loJt)YBN9q+7DKW>4iav6%$%?}01f5nBcP*l#J|%d=lB%M4>Sl?0 ziYlMYYUCg;MyY6iC3yJ%h&FsCqK(p{z4zh83hZbze0SRUSAo&w>&tNhh9Z1H8T!&! zzPzSuh)|O#IY~=-VjlbfQB zo=6P?ewCDq=1#g92+BW|9D{h{>W!tp;&;LU>H9xt(H3h|roO)vC7*rJgm-Q{&oD{~ z;+4#|Ys-mzQD%9EY(c!7U%eh`&FpY5E~lCpfdpV+@>`mi@Vb$Q*iY|+xL?F@q*AkQ zB!J}f5Pf41f@>|<>qu5g7z~IA#um4}MSywTCa0|#OEvUSLxOpVJc0C2FdtINI2jTx zB_2@amH`jd9z*Q`{Jo3Qs%E_1zb9bC;13h99V&v13uK^=} zs3mVGyDDD{uO-zw4Pe&A&ePTythQi9TY*n0+nXA-;}D+a5b=IKpQ)d#XcMLB^$(?wsYQNT)Y7<>G6_px*Lv*_bFER*Lt8OmpY>>4>CWwnA36oa#8Wf-R;zTnr zvueZW5iX{Qx(C{1xoU|z3o;UQtfR2PmII;5Ne4h<&RS!x%SgwJmmHwbY=OemI@>CT zy7lDVA<$^pZvnd^5@C;P-#65k`{YM~meW|XauS@x_qJ6%IbO(vq$v$qJ`kU@cg(@k z#7WgTqlvPPw1O*foN^o`4n?49-tc!+r#BB`@2FRAFvSki zmZZyZVl#5JWF+V0jQU)xMnqkmwVbqmyp6|bJ!X|_$w?O-5=voPe!v?V)Q|hsDTb&y z376$0^#qulbXLAf>HtvHTmyg|p<>BN0!)|?uVrk-nq|>}emr18IXM)%q*Vn=lqBBQ z#Z=|1_#FHAfLR1y$nhz^Ny#=)cC!Q*Iqm{T;g}t!>%HT|5EO|nE^yRQgI>!cJ3vfB zsaQcW93^%sg?AJ9sGi`>UQ_S>yd+Db@)O5Dd0ki2=gi&gM3 z+Ois;6yqSoq4Cqzq_665}-MKSoO3KxGxvj^}seEi>3 zdm#UtEwY6U;dE$lXVtutuaLK_H*`UG*x>~_NBm7`3B12ck}#rA6cjKVL@8o4FW|arB{&CMpC}_H2|7KR z`@`^L%xK6iw{R&zT=p1ysG|{@Lr+HY22F>n(6V9>z6KTf44~+QKh;lN0c2Mb(I3K_ z0fY|7M^v}Rsr7(Hj^SZN1JEw4Y9BTTB$iOgD=^1MAHz#r#_ z5@>#LN>Ad8`H=e5XFS#>mnBqs0x&rtUZ)C@19Oi$3qmVN=yl-dR5Z5Z*Fa5)QAcG-NWb-~YlD!{ZWwY)@Q6 zcMw2Fh4S?l$amxNKwUgA|n6Zxlni2q5KWLndy$3sy z`NQTqg*Rrb0=4}HJl3zY{u^GEt)y$;aPLarB&p`e2PPd=+Ngwyn4DlUm`>Of^5n0vX(HPw|$d>$xh>fHz0Mj#!DlOn8`KhVYW&yND-%TaU0<1<)Xy*c6hj*_@&k)S! zQ;~%{inl*PT^4dbFB9x0z`ZG9RKi)`%FPVFBQ$FvPmESuukG=o(CswSNyTM{sJ&PF zDJauGd5NUuAnw!L@J!Yg`g$jrtC?VeUme<$P%uxS!fztQe$Q7olcoY4vx`Usf1%cb zk|F_K1`9YEpf%x@=p$oEbn6cw8HQnshUn|d?r7+#px3Iuh?nq|i8G?o5q50}@8jPSwg6yXz>zpOA^4z}@mOK#Zdt_2!_;jl_XQ93)l%LZ zR)$BGLilhb&t<$^@Z|ky1m@Ir5r06R5a6fd;8`UH6DuO@Z}8L6`)R;3?%$xPkB-gV z)2&IztT88{_mZo3vF!4~j1+RL)iNP{M-_tvFOI-%%-5rIcp2~L-&grum)+J6;H30W z@ICrGcrDguQ|;wE&}Sn;bRBvW)DZQAJKQ?^VBSZG%YiGO(dy+qpn%*_OOtzRbZR*k z+p6@>a$c^4*SMUV6;9Y)K?|HyB_NIjNrl~UYOsR)noIs{CquqJ)4&y=b@8-n1)oxA zbzj*)h^d(jIKO+jGli|>z1a|2w37Q4OW$Kpb^wqrl(u3tVg(O!Ef9!qzl9UR?P5j2 zy~I}W7;smuSMi!5P5b0#YMe?0Rs3+eOIeBDO~6BWqT(Lfwu*c5)nCwwRlG#ySB+JF ztm-%gcA$r>c4VtyCFpRU(;1EjZeIHQ`rk<6fm5$54V}&bnN$qt8M7I_S9JBzCcoRYQ)F1-b#ieSIlZ8B~caKQE?_9RDj%N~Fiv%?UsuUa*BQS0?U zg|ErFo_FAny6GMEZaps%y0cquyV_j!5SCnP@p&R(w7+-N0kYeX-N%mm=y2 z`BKbWAV_jJ8`UnmyEw7KUh+};c>}MqS zjl`#Dl=ZnRzS<7jw2@bIebMDZiUZE{`$k?mst968e1ave9iNt?&cLT$r_s?qvZKcV z5*zCoBLXH__`(|)c4?@LDb7%ad@l|U_ z*bmfZ8!r-H+bahIcNFh_I5prLMgsH%=g7Cqe$Q3Qia$3q+`fQWC_DKP9QvsboTYb| z9(8A0)Dt&bROSFn)FW{mfx6=Mh>V5}L;WTAI2aI|-o^u5X2=Li6*8S(Z{vg6E9$?U z!wAY&=O+l8I3(0-2VYh;X#+SYG$8?BV>@LuK&wxn=!37~r1}G(S=+gzH2zdav{*;sHeR2(Q<9Ch3*Nj|@4MCb z8hy70Ab5C_m<2$knM;4!_}4Z2fx==%hh7rr!s0H-K0`4+VzUB8l=|rA0iD5Ife&~i zW?i5kck@8+X~^r7wZhX?t`**E>G5vvQ*`7SJ9@#?-k^qsX!r^qTyQtGx$H!LFSSX< zV@a)7Q{^=7=LfrfJK}@_v_fX~!B^GVe>DwGdwt zX}scupAnFp9;y~c@wB^aV@gcA2*zm-%)(pB<5NLGOmoY{qpi7kl)T=KM=*Ny5++%q zVx$}ZsXe069mP?=)1!W$7WEgf=-vPe?c2i(xtv;Qk9(Z1?!l^dp33gUmU0qJ+{;In z+OPtR0)DK(*O(|P0gBo9Q^+xoivG+el-PYx&BE+ksgbCa=&ULaW^C(eeHhjw{wKpw zOW8rxU7-)d+~xLOnh8i>l#F4xELk37?Y&NI_VG!j-_%k35FQ%ypO}=XCA6`|JXLQ3 z#Jdferz&uOUZ$e2hb_~`tM#(n`o{v4<5dq|HD2M%&vXZ7CeyRSylCa%`mz~$2-dI5B%+D;$R4xowy5zyMNm7n$Cprz zbRO;QUsqx1nB>|l;S1~x(7uDbIIT_Rt(~VX)T?bfGf zK^oiuCO5#|!cep$1$RT?S@bT@Qq4NTYx`XMTPUj4W_s`ek| zk>e88yvnE!nyp%;EwWE7Yu^=U85W1u6^>X;qYU; zXj#?s5I2SM0)0S1sNc!~h1IjzJ>QOFJLpUX6!|MCU~wsrHusxxsyS(YI9mCS=!dv#8BY>}T}LqIoxY zS)Q0h`)=}dzVQuBzQx1%@+{ha3;F;nJ-@{}@f}&zGLt727`aJRaL6V)pUF>g-y5{z zHm|^Yy`s~%d8DIHHZ~D{pZk7OIcj)^&*7hKpkMFsudpK+dzV*tTA!4Y(@{8&rEl-@ z(BK1K$w_10%AlCs0oa%lI{}K-_)|1&9o@Ohcep!@#a;U`P?yF#bcD^`J6d~>Cl*XZ zEa?>oLxn_Jh5P&w!|i%r5BPHD^wCBJ8Fc6Y@8H)TZbjGo0DyRfqZzqdW98OT4Z*8p z3o2gl(tOyLG*j?NenS!rCCq04ki-kBcj%#jR1P9^4OPnGLxT>&ff*HgArhDdOXz31 z>KR^%7qMJ4f)iV=nc3X4{hComb}IpVQiIR1${2e9(t4-6G!~NOppsS2w-fP_`I;Rlm+iT^+@yZB55QSEHrj!!B`DcQV&dRjnM=HvTN>)8{kDMI5O@j7yU zEhXxOwYitItxrbO#ZdG}M$~0FE3qXFF8tR=JhEzE*gfhdQ%Qi(FaKdO6(s5-Oc&b1 zMo^2#+{g3fa@F&yn=PXxtXK+KYT{L6Pr~j|&-8adiVz@Y4{RuGmm!i1-2wo7Yxz7^ z@_~hoKpk~e+3SQ4`M;b0gumeHN77$U_)2>9CzOt%X1e(Tb8y}t{8xr^4^R2JqR=;^ z+fw?!g+e85BAN+O?v(kQzh?RA>YpIEFJADK zeC>Q%@RG+BdW>bkauhe0xtD?7D^7IZ^%r+zg-#9m*t@#SSA*KYl7E8p_wuDqA0 z?TNFt(ZnOi*}iwv(lsvpZM}+U?wk+tw|!Amo5Cu0z*SXhTNUrnhN<343&r4O=hM#! zJrn6_SW97M)_0)UqWyvV0 zMY@sn7?SE0u+0k8e&ReO$`(~d3v=Xc!)+5QYC+5_<40w}#zbbmt&&!Q|9;#iDrvVl z(`+ZIXvIwYVNKhe8d`UaTdUa`hH38sRJJv&ulZ{{KE&21LMx{6w&iSJHP$L}Ub+lz zh|<2{i-M_26Kw{N`#=*dgkKJ#Crz}?xOUsNxT!Xf^NdoIuenx@&nZQ9}W3Qb}{H#Tid=`q{hElWm_;nyKmylmf9u^)-pBz^Y^yi!?a%cc-QZ2 zhev65%${3=fj#X5hl5i~ObhuN1Be@ew+7qxPSTEQ{LKy9?}Z#? z)P-7EwU&89OfQWP+mBZ58I!t;6)9*wbQfn+G#{QBPft=bPs%r2EABoX$9&W_!X$a# zr>B0u8ecw|Vo$?vUm33*K!^yk$1AJH6CQRCPvsFPG`ol689F#e^YFNL8n(ZZY(4;h zNe?Q2nBFeds)R4IhpYr3uhPQDSjlGrv@@^v+u4T0Pc7^t0m!Sg#x2%bR4Hor^#XuQ z^5J7hWsZ8h)CHbkPKTb8>m;T<9b2Zg^jQE2LN$01faLV*vQ{Z$J+K$DZ#;!A*CHDG z!15{kTWe!4W$c5y-}JYdp^3~%Y2hVOFxpx1aQrJq2P1~Ji5ij?Ue>s+Oh2r94-^f9 z>Sf$l7OKpvqKCal-Kfg~trTxrf=(~dym>t@%3h*XsI_(-y1nE{qYveqqEjAQ{z$m< z;VfdbDH%`dx{J5Jpyj&x=eu7hW~tV&bZ;P|{kqqXqUwbvuLJNz4fK-he@@$$YITA? zs$)GP=0|nBHS~QBwHb&Lcb8^sMPxOzXKOx9jhAMj;c%M*hTFl~+Q(v&SDBjfhJXtK zR++)z``K?Xu~rZpP8egb`2@9^gV}y~1dW}e1(m#m0MXPQ+8ltjXP~HQ_XsOD1lyHzAg+uUStV zT-)dhJ#{Z5wb2!N>bHacXX?O@QV;*H)Jq4`)?Z)|ns0{Y@!{q_FSjY*%TB_xtiz_h z&k^6pQ}r2IB~yI-`<%JH2fXyF{}v9D6H>qWuX0~tjg*M~^DYMa)qn55eh(2T8muRE zAHquVA}R-cN|&q#Z?Pc5J`(^~dzi&kyT|kl>NQgfE#K1a(OSmHZ=Vl3-noj3@Ky6N z6j!gz)FSNH^MznzYO;sk`$qqHsNVnLGueN+*Yo|kR==K4JE26(r$~}k9*VE8d?dT=7_EcN(_Kpf)W9O zGJGiQo3AyLxFhLFq`m+0(vwIr(}Da+3*ZI+&s5{h07W%AEzknxbR54xry7eEXqEZ- zC3JFuR-)jp!?`rUc34dka#^UAE0cGI7=+>D8S;03l{ubxt!XD<`iwA$L+D2{Vxb

-+5Xv*P4)Zo>sy14e)__Ct&wI{d(hC&p$&e z{1J(Ox>Avd$`e2$y7ZwJ3qc~v_sL5lIuFc4B1#YZKahxhUr7?-bihs`E)4jv>X-Zz z`Vi3xf2ymy0+1x4sokUben}!qHGKFAt74Bp=%Qy~>L!mbE3L)7g=UZEC=>pRa@^Zz z%(Vym{%@3{TyNRMxs+q$Qk`<7DH%BR6Uy--Tv85i@86&cOIvV!xcH9 z1LK)T@mR~RmR~xw6HgaPPbbT7Si#`Dy^!i-X7eKpsq-?eR-GX~V=h$>l&s89fZ0Vv z7ksSdKts3R2`)&tN{ZEajx<~vBzX=hu|lgtgV$o+Z1tEXuGKua(-WG%RtwD^Tni)F zrazrpt9cd3j~NYuvGprDvqmdL?(4JyzU}rJc;68K_?yP~7)(;+UaG%JD_K11F{}dI z;jhN12mtK7%WBNuhIa=hufob0`iPdU(i-7Wn%k?i?tH065v#SL#UH%L$;mEiZRI4d z^X)Pn1vue#>uF~ksP76)&{vPhxiI{ zyUSV#MX!Pm=Xt(zc`@|5e?9VFqj`Ee)>AzN(ecAum80aaJg!S^)@Y6EcB+nENd{j3 z`}xFfu+$90OoJhV2aFXk-Eq@>WS|pl7EFQSRv+1Q6@0&d?oIVZ0s!<{AAAhnsBfz3 zHTQlG(QB3AugFZ*REl1!m8KReG*{<#S-|F2CQ+fc-Vde!)cfJsOT8arUZ{R>J`c>w z8SNpy-c9#bXaT;_yN%ph06?j=@iE3KY&Vr$i7srEMfFx{eM(lUiWYY6^}kx^)|>XP z)T;BWc)dL#Hlsb20U&1|e2n(^+H@@NgR#8G+GW(>5rE|M2)Po{m~~oJt;lc(iXF;4 z3O#y>!SfSS5JC0OG&;9VD^b2T+-lwHCsR(qTIrmeVForPN*=eGXlM_Qq@wG!3NB`q z-YHfT*o6z8u;hHSOMaZG+a(^J}a{Kuic{X7F52mgm?a zGl`qzwoyA)Hv!g6s`x|z%Dk{I05voN0NAhk(w{*-hIewIS?%Bidb2o_3U7iC7wSn3 zHfaIQPq2U3E*|yDra_xDf4=4pSvFy1JXVa>Zqh3Fj77LAXgq+Av(2$jZZCU`ELoK#xqN57Wr(~%9sn}dgR+o zt+#9S3Lb>^6#b?!8PUUP(HsYqd`8(n9%}Rg|*} z!r$`GsFF?V(Qx=iWT(@z5dgCT<+U-GMe??)NDO#(I}ro_55%nnT%r#C)MZ8WH_|Da z*0}lR-(nJk~nu*99TH1hB%#mdWa1MGPkuV~7!hF7MHNee+^Jb>cku<9*YC(R6V+Pq-T54v|9<} z|FhPj%$(JjM%b;Kj;}$BtN_)f@@N?**RwBI)9jzMdc5@jJ<*+2dZMfN8i}p}REdtt zFq!E1Dr&e-t5kR~%9jEZcoX?`myb0j7LQX`Psux9fmZPLk->QUO6>;)=62-nv$FPb zO6gw7j{?xMWifJ6D08~^|4ZKHPxE$nFsAE&<{gO8f7iS5f7g4l+J4GY@7PcC_Cmb_ z@MLd4hp4%;uNDn39yU?*z<4StGgd^Ze0&b?PQ+#@M*nOM9pA{x7l<^0kUSWPJ<+!t z*^pI9?LLw@cGu$hu4UX!VKlJryr_68C z)>SGsSNGao;8KS+X$OzS{HeP?Md@#`nU)vnKN*|FsPf1Cr`#UQVeW>+LjPm@&DdW| zPS4Yi>BvQGQ~&1}UHn%W61O`1k1-1SB<~lW=G_TR>;|KWUKl4+K2=?lla97dk#y#; zR%`-Z=aP4M2c$%+ZC}G#HYHl(V~F7lO^KFo9aUEri!E^kB{~F7bpi!xBT}N}fs{z8 zEli214xeaaCj$qgLf^qE88-$P`^xPNx4U{$$HS?hnk9#8%a(LIJa^k~zFLFEIkc^l zsVIGut`#*mT!OX2Th71w*yv7&>{lp+PNi$3%?lUXSCQ`)Q|lv|pLtlW&)~)MkXJCt0znFUZBI+&` zFXi{|>HSfyMB(&Yp96rfF%m|t{sO<-HA8dh*-;7gAE;lG2lkaoUKlv(Q9lS_mebgY z<6IcS!16k0cU9j!R7g_zxBLd6HTETAjLF@pEW?sJ<+JE4^? zlmQznO1O@Yj5LazgVppUd?*HJ?0x(IWVg`PBIr zEwEbnQHcanOD3w@LDjv$LFgRs%8`;G7>o7jXP^ZtO-+$7U1jVexSiZ&x2Y~p=hhkQs^6Gq1&KzU?=W}WO z4y~HYLAyu#9Qu8SRzK)Vc&O1F2Otc$^!%A{C3~Lb7tsrD{YJ)ab0~VJMt;whqr$R) zQKeFno+_4g<7^}UA7<0LouKZIr&GyYT8E%udq6n=+1G$S@(On01{W4>Ws>GLn-+mX z%cn#}>V8V|&DZu2u4E;*6|7Bh`M#nP&fs~#;Bw-*chc_i%7J$|)&}}RC<)a1v=&tU zyIB~wH#3bUyaRyC;2+xEkEOd6O!JyS(mxCF&m-WBl;flT1<~m)ct~6duQKE}Yf2qJ zVDNjS5q<4B43IhC-uSk5j}FSi*ew{Pr)fJ6p5pZkqZV%g;K3Fl>>k+wrZ)+Moszj8 z9~GW6x~#Y-<1`6T^5lMSpE-uMJ;5oZRfuriPoZZtPkv-SH9MpA$Ck{NGg<`ufu5ex z8uG#0soGgBR&H-hIji{>>9s)}JXP$5xK>%>FlC(8W)__Pt?Fzwz2;Njb6O?8uJ8h< zVYUnKaEhk*Q#@{S+Hy`SSHuHuo!+_wlIT=~eoWVV`Mna7>~^6guQVT*Ay)ge8${Og znzu`nT#rVy?Y!2|J8id4amBf`k4f*r-)sdhXr-CUUJLT@laqQk)xD^d7hRf}^OISmnfWQ1Wf`B$wh4mSVrt2WjpeX70i161vj7UVK7*JBp-y`&|v>bBdL zG)G*9N8&dv#bwMCB=DCRjiiZ}wdxEvvR~H9;40u7m$e$^tCQ{dU7AdOSF{rTJ92%t z0+K>Pz&nV@xL3%8E*nj8SG35+g|^Fv;l)A-jcb%h1Y4H33P^Ks$DF((X4oYq+y%44 zAU?4mFR_ZeJUvS{uVA2mJ4=6G(aJmjl57mcX{vBl8yegmZcG<7f)dUGN0cKP0Ln9n zu&uhP)hqJ+YkOZk0VIdbjd~x&upKHS*RhWD^)(DzD;Z1W*PJ$7!?2aj^$4Uh*D!30 zw;03rlis3S5o;AHbzK|9$IhY^*R?@DtA3Ob?G3G=T(U2&h;lzt&<$;;R%fQe-2bP& zFORR``v0DL?+GCxu|>!t2oi#sxwGAwxpR|jka8!fun zQdP0E#I7xhqDq%k(QA)g)$+V&Zf=_Ret*B`@8|V;?tPs(XU_UL=X}m*J7;F{nkLao zzd6q0ea2UQb8OXCtu{-U3dQDweeQMLTCr$~;unNUj#gQpRGkVav9pQSIwAzs!2e0r zqrYRUR#Ysw^tr;4^(zUw4IO{lXw{PiM(CEA)*k-?8kG8zvNNj%&Lwh;MhmE*Wg&dqR zvm8hlz=$$^lYums&-_Q?w^rgK*c&cD)6dyNw_kw7@*tg_yWr?V^Qog&XZlhJpi2-i zKZ)^LAYu*z|9%oBopceR*oQ0W z`itn!NAdLFMQq!*U5QUEbfGOTVecsJlB1ICPuld7qoKX?D%$yyqd|o;ctY~xb-Ke$ ze-r5yCVqm5o&Jb?MA-jaNw*=VeavU{_e-W34%RD(cD*CtYBYFzA_O7ew!>cf594V$Pt~qMQ72p7=1^o;KFGStKMxzUfW*7P) zOz&AKrTQzlg_#3NbULu_@A%e=#th4AaL0}r`{IUv=BEiE9h>HK}evW-@4HQ zNcZpKim@nUO?-U>`tPQ59i%ybc2o(9oksxJa136_Quq-;^9cM7_*S`H2=pI7LkSrY z^{_UqfOu(5*vyw|05Ug{{E~)i6wM`Mm|a^>ZxNDUU*4F;1d+z}i^a5c5Q&SbSXyve zbrftjGEgvWB+UsT&tMO^;D;a*W{X(2;>nYI8=kKxreNJEJ_D3lynuzlyG|Od6BEpJCr- z{~}w1hI`{4Kf&|*X6@$hV$nY!9Fs|I=TP5>Mlf`~8~m8o4IwPq&=Ru8vmqoZ%26%Q z>sLbod>T#@`Fou_jLr-ptxe#+4l@iq(kX_^{$*npKUYhV`lF z-z9;>Xq_$HSq+eCAC+{j#mYM999p${mi-Vc=i|EOj>**lK=FR~JV&cge9WNwuz9}A z%S+0HKZi1A@2kY3_loT?omic;Bo%B(H*#%}bXRo}k6MItJV2jNQ(cPBZbXOe zw3n~0PXvhy?ipd$vb-;SHG;%+Uhr}Gl{}#m#xu@$W+Bcg-_7RnCF8g+Z01XE@}CWb z*coR^V!^(CWlEKPB`eOiav{AKLAKOWX$f^sC`UC->YU*F=3Tn8Hi@z)zej(oP3lKC zA5g;o<9rL|m_b;Z@o`1S4u866R3zz{QnKTgX+pO3VRcJeA6c^PDA+L@zEl4^LP7Hn zrLN!Hh5pw^05LFKaoErA6iFJ3<*Mlw`CqCTYgJQbvqGs&tJWd)JyrUdfNjaFhIcZb z?&13Yw|;s#2{FFweXZ1V>}+gJ063WmIA?MZ(ulRfeC%vGx(=xu`EPn8(l2-2V!dbN zgT6Gc4v7fO0zg|M&C;`h6?I6WefiJyY8}$5VkbHDUi`3~I_Lz>usZ%%)YA$RQ+Ptc!YNy`xPARHdi zJ?%SmoK~wx9@z1fnJRHa3Z4^c;?|E{Xva9RuIf8)Jb8i-wFNUk&`)mC`~*^)#?~iz z`1Kx5sZZpvh4(Db0i}Pv;qx9f=#u&*B)AC{Z@O=6I$c|zD0SK{{ufEhpxeAT^l^O> zZ?D^p#y231y=Uov&DIQ91=LCQ9fQD)w$hmF>OkdWUnPj0E0^%#c~M|Y)18UVe!bfs4tkmQP;t6=sf7gM1j zX79P;GPCz`LsH8=^$wlakZ55kcLGD<|J>B+hU8p0c2A)|bt+*{4?EGr@#LmGdMe%3 zh_npv*aWHjz(FnM`E5sPYfS2;PRRkYzxen`DSviY{P`!uU=SjGSEeHU+y6)}2&7M$ zP6st6-jFjLN-F-X13p?$KC^%F45dwo5qyuBQt$Jy?HOHam96!Ef&ar53 zQf&4qiuS8ds?zX8eCzev_42)Io=9SYr#Z}uzHdjnC6ZJdrAH%3O%m=an&zL?5gqCA zMA8Ib_%IXdg!?8>15J7YZFzZHOZ>M4;pJ^+9~LeVSpaTKdXN)tGF2J*n5# zN7m_tDEe_WJ`fg#TdX@El=U^OMMKk$yto2M?MD1ijLg7wP*Lhw!;V zlnFOaoK=`f|87na*cTD&Ke=4GF@K<;wN?tl1Eg^e$hR+buQgfzQ)CscJ0^$xl3KD9 ze@~^k*By=PtwuzN1ic19K&1F60+vR;B$Xby?ntOH1QC9fJOd$9x2tZcS@nqn9!7nQ~=KnO+~5B2VKa1Ag1jun7s<3h%mm;)iP!B~F)7Glf_ zBSGPo|@8Is`7tdSG-* zFQA%rtpEGK1I+3Vf0#9{b`B zU!T%kJq%j)wj(X-yBACP`-cVZzXsZ)Z_rV<9TQqkc9%@es|Y}v9RaUoW?n=PGn3}) zfq*qLz1_6h9ml}XOFE#jEEE@XI`s}rgfPZb(5@)~J1{#-XVZ`FI=V!;1k)G?4K>t!%%O9r zqbPArWX@1i&EJ389?w4=t~j@Vun2(Rc?&n^N5^M{pmaz6~J;50tdxZ2mB zUTSt&Ju6^8xA4id3+fobbS%nFn3Hx}<0I+Dza4y&RX-0Dg{=efR10&Q*$yFJ%dY~wB*RRw zbjdf(gox6FJTt*!{s+v2M=(cN0-=9xpgTR$tU=dRdNb} z%ad~}x_n_X516#&5F$#l7EY*VCQP{eG*mBar1YUf59uAKr5{g!d+7KeB%dqc)L(M+ z^+zxlJ`(5`j~q3<@|S^r%mYvK_v34mJI0nKJk`OV(uDNV5>w0)S76ffOT152^^< zKx%6zvdDiQZr*Q&v|MN>b=sP{aL5#CM*0>VGc|@;g_B}u;N>N|x8#}PcU`1pevOci z!V=~0@4s?+O&sF&P5pw#If!K2M0+|&(0v}X`f{6w`sLMFS5 zwM>}~{+klo`rR5^bm;cxfmOS;Ila`9)D2x+8nduD4QELkdxfgB7fa%z36A`kp#LZN zXcy%t9~BP#kK|(;lx{!yC`j^?kKAo#$wxCY-6HZ$lKkYuRvPoDnMFR-+09DGK`sJM zk&lsxDj^@E5VXiguR#93^jRJ{O*kFJlg4;^^g^E05BaNU39q`;los-&rhV~MdXgud zYUQCAczxwu5+8W`C2dM&Cuv}JgwVcDQqOy~vMH+gzh0I+7blYDgvM_j7zK^*#)wM3 zjT0?|$Q>C^Oo`8YE!zzc28-$4MgY(4twrN=_GdC)>uwYxfo+5}ClRP=&L;fOBEvc) z5pGT^?rWMpJ}VhX|8|n5P3xf4Fmq;~1D4Lk?&8+PCIo-uty)z}Ai&F<(O5KnMj#21 zhd_fYc;@T_L}qDA8HlEH1yZ;9a-{a~nO8g?lLv2`dD#D(jcBqN4qr7J3Ay8KGd11! zRsuaP5WQXx++tk`Tl3NGh-$v1m;C*n5-*@tm9`W~y`6(K@4l&@cJ>*4E&EO49ZSEEd@_up+Eu3UYBeksG=k20LjRUYRO3lK z(Q=#Ma?nnnu`hVejs6!yVR7--Mz^}igvz6!W>_OUg1S`F$UclO$WTc`TWlT7)r>ve zO(fa9g^dB~fqOEULlE*E`j{@)NbR~CKMvq#aXndN$;c;c2;91wu zJMm^(oK>*^XzI_MsS}sJ*#C4&ut}3}Bq0f>Qp~OX@c-JT^@8cZQ$t@gpuf6Fnvvl@ zof8ZZ_y1l)xz7`F4R9*AZjk+{_pnmrS~Z zG&8eU=U$r7Dao*g-(O8vC6h@ZQ=`o#Z9ku4X{Xu{Vbw(txLhx{ zwGG`22FwgTn3wE38&!(4ecK32xzZL0RB?)o_C`+aZN)mmw6{%Mz8Dk5|*6Z>|`jhMi`lGO!zN!qfz0gj- zYDF&Cxupfm(uiQQp9!NswkDbOcN4J>B^^XNBiNDKS4FnYBO ziL7J3+6!k7%;y{-c9;kkKj%R=UwRmgZA&8U3-R1_TjC8n58<}--8sM2qWjvCF|jfr zfM5c!!p+YJ_KOcUB^O(9&*yLsFrId62dhjLUDS>^JO2naWl_SD2*5r&WA|L$l$dHR#Xn37h^7qAa4g z2mzQOX6!d1{W?C!oMpWF41<0UPZI&`;b!3yu+1>wym->I0etU!7Po#B>p**V0E$I@ zWT9B-^6CK;TUMP`>_}omCYHvGr))>krgCFMSiMT5IUPwtz1yHCCB3?Xpzjbysyq_90jaE4oN;tg7ZP1L7;#p|Lg)uwNVBjXL(1ei7D7*T zA@!=RL}Xx4SBB7_uB3r&HcjYCT6i<<79A{eI@C`W%{kecg+!1ZlVF*j0yU4=B^3T` z(Lw(Kj?HULdELZsSok$_+5WHf<@`r|)t;&_b1l8lmBfY@A*cUU@r(mBzc;PfjW{cX zBaBAMJV8`RE@1%X(@()$6Z{zhPe1t|*V(qF1W5Cot3_9Qr+Uy;-AK2l$+ON(GICq^ z-p3;Ff9LfpguvuQ+Y_8#GQWG|e`#C}{kl7t;B0DiC;b}QOS4Cp&3+k`k4QH0{;y#A zO?OfU`G4w8x;D!xY34;_@HaCHq0(l$o8{8Ya_ObzMn6Y7(eHW^IevA;K%u<|ZGjMn zlGf*4=9?*IvA5{X9;8;vzsKKC;k_d;QJeyk^ZioU3R_3vk67V35Vy@4{R7m6_@d=f zJ&B%4wmH3zfxiA%EJT_OnwVfUsQJ#BDQ1IzAOP?a%e-O%%36R=`;z?4TTQZ0H3{k2 zH$^IK(vlba;(aKd^EvDqO-J=0thX~-@DJ5+gv$0>G*e6|>9wK^hs;x5J^c)eq3xWcWtU+jt$)`)kf0CJELNWmX49EWn$qxS% zSktjP_+Lm0tZ;cq9DYbZZv5xh!%B|0_uFJ?e7ou9UZhw~!}h0Tq=5t#P;pJ)Dpqul@#rghD{U3*#A?$&jZb?szb+gaB%>zZs`b?d5F z*L3TeRmJi~TG#Ap^sW9xwa?C>-}NUOyo?n~tZT4!4YjV}*0rW}jkK=O)-}WGNAuIbjblXY!pUDK>sr&g23N7XQ0p3=LxVH0$5Bv`HqRhYtp|+5 z#?@&cx$iZs!*t&QY>o8p4czPCn~n(Iaa@3PA(;_b<_?#c>RV(cm~_GSqIv0Akq4g&(;s0)G|B6nSmsKU~cOx=}&4!<4bBUkoGZXGBZ2{ zXWeVDNZy^vFb)VjjQMIGU!O&p;G%XqBooZ28GSvI%*HEnYyZBv=bzsVt+dt^I%zmb4!$)O2v#d0hZYVe%k7uP z(ZM4iv~A2TI5dL%V2d`Z!^_qEwPjW!OyQGS=MabbmlkXuNjlhqL#LZ4dVCtKJemx# z#TAShO$OS$X$e^0_)TsR#JmZ&6mB$}`P<6D=YyDc39c^O#DTo1S*aFgJkMbFLOu#%D5fF7H_4T(X_Lb%y*li)Jpdcp016X4?E zBH##IG0L8WJBRQ|^Byh@Zgw?9E``g7+YWa;fxb1Cw83ltZqyEvZTo1IaU`lq8!Q6z zcO}#Bo8e@H&y~4Pk4dG|Mw7&XN#jVCt!i;*iurD0#$>65_2}L4WO9vpjnbGn8Lmkh zlMI*9Fl~PQT6A$X39TC5ERA82R+NAyTF?#Iq;b`vPg2a5fYYdBL&1e?QauPCMfv+> z(h^H3aWa``WigvDUDkfOZZcWW#w-?Sdfu62rVy?OF8r5de@kOoQ5 zUq{;%rm%GigAWP4_6j-N*sLp1e{z!)CaX~jlh-(fDc443!Q?4q7>OvGIR}|@kg>RN z!QC9v*kM6h3RPx7)0yN#O>g;Xo~{<9F^bR#ED)G={(DnrH9?A7Uq1cF>hkx=`Q`8P z)|9_5T$kc4-@q47Wq9g7>!}7Zo=Rud`pcU~I?SFHl>ivH&w2WOEnB|9jFKJ(dYp$I zBo9wvpt@Q;PF_=BEFm8R4Kjz#{P_{XUrAtW<7THY^Wd_kVK}F!FzGW=m?LoMGcmJp z>@3V6T=;A7;o@G0568?wJt&ibGWepjkw+TD=HG8sib-*^Q<C8?x0Ak#*qTl1ET7Z#x#+PP$+xNiCO_wHpg*2PSkUy|j~DDpzUxRSfEtRED`q zFYO{N%BAJpPG!PxA^mnii`_&GwGsn}kSw-hie0Uke6?We4`g&u)3TtNogHe9_<)f^ zM?W><8B=M*3DTilOZiMI<_KJ#t>C2-q-s#PDLwKcU2vN8FBezXq~I~)sy8dUGUk2O ziZNXtTs~X?)MAA3qxZ%WG4{yktx5@a{u*Rl+lom*syTUu>k3X^C8`bY>KuBVv=qx$ zo--tk$r}uIXgW~4z+~qkz7TONeCtPhe?%HO@}H#9>(@zZM==6&F>&K%+!Kn42k)}~ zs+e51WfUyGL2BFTsIXc>JY_O$tu3%#L>QJICW9WmNxX@HXuOt=fou#gTQk^5W17P^ zyXS&$qF`RZ%eP3Bty($A1_C0wawTbN&nNWSZ6eu=2yJ|av`~js@E6a5k1Z!=a>@N` z@L@e+=9kewAvS5}egm1$36MPenDewdJmThAs;=_>M>8W%U_a@9~@J+H8{8W0NuHsOC zJ4fInt^uqM*f^yFoL zG2*m_1!VH6R`cuE2`fJFFFyv~q~6D5=hK4Kvrow5pmKs$&hAzgM-Bg`6%&VW;T|kp zaQ4804WF6pPj8gW0!%3b^_d*I`0G{-gK);a zR^D=`m|v2i2pO^vX7@i;!2y2-8Hi^P&N>Q0@xO{5spSADMmZCJbole&@{ZVA(HB8q zWt`82`IG5}nW+!|2=1G~XK+Hx#MRC~P}9#Z$+xg1A04<1&)lA`6x6LjAZZgOiY=3M zJMM8R6h&#D%0aQ!vQT9c+^>g&whU6xJ1D4S<$Oe&Ef&?L3xa~COXXzkU6>DyY2glZ z8^2;4LolgL4309GbCU?)TtP=7X@?3yE$r|oR|w)we_e&3H%wox7?f)IQ!56kwT_^C zEb@0jAt!tmn>^8U{vFb!dLU^Ol3=YitE>s}@ zNHZCBu<7f`Ox|C~;L6Dia|<|n7r6Q$nVI)Eximel0`RaBq^~NVe$`T#j9OsCeyMPEvE9thTE<%QTL%i7+G2`_BLR30^O_~^kS2aX?KFd`%M60YMnk|q192T_gxvIMs^+5&(3Ct9@A@!lWR`DyTfi!bIO{!Lew4$fd zOmx|U!ncujyCkijsY_}!zFLqTd3hXRx^_$J_DyP+c5ydT+P|(mcc;l87v7_jss(im z7l!d1H%J&ZRF=3QL---|Otql;RoNbdX^}m2Qa0*lhZR(=9(2s^Z8{>2G2qM}wmrbXcvRP5t5eMHGyV2}-lkd67XK zDvk*1Hgf3DEc$a~P{XL+_O?T_I}IG4ZOQ*&xwbYC-dl|vGk$16?K(ktUOz1|D6L>a zY*5#ru7z7tEQC06#_yXqMZfsvd^0=`Ve=PP;#)Vk6mCfk1T8;*xBtHAmx3PgK^wMt zSFk(S-mbx}5w2|44A;l5wXTh>?XJD9A6%zh=UkUvcU(_gmDCz)jM_xyR83{H2u;>n zY4^1ty`7$+=j(;~as7&ZOMjrJyEENu++VtPyM6Au2J2zs7)C&|9k_AaMlOl+;+(<=*nE@~85b@=%3w zd0l5+S6vQufI3N?uP#-GXiv1^IIhd2LsWy8%J|k!SxK}IC59xpDHg^?wEq5a~ zlLgrdnQUAOt}i#2`eC@2L;aU(h*Y zm?z7#+Vi#9P>z2TDzmBV3v74i4(AWfOU`P-Bx#zIDSs!Qmc7p@gOsDnH?FE&N*?<~-(!a+`>w5E|sVCQnZq(Rad`J&=*RdzLVNv<}oXIz6^<6L*uaILnc0QI_QeY7!} zSF7yKbDwpm7=4XF#th>PV~Mfc*ktT8apDLtAKnN2dVU*!kpGqci@(d)aFYxVE|WxemF0 z!%BKjU7_w$_p2w>BK3({NvrK{>7MRh;9lqU{OZ2r7L8|&`RKtG<8O0lix_4xJO{gi z{hDRDWUedMhYRM-Mf4K?7Jrz(z&CNWa2n2Morh_~b3u*T2udgAJLR zO;Sgzuc-&rQ);m~RtwP^>hJ5T^>6htZm*lV1C7o#mKk3eqUU?eDkQP&b3yUmh0Zn3 zrh+Q;5r|k*OcJxjH^sx^1u;QVq;%=1lr6t0S61pOs&Y=bt%SO|yGFX!p{K!Wq{^ya zsLyCawO_TXX!8qwr~b2E&n>$ry5DyH;Qrlx&ppwI@ra(ao^L#7%&tPl0JbyJ*!k>d z>~*#x*VfAo;6CKmbNjir{AJ$Ze8rjT{LI-|7$8g(z7b9cwZ!J)DDhSCU9pz5UfM5t z1xO%&Oc1>58sMWOwTC#RQyQ@{zyXzzMHToW%xNEwT zK(4wPBaE}gO(Wd1$+OS%n+Z_3*JjBk_y!6)gLCx4r^7k+egRQswg ztM#;&T3c-{XvTT%k>=K)(TD2i_3oZ=pqVyisTV+e#BJcd=l=%v-MZzV45!Xl$rLoE)WtDPB`Bk~9)N(a) zb#nE?6cxJu!dS#;%{99|OkbpL)-UQI?ym0MSV^C_zjp6*pTxp^;PwU?wTuspb;c!- zn*`4Y&t%VZ|6H-=N2VC2DjSR0TE%|FhI4V;JKU#S0k@1l&0pd@&S#vN)`U^#O6OP3 z1J0AqP$62Fhf&HG;zdF1EDpd*TOn4H8c3WpO!-_1aXkn6(_3AxF7SNhDfArldYEJz zvk?t7WLvTxwkTvZXb*g$z zeXMrSycybPZLf9$6tRw;sQ1vb^c;OHXjf%W#UY?y2i?E8s~WM!IO8>Akx^`OhVBc zY$#WcOXS*fBe-lY_Yrr&*&D3#s?bQ(#4dn4OsS(Jpo&pIrz2oH2VIrHlpCwhs@>E< z>Le{!TcG7@1==3%dn~<6+8SdAXyG~IvhmPxcxrhXcm{hiF_AMpUtr<=;DNkh(r@Nn z{!<|JA^tf32k+w_@D-f{o!%G0E|xe~IU5U#FkF}`tivEa!Z6kspOGd@KS@66x)dtc zkYnXWvIJ^BP#!10EH9F)xMEzQE7{e~^|tGM*Gd3+()F@BM_sJutKX=5)y8h#t-HT) z9{?q|>b~y|GD0zm%|N`D8=nH)qsDK>dE=hfAf8lDZ%>A2s%MsGf#*H&xXm6W$Hoi+ z#6#IJ>>Tzzpx;_{Cwr8w#MR*vKp~&up5u;lZhj{(I5#>4VU-Xe&J=HpQ>1^SSHOm{ zL98CRs;E2EwOXN8+sHHS8)2RZkKplmI$8V_%Ws~ISz{hi{*>L!?cyf$^ZCX6CRBNt zKLI9ko6iO*S^yTZ4Ve9d^AG1W=LcB*n}w6YuULFH1U$7bK9OSO1i7W`lHZqqRuWWM zO;t107t}2E6-#tEuRYWpdVM`fck5}uuEDy~-ND_(JqF@RE;zypFNWx$JIshM1Vb}A z8QmZej5CIMrg&y}mU}++dG`Ga*w1cvVut*A!p04$g|{mvUiF6 znf#T!U+$>%P{t?|mA4hDe6PIf`V0h>sIia(CRhiV-yPHU#|V9MzllW(&`kg*uE zl|ZEGU{2$l%OUUlwx;2_CRZ-chLvxWA!?k&y_09rytI0LynsXhvF5L6n5N-lDjk}079m&UGi2Ly4`IjMTF2K^+#P8z2 z1?{^4R&|?CbUK~AAaISs`uWni#rZvijqA?4PPs${lXogfhdbp z#oeHV5mF4MWR-MGIww{2LiSCO$H=R-_l%E?&y9`7Zo}>w;(5h0$FmIczuqJ^MK(+L zs==;jx3Rm}AKBm8SgeBuTpsrcx0&0+&F2gG2uOc-omuie`5$E#7UeS6Cf5VkAL=1J z#y!gYjX8qFeoEU7>*-6D;c9TvoVPRgBDVz9tm6u~Ly&lX=FW0F-bs7F+B&d>I>&(XHQUy6T)wTTkHr@J50JL-ISWhqTE^zQ6iOk3J3Y9mC_ZH zvsbCMcsii(--2#k z^c0)DhXKK4MAg_xHUT^$jqT3%W(To}&JNCnU^~1pO}r@IlpCT^Hz?**Wufu`8s4Qm zQo>zzpy(v3{UDI7Q}?Kc)h^o05LRmG3-!!6`t zz=Rq6JA4wj*(PCyxLMpO-W7wTY7(!sQ7&nXpaE@g-*mSyMuWVZHEtXK7?I%Vc1xHW z$K`NufwZrMHZ+LO0{$%Gm+@co-|;6QQ(WW!;YDXFFs|WVXO{CL5Si^jo?o5koRL5r zL1-s*!y=j`yd!)ltPyq#=Y?Cs6Co7LWsbNE40We?Ks+v<5wD2%A*k`vaA~kSMW3O+ zrFV31cmHABFzTQ~gFLT$sOLk^C!Xsb28XEQFp5LiFQ9eZkR&-vuB@?|_YXbRo#QzI zHf*=nbXB%CJC@x9Gz;Upf$@IJ#X}J7!EfcK39B*ZPlQCV8^Bm1{wBsq&7=|1B&k5! zD>>w9a=P4KUMhbs7t1z`QBUP#Wux-9QrVROopX+B5$0Z0mqALs4TY|v-dtzW?OqGB z--EifjXRG;XX9&O*)`!~ghYYG2owr`2n|I}Y%BH^hd>hiP0Wy3d5h~$wYz74=LOG1 z@VM_huya{cX8<=|2FKXOzQrx)KI2p@&`jr>&Uc;5oD+m)Sct_!WpRX#0+);`vLp8H71AI)9eNICi|GJ43Xq( z?l3@Zz_;fI@iX}kp^omx3}5AM0&ARt2O`^xVC-{*W9URNMy{$DBPNQXm;!R$TO2Bm z6<_sYDBl%71$ylR|9UL8fRZ>?c@<*hTIC-MT^(0~ONR9FoNI_{ylc8^zAMkQ9%}m` z*DtQ_YJc^(b_bL*8Z4$61n+k4S)L7^{hk}(Zg$I9T9*}ACeP07LC1pGVlEDo*^ckV z_vH)t`}{hm*9D3H6>+`z4G`)#@tznY)sbG3-j!x6^Ra{uD?cg2v2wq19dI3WrDGut zRwt^{)qUy@5HA~PEwn6cx;95!rLEPrfYly_KvGMur>E${_3`>C{Z9~aQ^T&|j&!pC zu)Djj`vv!CXeGJsdG7bz=e+Ko#`DH_D4rBz=;y{4#xCQq@uTrOB$*nX7*Dq6RnIQZ z2~%3nw=>7li_UB>b{U(`Zei_QH7<%%I1kqjI@2(2EN9|TAy77yug53wBcK=0;Pd!T z_%DIJ-}685j5E|(!x<0BaWKgC7hqW4)6Tz~ZH1n~^TII9)?{HO*88X6^V@_Ugww+B z;PWFeLQBQZ#Pd)=qAa%BMd~FDf%Z5>nk~(hmOyW;?rMx_`B6Qio>ecZ^R@T1Jg}nz zZHKl`JEZN<_v?rC6Z#1EIQPr$9QWIhBtI}#n(C{!&`&Vhvt7`y0nh=zWPf98L)0G3 zy~KIB>s$-ywR@l$ML6p@KXk4aw_}nRsg=}28X)~3RfXWO0;=g<`H5`OyjzORRmIic z^{VSN5Zgmw;>FrMEVg=jOQ;^B!BNe2PwLx|{AxZ2!ToYT3-IZVg`ky9OrR6(h2Dosghg^LTXca zqP$GrAvXgr7_BT&3LyJ8$9PN!ALyulul}l5g%HzABf3|AQ$MPEZ|XJN+uVJP9HRiH zqesRoo;=S1&t;48IG7{=9|~b%GW#LBmiq~6#}LTNdxYj!USj~5hJ%@n z!fn`T>}qy5^q%wVW%dT!2jur-4DDWMhex>+{A1@*F$BWHv(h-}9VtpqmNVsCd5!$H zTu(_+ZYr15>nhb=(q~%A|5y56{YU+@eoqf_N4OKQ_)^>hAPG!$&vq|%uX3+-pK$-} z_A=1_>KeL{V$Kumu*m3Apy4*QDp0Pu^BM-cl2}bVC@#jp?vW46zsXnR7odE9szgEu zXy9s!q21;BMisO|{af%6hh=O_a5j+}D{a*_TE70Peo4Opt6@cV6EOKfZYJHIr@AJ3 zwa(fwZ4``ZbF_E0kPej7sT4*3W9 zS2@TP>Z;+&Qg6W25~U?*-L(nYWNj(xx~V|gDb$Ra z#vH@D82ZRpMk7y0&r#2>P?a2(g+hap(GRxF*SK769)`akKad~CzrxQ0I<|+l`vWWj z1BK6pJwVBY(tEHV6-axeZ>7W1W2vp&N$x8TktfMMxvH`R%6TvKd3CZn4?@UiYJqx5 zoep7jiT1I!S@U_dsrnhrP*eB&kbQ!Un#MHaGvg}po&%(CKuCG_aY`S2VCGM?S|IW(su^w2fzc0^+)JnW4Gjf z7Sw;Rd!~CKj4@kag819r!;6J5+Q>B)z%;c26S2$q1@_z9FhXts-9PO)@3-LQIZU%B zBe2PA2Z$%HurimxD||ZtJU^6Q%5UMD!4}XB!gwZ@=X;>++nxKIe>-anobUpO`ZUN< zL856(QpHqpus9wIcd?iUIm&xfya>7OvFHLR`9xYLeGh{4DW>IteBLc(NW0T|A4*mIH~Opk?pcSL+BHo-(>OL@{k>7G=aCK&2-Jx zT6wm4cEe`)qlYPSSaf_9w_5m0`UX#=mVa)RxW^oazs8SUy~on6_s&bWr}i0HTN4$8|b%e8)=}FDZK#!WR{CuD=aqT-E`U+wehlkJb)ycfABu6v5IlybwWqVE2aFzLyq-5a3q9|9R)YC5afIoI z#;QRj{S><1A@&qF!4(LbAzUV8f!DYdu#|qy?dDE^J2v1&UWa-*5PKmL_}8({O>3B2 z492j&tbD2Zv~&6(XjH$rs~eystiL1ALLz>_Io6rue8U+b#0g#%#)EX&>4uAw#OdOE z@qO`gaU=B9L*g&60^bpzi1Vf8SQp<)7o=k83E1o?Spzpash-!aYwIE1J?C~AtBiaY zp}vI;5gdSFl8I&M3S*l<)y@Zn`BwN*I19_tKadY1U>Qsk`=Q0LVxCvb2e$tT;i{Tc zA4bCVkZbx&3#Ap(M$G-s(jTDyiLhCu%g@V0<@xe*`3nsANid;mN_}X2?P0d)ugp?w zX+N6$H=S7e#8;fecXAFAF2EqyR(nZ%O?wC8*gox~_9vvFc)bNSZYJt)>q~X-3jKNa zH1}QXV$Fr{*}>Bn(hzn$GKguO#g@@3wg4=7FqaLDE&@VjZ+FIuu#v^XMs7%H zQU_Sddr1AToslVx#-g1p~VI4+$AUA-V(fzEv2 z3x+}D%5u0I0dms-#-tV?IVyO28?ceCaxbV}vkAYPul3Y>of z5O6z~@^@HLCt-p<3zl$1*VYX}S>Hy

QXJckeHNP1tB?>kvIDrO+-!*ApKv~yYh@tmApQmZP1uUoLGNWCfY*2G&bHv8 zr<_GzXA?mZ+`@Qa3KXS<(9zaF-989Kvq<<$s3=x}tXD^@CpH3Ybb@-PV27-;*hB0u z4iiUch6oeHhV#wVGNa3~32k685*+!D_We`xt^h`?$M8cvHSF3=uvU*PVRoNO;5qREp(r9pTiz(v72rt z6=HB?@HnZUdwXGdWk6rf6h~rNPZ4uq9i5GhoyAaO^1xp{h3>mq{8}s&_rQ{HP&|dj zUL>9qeU?SxA@mEp!cGd6BBf}IUc8im@lzySN(QpGgTg;sng`Al32aq>p^Jfy@xU+v zhVNu-i=`V%FJ-p!wbIV@CiKQrup`z~(_t6QQghTdAqOo~KZW&Yv--7K2&2pa^`Lr0 vJ&wJrU$9?xPQ5~p232SnqGKPY9i+KlT0i;^A{?_l^9t%$sPMaOK1==&?7jw~ From 53b6acf7935c190490637b51241636b147348c85 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Fri, 9 Mar 2018 10:56:08 +0100 Subject: [PATCH 325/658] Fix #45340 --- .../workbench/api/node/extHostConfiguration.ts | 17 +++++++++++++++-- .../api/extHostConfiguration.test.ts | 14 +++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/node/extHostConfiguration.ts b/src/vs/workbench/api/node/extHostConfiguration.ts index c7c10c31fb2..fb1ac12bc09 100644 --- a/src/vs/workbench/api/node/extHostConfiguration.ts +++ b/src/vs/workbench/api/node/extHostConfiguration.ts @@ -100,6 +100,10 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { let clonedConfig = void 0; const cloneOnWriteProxy = (target: any, accessor: string): any => { let clonedTarget = void 0; + const cloneTarget = () => { + clonedConfig = clonedConfig ? clonedConfig : deepClone(config); + clonedTarget = clonedTarget ? clonedTarget : lookUp(clonedConfig, accessor); + }; return isObject(target) ? new Proxy(target, { get: (target: any, property: string) => { @@ -114,10 +118,19 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { return result; }, set: (target: any, property: string, value: any) => { - clonedConfig = clonedConfig ? clonedConfig : deepClone(config); - clonedTarget = clonedTarget ? clonedTarget : lookUp(clonedConfig, accessor); + cloneTarget(); clonedTarget[property] = value; return true; + }, + deleteProperty: (target: any, property: string) => { + cloneTarget(); + delete clonedTarget[property]; + return true; + }, + defineProperty: (target: any, property: string, descriptor: any) => { + cloneTarget(); + Object.defineProperty(clonedTarget, property, descriptor); + return true; } }) : target; }; diff --git a/src/vs/workbench/test/electron-browser/api/extHostConfiguration.test.ts b/src/vs/workbench/test/electron-browser/api/extHostConfiguration.test.ts index b7008d3f5a0..382cbc08b75 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostConfiguration.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostConfiguration.test.ts @@ -102,6 +102,11 @@ suite('ExtHostConfiguration', function () { 'config2': 'Das Pferd frisst kein Reis.' }, 'config4': '' + }, + 'workbench': { + 'colorCustomizations': { + 'statusBar.foreground': 'somevalue' + } } }); @@ -131,6 +136,14 @@ suite('ExtHostConfiguration', function () { actual = testObject.inspect('farboo'); actual['value'] = 'effectiveValue'; assert.equal('effectiveValue', actual['value']); + + testObject = all.getConfiguration('workbench'); + actual = testObject.get('colorCustomizations'); + delete actual['statusBar.foreground']; + assert.equal(actual['statusBar.foreground'], undefined); + testObject = all.getConfiguration('workbench'); + actual = testObject.get('colorCustomizations'); + assert.equal(actual['statusBar.foreground'], 'somevalue'); }); test('cannot modify returned configuration', function () { @@ -158,7 +171,6 @@ suite('ExtHostConfiguration', function () { testObject['farboo']['config0'] = false; assert.fail('This should be readonly'); } catch (e) { - console.log(e); } try { From 1490d829477ae4d548d2582526789aea84ff473d Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 11:03:07 +0100 Subject: [PATCH 326/658] bump up unit test timeout --- test/electron/renderer.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/electron/renderer.html b/test/electron/renderer.html index 0c94643debb..1eb67318bfa 100644 --- a/test/electron/renderer.html +++ b/test/electron/renderer.html @@ -11,7 +11,10 @@ From 5b412b26167f5c4d51c69bc4ac2e5e4131972da4 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 11:03:59 +0100 Subject: [PATCH 327/658] remove bad timeout --- test/electron/renderer.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/electron/renderer.js b/test/electron/renderer.js index 5fe876dc803..5658b244719 100644 --- a/test/electron/renderer.js +++ b/test/electron/renderer.js @@ -252,8 +252,6 @@ function runTests(opts) { mocha.reporter(IPCReporter); } - mocha.timeout(5000); - const runner = mocha.run(() => { createCoverageReport(opts).then(() => { ipcRenderer.send('all done'); From 886f9c2e100762f01ac2e13b8bc22c7aff0bf7c5 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 11:25:21 +0100 Subject: [PATCH 328/658] fixes #43161 --- extensions/git/src/util.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/extensions/git/src/util.ts b/extensions/git/src/util.ts index e4e0feb623d..ec3f7887e98 100644 --- a/extensions/git/src/util.ts +++ b/extensions/git/src/util.ts @@ -303,6 +303,10 @@ export function detectUnicodeEncoding(buffer: Buffer): Encoding | null { return null; } +function isWindowsPath(path: string): boolean { + return /^[a-zA-Z]:\\/.test(path); +} + export function isDescendant(parent: string, descendant: string): boolean { if (parent === descendant) { return true; @@ -312,5 +316,11 @@ export function isDescendant(parent: string, descendant: string): boolean { parent += sep; } + // Windows is case insensitive + if (isWindowsPath(parent)) { + parent = parent.toLowerCase(); + descendant = descendant.toLowerCase(); + } + return descendant.startsWith(parent); } From 287fc25a50248365b3ca0591b5091f0bc84b5456 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 11:33:49 +0100 Subject: [PATCH 329/658] fix #45157 --- src/vs/code/electron-main/app.ts | 6 +++++- src/vs/code/electron-main/sharedProcess.ts | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 3c56236e8a8..d8e1e4ff59f 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -351,7 +351,11 @@ export class CodeApplication { // TODO@Joao: so ugly... this.windowsMainService.onWindowsCountChanged(e => { - if (!platform.isMacintosh && e.newCount === 0) { + if (e.newCount !== 0) { + return; // only when all VS Code windows are closed + } + + if (!platform.isMacintosh /* macOS can still run when all windows are closed */ || this.lifecycleService.isQuitRequested()) { this.sharedProcess.dispose(); } }); diff --git a/src/vs/code/electron-main/sharedProcess.ts b/src/vs/code/electron-main/sharedProcess.ts index e402ec33a5d..f99ade030c3 100644 --- a/src/vs/code/electron-main/sharedProcess.ts +++ b/src/vs/code/electron-main/sharedProcess.ts @@ -50,8 +50,12 @@ export class SharedProcess implements ISharedProcess { // Prevent the window from dying const onClose = (e: Event) => { + + // We never allow to close the shared process unless we get explicitly disposed() + e.preventDefault(); + + // Still hide the window though if visible if (this.window.isVisible()) { - e.preventDefault(); this.window.hide(); } }; From 438bfd31ca49264c2249407ce77d2856355ffa86 Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 9 Mar 2018 11:37:57 +0100 Subject: [PATCH 330/658] debug: update glyphMarginClassName for breakpoints fixes #45311 --- .../workbench/parts/debug/browser/debugEditorModelManager.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugEditorModelManager.ts b/src/vs/workbench/parts/debug/browser/debugEditorModelManager.ts index d4955347dae..9c7740f92a0 100644 --- a/src/vs/workbench/parts/debug/browser/debugEditorModelManager.ts +++ b/src/vs/workbench/parts/debug/browser/debugEditorModelManager.ts @@ -303,12 +303,12 @@ export class DebugEditorModelManager implements IWorkbenchContribution { // we need a separate decoration for glyph margin, since we do not want it on each line of a multi line statement. private static TOP_STACK_FRAME_MARGIN: IModelDecorationOptions = { - glyphMarginClassName: 'debug-top-stack-frame-glyph', + glyphMarginClassName: 'debug-top-stack-frame', stickiness: DebugEditorModelManager.STICKINESS }; private static FOCUSED_STACK_FRAME_MARGIN: IModelDecorationOptions = { - glyphMarginClassName: 'debug-focused-stack-frame-glyph', + glyphMarginClassName: 'debug-focused-stack-frame', stickiness: DebugEditorModelManager.STICKINESS }; From 7f4507656846b62373da8acf8aba99c1e1d59a53 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 12:01:41 +0100 Subject: [PATCH 331/658] debt - codewindow => icodewindow --- src/vs/code/electron-main/window.ts | 18 +---- src/vs/code/electron-main/windows.ts | 74 +++++++++---------- .../platform/windows/electron-main/windows.ts | 32 ++++++++ 3 files changed, 70 insertions(+), 54 deletions(-) diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index ec9e28a2525..f5a968e1f8a 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -20,35 +20,19 @@ import product from 'vs/platform/node/product'; import { IWindowSettings, MenuBarVisibility, IWindowConfiguration, ReadyState, IRunActionInWindowRequest } from 'vs/platform/windows/common/windows'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform'; -import { ICodeWindow } from 'vs/platform/windows/electron-main/windows'; +import { ICodeWindow, IWindowState, WindowMode } from 'vs/platform/windows/electron-main/windows'; import { IWorkspaceIdentifier, IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces'; import { IBackupMainService } from 'vs/platform/backup/common/backup'; import { ICommandAction } from 'vs/platform/actions/common/actions'; import { mark, exportEntries } from 'vs/base/common/performance'; import { resolveMarketplaceHeaders } from 'vs/platform/extensionManagement/node/extensionGalleryService'; -export interface IWindowState { - width?: number; - height?: number; - x?: number; - y?: number; - mode?: WindowMode; - display?: number; -} - export interface IWindowCreationOptions { state: IWindowState; extensionDevelopmentPath?: string; isExtensionTestHost?: boolean; } -export enum WindowMode { - Maximized, - Normal, - Minimized, // not used anymore, but also cannot remove due to existing stored UI state (needs migration) - Fullscreen -} - export const defaultWindowState = function (mode = WindowMode.Normal): IWindowState { return { width: 1024, diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 89ce0c3c77a..3f0b0cf8ed5 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -13,7 +13,7 @@ import { assign, mixin, equals } from 'vs/base/common/objects'; import { IBackupMainService } from 'vs/platform/backup/common/backup'; import { IEnvironmentService, ParsedArgs } from 'vs/platform/environment/common/environment'; import { IStateService } from 'vs/platform/state/common/state'; -import { CodeWindow, IWindowState as ISingleWindowState, defaultWindowState, WindowMode } from 'vs/code/electron-main/window'; +import { CodeWindow, defaultWindowState } from 'vs/code/electron-main/window'; import { ipcMain as ipc, screen, BrowserWindow, dialog, systemPreferences, app } from 'electron'; import { IPathWithLineAndColumn, parseLineAndColumnAware } from 'vs/code/node/paths'; import { ILifecycleService, UnloadReason, IWindowUnloadEvent } from 'vs/platform/lifecycle/electron-main/lifecycleMain'; @@ -25,7 +25,7 @@ import CommonEvent, { Emitter } from 'vs/base/common/event'; import product from 'vs/platform/node/product'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { isEqual } from 'vs/base/common/paths'; -import { IWindowsMainService, IOpenConfiguration, IWindowsCountChangedEvent, ICodeWindow } from 'vs/platform/windows/electron-main/windows'; +import { IWindowsMainService, IOpenConfiguration, IWindowsCountChangedEvent, ICodeWindow, IWindowState as ISingleWindowState, WindowMode } from 'vs/platform/windows/electron-main/windows'; import { IHistoryMainService } from 'vs/platform/history/common/history'; import { IProcessEnvironment, isLinux, isMacintosh, isWindows } from 'vs/base/common/platform'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -76,7 +76,7 @@ interface IOpenBrowserWindowOptions { filesToWait?: IPathsToWaitFor; forceNewWindow?: boolean; - windowToUse?: CodeWindow; + windowToUse?: ICodeWindow; emptyWindowBackupFolder?: string; } @@ -102,7 +102,7 @@ export class WindowsManager implements IWindowsMainService { private static readonly windowsStateStorageKey = 'windowsState'; - private static WINDOWS: CodeWindow[] = []; + private static WINDOWS: ICodeWindow[] = []; private initialUserEnv: IProcessEnvironment; @@ -112,8 +112,8 @@ export class WindowsManager implements IWindowsMainService { private dialogs: Dialogs; private workspacesManager: WorkspacesManager; - private _onWindowReady = new Emitter(); - onWindowReady: CommonEvent = this._onWindowReady.event; + private _onWindowReady = new Emitter(); + onWindowReady: CommonEvent = this._onWindowReady.event; private _onWindowClose = new Emitter(); onWindowClose: CommonEvent = this._onWindowClose.event; @@ -121,8 +121,8 @@ export class WindowsManager implements IWindowsMainService { private _onWindowLoad = new Emitter(); onWindowLoad: CommonEvent = this._onWindowLoad.event; - private _onActiveWindowChanged = new Emitter(); - onActiveWindowChanged: CommonEvent = this._onActiveWindowChanged.event; + private _onActiveWindowChanged = new Emitter(); + onActiveWindowChanged: CommonEvent = this._onActiveWindowChanged.event; private _onWindowReload = new Emitter(); onWindowReload: CommonEvent = this._onWindowReload.event; @@ -193,7 +193,7 @@ export class WindowsManager implements IWindowsMainService { // Handle various lifecycle events around windows this.lifecycleService.onBeforeWindowUnload(e => this.onBeforeWindowUnload(e)); - this.lifecycleService.onBeforeWindowClose(win => this.onBeforeWindowClose(win as CodeWindow)); + this.lifecycleService.onBeforeWindowClose(win => this.onBeforeWindowClose(win as ICodeWindow)); this.lifecycleService.onBeforeQuit(() => this.onBeforeQuit()); this.onWindowsCountChanged(e => { if (e.newCount - e.oldCount > 0) { @@ -281,7 +281,7 @@ export class WindowsManager implements IWindowsMainService { } // See note on #onBeforeQuit() for details how these events are flowing - private onBeforeWindowClose(win: CodeWindow): void { + private onBeforeWindowClose(win: ICodeWindow): void { if (this.lifecycleService.isQuitRequested()) { return; // during quit, many windows close in parallel so let it be handled in the before-quit handler } @@ -313,7 +313,7 @@ export class WindowsManager implements IWindowsMainService { } } - private toWindowState(win: CodeWindow): IWindowState { + private toWindowState(win: ICodeWindow): IWindowState { return { workspace: win.openedWorkspace, folderPath: win.openedFolderPath, @@ -322,7 +322,7 @@ export class WindowsManager implements IWindowsMainService { }; } - public open(openConfig: IOpenConfiguration): CodeWindow[] { + public open(openConfig: IOpenConfiguration): ICodeWindow[] { openConfig = this.validateOpenConfig(openConfig); let pathsToOpen = this.getPathsToOpen(openConfig); @@ -481,7 +481,7 @@ export class WindowsManager implements IWindowsMainService { filesToWait: IPathsToWaitFor, foldersToAdd: IPath[] ) { - const usedWindows: CodeWindow[] = []; + const usedWindows: ICodeWindow[] = []; // Settings can decide if files/folders open in new window or not let { openFolderInNewWindow, openFilesInNewWindow } = this.shouldOpenNewWindow(openConfig); @@ -694,7 +694,7 @@ export class WindowsManager implements IWindowsMainService { return arrays.distinct(usedWindows); } - private doOpenFilesInExistingWindow(window: CodeWindow, filesToOpen: IPath[], filesToCreate: IPath[], filesToDiff: IPath[], filesToWait: IPathsToWaitFor): CodeWindow { + private doOpenFilesInExistingWindow(window: ICodeWindow, filesToOpen: IPath[], filesToCreate: IPath[], filesToDiff: IPath[], filesToWait: IPathsToWaitFor): ICodeWindow { window.focus(); // make sure window has focus window.ready().then(readyWindow => { @@ -704,7 +704,7 @@ export class WindowsManager implements IWindowsMainService { return window; } - private doAddFoldersToExistingWidow(window: CodeWindow, foldersToAdd: IPath[]): CodeWindow { + private doAddFoldersToExistingWidow(window: ICodeWindow, foldersToAdd: IPath[]): ICodeWindow { window.focus(); // make sure window has focus window.ready().then(readyWindow => { @@ -714,7 +714,7 @@ export class WindowsManager implements IWindowsMainService { return window; } - private doOpenFolderOrWorkspace(openConfig: IOpenConfiguration, folderOrWorkspace: IPathToOpen, openInNewWindow: boolean, filesToOpen: IPath[], filesToCreate: IPath[], filesToDiff: IPath[], filesToWait: IPathsToWaitFor, windowToUse?: CodeWindow): CodeWindow { + private doOpenFolderOrWorkspace(openConfig: IOpenConfiguration, folderOrWorkspace: IPathToOpen, openInNewWindow: boolean, filesToOpen: IPath[], filesToCreate: IPath[], filesToDiff: IPath[], filesToWait: IPathsToWaitFor, windowToUse?: ICodeWindow): ICodeWindow { const browserWindow = this.openInBrowserWindow({ userEnv: openConfig.userEnv, cli: openConfig.cli, @@ -1036,7 +1036,7 @@ export class WindowsManager implements IWindowsMainService { this.open({ context: openConfig.context, cli: openConfig.cli, forceNewWindow: true, forceEmpty: openConfig.cli._.length === 0, userEnv: openConfig.userEnv }); } - private openInBrowserWindow(options: IOpenBrowserWindowOptions): CodeWindow { + private openInBrowserWindow(options: IOpenBrowserWindowOptions): ICodeWindow { // Build IWindowConfiguration from config and options const configuration: IWindowConfiguration = mixin({}, options.cli); // inherit all properties from CLI @@ -1061,7 +1061,7 @@ export class WindowsManager implements IWindowsMainService { configuration.backupPath = join(this.environmentService.backupHome, options.emptyWindowBackupFolder); } - let window: CodeWindow; + let window: ICodeWindow; if (!options.forceNewWindow) { window = options.windowToUse || this.getLastActiveWindow(); if (window) { @@ -1278,7 +1278,7 @@ export class WindowsManager implements IWindowsMainService { return state; } - public reload(win: CodeWindow, cli?: ParsedArgs): void { + public reload(win: ICodeWindow, cli?: ParsedArgs): void { // Only reload when the window has not vetoed this this.lifecycleService.unload(win, UnloadReason.RELOAD).done(veto => { @@ -1291,22 +1291,22 @@ export class WindowsManager implements IWindowsMainService { }); } - public closeWorkspace(win: CodeWindow): void { + public closeWorkspace(win: ICodeWindow): void { this.openInBrowserWindow({ cli: this.environmentService.args, windowToUse: win }); } - public saveAndEnterWorkspace(win: CodeWindow, path: string): TPromise { + public saveAndEnterWorkspace(win: ICodeWindow, path: string): TPromise { return this.workspacesManager.saveAndEnterWorkspace(win, path).then(result => this.doEnterWorkspace(win, result)); } - public createAndEnterWorkspace(win: CodeWindow, folders?: IWorkspaceFolderCreationData[], path?: string): TPromise { + public createAndEnterWorkspace(win: ICodeWindow, folders?: IWorkspaceFolderCreationData[], path?: string): TPromise { return this.workspacesManager.createAndEnterWorkspace(win, folders, path).then(result => this.doEnterWorkspace(win, result)); } - private doEnterWorkspace(win: CodeWindow, result: IEnterWorkspaceResult): IEnterWorkspaceResult { + private doEnterWorkspace(win: ICodeWindow, result: IEnterWorkspaceResult): IEnterWorkspaceResult { // Mark as recently opened this.historyMainService.addRecentlyOpened([result.workspace], []); @@ -1358,7 +1358,7 @@ export class WindowsManager implements IWindowsMainService { })); } - public focusLastActive(cli: ParsedArgs, context: OpenContext): CodeWindow { + public focusLastActive(cli: ParsedArgs, context: OpenContext): ICodeWindow { const lastActive = this.getLastActiveWindow(); if (lastActive) { lastActive.focus(); @@ -1370,7 +1370,7 @@ export class WindowsManager implements IWindowsMainService { return this.open({ context, cli, forceEmpty: true })[0]; } - public getLastActiveWindow(): CodeWindow { + public getLastActiveWindow(): ICodeWindow { return getLastActiveWindow(WindowsManager.WINDOWS); } @@ -1412,7 +1412,7 @@ export class WindowsManager implements IWindowsMainService { }); } - public getFocusedWindow(): CodeWindow { + public getFocusedWindow(): ICodeWindow { const win = BrowserWindow.getFocusedWindow(); if (win) { return this.getWindowById(win.id); @@ -1421,7 +1421,7 @@ export class WindowsManager implements IWindowsMainService { return null; } - public getWindowById(windowId: number): CodeWindow { + public getWindowById(windowId: number): ICodeWindow { const res = WindowsManager.WINDOWS.filter(w => w.id === windowId); if (res && res.length === 1) { return res[0]; @@ -1430,7 +1430,7 @@ export class WindowsManager implements IWindowsMainService { return null; } - public getWindows(): CodeWindow[] { + public getWindows(): ICodeWindow[] { return WindowsManager.WINDOWS; } @@ -1438,7 +1438,7 @@ export class WindowsManager implements IWindowsMainService { return WindowsManager.WINDOWS.length; } - private onWindowError(window: CodeWindow, error: WindowError): void { + private onWindowError(window: ICodeWindow, error: WindowError): void { this.logService.error(error === WindowError.CRASHED ? '[VS Code]: render process crashed!' : '[VS Code]: detected unresponsive'); // Unresponsive @@ -1488,7 +1488,7 @@ export class WindowsManager implements IWindowsMainService { } } - private onWindowClosed(win: CodeWindow): void { + private onWindowClosed(win: ICodeWindow): void { // Tell window win.dispose(); @@ -1547,15 +1547,15 @@ export class WindowsManager implements IWindowsMainService { this.dialogs.pickAndOpen(internalOptions); } - public showMessageBox(options: Electron.MessageBoxOptions, win?: CodeWindow): TPromise { + public showMessageBox(options: Electron.MessageBoxOptions, win?: ICodeWindow): TPromise { return this.dialogs.showMessageBox(options, win); } - public showSaveDialog(options: Electron.SaveDialogOptions, win?: CodeWindow): TPromise { + public showSaveDialog(options: Electron.SaveDialogOptions, win?: ICodeWindow): TPromise { return this.dialogs.showSaveDialog(options, win); } - public showOpenDialog(options: Electron.OpenDialogOptions, win?: CodeWindow): TPromise { + public showOpenDialog(options: Electron.OpenDialogOptions, win?: ICodeWindow): TPromise { return this.dialogs.showOpenDialog(options, win); } @@ -1742,7 +1742,7 @@ class WorkspacesManager { ) { } - public saveAndEnterWorkspace(window: CodeWindow, path: string): TPromise { + public saveAndEnterWorkspace(window: ICodeWindow, path: string): TPromise { if (!window || !window.win || window.readyState !== ReadyState.READY || !window.openedWorkspace || !path || !this.isValidTargetWorkspacePath(window, path)) { return TPromise.as(null); // return early if the window is not ready or disposed or does not have a workspace } @@ -1750,7 +1750,7 @@ class WorkspacesManager { return this.doSaveAndOpenWorkspace(window, window.openedWorkspace, path); } - public createAndEnterWorkspace(window: CodeWindow, folders?: IWorkspaceFolderCreationData[], path?: string): TPromise { + public createAndEnterWorkspace(window: ICodeWindow, folders?: IWorkspaceFolderCreationData[], path?: string): TPromise { if (!window || !window.win || window.readyState !== ReadyState.READY) { return TPromise.as(null); // return early if the window is not ready or disposed } @@ -1767,7 +1767,7 @@ class WorkspacesManager { } - private isValidTargetWorkspacePath(window: CodeWindow, path?: string): TPromise { + private isValidTargetWorkspacePath(window: ICodeWindow, path?: string): TPromise { if (!path) { return TPromise.wrap(true); } @@ -1793,7 +1793,7 @@ class WorkspacesManager { return TPromise.wrap(true); // OK } - private doSaveAndOpenWorkspace(window: CodeWindow, workspace: IWorkspaceIdentifier, path?: string): TPromise { + private doSaveAndOpenWorkspace(window: ICodeWindow, workspace: IWorkspaceIdentifier, path?: string): TPromise { let savePromise: TPromise; if (path) { savePromise = this.workspacesMainService.saveWorkspace(workspace, path); diff --git a/src/vs/platform/windows/electron-main/windows.ts b/src/vs/platform/windows/electron-main/windows.ts index c105c89f2d2..ca25baeb655 100644 --- a/src/vs/platform/windows/electron-main/windows.ts +++ b/src/vs/platform/windows/electron-main/windows.ts @@ -14,6 +14,22 @@ import { IProcessEnvironment } from 'vs/base/common/platform'; import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces'; import { ICommandAction } from 'vs/platform/actions/common/actions'; +export interface IWindowState { + width?: number; + height?: number; + x?: number; + y?: number; + mode?: WindowMode; + display?: number; +} + +export enum WindowMode { + Maximized, + Normal, + Minimized, // not used anymore, but also cannot remove due to existing stored UI state (needs migration) + Fullscreen +} + export interface ICodeWindow { id: number; win: Electron.BrowserWindow; @@ -21,13 +37,24 @@ export interface ICodeWindow { openedFolderPath: string; openedWorkspace: IWorkspaceIdentifier; + backupPath: string; + + isExtensionDevelopmentHost: boolean; + isExtensionTestHost: boolean; lastFocusTime: number; readyState: ReadyState; + ready(): TPromise; + load(config: IWindowConfiguration, isReload?: boolean): void; + reload(configuration?: IWindowConfiguration, cli?: ParsedArgs): void; + + focus(): void; close(): void; + getBounds(): Electron.Rectangle; + send(channel: string, ...args: any[]): void; sendWhenReady(channel: string, ...args: any[]): void; @@ -38,6 +65,11 @@ export interface ICodeWindow { onWindowTitleDoubleClick(): void; updateTouchBar(items: ICommandAction[][]): void; + + setReady(): void; + serializeWindowState(): IWindowState; + + dispose(): void; } export const IWindowsMainService = createDecorator('windowsMainService'); From da2ec0784de8de412fa3aee05f385708d95170df Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 9 Mar 2018 13:48:44 +0100 Subject: [PATCH 332/658] debug: only remove process on error if the disconnect is not being called --- src/vs/workbench/parts/debug/electron-browser/debugService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 5a0ee96aff3..a7edc064f42 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -966,10 +966,10 @@ export class DebugService implements debug.IDebugService { this.updateStateAndEmit(session.getId(), debug.State.Inactive); if (!session.disconnected) { session.disconnect().done(null, errors.onUnexpectedError); - } - if (process) { + } else if (process) { this.model.removeProcess(process.getId()); } + // Show the repl if some error got logged there #5870 if (this.model.getReplElements().length > 0) { this.panelService.openPanel(debug.REPL_ID, false).done(undefined, errors.onUnexpectedError); From 9d908a174e04d6ec473ab1f6f87076b4ee15b7a0 Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 9 Mar 2018 13:57:06 +0100 Subject: [PATCH 333/658] centered mode: allow when horizontal layout fixes #45323 --- src/vs/workbench/browser/parts/editor/editorGroupsControl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts b/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts index 72defc1adbb..ae7b04ccaef 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts +++ b/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts @@ -2139,7 +2139,7 @@ export class EditorGroupsControl extends Themable implements IEditorGroupsContro // Layout centered Editor (only in vertical layout when one group is opened) const id = this.visibleEditors[Position.ONE] ? this.visibleEditors[Position.ONE].getId() : undefined; - const doCentering = this.layoutVertically && this.stacks.groups.length === 1 && this.partService.isEditorLayoutCentered() && id !== PREFERENCES_EDITOR_ID && id !== TEXT_DIFF_EDITOR_ID; + const doCentering = this.partService.isEditorLayoutCentered() && this.stacks.groups.length === 1 && id !== PREFERENCES_EDITOR_ID && id !== TEXT_DIFF_EDITOR_ID; if (doCentering && !this.centeredEditorActive) { this.centeredEditorSashLeft.show(); this.centeredEditorSashRight.show(); From 86a429a73cbfd3c9752ed17bf6c8bed88dc46581 Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 9 Mar 2018 14:07:50 +0100 Subject: [PATCH 334/658] debug fancy new icons --- .../parts/debug/browser/media/add-focus.svg | 2 +- .../parts/debug/browser/media/add-inverse.svg | 2 +- .../parts/debug/browser/media/add.svg | 2 +- .../media/breakpoint-conditional-dark.svg | 10 ---- .../media/breakpoint-conditional-disabled.svg | 1 + .../breakpoint-conditional-unverified.svg | 1 + .../browser/media/breakpoint-conditional.svg | 11 +---- .../debug/browser/media/breakpoint-dark.svg | 1 - .../media/breakpoint-disabled-dark.svg | 1 - .../browser/media/breakpoint-disabled.svg | 2 +- .../media/breakpoint-function-dark.svg | 1 - .../breakpoint-function-disabled-dark.svg | 1 - .../media/breakpoint-function-disabled.svg | 2 +- .../breakpoint-function-unverified-dark.svg | 1 - .../media/breakpoint-function-unverified.svg | 2 +- .../browser/media/breakpoint-function.svg | 2 +- .../debug/browser/media/breakpoint-hint.svg | 1 - .../browser/media/breakpoint-log-disabled.svg | 1 + .../media/breakpoint-log-unverified.svg | 1 + .../debug/browser/media/breakpoint-log.svg | 1 + .../media/breakpoint-unsupported-dark.svg | 17 ------- .../browser/media/breakpoint-unsupported.svg | 18 +------ .../media/breakpoint-unverified-dark.svg | 1 - .../browser/media/breakpoint-unverified.svg | 2 +- .../parts/debug/browser/media/breakpoint.svg | 2 +- .../media/breakpoints-activate-inverse.svg | 1 - .../browser/media/breakpoints-activate.svg | 2 +- .../browser/media/clear-repl-inverse.svg | 2 +- .../parts/debug/browser/media/clear-repl.svg | 2 +- .../debug/browser/media/configure-inverse.svg | 2 +- .../parts/debug/browser/media/configure.svg | 2 +- .../debug/browser/media/continue-inverse.svg | 4 +- .../parts/debug/browser/media/continue.svg | 4 +- .../browser/media/current-and-breakpoint.svg | 2 +- .../debug/browser/media/current-arrow.svg | 2 +- .../parts/debug/browser/media/debug-dark.svg | 2 +- .../browser/media/debug.contribution.css | 49 ++----------------- .../browser/media/debugActionsWidget.css | 2 +- .../browser/media/disconnect-inverse.svg | 2 +- .../parts/debug/browser/media/disconnect.svg | 2 +- .../parts/debug/browser/media/drag.svg | 9 +--- .../debug/browser/media/pause-inverse.svg | 2 +- .../parts/debug/browser/media/pause.svg | 2 +- .../browser/media/remove-all-inverse.svg | 2 +- .../parts/debug/browser/media/remove-all.svg | 2 +- .../debug/browser/media/remove-focus.svg | 2 +- .../debug/browser/media/remove-inverse.svg | 2 +- .../parts/debug/browser/media/remove.svg | 2 +- .../debug/browser/media/repl-inverse.svg | 2 +- .../parts/debug/browser/media/repl.svg | 2 +- .../debug/browser/media/restart-inverse.svg | 2 +- .../parts/debug/browser/media/restart.svg | 2 +- .../media/stackframe-and-breakpoint-dark.svg | 1 - .../media/stackframe-and-breakpoint.svg | 2 +- .../browser/media/stackframe-arrow-dark.svg | 1 - .../debug/browser/media/stackframe-arrow.svg | 2 +- .../debug/browser/media/step-into-inverse.svg | 2 +- .../parts/debug/browser/media/step-into.svg | 2 +- .../debug/browser/media/step-out-inverse.svg | 2 +- .../parts/debug/browser/media/step-out.svg | 2 +- .../debug/browser/media/step-over-inverse.svg | 2 +- .../parts/debug/browser/media/step-over.svg | 2 +- .../debug/browser/media/stop-inverse.svg | 2 +- .../parts/debug/browser/media/stop.svg | 2 +- .../update/electron-browser/media/update.svg | 2 +- 65 files changed, 55 insertions(+), 166 deletions(-) delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg delete mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg delete mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg delete mode 100755 src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg delete mode 100644 src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg diff --git a/src/vs/workbench/parts/debug/browser/media/add-focus.svg b/src/vs/workbench/parts/debug/browser/media/add-focus.svg index 5e9f5851e8b..769bd3b12bd 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-focus.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add-focus \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg index 3475c1e1963..7d3fd77ffd6 100644 --- a/src/vs/workbench/parts/debug/browser/media/add-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/add-inverse.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/add.svg b/src/vs/workbench/parts/debug/browser/media/add.svg index bdecdb0e45b..2b679663e80 100644 --- a/src/vs/workbench/parts/debug/browser/media/add.svg +++ b/src/vs/workbench/parts/debug/browser/media/add.svg @@ -1 +1 @@ -Layer 1 \ No newline at end of file +add \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg deleted file mode 100644 index 720679e07e8..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-dark.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg new file mode 100644 index 00000000000..ae7c86d8e51 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-disabled.svg @@ -0,0 +1 @@ +breakpoint-conditional-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg new file mode 100644 index 00000000000..f4781277d91 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional-unverified.svg @@ -0,0 +1 @@ +breakpoint-conditional-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg index 77dd991c2b6..455743a5669 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-conditional.svg @@ -1,10 +1 @@ - - - - - - +breakpoint-conditional \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg deleted file mode 100644 index 5ccf397efaf..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg deleted file mode 100644 index bf58a18178f..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg index 9780270357d..b9cc51c1547 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg deleted file mode 100755 index 6b2651a9a39..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-dark.svg +++ /dev/null @@ -1 +0,0 @@ -BreakpointFunction_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg deleted file mode 100755 index fe6aaa60d76..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled-dark.svg +++ /dev/null @@ -1 +0,0 @@ -BreakpointFunction_disabled_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg index e45fd9cb12c..3b191a8229b 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-disabled.svg @@ -1 +1 @@ -BreakpointFunction_disabled_16xMD +breakpoint-function-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg deleted file mode 100755 index 13903346b2d..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified-dark.svg +++ /dev/null @@ -1 +0,0 @@ -BreakpointFunctionUnverified_16xMD diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg index 0af1324d785..3e01ce1345c 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function-unverified.svg @@ -1 +1 @@ -BreakpointFunctionUnverified_16xMD +breakpoint-function-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg index 6bc70465fa3..2bc6454e520 100755 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-function.svg @@ -1 +1 @@ -BreakpointFunction_16xMD \ No newline at end of file +breakpoint-function \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg deleted file mode 100644 index 24f20069526..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg new file mode 100644 index 00000000000..f37856481f5 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-disabled.svg @@ -0,0 +1 @@ +breakpoint-log-disabled \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg new file mode 100644 index 00000000000..b0e1624bf79 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log-unverified.svg @@ -0,0 +1 @@ +breakpoint-log-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg new file mode 100644 index 00000000000..d6094ade2e8 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-log.svg @@ -0,0 +1 @@ +breakpoint-log \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg deleted file mode 100644 index fffcfb8cb47..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported-dark.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg index cc0c89e1b74..f7d377af128 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unsupported.svg @@ -1,17 +1 @@ - - - - - - - - - - - - - +breakpoint-unsupported \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg deleted file mode 100644 index 4a2575a3056..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg index 617e7ede7bd..511448bae65 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-unverified \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg index 7629294bcc5..e00d15a298f 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg deleted file mode 100644 index 07344800a2f..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg index b32b1cd6de6..34809f9b1b6 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoints-activate \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg index 7df4455d7c3..f6d7128f4bc 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +clear-repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg index 6e4d3a1d481..7867d13d754 100644 --- a/src/vs/workbench/parts/debug/browser/media/clear-repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/clear-repl.svg @@ -1 +1 @@ - \ No newline at end of file +clear-repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg index 61baaea2b8b..bbfbd366eb9 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/configure.svg b/src/vs/workbench/parts/debug/browser/media/configure.svg index 3dec2ba50fd..c97bb48bdcc 100644 --- a/src/vs/workbench/parts/debug/browser/media/configure.svg +++ b/src/vs/workbench/parts/debug/browser/media/configure.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg index f82c45c1109..5abc15f219b 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue-inverse.svg @@ -1,3 +1 @@ - -]> \ No newline at end of file +continue \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/continue.svg b/src/vs/workbench/parts/debug/browser/media/continue.svg index 33affa1a519..99a6e9aef93 100644 --- a/src/vs/workbench/parts/debug/browser/media/continue.svg +++ b/src/vs/workbench/parts/debug/browser/media/continue.svg @@ -1,3 +1 @@ - -]> \ No newline at end of file +continue \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg index 7a3e6f26357..d947abab683 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +current-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg index bd1ca579f13..3ea9f6b07b8 100755 --- a/src/vs/workbench/parts/debug/browser/media/current-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/current-arrow.svg @@ -1 +1 @@ - \ No newline at end of file +current-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg index 9a969fb3589..cedddacf03e 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug-dark.svg +++ b/src/vs/workbench/parts/debug/browser/media/debug-dark.svg @@ -1 +1 @@ - \ No newline at end of file +debug-dark \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css index db36f9d3069..90b8d16bc6a 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css +++ b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css @@ -6,6 +6,7 @@ /* Activity Bar */ .monaco-workbench > .activitybar .monaco-action-bar .action-label.debug { -webkit-mask: url('debug-dark.svg') no-repeat 50% 50%; + -webkit-mask-size: 28px; } .monaco-editor .debug-top-stack-frame-line, @@ -30,7 +31,8 @@ } .debug-breakpoint-hint { - background: url('breakpoint-hint.svg') center center no-repeat; + background: url('breakpoint.svg') center center no-repeat; + opacity: .2; } .debug-breakpoint-disabled, @@ -246,54 +248,9 @@ background-color: rgba(255, 255, 0, 0.3) } -.vs-dark .debug-breakpoint, -.hc-black .debug-breakpoint, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-column::before { - background: url('breakpoint-dark.svg') center center no-repeat; -} - -.vs-dark .debug-breakpoint-conditional, -.hc-black .debug-breakpoint-conditional, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-conditional-column::before { - background: url('breakpoint-conditional-dark.svg') center center no-repeat; -} - -.vs-dark .debug-breakpoint-unsupported, -.hc-black .debug-breakpoint-unsupported, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-unsupported-column::before { - background: url('breakpoint-unsupported-dark.svg') center center no-repeat; -} - -.vs-dark .debug-breakpoint-disabled, -.hc-black .debug-breakpoint-disabled, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-disabled-column::before { - background: url('breakpoint-disabled-dark.svg') center center no-repeat; -} - -.vs-dark .debug-breakpoint-unverified, -.hc-black .debug-breakpoint-unverified, -.monaco-editor.vs-dark .debug-breakpoint-column.debug-breakpoint-unverified-column::before { - background: url('breakpoint-unverified-dark.svg') center center no-repeat; -} - -.monaco-editor.vs-dark .debug-focused-stack-frame { - background: url('stackframe-arrow-dark.svg') center center no-repeat; -} - -.monaco-editor.vs-dark .debug-focused-stack-frame.debug-breakpoint, -.monaco-editor.vs-dark .debug-focused-stack-frame.debug-breakpoint-conditional { - background: url('stackframe-and-breakpoint-dark.svg') center center no-repeat; -} - -.vs-dark .debug-function-breakpoint, -.hc-black .debug-function-breakpoint { - background: url('breakpoint-function-dark.svg') center center no-repeat; -} - .vs-dark .debug-function-breakpoint-unverified, .hc-black .debug-function-breakpoint-unverified { background: url('breakpoint-function-unverified.svg') center center no-repeat; - } .vs-dark .debug-function-breakpoint-disabled, diff --git a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css index db600ac32b9..c2ffa2da78b 100644 --- a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css +++ b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css @@ -24,7 +24,7 @@ .monaco-workbench .debug-actions-widget .drag-area { cursor: -webkit-grab; height: 32px; - width: 10px; + width: 16px; background: url('drag.svg') center center no-repeat; } diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg index e00fd4062df..2d1e78b5b68 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect-inverse.svg @@ -1 +1 @@ -Plan de travail 1 \ No newline at end of file +disconnect \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/disconnect.svg b/src/vs/workbench/parts/debug/browser/media/disconnect.svg index 2a87ce11ef8..b2deb2b91df 100755 --- a/src/vs/workbench/parts/debug/browser/media/disconnect.svg +++ b/src/vs/workbench/parts/debug/browser/media/disconnect.svg @@ -1 +1 @@ -Plan de travail 1 \ No newline at end of file +disconnect \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/drag.svg b/src/vs/workbench/parts/debug/browser/media/drag.svg index 7f4145d742b..522bf98284a 100644 --- a/src/vs/workbench/parts/debug/browser/media/drag.svg +++ b/src/vs/workbench/parts/debug/browser/media/drag.svg @@ -1,8 +1 @@ - - - - - - - - \ No newline at end of file +drag \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg index 7418a236159..0185b23700d 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +pause \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/pause.svg b/src/vs/workbench/parts/debug/browser/media/pause.svg index f8e3b859b18..9a4beeb7710 100644 --- a/src/vs/workbench/parts/debug/browser/media/pause.svg +++ b/src/vs/workbench/parts/debug/browser/media/pause.svg @@ -1 +1 @@ - \ No newline at end of file +pause \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg index 74e8dd8a024..99369626bfc 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +remove-all \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-all.svg b/src/vs/workbench/parts/debug/browser/media/remove-all.svg index 7250ff6b54e..a71c2feeedc 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-all.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-all.svg @@ -1 +1 @@ - \ No newline at end of file +remove-all_16x \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg index 865c5aaea5a..e1af90b8058 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-focus.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-focus.svg @@ -1 +1 @@ - \ No newline at end of file +remove-focus \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg index 751e89b3b02..e78bb998737 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +remove \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/remove.svg b/src/vs/workbench/parts/debug/browser/media/remove.svg index fde34404d4e..31d6abd6bab 100644 --- a/src/vs/workbench/parts/debug/browser/media/remove.svg +++ b/src/vs/workbench/parts/debug/browser/media/remove.svg @@ -1 +1 @@ - \ No newline at end of file +remove \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg index f9fcfba75e2..a8939860d05 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/repl.svg b/src/vs/workbench/parts/debug/browser/media/repl.svg index 93558e96b47..8175eb32f94 100644 --- a/src/vs/workbench/parts/debug/browser/media/repl.svg +++ b/src/vs/workbench/parts/debug/browser/media/repl.svg @@ -1 +1 @@ - \ No newline at end of file +repl \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg index 1443bb3158b..c9071eb96c6 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +restart \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart.svg b/src/vs/workbench/parts/debug/browser/media/restart.svg index 3d7a499db2a..94ebb45d0bc 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart.svg @@ -1 +1 @@ - \ No newline at end of file +restart \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg deleted file mode 100644 index 1d6a7c3ec3d..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg index 2d5823561e2..56f8da3f7b2 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg @@ -1 +1 @@ - \ No newline at end of file +stackframe-and-breakpoint diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg deleted file mode 100644 index f965fddd633..00000000000 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg index e39215f9a7c..c7ab10bfa8c 100644 --- a/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg +++ b/src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg @@ -1 +1 @@ - \ No newline at end of file +stackframe-arrow \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg index b7de8c5fd13..8cfab5c40b1 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-into \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-into.svg b/src/vs/workbench/parts/debug/browser/media/step-into.svg index b92fb4ef806..a4beee54411 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-into.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-into.svg @@ -1 +1 @@ - \ No newline at end of file +step-into \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg index fc66ca1b80d..045a84ff032 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-out \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-out.svg b/src/vs/workbench/parts/debug/browser/media/step-out.svg index 0fdc63f6ef9..850aed93c2e 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-out.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-out.svg @@ -1 +1 @@ - \ No newline at end of file +step-out \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg index 98c1026db46..f3a1aa36f22 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +step-over \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/step-over.svg b/src/vs/workbench/parts/debug/browser/media/step-over.svg index a716cbcf559..3343de71d83 100644 --- a/src/vs/workbench/parts/debug/browser/media/step-over.svg +++ b/src/vs/workbench/parts/debug/browser/media/step-over.svg @@ -1 +1 @@ - \ No newline at end of file +step-over \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg index a0e6bcb42d6..c8e37202875 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop-inverse.svg @@ -1 +1 @@ - \ No newline at end of file +stop \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/stop.svg b/src/vs/workbench/parts/debug/browser/media/stop.svg index 333812dcdaf..57c29044b12 100644 --- a/src/vs/workbench/parts/debug/browser/media/stop.svg +++ b/src/vs/workbench/parts/debug/browser/media/stop.svg @@ -1 +1 @@ - \ No newline at end of file +stop \ No newline at end of file diff --git a/src/vs/workbench/parts/update/electron-browser/media/update.svg b/src/vs/workbench/parts/update/electron-browser/media/update.svg index 3dec2ba50fd..c97bb48bdcc 100644 --- a/src/vs/workbench/parts/update/electron-browser/media/update.svg +++ b/src/vs/workbench/parts/update/electron-browser/media/update.svg @@ -1 +1 @@ - \ No newline at end of file +configure \ No newline at end of file From 1d83a38a7576220ad5c77971924e078b871de330 Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 9 Mar 2018 14:21:07 +0100 Subject: [PATCH 335/658] debug: bring back breakpooints-activate-inverse --- .../parts/debug/browser/media/breakpoints-activate-inverse.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg new file mode 100644 index 00000000000..42ba8309dd5 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg @@ -0,0 +1 @@ + From b40e6492ab415347a86c3841c0437dba996db6ce Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 9 Mar 2018 15:12:04 +0100 Subject: [PATCH 336/658] simplify root drop update folders arguments --- .../parts/files/electron-browser/views/explorerViewer.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 75e7120f0a0..6dc6d1885ff 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -977,17 +977,13 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { name: folders[index].name, uri: folders[index].uri }); - - if (sourceIndex && targetIndex) { - break; - } } const swap = workspaceCreationData[sourceIndex]; workspaceCreationData[sourceIndex] = workspaceCreationData[targetIndex]; workspaceCreationData[targetIndex] = swap; - return this.workspaceEditingService.updateFolders(Math.min(sourceIndex, targetIndex), workspaceCreationData.length, workspaceCreationData); + return this.workspaceEditingService.updateFolders(0, workspaceCreationData.length, workspaceCreationData); } // Reuse duplicate action if user copies From 05b995dd9c99b709f41577ab04fe53740f67ccea Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 15:22:21 +0100 Subject: [PATCH 337/658] :lipstick: --- src/vs/code/electron-main/window.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index f5a968e1f8a..214c9712808 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -76,7 +76,7 @@ export class CodeWindow implements ICodeWindow { private toDispose: IDisposable[]; private representedFilename: string; - private whenReadyCallbacks: TValueCallback[]; + private whenReadyCallbacks: TValueCallback[]; private currentConfig: IWindowConfiguration; private pendingLoadConfig: IWindowConfiguration; @@ -295,8 +295,8 @@ export class CodeWindow implements ICodeWindow { } } - public ready(): TPromise { - return new TPromise((c) => { + public ready(): TPromise { + return new TPromise((c) => { if (this._readyState === ReadyState.READY) { return c(this); } From 636fbd1f3f8224bf57b64b253bdb24ba19e2dd7c Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 15:49:15 +0100 Subject: [PATCH 338/658] main - introduce and adopt new onQuit() event --- src/vs/code/electron-main/app.ts | 17 +------- src/vs/code/electron-main/sharedProcess.ts | 19 ++++++++- .../lifecycle/electron-main/lifecycleMain.ts | 39 +++++++++++++++++++ 3 files changed, 59 insertions(+), 16 deletions(-) diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index d8e1e4ff59f..aa931ae73fa 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -277,7 +277,7 @@ export class CodeApplication { this.logService.trace(`Resolved machine identifier: ${machineId}`); // Spawn shared process - this.sharedProcess = new SharedProcess(this.environmentService, machineId, this.userEnv, this.logService); + this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, machineId, this.userEnv, this.logService); this.toDispose.push(this.sharedProcess); this.sharedProcessClient = this.sharedProcess.whenReady().then(() => connect(this.environmentService.sharedIPCHandle, 'main')); @@ -346,20 +346,6 @@ export class CodeApplication { private openFirstWindow(accessor: ServicesAccessor): void { const appInstantiationService = accessor.get(IInstantiationService); - // TODO@Joao: unfold this - this.windowsMainService = accessor.get(IWindowsMainService); - - // TODO@Joao: so ugly... - this.windowsMainService.onWindowsCountChanged(e => { - if (e.newCount !== 0) { - return; // only when all VS Code windows are closed - } - - if (!platform.isMacintosh /* macOS can still run when all windows are closed */ || this.lifecycleService.isQuitRequested()) { - this.sharedProcess.dispose(); - } - }); - // Register more Main IPC services const launchService = accessor.get(ILaunchService); const launchChannel = new LaunchChannel(launchService); @@ -396,6 +382,7 @@ export class CodeApplication { this.lifecycleService.ready(); // Propagate to clients + this.windowsMainService = accessor.get(IWindowsMainService); // TODO@Joao: unfold this this.windowsMainService.ready(this.userEnv); // Open our first window diff --git a/src/vs/code/electron-main/sharedProcess.ts b/src/vs/code/electron-main/sharedProcess.ts index f99ade030c3..f325b08a096 100644 --- a/src/vs/code/electron-main/sharedProcess.ts +++ b/src/vs/code/electron-main/sharedProcess.ts @@ -13,6 +13,7 @@ import { BrowserWindow, ipcMain } from 'electron'; import { ISharedProcess } from 'vs/platform/windows/electron-main/windows'; import { Barrier } from 'vs/base/common/async'; import { ILogService } from 'vs/platform/log/common/log'; +import { ILifecycleService } from 'vs/platform/lifecycle/electron-main/lifecycleMain'; export class SharedProcess implements ISharedProcess { @@ -23,10 +24,26 @@ export class SharedProcess implements ISharedProcess { constructor( private environmentService: IEnvironmentService, + private lifecycleService: ILifecycleService, private readonly machineId: string, private readonly userEnv: IProcessEnvironment, private readonly logService: ILogService - ) { } + ) { + this.registerListeners(); + } + + private registerListeners(): void { + + // Shut the shared process down when we are quitting + // + // Note: because we veto the window close, we must call our dispose() method, + // which removes the veto. Otherwise the application would never quit because + // the shared process window is refusing to close! + // + this.lifecycleService.onQuit(() => { + this.dispose(); + }); + } @memoize private get _whenReady(): TPromise { diff --git a/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts b/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts index 81b62cf1206..4eeabe33a81 100644 --- a/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts +++ b/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts @@ -14,6 +14,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation' import { ICodeWindow } from 'vs/platform/windows/electron-main/windows'; import { ReadyState } from 'vs/platform/windows/common/windows'; import { handleVetos } from 'vs/platform/lifecycle/common/lifecycle'; +import { isMacintosh } from 'vs/base/common/platform'; export const ILifecycleService = createDecorator('lifecycleService'); @@ -45,6 +46,13 @@ export interface ILifecycleService { */ onBeforeQuit: Event; + /** + * An event that fires after the onBeforeQuit event has been fired and after no window has + * vetoed the shutdown sequence. At this point listeners are ensured that the application will + * quit without veto. + */ + onQuit: Event; + /** * We provide our own event when we close a window because the general window.on('close') * is called even when the window prevents the closing. We want an event that truly fires @@ -82,10 +90,14 @@ export class LifecycleService implements ILifecycleService { private pendingQuitPromiseComplete: TValueCallback; private oneTimeListenerTokenGenerator: number; private _wasRestarted: boolean; + private windowCounter: number; private _onBeforeQuit = new Emitter(); onBeforeQuit: Event = this._onBeforeQuit.event; + private _onQuit = new Emitter(); + onQuit: Event = this._onQuit.event; + private _onBeforeWindowClose = new Emitter(); onBeforeWindowClose: Event = this._onBeforeWindowClose.event; @@ -100,6 +112,7 @@ export class LifecycleService implements ILifecycleService { this.quitRequested = false; this.oneTimeListenerTokenGenerator = 0; this._wasRestarted = false; + this.windowCounter = 0; this.handleRestarted(); } @@ -147,6 +160,9 @@ export class LifecycleService implements ILifecycleService { public registerWindow(window: ICodeWindow): void { + // track window count + this.windowCounter++; + // Window Before Closing: Main -> Renderer window.win.on('close', e => { const windowId = window.id; @@ -174,6 +190,20 @@ export class LifecycleService implements ILifecycleService { } }); }); + + // Window After Closing + window.win.on('closed', e => { + + // update window count + this.windowCounter--; + + // if there are no more code windows opened, fire the onQuit event, unless + // we are on macOS where it is perfectly fine to close the last window and + // the application continues running (unless quit was actually requested) + if (this.windowCounter === 0 && (!isMacintosh || this.isQuitRequested)) { + this._onQuit.fire(); + } + }); } public unload(window: ICodeWindow, reason: UnloadReason): TPromise { @@ -279,6 +309,7 @@ export class LifecycleService implements ILifecycleService { // Store as field to access it from a window cancellation this.pendingQuitPromiseComplete = c; + // The will-quit event is fired when all windows have closed without veto app.once('will-quit', () => { if (this.pendingQuitPromiseComplete) { if (fromUpdate) { @@ -291,6 +322,14 @@ export class LifecycleService implements ILifecycleService { } }); + // macOS: can run without any window open. in that case we fire the onQuit() event + // directly because there is no veto to be expected. + if (isMacintosh && this.windowCounter === 0) { + this._onQuit.fire(); + } + + // Calling app.quit() will trigger the close handlers of each opened window + // and only if no window vetoed the shutdown, we will get the will-quit event app.quit(); }); } From 7598ef4a2784f44c6d06c658b05aaa2b482ceb10 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 16:00:27 +0100 Subject: [PATCH 339/658] more tweaks to lifecycle service --- src/vs/code/electron-main/app.ts | 2 +- src/vs/code/electron-main/sharedProcess.ts | 9 ++--- src/vs/code/electron-main/windows.ts | 36 +++++++++---------- .../lifecycle/electron-main/lifecycleMain.ts | 36 ++++++++++++------- 4 files changed, 47 insertions(+), 36 deletions(-) diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index aa931ae73fa..3b1904dc0bf 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -277,7 +277,7 @@ export class CodeApplication { this.logService.trace(`Resolved machine identifier: ${machineId}`); // Spawn shared process - this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, machineId, this.userEnv, this.logService); + this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, this.logService, machineId, this.userEnv); this.toDispose.push(this.sharedProcess); this.sharedProcessClient = this.sharedProcess.whenReady().then(() => connect(this.environmentService.sharedIPCHandle, 'main')); diff --git a/src/vs/code/electron-main/sharedProcess.ts b/src/vs/code/electron-main/sharedProcess.ts index f325b08a096..bfff19b2661 100644 --- a/src/vs/code/electron-main/sharedProcess.ts +++ b/src/vs/code/electron-main/sharedProcess.ts @@ -23,11 +23,11 @@ export class SharedProcess implements ISharedProcess { private disposables: IDisposable[] = []; constructor( - private environmentService: IEnvironmentService, - private lifecycleService: ILifecycleService, + private readonly environmentService: IEnvironmentService, + private readonly lifecycleService: ILifecycleService, + private readonly logService: ILogService, private readonly machineId: string, private readonly userEnv: IProcessEnvironment, - private readonly logService: ILogService ) { this.registerListeners(); } @@ -40,7 +40,7 @@ export class SharedProcess implements ISharedProcess { // which removes the veto. Otherwise the application would never quit because // the shared process window is refusing to close! // - this.lifecycleService.onQuit(() => { + this.lifecycleService.onShutdown(() => { this.dispose(); }); } @@ -67,6 +67,7 @@ export class SharedProcess implements ISharedProcess { // Prevent the window from dying const onClose = (e: Event) => { + this.logService.trace('SharedProcess#close prevented'); // We never allow to close the shared process unless we get explicitly disposed() e.preventDefault(); diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 3f0b0cf8ed5..1c634082449 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -194,7 +194,7 @@ export class WindowsManager implements IWindowsMainService { // Handle various lifecycle events around windows this.lifecycleService.onBeforeWindowUnload(e => this.onBeforeWindowUnload(e)); this.lifecycleService.onBeforeWindowClose(win => this.onBeforeWindowClose(win as ICodeWindow)); - this.lifecycleService.onBeforeQuit(() => this.onBeforeQuit()); + this.lifecycleService.onBeforeShutdown(() => this.onBeforeShutdown()); this.onWindowsCountChanged(e => { if (e.newCount - e.oldCount > 0) { // clear last closed window state when a new window opens. this helps on macOS where @@ -205,12 +205,12 @@ export class WindowsManager implements IWindowsMainService { }); } - // Note that onBeforeQuit() and onBeforeWindowClose() are fired in different order depending on the OS: + // Note that onBeforeShutdown() and onBeforeWindowClose() are fired in different order depending on the OS: // - macOS: since the app will not quit when closing the last window, you will always first get - // the onBeforeQuit() event followed by N onbeforeWindowClose() events for each window + // the onBeforeShutdown() event followed by N onbeforeWindowClose() events for each window // - other: on other OS, closing the last window will quit the app so the order depends on the // user interaction: closing the last window will first trigger onBeforeWindowClose() - // and then onBeforeQuit(). Using the quit action however will first issue onBeforeQuit() + // and then onBeforeShutdown(). Using the quit action however will first issue onBeforeShutdown() // and then onBeforeWindowClose(). // // Here is the behaviour on different OS dependig on action taken (Electron 1.7.x): @@ -219,30 +219,30 @@ export class WindowsManager implements IWindowsMainService { // - quit(N): quit application with N windows opened // - close(1): close one window via the window close button // - closeAll: close all windows via the taskbar command - // - onBeforeQuit(N): number of windows reported in this event handler + // - onBeforeShutdown(N): number of windows reported in this event handler // - onBeforeWindowClose(N, M): number of windows reported and quitRequested boolean in this event handler // // macOS - // - quit(1): onBeforeQuit(1), onBeforeWindowClose(1, true) - // - quit(2): onBeforeQuit(2), onBeforeWindowClose(2, true), onBeforeWindowClose(2, true) - // - quit(0): onBeforeQuit(0) + // - quit(1): onBeforeShutdown(1), onBeforeWindowClose(1, true) + // - quit(2): onBeforeShutdown(2), onBeforeWindowClose(2, true), onBeforeWindowClose(2, true) + // - quit(0): onBeforeShutdown(0) // - close(1): onBeforeWindowClose(1, false) // // Windows - // - quit(1): onBeforeQuit(1), onBeforeWindowClose(1, true) - // - quit(2): onBeforeQuit(2), onBeforeWindowClose(2, true), onBeforeWindowClose(2, true) + // - quit(1): onBeforeShutdown(1), onBeforeWindowClose(1, true) + // - quit(2): onBeforeShutdown(2), onBeforeWindowClose(2, true), onBeforeWindowClose(2, true) // - close(1): onBeforeWindowClose(2, false)[not last window] - // - close(1): onBeforeWindowClose(1, false), onBeforequit(0)[last window] - // - closeAll(2): onBeforeWindowClose(2, false), onBeforeWindowClose(2, false), onBeforeQuit(0) + // - close(1): onBeforeWindowClose(1, false), onBeforeShutdown(0)[last window] + // - closeAll(2): onBeforeWindowClose(2, false), onBeforeWindowClose(2, false), onBeforeShutdown(0) // // Linux - // - quit(1): onBeforeQuit(1), onBeforeWindowClose(1, true) - // - quit(2): onBeforeQuit(2), onBeforeWindowClose(2, true), onBeforeWindowClose(2, true) + // - quit(1): onBeforeShutdown(1), onBeforeWindowClose(1, true) + // - quit(2): onBeforeShutdown(2), onBeforeWindowClose(2, true), onBeforeWindowClose(2, true) // - close(1): onBeforeWindowClose(2, false)[not last window] - // - close(1): onBeforeWindowClose(1, false), onBeforequit(0)[last window] - // - closeAll(2): onBeforeWindowClose(2, false), onBeforeWindowClose(2, false), onBeforeQuit(0) + // - close(1): onBeforeWindowClose(1, false), onBeforeShutdown(0)[last window] + // - closeAll(2): onBeforeWindowClose(2, false), onBeforeWindowClose(2, false), onBeforeShutdown(0) // - private onBeforeQuit(): void { + private onBeforeShutdown(): void { const currentWindowsState: IWindowsState = { openedWindows: [], lastPluginDevelopmentHostWindow: this.windowsState.lastPluginDevelopmentHostWindow, @@ -280,7 +280,7 @@ export class WindowsManager implements IWindowsMainService { this.stateService.setItem(WindowsManager.windowsStateStorageKey, currentWindowsState); } - // See note on #onBeforeQuit() for details how these events are flowing + // See note on #onBeforeShutdown() for details how these events are flowing private onBeforeWindowClose(win: ICodeWindow): void { if (this.lifecycleService.isQuitRequested()) { return; // during quit, many windows close in parallel so let it be handled in the before-quit handler diff --git a/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts b/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts index 4eeabe33a81..e2f63750639 100644 --- a/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts +++ b/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts @@ -41,17 +41,17 @@ export interface ILifecycleService { /** * Due to the way we handle lifecycle with eventing, the general app.on('before-quit') - * event cannot be used because it can be called twice on shutdown. Instead the onBeforeQuit + * event cannot be used because it can be called twice on shutdown. Instead the onBeforeShutdown * handler in this module can be used and it is only called once on a shutdown sequence. */ - onBeforeQuit: Event; + onBeforeShutdown: Event; /** - * An event that fires after the onBeforeQuit event has been fired and after no window has + * An event that fires after the onBeforeShutdown event has been fired and after no window has * vetoed the shutdown sequence. At this point listeners are ensured that the application will * quit without veto. */ - onQuit: Event; + onShutdown: Event; /** * We provide our own event when we close a window because the general window.on('close') @@ -92,11 +92,11 @@ export class LifecycleService implements ILifecycleService { private _wasRestarted: boolean; private windowCounter: number; - private _onBeforeQuit = new Emitter(); - onBeforeQuit: Event = this._onBeforeQuit.event; + private _onBeforeShutdown = new Emitter(); + onBeforeShutdown: Event = this._onBeforeShutdown.event; - private _onQuit = new Emitter(); - onQuit: Event = this._onQuit.event; + private _onShutdown = new Emitter(); + onShutdown: Event = this._onShutdown.event; private _onBeforeWindowClose = new Emitter(); onBeforeWindowClose: Event = this._onBeforeWindowClose.event; @@ -140,7 +140,8 @@ export class LifecycleService implements ILifecycleService { this.logService.trace('Lifecycle#before-quit'); if (!this.quitRequested) { - this._onBeforeQuit.fire(); // only send this if this is the first quit request we have + this.logService.trace('Lifecycle#onBeforeShutdown.fire()'); + this._onBeforeShutdown.fire(); // only send this if this is the first quit request we have } this.quitRequested = true; @@ -182,7 +183,10 @@ export class LifecycleService implements ILifecycleService { this.unload(window, UnloadReason.CLOSE).done(veto => { if (!veto) { this.windowToCloseRequest[windowId] = true; + + this.logService.trace('Lifecycle#onBeforeWindowClose.fire()'); this._onBeforeWindowClose.fire(window); + window.close(); } else { this.quitRequested = false; @@ -193,15 +197,18 @@ export class LifecycleService implements ILifecycleService { // Window After Closing window.win.on('closed', e => { + const windowId = window.id; + this.logService.trace('Lifecycle#window-closed', windowId); // update window count this.windowCounter--; - // if there are no more code windows opened, fire the onQuit event, unless + // if there are no more code windows opened, fire the onShutdown event, unless // we are on macOS where it is perfectly fine to close the last window and // the application continues running (unless quit was actually requested) if (this.windowCounter === 0 && (!isMacintosh || this.isQuitRequested)) { - this._onQuit.fire(); + this.logService.trace('Lifecycle#onShutdown.fire()'); + this._onShutdown.fire(); } }); } @@ -311,6 +318,8 @@ export class LifecycleService implements ILifecycleService { // The will-quit event is fired when all windows have closed without veto app.once('will-quit', () => { + this.logService.trace('Lifecycle#will-quit'); + if (this.pendingQuitPromiseComplete) { if (fromUpdate) { this.stateService.setItem(LifecycleService.QUIT_FROM_RESTART_MARKER, true); @@ -322,10 +331,11 @@ export class LifecycleService implements ILifecycleService { } }); - // macOS: can run without any window open. in that case we fire the onQuit() event + // macOS: can run without any window open. in that case we fire the onShutdown() event // directly because there is no veto to be expected. if (isMacintosh && this.windowCounter === 0) { - this._onQuit.fire(); + this.logService.trace('Lifecycle#onShutdown.fire()'); + this._onShutdown.fire(); } // Calling app.quit() will trigger the close handlers of each opened window From 6eac6df303f55fbf26ff3d4447488af1fd478137 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 9 Mar 2018 07:04:39 -0800 Subject: [PATCH 340/658] Move split terminal ctx menu below new terminal Fixes #45410 --- .../parts/terminal/electron-browser/terminalPanel.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts index edaf03722d1..5667a99df12 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts @@ -150,14 +150,13 @@ export class TerminalPanel extends Panel { this._copyContextMenuAction = this._instantiationService.createInstance(CopyTerminalSelectionAction, CopyTerminalSelectionAction.ID, nls.localize('copy', "Copy")); this._contextMenuActions = [ this._instantiationService.createInstance(CreateNewTerminalAction, CreateNewTerminalAction.ID, CreateNewTerminalAction.PANEL_LABEL), + this._instantiationService.createInstance(SplitTerminalAction, SplitTerminalAction.ID, nls.localize('split', "Split")), new Separator(), this._copyContextMenuAction, this._instantiationService.createInstance(TerminalPasteAction, TerminalPasteAction.ID, nls.localize('paste', "Paste")), this._instantiationService.createInstance(SelectAllTerminalAction, SelectAllTerminalAction.ID, nls.localize('selectAll', "Select All")), new Separator(), - this._instantiationService.createInstance(ClearTerminalAction, ClearTerminalAction.ID, nls.localize('clear', "Clear")), - new Separator(), - this._instantiationService.createInstance(SplitTerminalAction, SplitTerminalAction.ID, nls.localize('split', "Split")) + this._instantiationService.createInstance(ClearTerminalAction, ClearTerminalAction.ID, nls.localize('clear', "Clear")) ]; this._contextMenuActions.forEach(a => { this._register(a); From c48f19d95ef8b4429b012b8349e7d25901781d6b Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 16:11:50 +0100 Subject: [PATCH 341/658] publish linux build --- build/tfs/linux/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 8d79f43daa4..d2a3b5ea7e6 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -57,4 +57,8 @@ steps: npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-deb" npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-rpm" #npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-snap" + + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ + AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ + MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \ ./build/tfs/linux/release2.sh "$(VSCODE_ARCH)" "$(LINUX_REPO_PASSWORD)" \ No newline at end of file From 25474073e5e306680b6e6665d6ece79cad5765ee Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 16:28:34 +0100 Subject: [PATCH 342/658] fix issue with quit requested being a function --- src/vs/code/electron-main/windows.ts | 2 +- .../lifecycle/electron-main/lifecycleMain.ts | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 1c634082449..1f0d5706f57 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -282,7 +282,7 @@ export class WindowsManager implements IWindowsMainService { // See note on #onBeforeShutdown() for details how these events are flowing private onBeforeWindowClose(win: ICodeWindow): void { - if (this.lifecycleService.isQuitRequested()) { + if (this.lifecycleService.isQuitRequested) { return; // during quit, many windows close in parallel so let it be handled in the before-quit handler } diff --git a/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts b/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts index e2f63750639..d1515058458 100644 --- a/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts +++ b/src/vs/platform/lifecycle/electron-main/lifecycleMain.ts @@ -39,6 +39,11 @@ export interface ILifecycleService { */ wasRestarted: boolean; + /** + * Will be true if the program was requested to quit. + */ + isQuitRequested: boolean; + /** * Due to the way we handle lifecycle with eventing, the general app.on('before-quit') * event cannot be used because it can be called twice on shutdown. Instead the onBeforeShutdown @@ -73,7 +78,6 @@ export interface ILifecycleService { relaunch(options?: { addArgs?: string[], removeArgs?: string[] }): void; quit(fromUpdate?: boolean): TPromise; - isQuitRequested(): boolean; kill(code?: number): void; } @@ -129,6 +133,10 @@ export class LifecycleService implements ILifecycleService { return this._wasRestarted; } + public get isQuitRequested(): boolean { + return !!this.quitRequested; + } + public ready(): void { this.registerListeners(); } @@ -382,8 +390,4 @@ export class LifecycleService implements ILifecycleService { vetoed = veto; }); } - - public isQuitRequested(): boolean { - return !!this.quitRequested; - } } From cef40ed17ce710ebe92c48fb54f7937c48d02066 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 9 Mar 2018 07:37:20 -0800 Subject: [PATCH 343/658] Only trim last non-wrapped line when sending line data to tasks Fixes #45412 --- .../parts/terminal/electron-browser/terminalInstance.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 6250b31d176..ebebeeecae9 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -968,7 +968,7 @@ export class TerminalInstance implements ITerminalInstance { private _sendLineData(buffer: any, lineIndex: number): void { let lineData = buffer.translateBufferLineToString(lineIndex, true); while (lineIndex >= 0 && buffer.lines.get(lineIndex--).isWrapped) { - lineData = buffer.translateBufferLineToString(lineIndex, true) + lineData; + lineData = buffer.translateBufferLineToString(lineIndex, false) + lineData; } this._onLineDataListeners.forEach(listener => { try { From f2abadb1ac284774e18cdf5e6fb6ba1950aa5934 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 9 Mar 2018 16:46:44 +0100 Subject: [PATCH 344/658] better shared process disposal --- src/vs/code/electron-main/app.ts | 1 - src/vs/code/electron-main/sharedProcess.ts | 32 ++++++---------------- 2 files changed, 9 insertions(+), 24 deletions(-) diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 3b1904dc0bf..8429b3988f3 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -278,7 +278,6 @@ export class CodeApplication { // Spawn shared process this.sharedProcess = new SharedProcess(this.environmentService, this.lifecycleService, this.logService, machineId, this.userEnv); - this.toDispose.push(this.sharedProcess); this.sharedProcessClient = this.sharedProcess.whenReady().then(() => connect(this.environmentService.sharedIPCHandle, 'main')); // Services diff --git a/src/vs/code/electron-main/sharedProcess.ts b/src/vs/code/electron-main/sharedProcess.ts index bfff19b2661..7f0a1fca2b5 100644 --- a/src/vs/code/electron-main/sharedProcess.ts +++ b/src/vs/code/electron-main/sharedProcess.ts @@ -5,7 +5,6 @@ import { assign } from 'vs/base/common/objects'; import { memoize } from 'vs/base/common/decorators'; -import { IDisposable, toDisposable, dispose } from 'vs/base/common/lifecycle'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { TPromise } from 'vs/base/common/winjs.base'; import { IProcessEnvironment } from 'vs/base/common/platform'; @@ -20,7 +19,6 @@ export class SharedProcess implements ISharedProcess { private barrier = new Barrier(); private window: Electron.BrowserWindow; - private disposables: IDisposable[] = []; constructor( private readonly environmentService: IEnvironmentService, @@ -29,20 +27,6 @@ export class SharedProcess implements ISharedProcess { private readonly machineId: string, private readonly userEnv: IProcessEnvironment, ) { - this.registerListeners(); - } - - private registerListeners(): void { - - // Shut the shared process down when we are quitting - // - // Note: because we veto the window close, we must call our dispose() method, - // which removes the veto. Otherwise the application would never quit because - // the shared process window is refusing to close! - // - this.lifecycleService.onShutdown(() => { - this.dispose(); - }); } @memoize @@ -79,9 +63,15 @@ export class SharedProcess implements ISharedProcess { }; this.window.on('close', onClose); - this.disposables.push(toDisposable(() => this.window.removeListener('close', onClose))); - this.disposables.push(toDisposable(() => { + this.lifecycleService.onShutdown(() => { + // Shut the shared process down when we are quitting + // + // Note: because we veto the window close, we must first remove our veto. + // Otherwise the application would never quit because the shared process + // window is refusing to close! + // + this.window.removeListener('close', onClose); // Electron seems to crash on Windows without this setTimeout :| setTimeout(() => { @@ -93,7 +83,7 @@ export class SharedProcess implements ISharedProcess { this.window = null; }, 0); - })); + }); return new TPromise((c, e) => { ipcMain.once('handshake:hello', ({ sender }: { sender: any }) => { @@ -133,8 +123,4 @@ export class SharedProcess implements ISharedProcess { this.window.webContents.closeDevTools(); this.window.hide(); } - - dispose(): void { - this.disposables = dispose(this.disposables); - } } From 0ece60040fa2fd41375d77ce5f9d988113e397c8 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 16:48:17 +0100 Subject: [PATCH 345/658] wip: explorer horizontal scrolling --- src/vs/base/browser/dom.ts | 15 +++++ src/vs/base/parts/tree/browser/tree.ts | 5 ++ src/vs/base/parts/tree/browser/treeImpl.ts | 2 +- src/vs/base/parts/tree/browser/treeView.ts | 58 +++++++++++++++---- .../base/parts/tree/browser/treeViewModel.ts | 2 +- .../electron-browser/views/explorerView.ts | 31 ++++++++-- 6 files changed, 96 insertions(+), 17 deletions(-) diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index 13951c0ec24..636af54a1f0 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -459,6 +459,9 @@ const sizeUtils = { getBorderLeftWidth: function (element: HTMLElement): number { return getDimension(element, 'border-left-width', 'borderLeftWidth'); }, + getBorderRightWidth: function (element: HTMLElement): number { + return getDimension(element, 'border-right-width', 'borderRightWidth'); + }, getBorderTopWidth: function (element: HTMLElement): number { return getDimension(element, 'border-top-width', 'borderTopWidth'); }, @@ -466,6 +469,12 @@ const sizeUtils = { return getDimension(element, 'border-bottom-width', 'borderBottomWidth'); }, + getPaddingLeft: function (element: HTMLElement): number { + return getDimension(element, 'padding-left', 'paddingLeft'); + }, + getPaddingRight: function (element: HTMLElement): number { + return getDimension(element, 'padding-right', 'paddingRight'); + }, getPaddingTop: function (element: HTMLElement): number { return getDimension(element, 'padding-top', 'paddingTop'); }, @@ -571,6 +580,12 @@ export function getTotalWidth(element: HTMLElement): number { return element.offsetWidth + margin; } +export function getContentWidth(element: HTMLElement): number { + let border = sizeUtils.getBorderLeftWidth(element) + sizeUtils.getBorderRightWidth(element); + let padding = sizeUtils.getPaddingLeft(element) + sizeUtils.getPaddingRight(element); + return element.offsetWidth - border - padding; +} + export function getTotalScrollWidth(element: HTMLElement): number { let margin = sizeUtils.getMarginLeft(element) + sizeUtils.getMarginRight(element); return element.scrollWidth + margin; diff --git a/src/vs/base/parts/tree/browser/tree.ts b/src/vs/base/parts/tree/browser/tree.ts index 0d66edf1667..e9b6eb2fb50 100644 --- a/src/vs/base/parts/tree/browser/tree.ts +++ b/src/vs/base/parts/tree/browser/tree.ts @@ -668,11 +668,16 @@ export interface ITreeConfiguration { accessibilityProvider?: IAccessibilityProvider; } +export interface IContentWidthProvider { + getContentWidth(): number; +} + export interface ITreeOptions extends ITreeStyles { twistiePixels?: number; showTwistie?: boolean; indentPixels?: number; verticalScrollMode?: ScrollbarVisibility; + contentWidthProvider?: IContentWidthProvider; alwaysFocused?: boolean; autoExpandSingleChildren?: boolean; useShadows?: boolean; diff --git a/src/vs/base/parts/tree/browser/treeImpl.ts b/src/vs/base/parts/tree/browser/treeImpl.ts index f7c9173df5a..527ff39518c 100644 --- a/src/vs/base/parts/tree/browser/treeImpl.ts +++ b/src/vs/base/parts/tree/browser/treeImpl.ts @@ -212,7 +212,7 @@ export class Tree implements _.ITree { } getContentHeight(): number { - return this.view.getTotalHeight(); + return this.view.getContentHeight(); } public setHighlight(element?: any, eventPayload?: any): void { diff --git a/src/vs/base/parts/tree/browser/treeView.ts b/src/vs/base/parts/tree/browser/treeView.ts index e717487827d..bd750717af2 100644 --- a/src/vs/base/parts/tree/browser/treeView.ts +++ b/src/vs/base/parts/tree/browser/treeView.ts @@ -25,6 +25,7 @@ import { KeyCode } from 'vs/base/common/keyCodes'; import Event, { Emitter } from 'vs/base/common/event'; import { IDomNodePagePosition } from 'vs/base/browser/dom'; import { DataTransfers } from 'vs/base/browser/dnd'; +import { Delayer } from 'vs/base/common/async'; export interface IRow { element: HTMLElement; @@ -383,6 +384,8 @@ export class TreeView extends HeightMap { private msGesture: MSGesture; private lastPointerType: string; private lastClickTimeStamp: number = 0; + private contentWidthProvider?: _.IContentWidthProvider; + private contentWidthUpdateDelayer = new Delayer(50); private lastRenderTop: number; private lastRenderHeight: number; @@ -460,16 +463,19 @@ export class TreeView extends HeightMap { DOM.addClass(this.domNode, 'no-row-padding'); } + const horizontalScrollMode = typeof context.options.contentWidthProvider === 'undefined' ? ScrollbarVisibility.Hidden : ScrollbarVisibility.Auto; + this.contentWidthProvider = context.options.contentWidthProvider; + this.wrapper = document.createElement('div'); this.wrapper.className = 'monaco-tree-wrapper'; this.scrollableElement = new ScrollableElement(this.wrapper, { alwaysConsumeMouseWheel: true, - horizontal: ScrollbarVisibility.Hidden, + horizontal: horizontalScrollMode, vertical: (typeof context.options.verticalScrollMode !== 'undefined' ? context.options.verticalScrollMode : ScrollbarVisibility.Auto), useShadows: context.options.useShadows }); this.scrollableElement.onScroll((e) => { - this.render(e.scrollTop, e.height); + this.render(e.scrollTop, e.height, e.scrollLeft, e.width, e.scrollWidth); }); if (Browser.isIE) { @@ -670,9 +676,14 @@ export class TreeView extends HeightMap { } this.viewHeight = height || DOM.getContentHeight(this.wrapper); // render + this.scrollHeight = this.getContentHeight(); + + if (this.contentWidthProvider) { + this.viewWidth = DOM.getContentWidth(this.wrapper); + } } - private render(scrollTop: number, viewHeight: number): void { + private render(scrollTop: number, viewHeight: number, scrollLeft: number, viewWidth: number, scrollWidth: number): void { var i: number; var stop: number; @@ -706,6 +717,11 @@ export class TreeView extends HeightMap { this.rowsContainer.style.top = (topItem.top - renderTop) + 'px'; } + if (this.contentWidthProvider) { + this.rowsContainer.style.left = -scrollLeft + 'px'; + this.rowsContainer.style.width = `${Math.max(scrollWidth, viewWidth)}px`; + } + this.lastRenderTop = renderTop; this.lastRenderHeight = renderBottom - renderTop; } @@ -746,6 +762,12 @@ export class TreeView extends HeightMap { } this.scrollTop = scrollTop; + + if (this.contentWidthProvider) { + this.contentWidthUpdateDelayer.trigger(() => { + this.scrollWidth = this.contentWidthProvider.getContentWidth(); + }); + } } public focusNextPage(eventPayload?: any): void { @@ -803,11 +825,25 @@ export class TreeView extends HeightMap { return scrollDimensions.height; } - public set viewHeight(viewHeight: number) { - this.scrollableElement.setScrollDimensions({ - height: viewHeight, - scrollHeight: this.getTotalHeight() - }); + public set viewHeight(height: number) { + this.scrollableElement.setScrollDimensions({ height }); + } + + private set scrollHeight(scrollHeight: number) { + this.scrollableElement.setScrollDimensions({ scrollHeight }); + } + + public get viewWidth(): number { + const scrollDimensions = this.scrollableElement.getScrollDimensions(); + return scrollDimensions.width; + } + + public set viewWidth(viewWidth: number) { + this.scrollableElement.setScrollDimensions({ width: viewWidth }); + } + + private set scrollWidth(scrollWidth: number) { + this.scrollableElement.setScrollDimensions({ scrollWidth }); } public get scrollTop(): number { @@ -817,7 +853,7 @@ export class TreeView extends HeightMap { public set scrollTop(scrollTop: number) { this.scrollableElement.setScrollDimensions({ - scrollHeight: this.getTotalHeight() + scrollHeight: this.getContentHeight() }); this.scrollableElement.setScrollPosition({ scrollTop: scrollTop @@ -825,12 +861,12 @@ export class TreeView extends HeightMap { } public getScrollPosition(): number { - const height = this.getTotalHeight() - this.viewHeight; + const height = this.getContentHeight() - this.viewHeight; return height <= 0 ? 1 : this.scrollTop / height; } public setScrollPosition(pos: number): void { - const height = this.getTotalHeight() - this.viewHeight; + const height = this.getContentHeight() - this.viewHeight; this.scrollTop = height * pos; } diff --git a/src/vs/base/parts/tree/browser/treeViewModel.ts b/src/vs/base/parts/tree/browser/treeViewModel.ts index 0dcb27d000b..016d3ce2093 100644 --- a/src/vs/base/parts/tree/browser/treeViewModel.ts +++ b/src/vs/base/parts/tree/browser/treeViewModel.ts @@ -22,7 +22,7 @@ export class HeightMap { this.indexes = {}; } - public getTotalHeight(): number { + public getContentHeight(): number { var last = this.heightMap[this.heightMap.length - 1]; return !last ? 0 : last.top + last.height; } diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts index acac6760d6a..bd2ceea814c 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerView.ts @@ -416,7 +416,8 @@ export class ExplorerView extends TreeViewsViewletPanel implements IExplorerView accessibilityProvider }, { autoExpandSingleChildren: true, - ariaLabel: nls.localize('treeAriaLabel', "Files Explorer") + ariaLabel: nls.localize('treeAriaLabel', "Files Explorer"), + contentWidthProvider: { getContentWidth: () => this.getOptimalWidth() } }); // Bind context keys @@ -459,10 +460,32 @@ export class ExplorerView extends TreeViewsViewletPanel implements IExplorerView } public getOptimalWidth(): number { - const parentNode = this.explorerViewer.getHTMLElement(); - const childNodes = [].slice.call(parentNode.querySelectorAll('.explorer-item .label-name')); // select all file labels + if (!this.explorerViewer) { + return 0; + } - return DOM.getLargestChildWidth(parentNode, childNodes); + let result = 0; + const parentNode = this.explorerViewer.getHTMLElement(); + const rows = [].slice.call(parentNode.querySelectorAll('.monaco-tree-row')) as HTMLElement[]; + + for (const row of rows) { + const rowStyle = window.getComputedStyle(row); + const content = row.querySelector('.content') as HTMLElement; + const twistieStyle = window.getComputedStyle(content, ':before'); + const iconLabel = content.querySelector('.monaco-icon-label') as HTMLElement; + const iconStyle = window.getComputedStyle(iconLabel, ':before'); // width + padding + const decorationsStyle = window.getComputedStyle(iconLabel, ':after'); // width + padding + const label = iconLabel.querySelector('.monaco-icon-label-description-container > .label-name') as HTMLElement; + + const twistieWidth = (twistieStyle.display !== 'none' && twistieStyle.content) ? parseFloat(twistieStyle.width) + parseFloat(twistieStyle.paddingLeft) + parseFloat(twistieStyle.paddingRight) : 0; + const iconWidth = iconStyle.content ? parseFloat(iconStyle.width) + parseFloat(iconStyle.paddingLeft) + parseFloat(iconStyle.paddingRight) : 0; + const decorationsWidth = decorationsStyle.content ? parseFloat(decorationsStyle.width) + parseFloat(decorationsStyle.paddingLeft) + parseFloat(decorationsStyle.paddingRight) : 0; + const width = parseFloat(rowStyle.paddingLeft) + twistieWidth + iconWidth + decorationsWidth + label.offsetWidth; + + result = Math.max(result, width); + } + + return result + 12; // 12 for right padding } private onFileOperation(e: FileOperationEvent): void { From c152fa0f0db2e81f1ee09ec07abaf834f18f8f56 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 17:00:10 +0100 Subject: [PATCH 346/658] unified product build --- build/tfs/build.yml | 7 - build/tfs/product-build.yml | 338 ++++++++++++++++++++++++++++++++++++ 2 files changed, 338 insertions(+), 7 deletions(-) create mode 100644 build/tfs/product-build.yml diff --git a/build/tfs/build.yml b/build/tfs/build.yml index 0359ec3035a..e90e13ebd81 100644 --- a/build/tfs/build.yml +++ b/build/tfs/build.yml @@ -3,10 +3,7 @@ phases: queue: Hosted VS2017 variables: VSCODE_BUILD_VERBOSE: true - System.Debug: true - ELECTRON_RUN_AS_NODE: 1 APPVEYOR: true - steps: - task: NodeTool@0 inputs: @@ -33,8 +30,6 @@ phases: queue: Hosted Linux Preview variables: VSCODE_BUILD_VERBOSE: true - System.Debug: true - steps: - script: | apt-get update @@ -71,9 +66,7 @@ phases: queue: Hosted macOS Preview variables: VSCODE_BUILD_VERBOSE: true - System.Debug: true steps: - - task: NodeTool@0 inputs: versionSpec: "8.9.1" diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml new file mode 100644 index 00000000000..b21c6af2e8b --- /dev/null +++ b/build/tfs/product-build.yml @@ -0,0 +1,338 @@ +phases: +- phase: Windows + queue: Hosted VS2017 + variables: + VSCODE_BUILD_VERBOSE: true + APPVEYOR: true + + steps: + - task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + + - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + + - powershell: | + "machine monacotools.visualstudio.com password $(VSO_PAT)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII + $env:npm_config_arch="$(VSCODE_ARCH)" + $env:CHILD_CONCURRENCY="1" + yarn + npm run gulp -- hygiene + npm run monaco-compile-check + $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" + npm run gulp -- mixin + node build/tfs/common/installDistro.js + + - powershell: | + $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" + npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-min" + npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-copy-inno-updater" + name: build + + - powershell: | + .\scripts\test.bat --build --tfs + name: test + + - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 + inputs: + ConnectedServiceName: 'ESRP CodeSign' + FolderPath: '$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)' + Pattern: '*.dll,*.exe,*.node' + signConfigType: inlineSignParams + inlineOperation: | + [ + { + "keyCode": "CP-229803", + "operationSetCode": "SigntoolSign", + "parameters": [ + { + "parameterName": "OpusName", + "parameterValue": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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: | + npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-archive" "vscode-win32-$(VSCODE_ARCH)-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": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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: | + $Repo = "$(pwd)" + $Root = "$Repo\.." + $Exe = "$Repo\.build\win32-$(VSCODE_ARCH)\setup\VSCodeSetup.exe" + $Zip = "$Repo\.build\win32-$(VSCODE_ARCH)\archive\VSCode-win32-$(VSCODE_ARCH).zip" + $Build = "$Root\VSCode-win32-$(VSCODE_ARCH)" + + # get version + $PackageJson = Get-Content -Raw -Path "$Build\resources\app\package.json" | ConvertFrom-Json + $Version = $PackageJson.version + $Quality = "$env:VSCODE_QUALITY" + $env:AZURE_STORAGE_ACCESS_KEY_2 = "$(AZURE_STORAGE_ACCESS_KEY_2)" + $env:MOONCAKE_STORAGE_ACCESS_KEY = "$(MOONCAKE_STORAGE_ACCESS_KEY)" + $env:AZURE_DOCUMENTDB_MASTERKEY = "$(AZURE_DOCUMENTDB_MASTERKEY)" + + $assetPlatform = if ("$(VSCODE_ARCH)" -eq "ia32") { "win32" } else { "win32-x64" } + + node build/tfs/common/publish.js $Quality "$global:assetPlatform-archive" archive "VSCode-win32-$(VSCODE_ARCH)-$Version.zip" $Version true $Zip + node build/tfs/common/publish.js $Quality "$global:assetPlatform" setup "VSCodeSetup-$(VSCODE_ARCH)-$Version.exe" $Version true $Exe + +- phase: Linux + queue: Hosted Linux Preview + variables: + VSCODE_BUILD_VERBOSE: true + + steps: + - script: | + # dependencies + apt-get update + apt-get install -y \ + libxkbfile-dev \ + pkg-config \ + libsecret-1-dev \ + libxss1 \ + libgconf-2-4 \ + dbus \ + xvfb \ + fakeroot \ + bc \ + bsdmainutils \ + rpm + + # setup xvfb + cp build/tfs/linux/$(VSCODE_ARCH)/xvfb.init /etc/init.d/xvfb + chmod +x /etc/init.d/xvfb + update-rc.d xvfb defaults + service xvfb start + + # setup dbus + ln -sf /bin/dbus-daemon /usr/bin/dbus-daemon + service dbus start + + - task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + + - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + + - script: | + echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc + yarn + npm run gulp -- hygiene + npm run monaco-compile-check + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin + node build/tfs/common/installDistro.js + + - script: | + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-$(VSCODE_ARCH)-min + name: build + + # - script: | + # DISPLAY=:10 ./scripts/test.sh --build --tfs + # name: test + + - script: | + npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-deb" + npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-rpm" + #npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-snap" + + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ + AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ + MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \ + ./build/tfs/linux/release2.sh "$(VSCODE_ARCH)" "$(LINUX_REPO_PASSWORD)" + +- phase: macOS + queue: Hosted macOS Preview + variables: + VSCODE_BUILD_VERBOSE: true + steps: + - task: NodeTool@0 + inputs: + versionSpec: "8.9.1" + + - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 + inputs: + versionSpec: "1.3.2" + + - script: | + echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc + yarn + npm run gulp -- hygiene + npm run monaco-compile-check + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin + node build/tfs/common/installDistro.js + + - script: | + VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-darwin-min + name: build + + - script: | + ./scripts/test.sh --build --tfs + name: test + + - script: | + # archive the unsigned build + pushd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin-unsigned.zip * && popd + + # publish the unsigned build + PACKAGEJSON=`ls ../VSCode-darwin/*.app/Contents/Resources/app/package.json` + VERSION=`node -p "require(\"$PACKAGEJSON\").version"` + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ + AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ + MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \ + node build/tfs/common/publish.js \ + "$(VSCODE_QUALITY)" \ + darwin \ + archive-unsigned \ + "VSCode-darwin-$(VSCODE_QUALITY)-unsigned.zip" \ + $VERSION \ + false \ + ../VSCode-darwin-unsigned.zip + + # enqueue the unsigned build + AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ + AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ + node build/tfs/common/enqueue.js "$(VSCODE_QUALITY)" + + npm run gulp -- upload-vscode-configuration \ No newline at end of file From fb3ec40d67966d18528ce2d3bfe14bf5ab4ff2c9 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 17:02:25 +0100 Subject: [PATCH 347/658] fix yaml --- build/tfs/product-build.yml | 280 ++++++++++++++++++------------------ 1 file changed, 140 insertions(+), 140 deletions(-) diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index b21c6af2e8b..3a0c6009ea5 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -42,76 +42,76 @@ phases: Pattern: '*.dll,*.exe,*.node' signConfigType: inlineSignParams inlineOperation: | - [ - { - "keyCode": "CP-229803", - "operationSetCode": "SigntoolSign", - "parameters": [ - { - "parameterName": "OpusName", - "parameterValue": "Microsoft" - }, - { - "parameterName": "OpusInfo", - "parameterValue": "http://www.microsoft.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": "Microsoft" - }, - { - "parameterName": "OpusInfo", - "parameterValue": "http://www.microsoft.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" - } - ] + [ + { + "keyCode": "CP-229803", + "operationSetCode": "SigntoolSign", + "parameters": [ + { + "parameterName": "OpusName", + "parameterValue": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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: | @@ -124,76 +124,76 @@ phases: Pattern: VSCodeSetup.exe signConfigType: inlineSignParams inlineOperation: | - [ - { - "keyCode": "CP-229803", - "operationSetCode": "SigntoolSign", - "parameters": [ - { - "parameterName": "OpusName", - "parameterValue": "Microsoft" - }, - { - "parameterName": "OpusInfo", - "parameterValue": "http://www.microsoft.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": "Microsoft" - }, - { - "parameterName": "OpusInfo", - "parameterValue": "http://www.microsoft.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" - } - ] + [ + { + "keyCode": "CP-229803", + "operationSetCode": "SigntoolSign", + "parameters": [ + { + "parameterName": "OpusName", + "parameterValue": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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": "Microsoft" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "http://www.microsoft.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: | From 0fb958391495d12b5c678e63050070a00e235b01 Mon Sep 17 00:00:00 2001 From: Cherry Wang Date: Fri, 9 Mar 2018 08:55:15 -0800 Subject: [PATCH 348/658] Added breakpoint-hint.svg back as a separate file; fixed drag-area position; fixed start button size; fixed breakpoint icon container size in viewlet. --- .../parts/debug/browser/media/breakpoint-hint.svg | 2 +- .../parts/debug/browser/media/debug.contribution.css | 3 +-- .../parts/debug/browser/media/debugActionsWidget.css | 4 ++-- .../workbench/parts/debug/browser/media/debugViewlet.css | 9 +++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg index 24f20069526..8fdaed5ad03 100644 --- a/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg +++ b/src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg @@ -1 +1 @@ - \ No newline at end of file +breakpoint-hint \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css index 073be30b803..8cf2b988072 100644 --- a/src/vs/workbench/parts/debug/browser/media/debug.contribution.css +++ b/src/vs/workbench/parts/debug/browser/media/debug.contribution.css @@ -31,8 +31,7 @@ } .debug-breakpoint-hint { - background: url('breakpoint.svg') center center no-repeat; - opacity: .2; + background: url('breakpoint-hint.svg') center center no-repeat; } .debug-breakpoint-disabled, diff --git a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css index c59e08762ab..af7b6aaefb4 100644 --- a/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css +++ b/src/vs/workbench/parts/debug/browser/media/debugActionsWidget.css @@ -23,8 +23,8 @@ .monaco-workbench .debug-actions-widget .drag-area { cursor: -webkit-grab; - height: 16px; - width: 16px; + height: 32px; + width: 10px; background: url('drag.svg') center center no-repeat; background-size: 16px 16px; } diff --git a/src/vs/workbench/parts/debug/browser/media/debugViewlet.css b/src/vs/workbench/parts/debug/browser/media/debugViewlet.css index 14fc1203e9b..f82011a4dd6 100644 --- a/src/vs/workbench/parts/debug/browser/media/debugViewlet.css +++ b/src/vs/workbench/parts/debug/browser/media/debugViewlet.css @@ -67,8 +67,9 @@ .monaco-workbench > .part > .title > .title-actions .start-debug-action-item .icon { height: 20px; width: 20px; - background: url('continue.svg') center center no-repeat; + background: url('continue.svg') no-repeat; background-size: 16px 16px; + background-position: center center; flex-shrink: 0; transition: transform 50ms ease; -webkit-transition: -webkit-transform 50ms ease; @@ -76,7 +77,7 @@ .vs-dark .monaco-workbench > .part > .title > .title-actions .start-debug-action-item .icon, .hc-black .monaco-workbench > .part > .title > .title-actions .start-debug-action-item .icon { - background: url('continue-inverse.svg') center center no-repeat; + background-image: url('continue-inverse.svg'); } .monaco-workbench .monaco-action-bar .start-debug-action-item .configuration .monaco-select-box { @@ -369,8 +370,8 @@ } .debug-viewlet .debug-breakpoints .breakpoint > .icon { - width: 18px; - height: 18px; + width: 16px; + height: 16px; } .debug-viewlet .debug-breakpoints .breakpoint > .file-path { From 85b53d324a057ce52d8ff1e893148d7fc4ea71e8 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Fri, 9 Mar 2018 09:51:26 -0800 Subject: [PATCH 349/658] Relayout the suggestWidget when its height changes Fixes #45408 --- src/vs/editor/contrib/suggest/suggestWidget.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/vs/editor/contrib/suggest/suggestWidget.ts b/src/vs/editor/contrib/suggest/suggestWidget.ts index 56711817ef5..9dcc6006611 100644 --- a/src/vs/editor/contrib/suggest/suggestWidget.ts +++ b/src/vs/editor/contrib/suggest/suggestWidget.ts @@ -370,6 +370,7 @@ export class SuggestWidget implements IContentWidget, IDelegate private listElement: HTMLElement; private details: SuggestionDetails; private list: List; + private listHeight: number; private suggestWidgetVisible: IContextKey; private suggestWidgetMultipleSuggestions: IContextKey; @@ -658,10 +659,6 @@ export class SuggestWidget implements IContentWidget, IDelegate this._ariaAlert(this.details.getAriaLabel()); break; } - - if (stateChanged && this.state !== State.Hidden) { - this.editor.layoutContentWidget(this); - } } showTriggered(auto: boolean) { @@ -918,7 +915,12 @@ export class SuggestWidget implements IContentWidget, IDelegate } private show(): void { - this.updateListHeight(); + const newHeight = this.updateListHeight(); + if (newHeight !== this.listHeight) { + this.editor.layoutContentWidget(this); + this.listHeight = newHeight; + } + this.suggestWidgetVisible.set(true); this.showTimeout = TPromise.timeout(100).then(() => { @@ -958,7 +960,7 @@ export class SuggestWidget implements IContentWidget, IDelegate return SuggestWidget.ID; } - private updateListHeight(): void { + private updateListHeight(): number { let height = 0; if (this.state === State.Empty || this.state === State.Loading) { @@ -971,6 +973,7 @@ export class SuggestWidget implements IContentWidget, IDelegate this.element.style.lineHeight = `${this.unfocusedHeight}px`; this.listElement.style.height = `${height}px`; this.list.layout(height); + return height; } private adjustDocsPosition() { From fce5856de88d6f8962751a974d59762770d3cda2 Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 9 Mar 2018 19:37:57 +0100 Subject: [PATCH 350/658] enable multi root DnD --- .../electron-browser/views/explorerViewer.ts | 66 ++++++++++--------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts index 6dc6d1885ff..3527b40de1e 100644 --- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts @@ -801,7 +801,7 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { else { const sources: FileStat[] = data.getData(); if (target instanceof Model) { - if (sources.length === 1 && sources[0].isRoot) { + if (sources[0].isRoot) { return DRAG_OVER_ACCEPT_BUBBLE_DOWN(false); } @@ -817,7 +817,7 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { return true; // NewStatPlaceholders can not be moved } - if (source.isRoot && (sources.length > 1 || target instanceof FileStat && !target.isRoot)) { + if (source.isRoot && target instanceof FileStat && !target.isRoot) { return true; // Root folder can not be moved to a non root file stat. Do not allow root folder move when multi selection drag. } @@ -949,7 +949,8 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { return updateConfirmSettingsPromise.then(() => { if (res.confirmed) { - return TPromise.join(sources.map(source => this.doHandleExplorerDrop(tree, source, target, isCopy))).then(() => void 0); + const rootDropPromise = this.doHandleRootDrop(sources.filter(s => s.isRoot), target); + return TPromise.join(sources.filter(s => !s.isRoot).map(source => this.doHandleExplorerDrop(tree, source, target, isCopy)).concat(rootDropPromise)).then(() => void 0); } return TPromise.as(void 0); @@ -957,35 +958,40 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop { }); } + private doHandleRootDrop(roots: FileStat[], target: FileStat | Model): TPromise { + const folders = this.contextService.getWorkspace().folders; + let targetIndex: number; + const workspaceCreationData: IWorkspaceFolderCreationData[] = []; + const targetUri = target instanceof FileStat ? target.resource : folders[folders.length - 1].uri; + const rootsToMove: IWorkspaceFolderCreationData[] = []; + + for (let index = 0; index < folders.length; index++) { + const data = { + name: folders[index].name, + uri: folders[index].uri + }; + if (folders[index].uri.toString() === targetUri.toString()) { + targetIndex = workspaceCreationData.length; + workspaceCreationData.push(data); + } else if (roots.every(r => r.resource.toString() !== folders[index].uri.toString())) { + workspaceCreationData.push(data); + } else { + rootsToMove.push(data); + } + } + + if (target instanceof FileStat) { + rootsToMove.push(workspaceCreationData[targetIndex]); + } else { + rootsToMove.unshift(workspaceCreationData[targetIndex]); + } + + workspaceCreationData.splice(targetIndex, 1, ...rootsToMove); + return this.workspaceEditingService.updateFolders(0, workspaceCreationData.length, workspaceCreationData); + } + private doHandleExplorerDrop(tree: ITree, source: FileStat, target: FileStat | Model, isCopy: boolean): TPromise { return tree.expand(target).then(() => { - if (source.isRoot) { - const folders = this.contextService.getWorkspace().folders; - let sourceIndex: number; - let targetIndex: number; - const workspaceCreationData: IWorkspaceFolderCreationData[] = []; - const targetUri = target instanceof FileStat ? target.resource : folders[folders.length - 1].uri; - - for (let index = 0; index < folders.length; index++) { - if (folders[index].uri.toString() === source.resource.toString()) { - sourceIndex = index; - } - if (folders[index].uri.toString() === targetUri.toString()) { - targetIndex = index; - } - workspaceCreationData.push({ - name: folders[index].name, - uri: folders[index].uri - }); - } - - const swap = workspaceCreationData[sourceIndex]; - workspaceCreationData[sourceIndex] = workspaceCreationData[targetIndex]; - workspaceCreationData[targetIndex] = swap; - - return this.workspaceEditingService.updateFolders(0, workspaceCreationData.length, workspaceCreationData); - } - // Reuse duplicate action if user copies if (isCopy) { return this.instantiationService.createInstance(DuplicateFileAction, tree, source, target).run(); From d6caa2d4d00d13aec04a916e36c451147d8dbcd8 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 21:18:38 -0800 Subject: [PATCH 351/658] Extract SyncedBuffe mapping to own class --- .../src/features/bufferSyncSupport.ts | 99 +++++++++++++------ 1 file changed, 68 insertions(+), 31 deletions(-) diff --git a/extensions/typescript/src/features/bufferSyncSupport.ts b/extensions/typescript/src/features/bufferSyncSupport.ts index 512d85b12ae..ff4ccde6ec6 100644 --- a/extensions/typescript/src/features/bufferSyncSupport.ts +++ b/extensions/typescript/src/features/bufferSyncSupport.ts @@ -13,7 +13,7 @@ import * as languageModeIds from '../utils/languageModeIds'; import { disposeAll } from '../utils/dipose'; interface IDiagnosticRequestor { - requestDiagnostic(filepath: string): void; + requestDiagnostic(resource: Uri): void; } function mode2ScriptKind(mode: string): 'TS' | 'TSX' | 'JS' | 'JSX' | undefined { @@ -94,12 +94,53 @@ class SyncedBuffer { }; this.client.execute('change', args, false); } - this.diagnosticRequestor.requestDiagnostic(filePath); + this.diagnosticRequestor.requestDiagnostic(this.document.uri); } } +class SyncedBufferMap { + private readonly _map = new Map(); + + constructor( + private readonly _normalizePath: (resource: Uri) => string | null + ) { } + + public has(resource: Uri): boolean { + const file = this._normalizePath(resource); + return !!file && this._map.has(file); + } + + public get(resource: Uri): SyncedBuffer | undefined { + const file = this._normalizePath(resource); + return file ? this._map.get(file) : undefined; + } + + public set(resource: Uri, buffer: SyncedBuffer) { + const file = this._normalizePath(resource); + if (file) { + this._map.set(file, buffer); + } + } + + public delete(resource: Uri): void { + const file = this._normalizePath(resource); + if (file) { + this._map.delete(file); + } + } + + public get allBuffers(): Iterable { + return this._map.values(); + } + + public get allResources(): Iterable { + return this._map.keys(); + } +} + + export interface Diagnostics { - delete(file: string): void; + delete(resource: Uri): void; } export default class BufferSyncSupport { @@ -110,7 +151,7 @@ export default class BufferSyncSupport { private readonly modeIds: Set; private readonly diagnostics: Diagnostics; private readonly disposables: Disposable[] = []; - private readonly syncedBuffers: Map; + private readonly syncedBuffers: SyncedBufferMap; private pendingDiagnostics = new Map(); private readonly diagnosticDelayer: Delayer; @@ -128,7 +169,7 @@ export default class BufferSyncSupport { this.diagnosticDelayer = new Delayer(300); - this.syncedBuffers = new Map(); + this.syncedBuffers = new SyncedBufferMap(path => this.client.normalizePath(path)); } public listen(): void { @@ -143,12 +184,11 @@ export default class BufferSyncSupport { } public handles(resource: Uri): boolean { - const file = this.client.normalizePath(resource); - return !!file && this.syncedBuffers.has(file); + return this.syncedBuffers.has(resource); } public reOpenDocuments(): void { - for (const buffer of this.syncedBuffers.values()) { + for (const buffer of this.syncedBuffers.allBuffers) { buffer.open(); } } @@ -167,45 +207,37 @@ export default class BufferSyncSupport { return; } const syncedBuffer = new SyncedBuffer(document, filepath, this, this.client); - this.syncedBuffers.set(filepath, syncedBuffer); + this.syncedBuffers.set(resource, syncedBuffer); syncedBuffer.open(); - this.requestDiagnostic(filepath); + this.requestDiagnostic(resource); } private onDidCloseTextDocument(document: TextDocument): void { - const filepath = this.client.normalizePath(document.uri); - if (!filepath) { - return; - } - const syncedBuffer = this.syncedBuffers.get(filepath); + const resource = document.uri; + const syncedBuffer = this.syncedBuffers.get(resource); if (!syncedBuffer) { return; } - this.diagnostics.delete(filepath); - this.syncedBuffers.delete(filepath); + this.diagnostics.delete(resource); + this.syncedBuffers.delete(resource); syncedBuffer.close(); - if (!fs.existsSync(filepath)) { + if (!fs.existsSync(resource.fsPath)) { this.requestAllDiagnostics(); } } private onDidChangeTextDocument(e: TextDocumentChangeEvent): void { - const filepath = this.client.normalizePath(e.document.uri); - if (!filepath) { - return; + const syncedBuffer = this.syncedBuffers.get(e.document.uri); + if (syncedBuffer) { + syncedBuffer.onContentChanged(e.contentChanges); } - let syncedBuffer = this.syncedBuffers.get(filepath); - if (!syncedBuffer) { - return; - } - syncedBuffer.onContentChanged(e.contentChanges); } public requestAllDiagnostics() { if (!this._validate) { return; } - for (const filePath of this.syncedBuffers.keys()) { + for (const filePath of this.syncedBuffers.allResources) { this.pendingDiagnostics.set(filePath, Date.now()); } this.diagnosticDelayer.trigger(() => { @@ -213,16 +245,21 @@ export default class BufferSyncSupport { }, 200); } - public requestDiagnostic(file: string): void { + public requestDiagnostic(resource: Uri): void { if (!this._validate) { return; } + const file = this.client.normalizePath(resource); + if (!file) { + return; + } + this.pendingDiagnostics.set(file, Date.now()); - const buffer = this.syncedBuffers.get(file); + const buffer = this.syncedBuffers.get(resource); let delay = 300; if (buffer) { - let lineCount = buffer.lineCount; + const lineCount = buffer.lineCount; delay = Math.min(Math.max(Math.ceil(lineCount / 20), 300), 800); } this.diagnosticDelayer.trigger(() => { @@ -246,7 +283,7 @@ export default class BufferSyncSupport { }); // Add all open TS buffers to the geterr request. They might be visible - for (const file of this.syncedBuffers.keys()) { + for (const file of this.syncedBuffers.allResources) { if (!this.pendingDiagnostics.get(file)) { files.push(file); } From edc8a053cf5b239a0cc075fdd87f0e7c526e12fd Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 21:24:19 -0800 Subject: [PATCH 352/658] Use await --- .../src/features/formattingProvider.ts | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/extensions/typescript/src/features/formattingProvider.ts b/extensions/typescript/src/features/formattingProvider.ts index ed5a4a0e9ae..e65d8ea49c9 100644 --- a/extensions/typescript/src/features/formattingProvider.ts +++ b/extensions/typescript/src/features/formattingProvider.ts @@ -75,28 +75,30 @@ export class TypeScriptFormattingProvider implements DocumentRangeFormattingEdit if (!filepath) { return []; } + + await this.formattingOptionsManager.ensureFormatOptions(document, options, token); + const args: Proto.FormatOnKeyRequestArgs = { file: filepath, line: position.line + 1, offset: position.character + 1, key: ch }; - - await this.formattingOptionsManager.ensureFormatOptions(document, options, token); - return this.client.execute('formatonkey', args, token).then((response): TextEdit[] => { - let edits = response.body; - let result: TextEdit[] = []; + try { + const response = await this.client.execute('formatonkey', args, token); + const edits = response.body; + const result: TextEdit[] = []; if (!edits) { return result; } for (const edit of edits) { - let textEdit = this.codeEdit2SingleEditOperation(edit); - let range = textEdit.range; + const textEdit = this.codeEdit2SingleEditOperation(edit); + const range = textEdit.range; // Work around for https://github.com/Microsoft/TypeScript/issues/6700. // Check if we have an edit at the beginning of the line which only removes white spaces and leaves // an empty line. Drop those edits if (range.start.character === 0 && range.start.line === range.end.line && textEdit.newText === '') { - let lText = document.lineAt(range.start.line).text; + const lText = document.lineAt(range.start.line).text; // If the edit leaves something on the line keep the edit (note that the end character is exclusive). // Keep it also if it removes something else than whitespace if (lText.trim().length > 0 || lText.length > range.end.character) { @@ -107,9 +109,10 @@ export class TypeScriptFormattingProvider implements DocumentRangeFormattingEdit } } return result; - }, () => { - return []; - }); + } catch { + // noop + } + return []; } private codeEdit2SingleEditOperation(edit: Proto.CodeEdit): TextEdit { From cadaf1f85f2810cf91a39d5c379da48543b4c5e6 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 21:27:14 -0800 Subject: [PATCH 353/658] Don't have DiagnosticsManager dependecy on client --- extensions/typescript/src/features/diagnostics.ts | 8 +++----- extensions/typescript/src/languageProvider.ts | 6 +++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/extensions/typescript/src/features/diagnostics.ts b/extensions/typescript/src/features/diagnostics.ts index 606940ed7eb..2972fbf5857 100644 --- a/extensions/typescript/src/features/diagnostics.ts +++ b/extensions/typescript/src/features/diagnostics.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import { Diagnostic, DiagnosticCollection, languages, Uri } from 'vscode'; -import { ITypeScriptServiceClient } from '../typescriptService'; class DiagnosticSet { private _map: ObjectMap = Object.create(null); @@ -39,8 +38,7 @@ export default class DiagnosticsManager { private _validate: boolean = true; constructor( - language: string, - private readonly client: ITypeScriptServiceClient + language: string ) { this.syntaxDiagnostics = new DiagnosticSet(); this.semanticDiagnostics = new DiagnosticSet(); @@ -81,8 +79,8 @@ export default class DiagnosticsManager { this.currentDiagnostics.set(file, diagnostics); } - public delete(file: string): void { - this.currentDiagnostics.delete(this.client.asUrl(file)); + public delete(resource: Uri): void { + this.currentDiagnostics.delete(resource); } private updateCurrentDiagnostics(file: Uri) { diff --git a/extensions/typescript/src/languageProvider.ts b/extensions/typescript/src/languageProvider.ts index 156858d7b6c..f65faf17c93 100644 --- a/extensions/typescript/src/languageProvider.ts +++ b/extensions/typescript/src/languageProvider.ts @@ -46,12 +46,12 @@ export default class LanguageProvider { ) { this.formattingOptionsManager = new FormattingConfigurationManager(client); this.bufferSyncSupport = new BufferSyncSupport(client, description.modeIds, { - delete: (file: string) => { - this.diagnosticsManager.delete(file); + delete: (resource) => { + this.diagnosticsManager.delete(resource); } }, this._validate); - this.diagnosticsManager = new DiagnosticsManager(description.id, this.client); + this.diagnosticsManager = new DiagnosticsManager(description.id); workspace.onDidChangeConfiguration(this.configurationChanged, this, this.disposables); this.configurationChanged(); From b21e86a9a14ef6425dbe019313311adeaab1996e Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 21:29:39 -0800 Subject: [PATCH 354/658] reader onerror is always supplied --- extensions/typescript/src/typescriptServiceClient.ts | 2 +- extensions/typescript/src/utils/wireProtocol.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/typescript/src/typescriptServiceClient.ts b/extensions/typescript/src/typescriptServiceClient.ts index b788c8c42e6..f41adaff666 100644 --- a/extensions/typescript/src/typescriptServiceClient.ts +++ b/extensions/typescript/src/typescriptServiceClient.ts @@ -128,7 +128,7 @@ class ForkedTsServerProcess { public createReader( callback: ICallback, - onError: (error: any) => void = () => ({}) + onError: (error: any) => void ) { // tslint:disable-next-line:no-unused-expression new Reader(this.childProcess.stdout, callback, onError); diff --git a/extensions/typescript/src/utils/wireProtocol.ts b/extensions/typescript/src/utils/wireProtocol.ts index e45d5ba6dfe..528a9a0f71b 100644 --- a/extensions/typescript/src/utils/wireProtocol.ts +++ b/extensions/typescript/src/utils/wireProtocol.ts @@ -90,7 +90,7 @@ export class Reader { public constructor( private readonly readable: stream.Readable, private readonly callback: ICallback, - private readonly onError: (error: any) => void = () => ({}) + private readonly onError: (error: any) => void ) { this.readable.on('data', (data: Buffer) => { this.onLengthData(data); From f0be7824d5927e6ee0a58ccceef59aa7e73e1327 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 8 Mar 2018 21:31:09 -0800 Subject: [PATCH 355/658] Use _ prefix for private --- .../typescript/src/utils/versionStatus.ts | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/extensions/typescript/src/utils/versionStatus.ts b/extensions/typescript/src/utils/versionStatus.ts index 07169f8046f..d852137cb65 100644 --- a/extensions/typescript/src/utils/versionStatus.ts +++ b/extensions/typescript/src/utils/versionStatus.ts @@ -8,40 +8,40 @@ import { TypeScriptVersion } from './versionProvider'; import * as languageModeIds from './languageModeIds'; export default class VersionStatus { - private readonly onChangeEditorSub: vscode.Disposable; - private readonly versionBarEntry: vscode.StatusBarItem; + private readonly _onChangeEditorSub: vscode.Disposable; + private readonly _versionBarEntry: vscode.StatusBarItem; constructor( - private readonly normalizePath: (resource: vscode.Uri) => string | null + private readonly _normalizePath: (resource: vscode.Uri) => string | null ) { - this.versionBarEntry = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 99 /* to the right of editor status (100) */); - this.onChangeEditorSub = vscode.window.onDidChangeActiveTextEditor(this.showHideStatus, this); + this._versionBarEntry = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 99 /* to the right of editor status (100) */); + this._onChangeEditorSub = vscode.window.onDidChangeActiveTextEditor(this.showHideStatus, this); } dispose() { - this.versionBarEntry.dispose(); - this.onChangeEditorSub.dispose(); + this._versionBarEntry.dispose(); + this._onChangeEditorSub.dispose(); } public onDidChangeTypeScriptVersion(version: TypeScriptVersion) { this.showHideStatus(); - this.versionBarEntry.text = version.versionString; - this.versionBarEntry.tooltip = version.path; - this.versionBarEntry.command = 'typescript.selectTypeScriptVersion'; + this._versionBarEntry.text = version.versionString; + this._versionBarEntry.tooltip = version.path; + this._versionBarEntry.command = 'typescript.selectTypeScriptVersion'; } private showHideStatus() { if (!vscode.window.activeTextEditor) { - this.versionBarEntry.hide(); + this._versionBarEntry.hide(); return; } const doc = vscode.window.activeTextEditor.document; if (vscode.languages.match([languageModeIds.typescript, languageModeIds.typescriptreact], doc)) { - if (this.normalizePath(doc.uri)) { - this.versionBarEntry.show(); + if (this._normalizePath(doc.uri)) { + this._versionBarEntry.show(); } else { - this.versionBarEntry.hide(); + this._versionBarEntry.hide(); } return; } @@ -52,6 +52,6 @@ export default class VersionStatus { return; } - this.versionBarEntry.hide(); + this._versionBarEntry.hide(); } } From 71b32c422f76a60fcaeb282b94e84bfd16b0f73b Mon Sep 17 00:00:00 2001 From: Cherry Wang Date: Fri, 9 Mar 2018 11:31:01 -0800 Subject: [PATCH 356/658] Made restart icon slightly smaller --- src/vs/workbench/parts/debug/browser/media/restart-inverse.svg | 2 +- src/vs/workbench/parts/debug/browser/media/restart.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg index c9071eb96c6..5cda703e42e 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart-inverse.svg @@ -1 +1 @@ -restart \ No newline at end of file +restart \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/browser/media/restart.svg b/src/vs/workbench/parts/debug/browser/media/restart.svg index 94ebb45d0bc..1f6f664acff 100644 --- a/src/vs/workbench/parts/debug/browser/media/restart.svg +++ b/src/vs/workbench/parts/debug/browser/media/restart.svg @@ -1 +1 @@ -restart \ No newline at end of file +restart \ No newline at end of file From f3b116777137cceb758d187094859c89317e0aba Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 9 Mar 2018 11:43:42 -0800 Subject: [PATCH 357/658] Don't also show popup when we open release notes Fixes #45387 --- src/vs/workbench/parts/update/electron-browser/update.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index 721ad9d65ce..6e56a592cd0 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -128,7 +128,7 @@ export class ProductContribution implements IWorkbenchContribution { // was there an update? if so, open release notes if (!environmentService.skipReleaseNotes && product.releaseNotesUrl && lastVersion && pkg.version !== lastVersion) { showReleaseNotes(instantiationService, lastVersion) - .then(() => { + .then(undefined, () => { notificationService.notify({ severity: severity.Info, message: nls.localize('read the release notes', "Welcome to {0} v{1}! Would you like to read the Release Notes?", product.nameLong, pkg.version), From 959e1e2106b8f30847e53e4de00e8ae924928059 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 9 Mar 2018 11:48:42 -0800 Subject: [PATCH 358/658] Support multi-line links Fixes #28746 --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 8691d686bad..dd394e60ede 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "vscode-nsfw": "1.0.17", "vscode-ripgrep": "0.7.1-patch.0.1", "vscode-textmate": "^3.2.0", - "vscode-xterm": "3.3.0-beta4", + "vscode-xterm": "3.3.0-beta5", "yauzl": "2.8.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index fc77c136aea..e5a6cd6100a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6000,9 +6000,9 @@ vscode-textmate@^3.2.0: fast-plist "^0.1.2" oniguruma "^6.0.1" -vscode-xterm@3.3.0-beta4: - version "3.3.0-beta4" - resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.3.0-beta4.tgz#560c039c3addebe6aa3a81c5b79d2869de87ecc5" +vscode-xterm@3.3.0-beta5: + version "3.3.0-beta5" + resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.3.0-beta5.tgz#4477c0ede38e2f39098f410bb7737a62832fb9e0" vso-node-api@^6.1.2-preview: version "6.1.2-preview" From 15f97e8355d0eb971f383332ed3006d28d99dae5 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Thu, 8 Mar 2018 15:28:39 -0800 Subject: [PATCH 359/658] clean up tests --- .../pathCompletion/pathCompletion.test.ts | 129 +++++++++--------- 1 file changed, 67 insertions(+), 62 deletions(-) diff --git a/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts b/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts index 21110e949a7..a209278c91b 100644 --- a/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts +++ b/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts @@ -7,10 +7,37 @@ import * as assert from 'assert'; import * as path from 'path'; import { providePathSuggestions } from '../../modes/pathCompletion'; -import { CompletionItemKind, Range, Position } from 'vscode-languageserver-types'; +import { CompletionItemKind, Range, Position, CompletionItem, TextEdit } from 'vscode-languageserver-types'; const fixtureRoot = path.resolve(__dirname, '../../../test/pathCompletionFixtures'); +function toRange(line: number, startChar: number, endChar: number) { + return Range.create(Position.create(line, startChar), Position.create(line, endChar)); +} + +interface PathSuggestion { + label?: string; + kind?: CompletionItemKind; + textEdit?: TextEdit; +} + +function assertSuggestions( actual: CompletionItem[], expected: PathSuggestion[]) { + assert.equal(actual.length, expected.length, 'Suggestions should have expected length'); + + for (let i = 0; i < expected.length; i++) { + if (expected[i].label) { + assert.equal(actual[i].label, expected[i].label, `Suggestion ${actual[i].label} should have label ${expected[i].label}`); + } + if (expected[i].kind) { + assert.equal(actual[i].kind, expected[i].kind, `Suggestion ${actual[i].label} has type ${CompletionItemKind[actual[i].kind]} but should have label ${CompletionItemKind[expected[i].kind]}`); + } + if (expected[i].textEdit) { + assert.equal(actual[i].textEdit.newText, expected[i].textEdit.newText); + assert.deepEqual(actual[i].textEdit.range, expected[i].textEdit.range); + } + } +} + suite('Path Completion - Relative Path', () => { const mockRange = Range.create(Position.create(0, 3), Position.create(0, 5)); @@ -19,14 +46,11 @@ suite('Path Completion - Relative Path', () => { const activeFileFsPath = path.resolve(fixtureRoot, 'index.html'); const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath); - assert.equal(suggestions.length, 3); - assert.equal(suggestions[0].label, 'about'); - assert.equal(suggestions[1].label, 'index.html'); - assert.equal(suggestions[2].label, 'src'); - - assert.equal(suggestions[0].kind, CompletionItemKind.Folder); - assert.equal(suggestions[1].kind, CompletionItemKind.File); - assert.equal(suggestions[2].kind, CompletionItemKind.Folder); + assertSuggestions(suggestions, [ + { label: 'about', kind: CompletionItemKind.Folder }, + { label: 'index.html', kind: CompletionItemKind.File }, + { label: 'src', kind: CompletionItemKind.Folder } + ]); }); test('Parent Folder', () => { @@ -34,14 +58,11 @@ suite('Path Completion - Relative Path', () => { const activeFileFsPath = path.resolve(fixtureRoot, 'about/about.html'); const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath); - assert.equal(suggestions.length, 3); - assert.equal(suggestions[0].label, 'about'); - assert.equal(suggestions[1].label, 'index.html'); - assert.equal(suggestions[2].label, 'src'); - - assert.equal(suggestions[0].kind, CompletionItemKind.Folder); - assert.equal(suggestions[1].kind, CompletionItemKind.File); - assert.equal(suggestions[2].kind, CompletionItemKind.Folder); + assertSuggestions(suggestions, [ + { label: 'about', kind: CompletionItemKind.Folder }, + { label: 'index.html', kind: CompletionItemKind.File }, + { label: 'src', kind: CompletionItemKind.Folder } + ]); }); test('Adjacent Folder', () => { @@ -49,15 +70,11 @@ suite('Path Completion - Relative Path', () => { const activeFileFsPath = path.resolve(fixtureRoot, 'about/about.html'); const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath); - assert.equal(suggestions.length, 2); - assert.equal(suggestions[0].label, 'feature.js'); - assert.equal(suggestions[1].label, 'test.js'); - - assert.equal(suggestions[0].kind, CompletionItemKind.File); - assert.equal(suggestions[1].kind, CompletionItemKind.File); + assertSuggestions(suggestions, [ + { label: 'feature.js', kind: CompletionItemKind.File }, + { label: 'test.js', kind: CompletionItemKind.File } + ]); }); - - }); suite('Path Completion - Absolute Path', () => { @@ -72,13 +89,11 @@ suite('Path Completion - Absolute Path', () => { const suggestions2 = providePathSuggestions(value, mockRange, activeFileFsPath2, fixtureRoot); const verify = (suggestions) => { - assert.equal(suggestions[0].label, 'about'); - assert.equal(suggestions[1].label, 'index.html'); - assert.equal(suggestions[2].label, 'src'); - - assert.equal(suggestions[0].kind, CompletionItemKind.Folder); - assert.equal(suggestions[1].kind, CompletionItemKind.File); - assert.equal(suggestions[2].kind, CompletionItemKind.Folder); + assertSuggestions(suggestions, [ + { label: 'about', kind: CompletionItemKind.Folder }, + { label: 'index.html', kind: CompletionItemKind.File }, + { label: 'src', kind: CompletionItemKind.Folder } + ]); }; verify(suggestions1); @@ -90,12 +105,10 @@ suite('Path Completion - Absolute Path', () => { const activeFileFsPath = path.resolve(fixtureRoot, 'about/about.html'); const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath, fixtureRoot); - assert.equal(suggestions.length, 2); - assert.equal(suggestions[0].label, 'feature.js'); - assert.equal(suggestions[1].label, 'test.js'); - - assert.equal(suggestions[0].kind, CompletionItemKind.File); - assert.equal(suggestions[1].kind, CompletionItemKind.File); + assertSuggestions(suggestions, [ + { label: 'feature.js', kind: CompletionItemKind.File }, + { label: 'test.js', kind: CompletionItemKind.File } + ]); }); }); @@ -107,12 +120,10 @@ suite('Path Completion - Incomplete Path at End', () => { const activeFileFsPath = path.resolve(fixtureRoot, 'about/about.html'); const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath, fixtureRoot); - assert.equal(suggestions.length, 2); - assert.equal(suggestions[0].label, 'feature.js'); - assert.equal(suggestions[1].label, 'test.js'); - - assert.equal(suggestions[0].kind, CompletionItemKind.File); - assert.equal(suggestions[1].kind, CompletionItemKind.File); + assertSuggestions(suggestions, [ + { label: 'feature.js', kind: CompletionItemKind.File }, + { label: 'test.js', kind: CompletionItemKind.File } + ]); }); test('Incomplete Path that does not start with slash', () => { @@ -120,12 +131,10 @@ suite('Path Completion - Incomplete Path at End', () => { const activeFileFsPath = path.resolve(fixtureRoot, 'about/about.html'); const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath, fixtureRoot); - assert.equal(suggestions.length, 2); - assert.equal(suggestions[0].label, 'feature.js'); - assert.equal(suggestions[1].label, 'test.js'); - - assert.equal(suggestions[0].kind, CompletionItemKind.File); - assert.equal(suggestions[1].kind, CompletionItemKind.File); + assertSuggestions(suggestions, [ + { label: 'feature.js', kind: CompletionItemKind.File }, + { label: 'test.js', kind: CompletionItemKind.File } + ]); }); }); @@ -133,19 +142,15 @@ suite('Path Completion - TextEdit', () => { test('TextEdit has correct replace text and range', () => { const value = './'; const activeFileFsPath = path.resolve(fixtureRoot, 'index.html'); - const range = Range.create(Position.create(0, 3), Position.create(0, 5)); + const range = toRange(0, 3, 5); + const expectedReplaceRange = toRange(0, 4, 4); + const suggestions = providePathSuggestions(value, range, activeFileFsPath); - - assert.equal(suggestions[0].textEdit.newText, 'about'); - assert.equal(suggestions[1].textEdit.newText, 'index.html'); - assert.equal(suggestions[2].textEdit.newText, 'src'); - assert.equal(suggestions[0].textEdit.range.start.character, 4); - assert.equal(suggestions[1].textEdit.range.start.character, 4); - assert.equal(suggestions[2].textEdit.range.start.character, 4); - - assert.equal(suggestions[0].textEdit.range.end.character, 4); - assert.equal(suggestions[1].textEdit.range.end.character, 4); - assert.equal(suggestions[2].textEdit.range.end.character, 4); + assertSuggestions(suggestions, [ + { textEdit: TextEdit.replace(expectedReplaceRange, 'about') }, + { textEdit: TextEdit.replace(expectedReplaceRange, 'index.html') }, + { textEdit: TextEdit.replace(expectedReplaceRange, 'src') }, + ]); }); }); From e7f9c39fac54a5565c1d99b00174d0618ef92bb2 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Fri, 9 Mar 2018 11:42:51 -0800 Subject: [PATCH 360/658] fix #44813 --- .../html/server/src/modes/pathCompletion.ts | 47 +++++++------- .../pathCompletion/pathCompletion.test.ts | 65 ++++++++++++++++--- 2 files changed, 80 insertions(+), 32 deletions(-) diff --git a/extensions/html/server/src/modes/pathCompletion.ts b/extensions/html/server/src/modes/pathCompletion.ts index a35c4680c05..9ef71e0309b 100644 --- a/extensions/html/server/src/modes/pathCompletion.ts +++ b/extensions/html/server/src/modes/pathCompletion.ts @@ -22,15 +22,10 @@ export function getPathCompletionParticipant( onHtmlAttributeValue: ({ tag, attribute, value, range }) => { if (shouldDoPathCompletion(tag, attribute, value)) { - let workspaceRoot; - - if (startsWith(value, '/')) { - if (!workspaceFolders || workspaceFolders.length === 0) { - return; - } - - workspaceRoot = resolveWorkspaceRoot(document, workspaceFolders); + if (!workspaceFolders || workspaceFolders.length === 0) { + return; } + const workspaceRoot = resolveWorkspaceRoot(document, workspaceFolders); const suggestions = providePathSuggestions(value, range, URI.parse(document.uri).fsPath, workspaceRoot); result.items = [...suggestions, ...result.items]; @@ -56,26 +51,29 @@ function shouldDoPathCompletion(tag: string, attr: string, value: string): boole } export function providePathSuggestions(value: string, range: Range, activeDocFsPath: string, root?: string): CompletionItem[] { - if (value.indexOf('/') === -1) { - return []; - } - if (startsWith(value, '/') && !root) { return []; } + let replaceRange: Range; const lastIndexOfSlash = value.lastIndexOf('/'); - const valueBeforeLastSlash = value.slice(0, lastIndexOfSlash + 1); - const valueAfterLastSlash = value.slice(lastIndexOfSlash + 1); - const parentDir = startsWith(value, '/') - ? path.resolve(root, '.' + valueBeforeLastSlash) - : path.resolve(activeDocFsPath, '..', valueBeforeLastSlash); - - if (!fs.existsSync(parentDir)) { - return []; + if (lastIndexOfSlash === -1) { + replaceRange = getFullReplaceRange(range); + } else { + const valueAfterLastSlash = value.slice(lastIndexOfSlash + 1); + replaceRange = getReplaceRange(range, valueAfterLastSlash); } - const replaceRange = getReplaceRange(range, valueAfterLastSlash); + let parentDir: string; + if (lastIndexOfSlash === -1) { + parentDir = path.resolve(root); + } else { + const valueBeforeLastSlash = value.slice(0, lastIndexOfSlash + 1); + + parentDir = startsWith(value, '/') + ? path.resolve(root, '.' + valueBeforeLastSlash) + : path.resolve(activeDocFsPath, '..', valueBeforeLastSlash); + } try { return fs.readdirSync(parentDir).map(f => { @@ -102,7 +100,12 @@ function resolveWorkspaceRoot(activeDoc: TextDocument, workspaceFolders: Propose } } -function getReplaceRange(valueRange: Range, valueAfterLastSlash: string): Range { +function getFullReplaceRange(valueRange: Range) { + const start = Position.create(valueRange.end.line, valueRange.start.character + 1); + const end = Position.create(valueRange.end.line, valueRange.end.character - 1); + return Range.create(start, end); +} +function getReplaceRange(valueRange: Range, valueAfterLastSlash: string) { const start = Position.create(valueRange.end.line, valueRange.end.character - 1 - valueAfterLastSlash.length); const end = Position.create(valueRange.end.line, valueRange.end.character - 1); return Range.create(start, end); diff --git a/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts b/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts index a209278c91b..39ea79faa3e 100644 --- a/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts +++ b/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts @@ -14,6 +14,10 @@ const fixtureRoot = path.resolve(__dirname, '../../../test/pathCompletionFixture function toRange(line: number, startChar: number, endChar: number) { return Range.create(Position.create(line, startChar), Position.create(line, endChar)); } +function toTextEdit(line: number, startChar: number, endChar: number, newText: string) { + const range = Range.create(Position.create(line, startChar), Position.create(line, endChar)); + return TextEdit.replace(range, newText); +} interface PathSuggestion { label?: string; @@ -22,7 +26,7 @@ interface PathSuggestion { } function assertSuggestions( actual: CompletionItem[], expected: PathSuggestion[]) { - assert.equal(actual.length, expected.length, 'Suggestions should have expected length'); + assert.equal(actual.length, expected.length, `Suggestions have length ${actual.length} but should have length ${expected.length}`); for (let i = 0; i < expected.length; i++) { if (expected[i].label) { @@ -38,8 +42,8 @@ function assertSuggestions( actual: CompletionItem[], expected: PathSuggestion[] } } -suite('Path Completion - Relative Path', () => { - const mockRange = Range.create(Position.create(0, 3), Position.create(0, 5)); +suite('Path Completion - Relative Path:', () => { + const mockRange = toRange(0, 3, 5); test('Current Folder', () => { const value = './'; @@ -53,7 +57,7 @@ suite('Path Completion - Relative Path', () => { ]); }); - test('Parent Folder', () => { + test('Parent Folder:', () => { const value = '../'; const activeFileFsPath = path.resolve(fixtureRoot, 'about/about.html'); const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath); @@ -65,7 +69,7 @@ suite('Path Completion - Relative Path', () => { ]); }); - test('Adjacent Folder', () => { + test('Adjacent Folder:', () => { const value = '../src/'; const activeFileFsPath = path.resolve(fixtureRoot, 'about/about.html'); const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath); @@ -77,8 +81,8 @@ suite('Path Completion - Relative Path', () => { }); }); -suite('Path Completion - Absolute Path', () => { - const mockRange = Range.create(Position.create(0, 3), Position.create(0, 5)); +suite('Path Completion - Absolute Path:', () => { + const mockRange = toRange(0, 3, 5); test('Root', () => { const value = '/'; @@ -112,8 +116,8 @@ suite('Path Completion - Absolute Path', () => { }); }); -suite('Path Completion - Incomplete Path at End', () => { - const mockRange = Range.create(Position.create(0, 3), Position.create(0, 5)); +suite('Path Completion - Incomplete Path at End:', () => { + const mockRange = toRange(0, 3, 5); test('Incomplete Path that starts with slash', () => { const value = '/src/f'; @@ -138,7 +142,48 @@ suite('Path Completion - Incomplete Path at End', () => { }); }); -suite('Path Completion - TextEdit', () => { +suite('Path Completion - No leading dot or slash:', () => { + + test('Top level completion', () => { + const value = 's'; + const activeFileFsPath = path.resolve(fixtureRoot, 'index.html'); + const range = toRange(0, 3, 5); + const suggestions = providePathSuggestions(value, range, activeFileFsPath, fixtureRoot); + + assertSuggestions(suggestions, [ + { label: 'about', kind: CompletionItemKind.Folder, textEdit: toTextEdit(0, 4, 4, 'about') }, + { label: 'index.html', kind: CompletionItemKind.File, textEdit: toTextEdit(0, 4, 4, 'index.html') }, + { label: 'src', kind: CompletionItemKind.Folder, textEdit: toTextEdit(0, 4, 4, 'src') } + ]); + }); + + test('src/', () => { + const value = 'src/'; + const activeFileFsPath = path.resolve(fixtureRoot, 'index.html'); + const range = toRange(0, 3, 8); + const suggestions = providePathSuggestions(value, range, activeFileFsPath, fixtureRoot); + + assertSuggestions(suggestions, [ + { label: 'feature.js', kind: CompletionItemKind.File, textEdit: toTextEdit(0, 7, 7, 'feature.js') }, + { label: 'test.js', kind: CompletionItemKind.File, textEdit: toTextEdit(0, 7, 7, 'test.js') } + ]); + }); + + test('src/f', () => { + const value = 'src/f'; + const activeFileFsPath = path.resolve(fixtureRoot, 'index.html'); + const range = toRange(0, 3, 9); + const suggestions = providePathSuggestions(value, range, activeFileFsPath, fixtureRoot); + + assertSuggestions(suggestions, [ + { label: 'feature.js', kind: CompletionItemKind.File, textEdit: toTextEdit(0, 7, 8, 'feature.js') }, + { label: 'test.js', kind: CompletionItemKind.File, textEdit: toTextEdit(0, 7, 8, 'test.js') } + ]); + }); +}); + +suite('Path Completion - TextEdit:', () => { + test('TextEdit has correct replace text and range', () => { const value = './'; const activeFileFsPath = path.resolve(fixtureRoot, 'index.html'); From c6818881d5ec691d04c30b906477811f5b3bd4fe Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Fri, 9 Mar 2018 12:13:22 -0800 Subject: [PATCH 361/658] Add / for folder path completion in html. fix #44815 --- .../html/server/src/modes/pathCompletion.ts | 22 ++++-- .../pathCompletion/pathCompletion.test.ts | 74 ++++++++++++++----- 2 files changed, 72 insertions(+), 24 deletions(-) diff --git a/extensions/html/server/src/modes/pathCompletion.ts b/extensions/html/server/src/modes/pathCompletion.ts index 9ef71e0309b..4d720371ee6 100644 --- a/extensions/html/server/src/modes/pathCompletion.ts +++ b/extensions/html/server/src/modes/pathCompletion.ts @@ -77,11 +77,23 @@ export function providePathSuggestions(value: string, range: Range, activeDocFsP try { return fs.readdirSync(parentDir).map(f => { - return { - label: f, - kind: isDir(path.resolve(parentDir, f)) ? CompletionItemKind.Folder : CompletionItemKind.File, - textEdit: TextEdit.replace(replaceRange, f) - }; + if (isDir(path.resolve(parentDir, f))) { + return { + label: f + '/', + kind: CompletionItemKind.Folder, + textEdit: TextEdit.replace(replaceRange, f + '/'), + command: { + title: 'Suggest', + command: 'editor.action.triggerSuggest' + } + }; + } else { + return { + label: f, + kind: CompletionItemKind.File, + textEdit: TextEdit.replace(replaceRange, f) + }; + } }); } catch (e) { return []; diff --git a/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts b/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts index 39ea79faa3e..34e4486063c 100644 --- a/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts +++ b/extensions/html/server/src/test/pathCompletion/pathCompletion.test.ts @@ -7,7 +7,7 @@ import * as assert from 'assert'; import * as path from 'path'; import { providePathSuggestions } from '../../modes/pathCompletion'; -import { CompletionItemKind, Range, Position, CompletionItem, TextEdit } from 'vscode-languageserver-types'; +import { CompletionItemKind, Range, Position, CompletionItem, TextEdit, Command } from 'vscode-languageserver-types'; const fixtureRoot = path.resolve(__dirname, '../../../test/pathCompletionFixtures'); @@ -23,22 +23,42 @@ interface PathSuggestion { label?: string; kind?: CompletionItemKind; textEdit?: TextEdit; + command?: Command; } -function assertSuggestions( actual: CompletionItem[], expected: PathSuggestion[]) { +function assertSuggestions(actual: CompletionItem[], expected: PathSuggestion[]) { assert.equal(actual.length, expected.length, `Suggestions have length ${actual.length} but should have length ${expected.length}`); for (let i = 0; i < expected.length; i++) { if (expected[i].label) { - assert.equal(actual[i].label, expected[i].label, `Suggestion ${actual[i].label} should have label ${expected[i].label}`); + assert.equal( + actual[i].label, + expected[i].label, + `Suggestion ${actual[i].label} should have label ${expected[i].label}` + ); } if (expected[i].kind) { - assert.equal(actual[i].kind, expected[i].kind, `Suggestion ${actual[i].label} has type ${CompletionItemKind[actual[i].kind]} but should have label ${CompletionItemKind[expected[i].kind]}`); + assert.equal(actual[i].kind, + expected[i].kind, + `Suggestion ${actual[i].label} has type ${CompletionItemKind[actual[i].kind]} but should have label ${CompletionItemKind[expected[i].kind]}` + ); } if (expected[i].textEdit) { assert.equal(actual[i].textEdit.newText, expected[i].textEdit.newText); assert.deepEqual(actual[i].textEdit.range, expected[i].textEdit.range); } + if (expected[i].command) { + assert.equal( + actual[i].command.title, + expected[i].command.title, + `Suggestion ${actual[i].label} has command title ${actual[i].command.title} but should have command title ${expected[i].command.title}` + ); + assert.equal( + actual[i].command.command, + expected[i].command.command, + `Suggestion ${actual[i].label} has command ${actual[i].command.command} but should have command ${expected[i].command.command}` + ); + } } } @@ -51,9 +71,9 @@ suite('Path Completion - Relative Path:', () => { const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath); assertSuggestions(suggestions, [ - { label: 'about', kind: CompletionItemKind.Folder }, + { label: 'about/', kind: CompletionItemKind.Folder }, { label: 'index.html', kind: CompletionItemKind.File }, - { label: 'src', kind: CompletionItemKind.Folder } + { label: 'src/', kind: CompletionItemKind.Folder } ]); }); @@ -63,9 +83,9 @@ suite('Path Completion - Relative Path:', () => { const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath); assertSuggestions(suggestions, [ - { label: 'about', kind: CompletionItemKind.Folder }, + { label: 'about/', kind: CompletionItemKind.Folder }, { label: 'index.html', kind: CompletionItemKind.File }, - { label: 'src', kind: CompletionItemKind.Folder } + { label: 'src/', kind: CompletionItemKind.Folder } ]); }); @@ -89,14 +109,14 @@ suite('Path Completion - Absolute Path:', () => { const activeFileFsPath1 = path.resolve(fixtureRoot, 'index.html'); const activeFileFsPath2 = path.resolve(fixtureRoot, 'about/index.html'); - const suggestions1 = providePathSuggestions(value, mockRange, activeFileFsPath1, fixtureRoot); - const suggestions2 = providePathSuggestions(value, mockRange, activeFileFsPath2, fixtureRoot); + const suggestions1 = providePathSuggestions(value, mockRange, activeFileFsPath1, fixtureRoot); + const suggestions2 = providePathSuggestions(value, mockRange, activeFileFsPath2, fixtureRoot); const verify = (suggestions) => { assertSuggestions(suggestions, [ - { label: 'about', kind: CompletionItemKind.Folder }, + { label: 'about/', kind: CompletionItemKind.Folder }, { label: 'index.html', kind: CompletionItemKind.File }, - { label: 'src', kind: CompletionItemKind.Folder } + { label: 'src/', kind: CompletionItemKind.Folder } ]); }; @@ -116,6 +136,22 @@ suite('Path Completion - Absolute Path:', () => { }); }); +suite('Path Completion - Folder Commands:', () => { + const mockRange = toRange(0, 3, 5); + + test('Folder should have command `editor.action.triggerSuggest', () => { + const value = './'; + const activeFileFsPath = path.resolve(fixtureRoot, 'index.html'); + const suggestions = providePathSuggestions(value, mockRange, activeFileFsPath); + + assertSuggestions(suggestions, [ + { label: 'about/', command: { title: 'Suggest', command: 'editor.action.triggerSuggest'} }, + { label: 'index.html' }, + { label: 'src/', command: { title: 'Suggest', command: 'editor.action.triggerSuggest'} }, + ]); + }); +}); + suite('Path Completion - Incomplete Path at End:', () => { const mockRange = toRange(0, 3, 5); @@ -128,7 +164,7 @@ suite('Path Completion - Incomplete Path at End:', () => { { label: 'feature.js', kind: CompletionItemKind.File }, { label: 'test.js', kind: CompletionItemKind.File } ]); - }); + }); test('Incomplete Path that does not start with slash', () => { const value = '../src/f'; @@ -139,7 +175,7 @@ suite('Path Completion - Incomplete Path at End:', () => { { label: 'feature.js', kind: CompletionItemKind.File }, { label: 'test.js', kind: CompletionItemKind.File } ]); - }); + }); }); suite('Path Completion - No leading dot or slash:', () => { @@ -151,9 +187,9 @@ suite('Path Completion - No leading dot or slash:', () => { const suggestions = providePathSuggestions(value, range, activeFileFsPath, fixtureRoot); assertSuggestions(suggestions, [ - { label: 'about', kind: CompletionItemKind.Folder, textEdit: toTextEdit(0, 4, 4, 'about') }, + { label: 'about/', kind: CompletionItemKind.Folder, textEdit: toTextEdit(0, 4, 4, 'about/') }, { label: 'index.html', kind: CompletionItemKind.File, textEdit: toTextEdit(0, 4, 4, 'index.html') }, - { label: 'src', kind: CompletionItemKind.Folder, textEdit: toTextEdit(0, 4, 4, 'src') } + { label: 'src/', kind: CompletionItemKind.Folder, textEdit: toTextEdit(0, 4, 4, 'src/') } ]); }); @@ -190,12 +226,12 @@ suite('Path Completion - TextEdit:', () => { const range = toRange(0, 3, 5); const expectedReplaceRange = toRange(0, 4, 4); - const suggestions = providePathSuggestions(value, range, activeFileFsPath); + const suggestions = providePathSuggestions(value, range, activeFileFsPath); assertSuggestions(suggestions, [ - { textEdit: TextEdit.replace(expectedReplaceRange, 'about') }, + { textEdit: TextEdit.replace(expectedReplaceRange, 'about/') }, { textEdit: TextEdit.replace(expectedReplaceRange, 'index.html') }, - { textEdit: TextEdit.replace(expectedReplaceRange, 'src') }, + { textEdit: TextEdit.replace(expectedReplaceRange, 'src/') }, ]); }); }); From 4eee61ca6d31e88df9657eb810aa43bb339428a3 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 9 Mar 2018 12:21:45 -0800 Subject: [PATCH 362/658] Separate xterm.js typing changes different block --- src/typings/vscode-xterm.d.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/typings/vscode-xterm.d.ts b/src/typings/vscode-xterm.d.ts index 48937b53df2..bae79db7568 100644 --- a/src/typings/vscode-xterm.d.ts +++ b/src/typings/vscode-xterm.d.ts @@ -571,11 +571,12 @@ declare module 'vscode-xterm' { * @param addon The addon to apply. */ static applyAddon(addon: any): void; + } +} - - - // Modifications to official .d.ts below - +// Modifications to official .d.ts below +declare module 'vscode-xterm' { + interface Terminal { buffer: { /** * The viewport position. @@ -606,6 +607,6 @@ declare module 'vscode-xterm' { webLinksInit(handler?: (event: MouseEvent, uri: string) => void, options?: ILinkMatcherOptions): void; winptyCompatInit(): void; - charMeasure?: { height: number, width: number } + charMeasure?: { height: number, width: number }; } -} \ No newline at end of file +} From b49be24fecc4628fac125efc704ac6c81c0028cb Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Fri, 9 Mar 2018 12:38:03 -0800 Subject: [PATCH 363/658] fix hygiene --- extensions/html/server/src/modes/pathCompletion.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/html/server/src/modes/pathCompletion.ts b/extensions/html/server/src/modes/pathCompletion.ts index 4d720371ee6..46b5d34fd91 100644 --- a/extensions/html/server/src/modes/pathCompletion.ts +++ b/extensions/html/server/src/modes/pathCompletion.ts @@ -92,7 +92,7 @@ export function providePathSuggestions(value: string, range: Range, activeDocFsP label: f, kind: CompletionItemKind.File, textEdit: TextEdit.replace(replaceRange, f) - }; + }; } }); } catch (e) { From 0caed6b927d3cbd3d58d251a51cc7bb711735219 Mon Sep 17 00:00:00 2001 From: Gus Hurovich Date: Fri, 9 Mar 2018 12:53:12 -0800 Subject: [PATCH 364/658] Emmet in Interactive Playground (#45434) Emmet commands will no longer appear in non-editor contexts. --- extensions/emmet/package.json | 98 ++++++++++++++++++- .../editor/vs_code_editor_walkthrough.md | 2 +- 2 files changed, 98 insertions(+), 2 deletions(-) diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json index 8e90e075b94..5997d36248a 100644 --- a/extensions/emmet/package.json +++ b/extensions/emmet/package.json @@ -330,7 +330,103 @@ "title": "%command.reflectCSSValue%", "category": "Emmet" } - ] + ], + "menus": { + "commandPalette": [ + { + "command": "editor.emmet.action.wrapIndividualLinesWithAbbreviation", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.wrapWithAbbreviation", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.removeTag", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.updateTag", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.matchTag", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.balanceIn", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.balanceOut", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.prevEditPoint", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.nextEditPoint", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.mergeLines", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.selectPrevItem", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.selectNextItem", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.splitJoinTag", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.toggleComment", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.evaluateMathExpression", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.updateImageSize", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.incrementNumberByOneTenth", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.incrementNumberByOne", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.incrementNumberByTen", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.decrementNumberByOneTenth", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.decrementNumberByOne", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.decrementNumberByTen", + "when": "resourceScheme =~ /^untitled$|^file$/" + }, + { + "command": "editor.emmet.action.reflectCSSValue", + "when": "resourceScheme =~ /^untitled$|^file$/" + } + ] + } }, "scripts": { "compile": "gulp compile-extension:emmet" diff --git a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/editor/vs_code_editor_walkthrough.md b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/editor/vs_code_editor_walkthrough.md index 946f83b6af0..d58daa2668d 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/editor/vs_code_editor_walkthrough.md +++ b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/editor/vs_code_editor_walkthrough.md @@ -161,7 +161,7 @@ You can greatly accelerate your editing through the use of snippets. Simply sta ### Emmet -Emmet takes the snippets idea to a whole new level: you can type CSS-like expressions that can be dynamically parsed, and produce output depending on what you type in the abbreviation. To use Emmet simply run the command `Emmet: Expand Abbreviation` with the cursor at the end of a valid Emmet abbreviation or snippet and the expansion will occur. +Emmet takes the snippets idea to a whole new level: you can type CSS-like expressions that can be dynamically parsed, and produce output depending on what you type in the abbreviation. Try it by selecting `Emmet: Expand Abbreviation` from the `Edit` menu with the cursor at the end of a valid Emmet abbreviation or snippet and the expansion will occur. ```html ul>li.item$*5 From e09581a249293350dd734ee3574d56f2e70e41d5 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Fri, 9 Mar 2018 13:00:22 -0800 Subject: [PATCH 365/658] Use latest emmet helper fix for #45032 --- extensions/html/server/package.json | 2 +- extensions/html/server/yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/html/server/package.json b/extensions/html/server/package.json index 2f50041b17f..0fc64522691 100644 --- a/extensions/html/server/package.json +++ b/extensions/html/server/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "vscode-css-languageservice": "^3.0.6", - "vscode-emmet-helper": "1.2.0", + "vscode-emmet-helper": "1.2.1", "vscode-html-languageservice": "^2.0.17-next.3", "vscode-languageserver": "4.0.0-next.4", "vscode-languageserver-types": "^3.6.0-next.1", diff --git a/extensions/html/server/yarn.lock b/extensions/html/server/yarn.lock index 4c53ce280a1..c8579e8cc16 100644 --- a/extensions/html/server/yarn.lock +++ b/extensions/html/server/yarn.lock @@ -25,9 +25,9 @@ vscode-css-languageservice@^3.0.6: vscode-languageserver-types "^3.6.0-next.1" vscode-nls "^2.0.1" -vscode-emmet-helper@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.0.tgz#6b9311be065c9c99d5de2dae18ea0730d9cfb734" +vscode-emmet-helper@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.1.tgz#dc4a3c83a3f1d48f4e9e1a5cce0e63f24b6eb843" dependencies: "@emmetio/extract-abbreviation" "0.1.6" jsonc-parser "^1.0.0" From 3f5f9f55897befe2de22189c3915cd3ae58dd9d3 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 22:21:00 +0100 Subject: [PATCH 366/658] linux ia32 --- build/tfs/linux/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index d2a3b5ea7e6..935109ec63c 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -39,7 +39,7 @@ steps: - script: | echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc - yarn + npm_config_arch="$(VSCODE_ARCH)" yarn npm run gulp -- hygiene npm run monaco-compile-check VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin From c0f120e1111ac49349c7aef4022e16d99e681ebf Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 22:31:53 +0100 Subject: [PATCH 367/658] linux build --- build/tfs/linux/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 935109ec63c..43962c30f37 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -19,6 +19,10 @@ steps: bsdmainutils \ rpm + # 32 bit dependencies + apt-get install -y \ + gcc-multilib g++-multilib + # setup xvfb cp build/tfs/linux/$(VSCODE_ARCH)/xvfb.init /etc/init.d/xvfb chmod +x /etc/init.d/xvfb From b26862c89b3ee94cad227e821a36e72b89688bbb Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 9 Mar 2018 13:33:10 -0800 Subject: [PATCH 368/658] Fix jsx closing tag completions Fixes #45252 --- extensions/typescript/src/features/completionItemProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/typescript/src/features/completionItemProvider.ts b/extensions/typescript/src/features/completionItemProvider.ts index e8aa1012677..69bcf7238a7 100644 --- a/extensions/typescript/src/features/completionItemProvider.ts +++ b/extensions/typescript/src/features/completionItemProvider.ts @@ -70,7 +70,7 @@ class MyCompletionItem extends vscode.CompletionItem { } } - if (tsEntry.kindModifiers.match(/\boptional\b/)) { + if (tsEntry.kindModifiers && tsEntry.kindModifiers.match(/\boptional\b/)) { this.insertText = this.label; this.filterText = this.label; this.label += '?'; From 8340b88f5e1e406a197cba641ada71fcfe429cef Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 9 Mar 2018 22:42:16 +0100 Subject: [PATCH 369/658] require to be vertical in order to center --- src/vs/workbench/browser/parts/editor/editorGroupsControl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts b/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts index ae7b04ccaef..6cb8abafba0 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts +++ b/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts @@ -2139,7 +2139,7 @@ export class EditorGroupsControl extends Themable implements IEditorGroupsContro // Layout centered Editor (only in vertical layout when one group is opened) const id = this.visibleEditors[Position.ONE] ? this.visibleEditors[Position.ONE].getId() : undefined; - const doCentering = this.partService.isEditorLayoutCentered() && this.stacks.groups.length === 1 && id !== PREFERENCES_EDITOR_ID && id !== TEXT_DIFF_EDITOR_ID; + const doCentering = this.layoutVertically && this.partService.isEditorLayoutCentered() && this.stacks.groups.length === 1 && id !== PREFERENCES_EDITOR_ID && id !== TEXT_DIFF_EDITOR_ID; if (doCentering && !this.centeredEditorActive) { this.centeredEditorSashLeft.show(); this.centeredEditorSashRight.show(); From a1c4914f720e4ff03cbe3d9cf95d568e6f4006e6 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 22:51:28 +0100 Subject: [PATCH 370/658] build --- build/tfs/win32/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/build/tfs/win32/build.yml b/build/tfs/win32/build.yml index afd77abee41..84f01d3e443 100644 --- a/build/tfs/win32/build.yml +++ b/build/tfs/win32/build.yml @@ -30,6 +30,7 @@ steps: name: build - powershell: | + npm run gulp -- "electron-$(VSCODE_ARCH)" .\scripts\test.bat --build --tfs name: test From 794cee6a15029f5b2871290796520ad5ab7af333 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 9 Mar 2018 22:56:45 +0100 Subject: [PATCH 371/658] 32bit linux --- build/tfs/linux/build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/build/tfs/linux/build.yml b/build/tfs/linux/build.yml index 43962c30f37..fc45dcbfb40 100644 --- a/build/tfs/linux/build.yml +++ b/build/tfs/linux/build.yml @@ -5,6 +5,7 @@ steps: - script: | # dependencies + dpkg --add-architecture i386 apt-get update apt-get install -y \ libxkbfile-dev \ @@ -21,7 +22,12 @@ steps: # 32 bit dependencies apt-get install -y \ - gcc-multilib g++-multilib + gcc-multilib g++-multilib \ + libx11-dev:i386 \ + libxkbfile-dev:i386 \ + libx11-xcb-dev:i386 \ + libgl1-mesa-glx:i386 \ + libgl1-mesa-dri:i386 # setup xvfb cp build/tfs/linux/$(VSCODE_ARCH)/xvfb.init /etc/init.d/xvfb From 87bcab715a568297c5a7c51bb71e727583b38e6b Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 9 Mar 2018 23:08:16 +0100 Subject: [PATCH 372/658] breakpoints: delete breakpoints and enable / disable via keyboard fixes #45364 --- .../parts/debug/browser/debugCommands.ts | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugCommands.ts b/src/vs/workbench/parts/debug/browser/debugCommands.ts index 47c4d57f054..c8848a718da 100644 --- a/src/vs/workbench/parts/debug/browser/debugCommands.ts +++ b/src/vs/workbench/parts/debug/browser/debugCommands.ts @@ -34,13 +34,12 @@ export function registerCommands(): void { handler: (accessor) => { const listService = accessor.get(IListService); const debugService = accessor.get(IDebugService); - const focused = listService.lastFocusedList; - - // Tree only - if (!(focused instanceof List)) { - const tree = focused; - const element = tree.getFocus(); - debugService.enableOrDisableBreakpoints(!element.enabled, element).done(null, errors.onUnexpectedError); + const list = listService.lastFocusedList; + if (list instanceof List) { + const focused = list.getFocusedElements(); + if (focused && focused.length) { + debugService.enableOrDisableBreakpoints(!focused[0].enabled, focused[0]).done(null, errors.onUnexpectedError); + } } } }); @@ -111,17 +110,18 @@ export function registerCommands(): void { KeybindingsRegistry.registerCommandAndKeybindingRule({ id: 'debug.removeBreakpoint', weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), - when: ContextKeyExpr.and(CONTEXT_WATCH_EXPRESSIONS_FOCUSED, CONTEXT_BREAKPOINT_SELECTED.toNegated()), + when: ContextKeyExpr.and(CONTEXT_BREAKPOINTS_FOCUSED, CONTEXT_BREAKPOINT_SELECTED.toNegated()), primary: KeyCode.Delete, mac: { primary: KeyMod.CtrlCmd | KeyCode.Backspace }, handler: (accessor) => { const listService = accessor.get(IListService); const debugService = accessor.get(IDebugService); - const focused = listService.lastFocusedList; + const list = listService.lastFocusedList; // Tree only - if (!(focused instanceof List)) { - const element = focused.getFocus(); + if (list instanceof List) { + const focused = list.getFocusedElements(); + const element = focused.length ? focused[0] : undefined; if (element instanceof Breakpoint) { debugService.removeBreakpoints(element.getId()).done(null, errors.onUnexpectedError); } else if (element instanceof FunctionBreakpoint) { From 38af41b79589335f255a697f3d45027ff74833c1 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Fri, 9 Mar 2018 15:38:49 -0800 Subject: [PATCH 373/658] Update GDPR annotations --- .../common/extensionManagementUtil.ts | 2 +- .../node/extensionGalleryService.ts | 2 +- .../platform/telemetry/browser/errorTelemetry.ts | 4 ++-- .../telemetry/node/workbenchCommonProperties.ts | 2 +- .../api/electron-browser/mainThreadTelemetry.ts | 2 +- .../browser/parts/editor/editorGroupsControl.ts | 4 ++-- .../parts/cache/node/nodeCachedDataManager.ts | 6 +++--- .../parts/debug/electron-browser/debugService.ts | 16 ++++++++-------- .../electron-browser/extensionEditor.ts | 2 +- .../electron-browser/extensionTipsService.ts | 10 +++++----- .../electron-browser/extensionsUtils.ts | 2 +- .../electron-browser/extensionsViews.ts | 6 +++--- .../node/extensionsWorkbenchService.ts | 12 ++++++------ .../preferences/browser/preferencesEditor.ts | 8 ++++---- .../electron-browser/walkThroughPart.ts | 2 +- .../electron-browser/extensionService.ts | 2 +- .../electron-browser/keybindingService.ts | 2 +- 17 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts b/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts index fcbaf916275..d30ab55b193 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagementUtil.ts @@ -85,7 +85,7 @@ export function getLocalExtensionTelemetryData(extension: ILocalExtension): any "publisherId": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, "publisherName": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }, "publisherDisplayName": { "classification": "PublicPersonalData", "purpose": "FeatureInsight" }, - "dependencies": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "dependencies": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "${include}": [ "${GalleryExtensionTelemetryData2}" ] diff --git a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts index 9c883bbb82f..9ab9e18f80f 100644 --- a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts @@ -303,7 +303,7 @@ function toExtension(galleryExtension: IRawGalleryExtension, extensionsGalleryUr }, /* __GDPR__FRAGMENT__ "GalleryExtensionTelemetryData2" : { - "index" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "index" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "searchText": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "querySource": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } } diff --git a/src/vs/platform/telemetry/browser/errorTelemetry.ts b/src/vs/platform/telemetry/browser/errorTelemetry.ts index 140b0fbe8ab..956616b0302 100644 --- a/src/vs/platform/telemetry/browser/errorTelemetry.ts +++ b/src/vs/platform/telemetry/browser/errorTelemetry.ts @@ -149,8 +149,8 @@ export default class ErrorTelemetry { "name": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, "stack": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, "id": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, - "line": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, - "column": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" } + "line": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "column": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth", "isMeasurement": true } } */ // __GDPR__TODO__ what's the complete set of properties? diff --git a/src/vs/platform/telemetry/node/workbenchCommonProperties.ts b/src/vs/platform/telemetry/node/workbenchCommonProperties.ts index 0816bb41a67..2636473a277 100644 --- a/src/vs/platform/telemetry/node/workbenchCommonProperties.ts +++ b/src/vs/platform/telemetry/node/workbenchCommonProperties.ts @@ -26,7 +26,7 @@ export function resolveWorkbenchCommonProperties(storageService: IStorageService result['common.lastSessionDate'] = lastSessionDate; // __GDPR__COMMON__ "common.isNewSession" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } result['common.isNewSession'] = !lastSessionDate ? '1' : '0'; - // __GDPR__COMMON__ "common.instanceId" : { "classification": "EndUserPseudonymizedInformation", "purpose": "FeatureInsight" } + // __GDPR__COMMON__ "common.instanceId" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } result['common.instanceId'] = getOrCreateInstanceId(storageService); return result; diff --git a/src/vs/workbench/api/electron-browser/mainThreadTelemetry.ts b/src/vs/workbench/api/electron-browser/mainThreadTelemetry.ts index ab4209ce58a..38263ce8475 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTelemetry.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTelemetry.ts @@ -25,7 +25,7 @@ export class MainThreadTelemetry implements MainThreadTelemetryShape { } $publicLog(eventName: string, data: any = Object.create(null)): void { - // __GDPR__COMMON__ "pluginHostTelemetry" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + // __GDPR__COMMON__ "pluginHostTelemetry" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } data[MainThreadTelemetry._name] = true; this._telemetryService.publicLog(eventName, data); } diff --git a/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts b/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts index 6cb8abafba0..06679891fa7 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts +++ b/src/vs/workbench/browser/parts/editor/editorGroupsControl.ts @@ -1593,8 +1593,8 @@ export class EditorGroupsControl extends Themable implements IEditorGroupsContro // TODO@Ben remove me after a while /* __GDPR__ "editorGroupMoved" : { - "source" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "to": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "source" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "to": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('editorGroupMoved', { source: position, to: moveTo }); diff --git a/src/vs/workbench/parts/cache/node/nodeCachedDataManager.ts b/src/vs/workbench/parts/cache/node/nodeCachedDataManager.ts index 41379934444..77f1297d4ed 100644 --- a/src/vs/workbench/parts/cache/node/nodeCachedDataManager.ts +++ b/src/vs/workbench/parts/cache/node/nodeCachedDataManager.ts @@ -49,9 +49,9 @@ export class NodeCachedDataManager implements IWorkbenchContribution { // log summary /* __GDPR__ "cachedDataInfo" : { - "didRequestCachedData" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "didRejectCachedData": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "didProduceCachedData": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" } + "didRequestCachedData" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "didRejectCachedData": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "didProduceCachedData": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true } } */ this._telemetryService.publicLog('cachedDataInfo', { diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index a7edc064f42..70f6c134e1d 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -932,12 +932,12 @@ export class DebugService implements debug.IDebugService { /* __GDPR__ "debugSessionStart" : { "type": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "breakpointCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "breakpointCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "exceptionBreakpoints": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "watchExpressionsCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "watchExpressionsCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "extensionName": { "classification": "PublicPersonalData", "purpose": "FeatureInsight" }, - "isBuiltin": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "launchJsonExists": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "isBuiltin": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true}, + "launchJsonExists": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ return this.telemetryService.publicLog('debugSessionStart', { @@ -1129,10 +1129,10 @@ export class DebugService implements debug.IDebugService { /* __GDPR__ "debugSessionStop" : { "type" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "success": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "sessionLengthInSeconds": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "breakpointCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "watchExpressionsCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "success": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "sessionLengthInSeconds": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "breakpointCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "watchExpressionsCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('debugSessionStop', { diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts index abf2fbd7d8e..64d2867bf2b 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts @@ -305,7 +305,7 @@ export class ExtensionEditor extends BaseEditor { /* __GDPR__ "extensionGallery:openExtension" : { - "recommendationReason": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "recommendationReason": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "${include}": [ "${GalleryExtensionTelemetryData}" ] diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts index d0c433695a3..0b7b540ca90 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts @@ -580,7 +580,7 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe /* __GDPR__ "fileExtensionSuggestion:popup" : { "userReaction" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "extensionId": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" } + "fileExtension": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" } } */ this.telemetryService.publicLog('fileExtensionSuggestion:popup', { userReaction: 'ok', fileExtension: fileExtension }); @@ -601,7 +601,7 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe /* __GDPR__ "fileExtensionSuggestion:popup" : { "userReaction" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "extensionId": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" } + "fileExtension": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" } } */ this.telemetryService.publicLog('fileExtensionSuggestion:popup', { userReaction: 'neverShowAgain', fileExtension: fileExtension }); @@ -611,7 +611,7 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe /* __GDPR__ "fileExtensionSuggestion:popup" : { "userReaction" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "extensionId": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" } + "fileExtension": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" } } */ this.telemetryService.publicLog('fileExtensionSuggestion:popup', { userReaction: 'cancelled', fileExtension: fileExtension }); @@ -777,8 +777,8 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe this._dynamicWorkspaceRecommendations = storedRecommendationsJson['recommendations']; /* __GDPR__ "dynamicWorkspaceRecommendations" : { - "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "cache" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "cache" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('dynamicWorkspaceRecommendations', { count: this._dynamicWorkspaceRecommendations.length, cache: 1 }); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.ts index 3606cb4ba4e..95198ffb489 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsUtils.ts @@ -81,7 +81,7 @@ export class KeymapExtensions implements IWorkbenchContribution { "disableOtherKeymaps" : { "newKeymap" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "oldKeymaps": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "confirmed" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "confirmed" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('disableOtherKeymaps', telemetryData); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts index adce09fdbe0..bc033909dc7 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts @@ -307,7 +307,7 @@ export class ExtensionsListView extends ViewsViewletPanel { /* __GDPR__ "extensionAllRecommendations:open" : { - "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('extensionAllRecommendations:open', { count: names.length }); @@ -345,7 +345,7 @@ export class ExtensionsListView extends ViewsViewletPanel { /* __GDPR__ "extensionRecommendations:open" : { - "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('extensionRecommendations:open', { count: names.length }); @@ -399,7 +399,7 @@ export class ExtensionsListView extends ViewsViewletPanel { const names = recommendations.filter(name => name.toLowerCase().indexOf(value) > -1); /* __GDPR__ "extensionWorkspaceRecommendations:open" : { - "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('extensionWorkspaceRecommendations:open', { count: names.length }); diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index 4aaf31b9398..dd3a9550bd9 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -922,8 +922,8 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { const recommendationsData = extRecommendations[active.extension.id.toLowerCase()] ? { recommendationReason: extRecommendations[active.extension.id.toLowerCase()].reasonId } : {}; /* __GDPR__ "extensionGallery:install" : { - "success": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, + "success": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, "errorcode": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, "recommendationReason": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "${include}": [ @@ -933,8 +933,8 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { */ /* __GDPR__ "extensionGallery:update" : { - "success": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, + "success": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, "errorcode": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, "recommendationReason": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "${include}": [ @@ -944,8 +944,8 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { */ /* __GDPR__ "extensionGallery:uninstall" : { - "success": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, + "success": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, "errorcode": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, "recommendationReason": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "${include}": [ diff --git a/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts b/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts index e49c61435e1..30d1e74bc7e 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts @@ -350,7 +350,7 @@ export class PreferencesEditor extends BaseEditor { "filter": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "durations" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "counts" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "requestCount" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "requestCount" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('defaultSettings.filter', data); @@ -717,10 +717,10 @@ class PreferencesRenderersController extends Disposable { "defaultSettingsActions.copySetting" : { "userConfigurationKeys" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "query" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "nlpIndex" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "nlpIndex" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "groupId" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "displayIdx" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "editableSide" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "displayIdx" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "editableSide" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('defaultSettingsActions.copySetting', data); diff --git a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts index 67b8e6e13e4..35c3ffe1524 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts +++ b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts @@ -328,7 +328,7 @@ export class WalkThroughPart extends BaseEditor { /* __GDPR__FRAGMENT__ "EditorTelemetryData" : { "target" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "snippet": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "snippet": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ const telemetryData = { diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index 65530a4cd49..828fbbeccea 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -533,7 +533,7 @@ export class ExtensionService extends Disposable implements IExtensionService { const { type, extensionId, extensionPointId, message } = msg; /* __GDPR__ "extensionsMessage" : { - "type" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, + "type" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, "extensionId": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, "extensionPointId": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, "message": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" } diff --git a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts index 5bfa120e2be..1b5795bd29c 100644 --- a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts +++ b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts @@ -415,7 +415,7 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService { /* __GDPR__ "customKeybindingsChanged" : { - "keyCount" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "keyCount" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this._telemetryService.publicLog('customKeybindingsChanged', { From 172eea674a77bb6feb22a61ceaefb13fe5d8197c Mon Sep 17 00:00:00 2001 From: kieferrm Date: Fri, 9 Mar 2018 15:54:22 -0800 Subject: [PATCH 374/658] classify properties as measurement --- src/vs/code/electron-main/windows.ts | 1 + .../editor/contrib/suggest/completionModel.ts | 6 +-- .../editor/contrib/suggest/suggestWidget.ts | 2 +- .../node/extensionGalleryService.ts | 4 +- src/vs/platform/search/common/search.ts | 9 ++-- .../telemetry/common/telemetryService.ts | 2 +- .../electron-main/updateService.darwin.ts | 2 +- .../electron-main/updateService.linux.ts | 4 +- .../electron-main/updateService.win32.ts | 4 +- src/vs/workbench/electron-browser/shell.ts | 38 +++++++------- .../preferences/browser/preferencesService.ts | 2 +- .../parts/search/common/searchModel.ts | 14 ++--- .../parts/stats/node/workspaceStats.ts | 52 +++++++++---------- .../parts/tasks/common/taskSystem.ts | 4 +- .../electron-browser/task.contribution.ts | 6 +++ .../electron-browser/walkThroughPart.ts | 6 +-- .../services/search/node/rawSearchService.ts | 1 + .../services/timer/common/timerService.ts | 45 ++++++++-------- 18 files changed, 106 insertions(+), 96 deletions(-) diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 1f0d5706f57..2f082145f0f 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -1536,6 +1536,7 @@ export class WindowsManager implements IWindowsMainService { if (!internalOptions.telemetryEventName) { if (pickFolders && pickFiles) { + // __GDPR__TODO__ classify event internalOptions.telemetryEventName = 'openFileFolder'; } else if (pickFolders) { internalOptions.telemetryEventName = 'openFolder'; diff --git a/src/vs/editor/contrib/suggest/completionModel.ts b/src/vs/editor/contrib/suggest/completionModel.ts index 6157cf74fc9..3fe110083fa 100644 --- a/src/vs/editor/contrib/suggest/completionModel.ts +++ b/src/vs/editor/contrib/suggest/completionModel.ts @@ -20,9 +20,9 @@ export interface ICompletionItem extends ISuggestionItem { /* __GDPR__FRAGMENT__ "ICompletionStats" : { - "suggestionCount" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "snippetCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "textCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "suggestionCount" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "snippetCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "textCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ // __GDPR__TODO__: This is a dynamically extensible structure which can not be declared statically. diff --git a/src/vs/editor/contrib/suggest/suggestWidget.ts b/src/vs/editor/contrib/suggest/suggestWidget.ts index 9dcc6006611..9009ba76aec 100644 --- a/src/vs/editor/contrib/suggest/suggestWidget.ts +++ b/src/vs/editor/contrib/suggest/suggestWidget.ts @@ -708,7 +708,7 @@ export class SuggestWidget implements IContentWidget, IDelegate stats['wasAutomaticallyTriggered'] = !!isAuto; /* __GDPR__ "suggestWidget" : { - "wasAutomaticallyTriggered" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "wasAutomaticallyTriggered" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "${include}": [ "${ICompletionStats}", "${EditorTelemetryData}" diff --git a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts index 9ab9e18f80f..694f98da3e4 100644 --- a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts @@ -484,7 +484,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService { const startTime = new Date().getTime(); /* __GDPR__ "galleryService:downloadVSIX" : { - "duration": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, + "duration": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, "${include}": [ "${GalleryExtensionTelemetryData}" ] @@ -634,7 +634,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService { /* __GDPR__ "galleryService:requestError" : { "url" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "cdn": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "cdn": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "message": { "classification": "CallstackOrException", "purpose": "FeatureInsight" } } */ diff --git a/src/vs/platform/search/common/search.ts b/src/vs/platform/search/common/search.ts index 536d41b8e21..69a89dbcdef 100644 --- a/src/vs/platform/search/common/search.ts +++ b/src/vs/platform/search/common/search.ts @@ -82,11 +82,12 @@ export enum QueryType { /* __GDPR__FRAGMENT__ "IPatternInfo" : { "pattern" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "isRegExp": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "isWordMatch": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "isRegExp": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "isWordMatch": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "wordSeparators": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "isMultiline": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "isCaseSensitive": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "isMultiline": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "isCaseSensitive": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "isSmartCase": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ export interface IPatternInfo { diff --git a/src/vs/platform/telemetry/common/telemetryService.ts b/src/vs/platform/telemetry/common/telemetryService.ts index 23eab275679..6dc744d8d44 100644 --- a/src/vs/platform/telemetry/common/telemetryService.ts +++ b/src/vs/platform/telemetry/common/telemetryService.ts @@ -67,7 +67,7 @@ export class TelemetryService implements ITelemetryService { this._configurationService.onDidChangeConfiguration(this._updateUserOptIn, this, this._disposables); /* __GDPR__ "optInStatus" : { - "optIn" : { "classification": "SystemMetaData", "purpose": "BusinessInsight" } + "optIn" : { "classification": "SystemMetaData", "purpose": "BusinessInsight", "isMeasurement": true } } */ this.publicLog('optInStatus', { optIn: this._userOptIn }); diff --git a/src/vs/platform/update/electron-main/updateService.darwin.ts b/src/vs/platform/update/electron-main/updateService.darwin.ts index cde35fe74f7..f40c2342329 100644 --- a/src/vs/platform/update/electron-main/updateService.darwin.ts +++ b/src/vs/platform/update/electron-main/updateService.darwin.ts @@ -94,7 +94,7 @@ export class DarwinUpdateService extends AbstractUpdateService { /* __GDPR__ "update:notAvailable" : { - "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('update:notAvailable', { explicit: !!this.state.context }); diff --git a/src/vs/platform/update/electron-main/updateService.linux.ts b/src/vs/platform/update/electron-main/updateService.linux.ts index a87f49d45fa..12d660bb203 100644 --- a/src/vs/platform/update/electron-main/updateService.linux.ts +++ b/src/vs/platform/update/electron-main/updateService.linux.ts @@ -53,7 +53,7 @@ export class LinuxUpdateService extends AbstractUpdateService { if (!update || !update.url || !update.version || !update.productVersion) { /* __GDPR__ "update:notAvailable" : { - "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('update:notAvailable', { explicit: !!context }); @@ -68,7 +68,7 @@ export class LinuxUpdateService extends AbstractUpdateService { /* __GDPR__ "update:notAvailable" : { - "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('update:notAvailable', { explicit: !!context }); diff --git a/src/vs/platform/update/electron-main/updateService.win32.ts b/src/vs/platform/update/electron-main/updateService.win32.ts index d0421d5ba37..220e80a782a 100644 --- a/src/vs/platform/update/electron-main/updateService.win32.ts +++ b/src/vs/platform/update/electron-main/updateService.win32.ts @@ -89,7 +89,7 @@ export class Win32UpdateService extends AbstractUpdateService { if (!update || !update.url || !update.version) { /* __GDPR__ "update:notAvailable" : { - "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('update:notAvailable', { explicit: !!context }); @@ -134,7 +134,7 @@ export class Win32UpdateService extends AbstractUpdateService { this.logService.error(err); /* __GDPR__ "update:notAvailable" : { - "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "explicit" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('update:notAvailable', { explicit: !!context }); diff --git a/src/vs/workbench/electron-browser/shell.ts b/src/vs/workbench/electron-browser/shell.ts index 1b0fdcf5dc1..5879508b80c 100644 --- a/src/vs/workbench/electron-browser/shell.ts +++ b/src/vs/workbench/electron-browser/shell.ts @@ -238,23 +238,23 @@ export class WorkbenchShell { /* __GDPR__ "workspaceLoad" : { "userAgent" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "windowSize.innerHeight": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "windowSize.innerWidth": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "windowSize.outerHeight": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "windowSize.outerWidth": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "emptyWorkbench": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "workbench.filesToOpen": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "workbench.filesToCreate": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "workbench.filesToDiff": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "customKeybindingsCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "windowSize.innerHeight": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "windowSize.innerWidth": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "windowSize.outerHeight": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "windowSize.outerWidth": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "emptyWorkbench": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workbench.filesToOpen": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workbench.filesToCreate": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workbench.filesToDiff": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "customKeybindingsCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "theme": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "language": { "classification": "SystemMetaData", "purpose": "BusinessInsight" }, "experiments": { "${inline}": [ "${IExperiments}" ] }, "pinnedViewlets": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "restoredViewlet": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "restoredEditors": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "restoredEditors": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "pinnedViewlets": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "startupKind": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "startupKind": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('workspaceLoad', { @@ -312,14 +312,14 @@ export class WorkbenchShell { perf.mark('didStatLocalStorage'); /* __GDPR__ - "localStorageTimers" : { - "statTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "accessTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "firstReadTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "subsequentReadTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "writeTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "keys" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "size": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "localStorageTimers2" : { + "statTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "accessTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "firstReadTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "subsequentReadTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "writeTime" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "keys" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "size": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('localStorageTimers2', { diff --git a/src/vs/workbench/parts/preferences/browser/preferencesService.ts b/src/vs/workbench/parts/preferences/browser/preferencesService.ts index af60bbb773f..5694d586866 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesService.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesService.ts @@ -217,7 +217,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic openGlobalKeybindingSettings(textual: boolean): TPromise { /* __GDPR__ "openKeybindings" : { - "textual" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "textual" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('openKeybindings', { textual }); diff --git a/src/vs/workbench/parts/search/common/searchModel.ts b/src/vs/workbench/parts/search/common/searchModel.ts index a6d04f8387b..889782b1aa7 100644 --- a/src/vs/workbench/parts/search/common/searchModel.ts +++ b/src/vs/workbench/parts/search/common/searchModel.ts @@ -578,7 +578,7 @@ export class SearchResult extends Disposable { const onDone = stopwatch(fromPromise(promise)); /* __GDPR__ "replaceAll.started" : { - "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" } + "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true } } */ onDone(duration => this.telemetryService.publicLog('replaceAll.started', { duration })); @@ -736,7 +736,7 @@ export class SearchModel extends Disposable { const onFirstRenderStopwatch = stopwatch(onFirstRender); /* __GDPR__ "searchResultsFirstRender" : { - "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" } + "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true } } */ onFirstRenderStopwatch(duration => this.telemetryService.publicLog('searchResultsFirstRender', { duration })); @@ -746,7 +746,7 @@ export class SearchModel extends Disposable { /* __GDPR__ "searchResultsFinished" : { - "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" } + "duration" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true } } */ onDoneStopwatch(duration => this.telemetryService.publicLog('searchResultsFinished', { duration })); @@ -775,11 +775,11 @@ export class SearchModel extends Disposable { delete options.pattern; /* __GDPR__ "searchResultsShown" : { - "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "fileCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "count" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "fileCount": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, "options": { "${inline}": [ "${IPatternInfo}" ] }, - "duration": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "useRipgrep": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "duration": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "useRipgrep": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('searchResultsShown', { diff --git a/src/vs/workbench/parts/stats/node/workspaceStats.ts b/src/vs/workbench/parts/stats/node/workspaceStats.ts index df287a64134..79038045ada 100644 --- a/src/vs/workbench/parts/stats/node/workspaceStats.ts +++ b/src/vs/workbench/parts/stats/node/workspaceStats.ts @@ -165,31 +165,31 @@ export class WorkspaceStats implements IWorkbenchContribution { /* __GDPR__FRAGMENT__ "WorkspaceTags" : { - "workbench.filesToOpen" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "workbench.filesToCreate" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "workbench.filesToDiff" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "workspace.id" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.roots" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.empty" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.grunt" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.gulp" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.jake" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.tsconfig" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.jsconfig" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.config.xml" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.vsc.extension" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.ASP5" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.sln" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.unity" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.npm" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.bower" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.yeoman.code.ext" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.cordova.high" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.cordova.low" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.xamarin.android" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.xamarin.ios" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.android.cpp" : { "classification": "CustomerContent", "purpose": "FeatureInsight" }, - "workspace.reactNative" : { "classification": "CustomerContent", "purpose": "FeatureInsight" } + "workbench.filesToOpen" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workbench.filesToCreate" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workbench.filesToDiff" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.id" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "workspace.roots" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.empty" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.grunt" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.gulp" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.jake" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.tsconfig" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.jsconfig" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.config.xml" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.vsc.extension" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.ASP5" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.sln" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.unity" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.npm" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.bower" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.yeoman.code.ext" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.cordova.high" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.cordova.low" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.xamarin.android" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.xamarin.ios" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.android.cpp" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "workspace.reactNative" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ private getWorkspaceTags(configuration: IWindowConfiguration): TPromise { @@ -381,7 +381,7 @@ export class WorkspaceStats implements IWorkbenchContribution { /* __GDPR__FRAGMENT__ "AzureTags" : { - "node" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "node" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ private reportAzureNode(workspaceUris: URI[], tags: Tags): TPromise { diff --git a/src/vs/workbench/parts/tasks/common/taskSystem.ts b/src/vs/workbench/parts/tasks/common/taskSystem.ts index f089c8207e8..fbfa7787f35 100644 --- a/src/vs/workbench/parts/tasks/common/taskSystem.ts +++ b/src/vs/workbench/parts/tasks/common/taskSystem.ts @@ -42,8 +42,8 @@ export class TaskError { "runner": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "taskKind": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "command": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "success": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "exitCode": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "success": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }, + "exitCode": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ export interface TelemetryEvent { diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index 11721ad823d..012b86f9161 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -2092,6 +2092,12 @@ class TaskService implements ITaskService { content = content.replace(/(\n)(\t+)/g, (_, s1, s2) => s1 + strings.repeat(' ', s2.length * editorConfig.editor.tabSize)); } configFileCreated = true; + /* __GDPR__ + "taskService.template" : { + "templateId" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, + "autoDetect" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } + } + */ return this.fileService.createFile(resource, content).then((result): URI => { this.telemetryService.publicLog(TaskService.TemplateTelemetryEventName, { templateId: selection.id, diff --git a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts index 35c3ffe1524..bad93daf8b4 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts +++ b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts @@ -383,7 +383,7 @@ export class WalkThroughPart extends BaseEditor { "walkThroughSnippetInteraction" : { "from" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "type": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "snippet": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "snippet": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('walkThroughSnippetInteraction', { @@ -397,7 +397,7 @@ export class WalkThroughPart extends BaseEditor { "walkThroughSnippetInteraction" : { "from" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "type": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "snippet": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "snippet": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('walkThroughSnippetInteraction', { @@ -411,7 +411,7 @@ export class WalkThroughPart extends BaseEditor { "walkThroughSnippetInteraction" : { "from" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, "type": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, - "snippet": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } + "snippet": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true } } */ this.telemetryService.publicLog('walkThroughSnippetInteraction', { diff --git a/src/vs/workbench/services/search/node/rawSearchService.ts b/src/vs/workbench/services/search/node/rawSearchService.ts index 82cc34039d1..ec7ce943928 100644 --- a/src/vs/workbench/services/search/node/rawSearchService.ts +++ b/src/vs/workbench/services/search/node/rawSearchService.ts @@ -144,6 +144,7 @@ export class SearchService implements IRawSearchService { .then(result => { c([result, results]); if (this.telemetryPipe) { + // __GDPR__TODO__ classify event this.telemetryPipe({ eventName: 'fileSearch', data: result.stats diff --git a/src/vs/workbench/services/timer/common/timerService.ts b/src/vs/workbench/services/timer/common/timerService.ts index bee527e3878..e13b8c3f15c 100644 --- a/src/vs/workbench/services/timer/common/timerService.ts +++ b/src/vs/workbench/services/timer/common/timerService.ts @@ -10,10 +10,10 @@ export const ITimerService = createDecorator('timerService'); /* __GDPR__FRAGMENT__ "IMemoryInfo" : { - "workingSetSize" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "peakWorkingSetSize": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "privateBytes": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "sharedBytes": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" } + "workingSetSize" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "peakWorkingSetSize": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "privateBytes": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "sharedBytes": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true } } */ export interface IMemoryInfo { @@ -26,29 +26,30 @@ export interface IMemoryInfo { /* __GDPR__FRAGMENT__ "IStartupMetrics" : { "version" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "ellapsed" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedAppReady" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedWindowLoad" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedWindowLoadToRequire" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedExtensions" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedExtensionsReady" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedRequire" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedViewletRestore" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedEditorRestore" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedWorkbench" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "timers.ellapsedTimersToTimersComputed" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, + "ellapsed" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedAppReady" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedWindowLoad" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedWindowLoadToRequire" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedExtensions" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedExtensionsReady" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedRequire" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedViewletRestore" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedEditorRestore" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedWorkbench" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "timers.ellapsedTimersToTimersComputed" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, "platform" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, "release" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, "arch" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "totalmem" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, + "totalmem" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "freemem" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, "meminfo" : { "${inline}": [ "${IMemoryInfo}" ] }, - "cpus.count" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "cpus.speed" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, + "cpus.count" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "cpus.speed" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, "cpus.model" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "initialStartup" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "hasAccessibilitySupport" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "isVMLikelyhood" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, - "emptyWorkbench" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }, + "initialStartup" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "hasAccessibilitySupport" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "isVMLikelyhood" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, + "emptyWorkbench" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }, "loadavg" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" } } */ From ec1b9fe38bf4de3c4c81aa5592c9620eb93a013e Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Fri, 9 Mar 2018 15:25:25 -0800 Subject: [PATCH 375/658] For #44414, only apply the search F4 shortcut when search results are available --- src/vs/workbench/parts/search/browser/searchView.ts | 4 ++++ src/vs/workbench/parts/search/common/constants.ts | 1 + .../parts/search/electron-browser/search.contribution.ts | 4 ++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/search/browser/searchView.ts b/src/vs/workbench/parts/search/browser/searchView.ts index f5e7e934302..6d3c32171f5 100644 --- a/src/vs/workbench/parts/search/browser/searchView.ts +++ b/src/vs/workbench/parts/search/browser/searchView.ts @@ -82,6 +82,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { private fileMatchFocused: IContextKey; private folderMatchFocused: IContextKey; private matchFocused: IContextKey; + private hasSearchResultsKey: IContextKey; private searchSubmitted: boolean; private searching: boolean; @@ -137,6 +138,7 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { this.fileMatchFocused = Constants.FileFocusKey.bindTo(contextKeyService); this.folderMatchFocused = Constants.FolderFocusKey.bindTo(contextKeyService); this.matchFocused = Constants.MatchFocusKey.bindTo(this.contextKeyService); + this.hasSearchResultsKey = Constants.HasSearchResults.bindTo(this.contextKeyService); this.queryBuilder = this.instantiationService.createInstance(QueryBuilder); this.viewletSettings = this.getMemento(storageService, Scope.WORKSPACE); @@ -1297,6 +1299,8 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { private updateSearchResultCount(): void { const fileCount = this.viewModel.searchResult.fileCount(); + this.hasSearchResultsKey.set(fileCount > 0); + const msgWasHidden = this.messages.isHidden(); if (fileCount > 0) { const div = this.clearMessage(); diff --git a/src/vs/workbench/parts/search/common/constants.ts b/src/vs/workbench/parts/search/common/constants.ts index 4f88e0553ad..1c9a877bd20 100644 --- a/src/vs/workbench/parts/search/common/constants.ts +++ b/src/vs/workbench/parts/search/common/constants.ts @@ -27,6 +27,7 @@ export const ReplaceInputBoxFocusedKey = new RawContextKey('replaceInpu export const PatternIncludesFocusedKey = new RawContextKey('patternIncludesInputBoxFocus', false); export const PatternExcludesFocusedKey = new RawContextKey('patternExcludesInputBoxFocus', false); export const ReplaceActiveKey = new RawContextKey('replaceActive', false); +export const HasSearchResults = new RawContextKey('hasSearchResult', false); export const FirstMatchFocusKey = new RawContextKey('firstMatchFocus', false); export const FileMatchOrMatchFocusKey = new RawContextKey('fileMatchOrMatchFocus', false); diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts index b55114b3112..f79a3cf2747 100644 --- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts @@ -320,8 +320,8 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_F }); -registry.registerWorkbenchAction(new SyncActionDescriptor(FocusNextSearchResultAction, FocusNextSearchResultAction.ID, FocusNextSearchResultAction.LABEL, { primary: KeyCode.F4 }), 'Focus Next Search Result', category); -registry.registerWorkbenchAction(new SyncActionDescriptor(FocusPreviousSearchResultAction, FocusPreviousSearchResultAction.ID, FocusPreviousSearchResultAction.LABEL, { primary: KeyMod.Shift | KeyCode.F4 }), 'Focus Previous Search Result', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(FocusNextSearchResultAction, FocusNextSearchResultAction.ID, FocusNextSearchResultAction.LABEL, { primary: KeyCode.F4 }, ContextKeyExpr.and(Constants.HasSearchResults)), 'Focus Next Search Result', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(FocusPreviousSearchResultAction, FocusPreviousSearchResultAction.ID, FocusPreviousSearchResultAction.LABEL, { primary: KeyMod.Shift | KeyCode.F4 }, ContextKeyExpr.and(Constants.HasSearchResults)), 'Focus Previous Search Result', category); registry.registerWorkbenchAction(new SyncActionDescriptor(ReplaceInFilesAction, ReplaceInFilesAction.ID, ReplaceInFilesAction.LABEL, { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_H }), 'Replace in Files', category); From 16b91c78f4d21dbebd35636a9b4d6c7dfe84eff9 Mon Sep 17 00:00:00 2001 From: Gus Hurovich Date: Fri, 9 Mar 2018 16:49:07 -0800 Subject: [PATCH 376/658] Emmet: when wrapping, skip lines with no characters selected (#45224) * When wrapping using Emmet, don't consider lines with no characters selected. * Adding unit tests * Adding support for multicursors in wrapIndividualLinesWithAbbreviation * Moving check in multicursor wrapIndividualLines * Make sure when expanding several abbreviations with different snippets that the edits are applied in reverse order. --- extensions/emmet/src/abbreviationActions.ts | 66 +++++++++++++------ .../src/test/wrapWithAbbreviation.test.ts | 31 ++++++++- 2 files changed, 77 insertions(+), 20 deletions(-) diff --git a/extensions/emmet/src/abbreviationActions.ts b/extensions/emmet/src/abbreviationActions.ts index a255eddb2ed..da56664ca2e 100644 --- a/extensions/emmet/src/abbreviationActions.ts +++ b/extensions/emmet/src/abbreviationActions.ts @@ -51,7 +51,11 @@ export function wrapWithAbbreviation(args: any) { editor.selections.sort((a: vscode.Selection, b: vscode.Selection) => { return a.start.line - b.start.line; }).forEach(selection => { let rangeToReplace: vscode.Range = selection.isReversed ? new vscode.Range(selection.active, selection.anchor) : selection; - if (rangeToReplace.isEmpty) { + if (!rangeToReplace.isSingleLine && rangeToReplace.end.character === 0) { + let previousLine = rangeToReplace.end.line - 1; + let lastChar = editor.document.lineAt(previousLine).text.length; + rangeToReplace = new vscode.Range(rangeToReplace.start, new vscode.Position(previousLine, lastChar)); + } else if (rangeToReplace.isEmpty) { let { active } = selection; let currentNode = getNode(rootNode, active, true); if (currentNode && (currentNode.start.line === active.line || currentNode.end.line === active.line)) { @@ -61,11 +65,7 @@ export function wrapWithAbbreviation(args: any) { } } - const firstLineOfSelection = editor.document.lineAt(rangeToReplace.start).text.substr(rangeToReplace.start.character); - const matches = firstLineOfSelection.match(/^(\s*)/); - const extraWhiteSpaceSelected = matches ? matches[1].length : 0; - - rangeToReplace = new vscode.Range(rangeToReplace.start.line, rangeToReplace.start.character + extraWhiteSpaceSelected, rangeToReplace.end.line, rangeToReplace.end.character); + rangeToReplace = ignoreExtraWhitespaceSelected(rangeToReplace, editor.document); const wholeFirstLine = editor.document.lineAt(rangeToReplace.start).text; const otherMatches = wholeFirstLine.match(/^(\s*)/); @@ -184,10 +184,26 @@ export function wrapIndividualLinesWithAbbreviation(args: any) { } const editor = vscode.window.activeTextEditor; - if (editor.selection.isEmpty) { + if (editor.selections.length === 1 && editor.selection.isEmpty) { vscode.window.showInformationMessage('Select more than 1 line and try again.'); return; } + if (editor.selections.find(x => x.isEmpty)) { + vscode.window.showInformationMessage('Select more than 1 line in each selection and try again.'); + return; + } + let rangesToReplace: vscode.Range[] = []; + editor.selections.forEach(selection => { + let rangeToReplace: vscode.Range = selection.isReversed ? new vscode.Range(selection.active, selection.anchor) : selection; + if (!rangeToReplace.isSingleLine && rangeToReplace.end.character === 0) { + let previousLine = rangeToReplace.end.line - 1; + let lastChar = editor.document.lineAt(previousLine).text.length; + rangeToReplace = new vscode.Range(rangeToReplace.start, new vscode.Position(previousLine, lastChar)); + } + + rangeToReplace = ignoreExtraWhitespaceSelected(rangeToReplace, editor.document); + rangesToReplace.push(rangeToReplace); + }); const syntax = getSyntaxFromArgs({ language: editor.document.languageId }); if (!syntax) { @@ -195,31 +211,43 @@ export function wrapIndividualLinesWithAbbreviation(args: any) { } const abbreviationPromise = (args && args['abbreviation']) ? Promise.resolve(args['abbreviation']) : vscode.window.showInputBox({ prompt: 'Enter Abbreviation' }); - const lines = editor.document.getText(editor.selection).split('\n').map(x => x.trim()); const helper = getEmmetHelper(); return abbreviationPromise.then(inputAbbreviation => { + let expandAbbrInput: ExpandAbbreviationInput[] = []; if (!inputAbbreviation || !inputAbbreviation.trim() || !helper.isAbbreviationValid(syntax, inputAbbreviation)) { return false; } let extractedResults = helper.extractAbbreviationFromText(inputAbbreviation); if (!extractedResults) { return false; } + rangesToReplace.forEach(rangeToReplace => { + let lines = editor.document.getText(rangeToReplace).split('\n').map(x => x.trim()); - let { abbreviation, filter } = extractedResults; - let input: ExpandAbbreviationInput = { - syntax, - abbreviation, - rangeToReplace: editor.selection, - textToWrap: lines, - filter - }; + let { abbreviation, filter } = extractedResults; + let input: ExpandAbbreviationInput = { + syntax, + abbreviation, + rangeToReplace, + textToWrap: lines, + filter + }; + expandAbbrInput.push(input); + }); - return expandAbbreviationInRange(editor, [input], true); + return expandAbbreviationInRange(editor, expandAbbrInput, false); }); } +function ignoreExtraWhitespaceSelected(range: vscode.Range, document: vscode.TextDocument): vscode.Range { + const firstLineOfSelection = document.lineAt(range.start).text.substr(range.start.character); + const matches = firstLineOfSelection.match(/^(\s*)/); + const extraWhiteSpaceSelected = matches ? matches[1].length : 0; + + return new vscode.Range(range.start.line, range.start.character + extraWhiteSpaceSelected, range.end.line, range.end.character); +} + export function expandEmmetAbbreviation(args: any): Thenable { if (!validate() || !vscode.window.activeTextEditor) { return fallbackTab(); @@ -493,10 +521,10 @@ function expandAbbreviationInRange(editor: vscode.TextEditor, expandAbbrList: Ex // We will not be able to maintain multiple cursors after snippet insertion let insertPromises: Thenable[] = []; if (!insertSameSnippet) { - expandAbbrList.forEach((expandAbbrInput: ExpandAbbreviationInput) => { + expandAbbrList.sort((a: ExpandAbbreviationInput, b: ExpandAbbreviationInput) => { return b.rangeToReplace.start.compareTo(a.rangeToReplace.start); }).forEach((expandAbbrInput: ExpandAbbreviationInput) => { let expandedText = expandAbbr(expandAbbrInput); if (expandedText) { - insertPromises.push(editor.insertSnippet(new vscode.SnippetString(expandedText), expandAbbrInput.rangeToReplace)); + insertPromises.push(editor.insertSnippet(new vscode.SnippetString(expandedText), expandAbbrInput.rangeToReplace, { undoStopBefore: false, undoStopAfter: false })); } }); if (insertPromises.length === 0) { diff --git a/extensions/emmet/src/test/wrapWithAbbreviation.test.ts b/extensions/emmet/src/test/wrapWithAbbreviation.test.ts index 0862af36db9..88f64a3afbb 100644 --- a/extensions/emmet/src/test/wrapWithAbbreviation.test.ts +++ b/extensions/emmet/src/test/wrapWithAbbreviation.test.ts @@ -61,7 +61,7 @@ suite('Tests for Wrap with Abbreviations', () => { const multiCursors = [new Selection(2, 6, 2, 6), new Selection(3, 6, 3, 6)]; const multiCursorsWithSelection = [new Selection(2, 2, 2, 28), new Selection(3, 2, 3, 33)]; - const multiCursorsWithFullLineSelection = [new Selection(2, 0, 2, 28), new Selection(3, 0, 3, 33)]; + const multiCursorsWithFullLineSelection = [new Selection(2, 0, 2, 28), new Selection(3, 0, 4, 0)]; test('Wrap with block element using multi cursor', () => { @@ -251,6 +251,35 @@ suite('Tests for Wrap with Abbreviations', () => { }); }); + test('Wrap individual lines with abbreviation with extra space selected', () => { + const contents = ` +

+`; + const wrapIndividualLinesExpected = ` + +`; + return withRandomFileEditor(contents, 'html', (editor, doc) => { + editor.selections = [new Selection(2, 1, 4, 0)]; + const promise = wrapIndividualLinesWithAbbreviation({ abbreviation: 'ul>li.hello$*' }); + if (!promise) { + assert.equal(1, 2, 'Wrap Individual Lines with Abbreviation returned undefined.'); + return Promise.resolve(); + } + return promise.then(() => { + assert.equal(editor.document.getText(), wrapIndividualLinesExpected); + return Promise.resolve(); + }); + }); + }); + test('Wrap individual lines with abbreviation with comment filter', () => { const contents = `