diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js index 385b024609b..55094f4f449 100644 --- a/build/gulpfile.extensions.js +++ b/build/gulpfile.extensions.js @@ -63,10 +63,10 @@ const tasks = compilations.map(function (tsconfigFile) { let headerId, headerOut; let index = relativeDirname.indexOf('/'); if (index < 0) { - headerId = relativeDirname; + headerId = 'vscode.' + relativeDirname; headerOut = 'out'; } else { - headerId = relativeDirname.substr(0, index); + headerId = 'vscode.' + relativeDirname.substr(0, index); headerOut = relativeDirname.substr(index + 1) + '/out'; } diff --git a/extensions/configuration-editing/package.json b/extensions/configuration-editing/package.json index ed2819ba97f..c5030630b40 100644 --- a/extensions/configuration-editing/package.json +++ b/extensions/configuration-editing/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "jsonc-parser": "^1.0.0", - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "contributes": { "jsonValidation": [ diff --git a/extensions/configuration-editing/yarn.lock b/extensions/configuration-editing/yarn.lock index 3aecfb034d5..29d3d43ae80 100644 --- a/extensions/configuration-editing/yarn.lock +++ b/extensions/configuration-editing/yarn.lock @@ -10,6 +10,6 @@ jsonc-parser@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-1.0.0.tgz#ddcc864ae708e60a7a6dd36daea00172fa8d9272" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" diff --git a/extensions/css/package.json b/extensions/css/package.json index 5f4354623e6..8893cc34b93 100644 --- a/extensions/css/package.json +++ b/extensions/css/package.json @@ -714,7 +714,7 @@ }, "dependencies": { "vscode-languageclient": "^3.5.0", - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/node": "7.0.43" diff --git a/extensions/css/yarn.lock b/extensions/css/yarn.lock index e6c3983fb99..d7ec451f0e1 100644 --- a/extensions/css/yarn.lock +++ b/extensions/css/yarn.lock @@ -27,6 +27,6 @@ vscode-languageserver-types@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.5.0.tgz#e48d79962f0b8e02de955e3f524908e2b19c0374" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json index d56ce44d207..2e72c542ec0 100644 --- a/extensions/emmet/package.json +++ b/extensions/emmet/package.json @@ -320,6 +320,6 @@ "vscode-emmet-helper": "^1.1.22", "vscode-languageserver-types": "^3.5.0", "image-size": "^0.5.2", - "vscode-nls": "3.1.2" + "vscode-nls": "3.2.1" } } \ No newline at end of file diff --git a/extensions/emmet/yarn.lock b/extensions/emmet/yarn.lock index dc280420de1..d5af69f3d44 100644 --- a/extensions/emmet/yarn.lock +++ b/extensions/emmet/yarn.lock @@ -2068,9 +2068,9 @@ vscode-languageserver-types@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.5.0.tgz#e48d79962f0b8e02de955e3f524908e2b19c0374" -vscode-nls@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" vscode@1.0.1: version "1.0.1" diff --git a/extensions/extension-editing/package.json b/extensions/extension-editing/package.json index fe7e6bdb413..6c13e41f4a1 100644 --- a/extensions/extension-editing/package.json +++ b/extensions/extension-editing/package.json @@ -23,7 +23,7 @@ "jsonc-parser": "^1.0.0", "markdown-it": "^8.3.1", "parse5": "^3.0.2", - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "contributes": { "jsonValidation": [ diff --git a/extensions/extension-editing/yarn.lock b/extensions/extension-editing/yarn.lock index e0072b69ac8..350fdcb5fe3 100644 --- a/extensions/extension-editing/yarn.lock +++ b/extensions/extension-editing/yarn.lock @@ -58,6 +58,6 @@ 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" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" diff --git a/extensions/git/package.json b/extensions/git/package.json index 98a28305498..b6eaa522dcb 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -1158,7 +1158,7 @@ "file-type": "^7.2.0", "iconv-lite": "0.4.19", "vscode-extension-telemetry": "0.0.11", - "vscode-nls": "^3.1.2", + "vscode-nls": "^3.2.1", "which": "^1.3.0" }, "devDependencies": { diff --git a/extensions/git/yarn.lock b/extensions/git/yarn.lock index 28398ec628a..f840f51b49f 100644 --- a/extensions/git/yarn.lock +++ b/extensions/git/yarn.lock @@ -259,9 +259,9 @@ vscode-extension-telemetry@0.0.11: dependencies: applicationinsights "1.0.1" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" which@^1.3.0: version "1.3.0" diff --git a/extensions/grunt/package.json b/extensions/grunt/package.json index c63b52e02b4..4966ea7271b 100644 --- a/extensions/grunt/package.json +++ b/extensions/grunt/package.json @@ -15,7 +15,7 @@ "watch": "gulp watch-extension:grunt" }, "dependencies": { - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/node": "7.0.43" diff --git a/extensions/grunt/yarn.lock b/extensions/grunt/yarn.lock index e2fc7ae342e..112e5f2ac8d 100644 --- a/extensions/grunt/yarn.lock +++ b/extensions/grunt/yarn.lock @@ -6,6 +6,6 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" diff --git a/extensions/gulp/package.json b/extensions/gulp/package.json index 525398dcf9a..8ab76f556d0 100644 --- a/extensions/gulp/package.json +++ b/extensions/gulp/package.json @@ -15,7 +15,7 @@ "watch": "gulp watch-extension:gulp" }, "dependencies": { - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/node": "7.0.43" diff --git a/extensions/gulp/yarn.lock b/extensions/gulp/yarn.lock index e2fc7ae342e..112e5f2ac8d 100644 --- a/extensions/gulp/yarn.lock +++ b/extensions/gulp/yarn.lock @@ -6,6 +6,6 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" diff --git a/extensions/html/package.json b/extensions/html/package.json index 8453070369b..a8bbb91b761 100644 --- a/extensions/html/package.json +++ b/extensions/html/package.json @@ -226,7 +226,7 @@ "dependencies": { "vscode-extension-telemetry": "0.0.11", "vscode-languageclient": "^3.5.0", - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/node": "7.0.43" diff --git a/extensions/html/server/package.json b/extensions/html/server/package.json index 37ab867085e..234cd4aab31 100644 --- a/extensions/html/server/package.json +++ b/extensions/html/server/package.json @@ -11,7 +11,7 @@ "vscode-css-languageservice": "^3.0.3", "vscode-html-languageservice": "^2.0.14", "vscode-languageserver": "^3.5.0", - "vscode-nls": "^3.1.2", + "vscode-nls": "^3.2.1", "vscode-uri": "^1.0.1" }, "devDependencies": { diff --git a/extensions/html/server/yarn.lock b/extensions/html/server/yarn.lock index f12116b9872..157ff1d875c 100644 --- a/extensions/html/server/yarn.lock +++ b/extensions/html/server/yarn.lock @@ -51,9 +51,9 @@ vscode-nls@^2.0.1, vscode-nls@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-2.0.2.tgz#808522380844b8ad153499af5c3b03921aea02da" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" vscode-uri@^1.0.1: version "1.0.1" diff --git a/extensions/html/yarn.lock b/extensions/html/yarn.lock index 386eb318a34..47c5c2e51b7 100644 --- a/extensions/html/yarn.lock +++ b/extensions/html/yarn.lock @@ -55,9 +55,9 @@ vscode-languageserver-types@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.5.0.tgz#e48d79962f0b8e02de955e3f524908e2b19c0374" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" zone.js@0.7.6: version "0.7.6" diff --git a/extensions/jake/package.json b/extensions/jake/package.json index 374be5cea88..7d2d4b4524e 100644 --- a/extensions/jake/package.json +++ b/extensions/jake/package.json @@ -15,7 +15,7 @@ "watch": "gulp watch-extension:jake" }, "dependencies": { - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/node": "7.0.43" diff --git a/extensions/jake/yarn.lock b/extensions/jake/yarn.lock index e2fc7ae342e..112e5f2ac8d 100644 --- a/extensions/jake/yarn.lock +++ b/extensions/jake/yarn.lock @@ -6,6 +6,6 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" diff --git a/extensions/javascript/package.json b/extensions/javascript/package.json index b3377418c01..341bfc1512a 100644 --- a/extensions/javascript/package.json +++ b/extensions/javascript/package.json @@ -13,7 +13,7 @@ "dependencies": { "jsonc-parser": "^1.0.0", "request-light": "^0.2.2", - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "scripts": { "compile": "gulp compile-extension:javascript", diff --git a/extensions/javascript/yarn.lock b/extensions/javascript/yarn.lock index 72d121783eb..bab69ccbd1f 100644 --- a/extensions/javascript/yarn.lock +++ b/extensions/javascript/yarn.lock @@ -72,6 +72,6 @@ vscode-nls@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-2.0.2.tgz#808522380844b8ad153499af5c3b03921aea02da" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" diff --git a/extensions/json/package.json b/extensions/json/package.json index 78b59664ccc..5b9b79b5c11 100644 --- a/extensions/json/package.json +++ b/extensions/json/package.json @@ -164,7 +164,7 @@ "dependencies": { "vscode-extension-telemetry": "0.0.11", "vscode-languageclient": "^3.5.0", - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/node": "7.0.43" diff --git a/extensions/json/server/package.json b/extensions/json/server/package.json index 562689ecf52..6a27caaa942 100644 --- a/extensions/json/server/package.json +++ b/extensions/json/server/package.json @@ -12,7 +12,7 @@ "request-light": "^0.2.2", "vscode-json-languageservice": "^3.0.4", "vscode-languageserver": "^3.5.0", - "vscode-nls": "^3.1.2", + "vscode-nls": "^3.2.1", "vscode-uri": "^1.0.1" }, "devDependencies": { diff --git a/extensions/json/server/yarn.lock b/extensions/json/server/yarn.lock index 8c005a3357a..fde3e6efbe8 100644 --- a/extensions/json/server/yarn.lock +++ b/extensions/json/server/yarn.lock @@ -99,9 +99,9 @@ vscode-nls@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-2.0.2.tgz#808522380844b8ad153499af5c3b03921aea02da" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" vscode-uri@^1.0.1: version "1.0.1" diff --git a/extensions/json/yarn.lock b/extensions/json/yarn.lock index 386eb318a34..47c5c2e51b7 100644 --- a/extensions/json/yarn.lock +++ b/extensions/json/yarn.lock @@ -55,9 +55,9 @@ vscode-languageserver-types@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.5.0.tgz#e48d79962f0b8e02de955e3f524908e2b19c0374" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" zone.js@0.7.6: version "0.7.6" diff --git a/extensions/markdown/package.json b/extensions/markdown/package.json index 560adaf940e..ec99b44b91d 100644 --- a/extensions/markdown/package.json +++ b/extensions/markdown/package.json @@ -329,7 +329,7 @@ "markdown-it": "^8.4.0", "markdown-it-named-headers": "0.0.4", "vscode-extension-telemetry": "^0.0.11", - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/highlight.js": "9.1.10", diff --git a/extensions/markdown/yarn.lock b/extensions/markdown/yarn.lock index 63f22154609..b1ed9e8c9a1 100644 --- a/extensions/markdown/yarn.lock +++ b/extensions/markdown/yarn.lock @@ -179,9 +179,9 @@ vscode-extension-telemetry@^0.0.11: dependencies: applicationinsights "1.0.1" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" zone.js@0.7.6: version "0.7.6" diff --git a/extensions/merge-conflict/package.json b/extensions/merge-conflict/package.json index fda42159223..146b7fd061a 100644 --- a/extensions/merge-conflict/package.json +++ b/extensions/merge-conflict/package.json @@ -100,7 +100,7 @@ }, "dependencies": { "vscode-extension-telemetry": "0.0.11", - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/node": "8.0.33" diff --git a/extensions/merge-conflict/yarn.lock b/extensions/merge-conflict/yarn.lock index fa6d0a1014d..74ebd7c4fcf 100644 --- a/extensions/merge-conflict/yarn.lock +++ b/extensions/merge-conflict/yarn.lock @@ -34,9 +34,9 @@ vscode-extension-telemetry@0.0.11: dependencies: applicationinsights "1.0.1" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" zone.js@0.7.6: version "0.7.6" diff --git a/extensions/npm/package.json b/extensions/npm/package.json index dba83356e28..f8e04312c27 100644 --- a/extensions/npm/package.json +++ b/extensions/npm/package.json @@ -15,7 +15,7 @@ "watch": "gulp watch-extension:npm" }, "dependencies": { - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/node": "7.0.43" diff --git a/extensions/npm/yarn.lock b/extensions/npm/yarn.lock index e2fc7ae342e..112e5f2ac8d 100644 --- a/extensions/npm/yarn.lock +++ b/extensions/npm/yarn.lock @@ -6,6 +6,6 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" diff --git a/extensions/php/package.json b/extensions/php/package.json index bfe9fcaa5c5..f1408fe4a10 100644 --- a/extensions/php/package.json +++ b/extensions/php/package.json @@ -10,7 +10,7 @@ ], "main": "./out/phpMain", "dependencies": { - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "contributes": { "languages": [ diff --git a/extensions/php/yarn.lock b/extensions/php/yarn.lock index e2fc7ae342e..112e5f2ac8d 100644 --- a/extensions/php/yarn.lock +++ b/extensions/php/yarn.lock @@ -6,6 +6,6 @@ version "7.0.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" diff --git a/extensions/typescript/package.json b/extensions/typescript/package.json index 8d69f33a783..3a94a50c4c3 100644 --- a/extensions/typescript/package.json +++ b/extensions/typescript/package.json @@ -14,7 +14,7 @@ "dependencies": { "semver": "4.3.6", "vscode-extension-telemetry": "^0.0.11", - "vscode-nls": "^3.1.2" + "vscode-nls": "^3.2.1" }, "devDependencies": { "@types/node": "8.0.33", diff --git a/extensions/typescript/yarn.lock b/extensions/typescript/yarn.lock index 4cc0b7cd009..0fcc8a28cac 100644 --- a/extensions/typescript/yarn.lock +++ b/extensions/typescript/yarn.lock @@ -42,9 +42,9 @@ vscode-extension-telemetry@^0.0.11: dependencies: applicationinsights "1.0.1" -vscode-nls@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.1.2.tgz#c1b63f4338ac49c852267633dd99717916424a74" +vscode-nls@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" zone.js@0.7.6: version "0.7.6" diff --git a/src/main.js b/src/main.js index e92627112c7..ddd2e64b83f 100644 --- a/src/main.js +++ b/src/main.js @@ -291,28 +291,24 @@ function getNLSConfiguration(locale) { if (!locale) { return defaultResult(); } - let packConfigs = configs[locale]; - if (!packConfigs || !Array.isArray(packConfigs) || packConfigs.length === 0) { + let packConfig = configs[locale]; + let mainPack; + if (!packConfig || typeof packConfig.hash !== 'string' || !packConfig.translations || typeof (mainPack = packConfig.translations['vscode']) !== 'string') { return defaultResult(); } - // We take the first install language pack. No idea what to do if we have more - // than one :-) - let packConfig = packConfigs[0]; - if (typeof packConfig.translations !== 'string' || typeof packConfig.version !== 'string' || packConfig.version.match(/\d+\.\d+\.\d+/) === null) { - return defaultResult(); - } - return exists(packConfig.translations).then((fileExists) => { + return exists(mainPack).then((fileExists) => { if (!fileExists) { return defaultResult(); } - let packId = packConfig.extensionIdentifier.id + '-' + packConfig.version; + let packId = packConfig.hash + '.' + locale; let cacheRoot = path.join(userData, 'clp', packId); let coreLocation = path.join(cacheRoot, commit); + let translationsConfigFile = path.join(cacheRoot, 'tcf.json'); let result = { locale: initialLocale, availableLanguages: { '*': locale }, _languagePackId: packId, - _languagePackLocation: packConfig.translations, + _translationsConfigFile: translationsConfigFile, _cacheRoot: cacheRoot, _resolvedLanguagePackCoreLocation: coreLocation }; @@ -324,7 +320,7 @@ function getNLSConfiguration(locale) { return result; } return mkdirp(coreLocation).then(() => { - return Promise.all([readFile(path.join(__dirname, 'nls.metadata.json')), readFile(path.join(packConfig.translations, 'main.i18n.json'))]); + return Promise.all([readFile(path.join(__dirname, 'nls.metadata.json')), readFile(mainPack)]); }).then((values) => { let metadata = JSON.parse(values[0]); let packData = JSON.parse(values[1]).contents; @@ -356,6 +352,7 @@ function getNLSConfiguration(locale) { } writes.push(writeFile(path.join(coreLocation, bundle.replace(/\//g,'!') + '.nls.json'), JSON.stringify(target))); } + writes.push(writeFile(translationsConfigFile, JSON.stringify(packConfig.translations))); return Promise.all(writes); }).then(() => { perf.mark('nlsGeneration:end'); diff --git a/src/vs/base/common/platform.ts b/src/vs/base/common/platform.ts index a5148ec7769..0306de78a92 100644 --- a/src/vs/base/common/platform.ts +++ b/src/vs/base/common/platform.ts @@ -14,10 +14,12 @@ let _isNative = false; let _isWeb = false; let _locale: string = undefined; let _language: string = undefined; +let _translationsConfigFile: string = undefined; interface NLSConfig { locale: string; availableLanguages: { [key: string]: string; }; + _translationsConfigFile: string; } export interface IProcessEnvironment { @@ -55,6 +57,7 @@ if (typeof process === 'object') { _locale = nlsConfig.locale; // VSCode's default language is 'en' _language = resolved ? resolved : LANGUAGE_DEFAULT; + _translationsConfigFile = nlsConfig._translationsConfigFile; } catch (e) { } } @@ -109,6 +112,11 @@ export const language = _language; */ export const locale = _locale; +/** + * The translatios that are available through language packs. + */ +export const translationsConfigFile = _translationsConfigFile; + export interface TimeoutToken { } diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionPoints.ts b/src/vs/workbench/services/extensions/electron-browser/extensionPoints.ts index d79f768e150..2ae8762450b 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionPoints.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionPoints.ts @@ -20,10 +20,39 @@ import { groupByExtension } from 'vs/platform/extensionManagement/common/extensi const MANIFEST_FILE = 'package.json'; +export interface Translations { + [id: string]: string; +} + +namespace Translations { + export function equals(a: Translations, b: Translations): boolean { + if (a === b) { + return true; + } + let aKeys = Object.keys(a); + let bKeys: Set = new Set(); + for (let key of Object.keys(b)) { + bKeys.add(key); + } + if (aKeys.length !== bKeys.size) { + return false; + } + + for (let key of aKeys) { + if (a[key] !== b[key]) { + return false; + } + bKeys.delete(key); + } + return bKeys.size === 0; + } +} + export interface NlsConfiguration { readonly devMode: boolean; readonly locale: string; readonly pseudo: boolean; + readonly translations: Translations; } export interface ILog { @@ -85,37 +114,90 @@ class ExtensionManifestNLSReplacer extends ExtensionManifestHandler { } public replaceNLS(extensionDescription: IExtensionDescription): TPromise { + interface MessageBag { + [key: string]: string; + } + + interface TranslationBundle { + contents: { + package: MessageBag; + }; + } + + interface LocalizedMessages { + values: MessageBag; + default: string; + } + + const reportErrors = (localized: string, errors: json.ParseError[]): void => { + errors.forEach((error) => { + this._log.error(this._absoluteFolderPath, nls.localize('jsonsParseReportErrors', "Failed to parse {0}: {1}.", localized, getParseErrorMessage(error.error))); + }); + }; + let extension = extname(this._absoluteManifestPath); let basename = this._absoluteManifestPath.substr(0, this._absoluteManifestPath.length - extension.length); - return pfs.fileExists(basename + '.nls' + extension).then(exists => { - if (!exists) { - return extensionDescription; - } - return ExtensionManifestNLSReplacer.findMessageBundles(this._nlsConfig, basename).then((messageBundle) => { - if (!messageBundle.localized) { - return extensionDescription; + const translationId = `${extensionDescription.publisher}.${extensionDescription.name}`; + let translationPath = this._nlsConfig.translations[translationId]; + let localizedMessages: TPromise; + if (translationPath) { + localizedMessages = pfs.readFile(translationPath, 'utf8').then((content) => { + let errors: json.ParseError[] = []; + let translationBundle: TranslationBundle = json.parse(content, errors); + if (errors.length > 0) { + reportErrors(translationPath, errors); + return { values: undefined, default: `${basename}.nls.json` }; + } else { + let values = translationBundle.contents ? translationBundle.contents.package : undefined; + return { values: values, default: `${basename}.nls.json` }; } - return pfs.readFile(messageBundle.localized).then(messageBundleContent => { - let errors: json.ParseError[] = []; - let messages: { [key: string]: string; } = json.parse(messageBundleContent.toString(), errors); - - return ExtensionManifestNLSReplacer.resolveOriginalMessageBundle(messageBundle.original, errors).then(originalMessages => { + }, (error) => { + return { values: undefined, default: `${basename}.nls.json` }; + }); + } else { + localizedMessages = pfs.fileExists(basename + '.nls' + extension).then(exists => { + if (!exists) { + return undefined; + } + return ExtensionManifestNLSReplacer.findMessageBundles(this._nlsConfig, basename).then((messageBundle) => { + if (!messageBundle.localized) { + return { values: undefined, default: messageBundle.original }; + } + return pfs.readFile(messageBundle.localized, 'utf8').then(messageBundleContent => { + let errors: json.ParseError[] = []; + let messages: MessageBag = json.parse(messageBundleContent, errors); if (errors.length > 0) { - errors.forEach((error) => { - this._log.error(this._absoluteFolderPath, nls.localize('jsonsParseFail', "Failed to parse {0} or {1}: {2}.", messageBundle.localized, messageBundle.original, getParseErrorMessage(error.error))); - }); - return extensionDescription; + reportErrors(messageBundle.localized, errors); + return { values: undefined, default: messageBundle.original }; } - - ExtensionManifestNLSReplacer._replaceNLStrings(this._nlsConfig, extensionDescription, messages, originalMessages, this._log, this._absoluteFolderPath); - return extensionDescription; + return { values: messages, default: messageBundle.original }; + }, (err) => { + return { values: undefined, default: messageBundle.original }; }); }, (err) => { - this._log.error(this._absoluteFolderPath, nls.localize('fileReadFail', "Cannot read file {0}: {1}.", messageBundle.localized, err.message)); - return null; + return undefined; }); }); + } + + return localizedMessages.then((localizedMessages) => { + if (localizedMessages === undefined) { + return extensionDescription; + } + let errors: json.ParseError[] = []; + // resolveOriginalMessageBundle returns null if localizedMessages.default === undefined; + return ExtensionManifestNLSReplacer.resolveOriginalMessageBundle(localizedMessages.default, errors).then((defaults) => { + if (errors.length > 0) { + reportErrors(localizedMessages.default, errors); + return extensionDescription; + } + const localized = localizedMessages.values || Object.create(null); + ExtensionManifestNLSReplacer._replaceNLStrings(this._nlsConfig, extensionDescription, localized, defaults, this._log, this._absoluteFolderPath); + return extensionDescription; + }); + }, (err) => { + return extensionDescription; }); } @@ -127,6 +209,8 @@ class ExtensionManifestNLSReplacer extends ExtensionManifestHandler { if (originalMessageBundle) { pfs.readFile(originalMessageBundle).then(originalBundleContent => { c(json.parse(originalBundleContent.toString(), errors)); + }, (err) => { + c(null); }); } else { c(null); @@ -176,6 +260,11 @@ class ExtensionManifestNLSReplacer extends ExtensionManifestHandler { if (length > 1 && str[0] === '%' && str[length - 1] === '%') { let messageKey = str.substr(1, length - 2); let message = messages[messageKey]; + // If the messages come from a language pack they might miss some keys + // Fill them from the original messages. + if (message === undefined && originalMessages) { + message = originalMessages[messageKey]; + } if (message) { if (nlsConfig.pseudo) { // FF3B and FF3D is the Unicode zenkaku representation for [ and ] @@ -263,7 +352,8 @@ export class ExtensionScannerInput { public readonly locale: string, public readonly devMode: boolean, public readonly absoluteFolderPath: string, - public readonly isBuiltin: boolean + public readonly isBuiltin: boolean, + public readonly tanslations: Translations ) { // Keep empty!! (JSON.parse) } @@ -272,7 +362,8 @@ export class ExtensionScannerInput { return { devMode: input.devMode, locale: input.locale, - pseudo: input.locale === 'pseudo' + pseudo: input.locale === 'pseudo', + translations: input.tanslations }; } @@ -285,6 +376,7 @@ export class ExtensionScannerInput { && a.absoluteFolderPath === b.absoluteFolderPath && a.isBuiltin === b.isBuiltin && a.mtime === b.mtime + && Translations.equals(a.tanslations, b.tanslations) ); } } diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index d66a67a61c9..e0d15b0ad05 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -20,7 +20,7 @@ import { IMessage, IExtensionDescription, IExtensionsStatus, IExtensionService, import { IExtensionEnablementService, IExtensionIdentifier, EnablementState } from 'vs/platform/extensionManagement/common/extensionManagement'; import { areSameExtensions, BetterMergeId, BetterMergeDisabledNowKey } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { ExtensionsRegistry, ExtensionPoint, IExtensionPointUser, ExtensionMessageCollector, IExtensionPoint } from 'vs/platform/extensions/common/extensionsRegistry'; -import { ExtensionScanner, ILog, ExtensionScannerInput, IExtensionResolver, IExtensionReference } from 'vs/workbench/services/extensions/electron-browser/extensionPoints'; +import { ExtensionScanner, ILog, ExtensionScannerInput, IExtensionResolver, IExtensionReference, Translations } from 'vs/workbench/services/extensions/electron-browser/extensionPoints'; import { IMessageService, CloseAction } from 'vs/platform/message/common/message'; import { ProxyIdentifier } from 'vs/workbench/services/extensions/node/proxyIdentifier'; import { ExtHostContext, ExtHostExtensionServiceShape, IExtHostContext, MainContext } from 'vs/workbench/api/node/extHost.protocol'; @@ -652,86 +652,99 @@ export class ExtensionService extends Disposable implements IExtensionService { } private static _scanInstalledExtensions(instantiationService: IInstantiationService, messageService: IMessageService, environmentService: IEnvironmentService, log: ILog): TPromise<{ system: IExtensionDescription[], user: IExtensionDescription[], development: IExtensionDescription[] }> { - const version = pkg.version; - const commit = product.commit; - const devMode = !!process.env['VSCODE_DEV']; - const locale = platform.locale; - const builtinExtensions = this._scanExtensionsWithCache( - instantiationService, - messageService, - environmentService, - BUILTIN_MANIFEST_CACHE_FILE, - new ExtensionScannerInput(version, commit, locale, devMode, SystemExtensionsRoot, true), - log - ); - - let finalBuiltinExtensions: TPromise = builtinExtensions; - - if (devMode) { - const builtInExtensionsFilePath = path.normalize(path.join(URI.parse(require.toUrl('')).fsPath, '..', 'build', 'builtInExtensions.json')); - const builtInExtensions = pfs.readFile(builtInExtensionsFilePath, 'utf8') - .then(raw => JSON.parse(raw)); - - const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json'); - const controlFile = pfs.readFile(controlFilePath, 'utf8') - .then(raw => JSON.parse(raw), () => ({} as any)); - - const input = new ExtensionScannerInput(version, commit, locale, devMode, ExtraDevSystemExtensionsRoot, true); - const extraBuiltinExtensions = TPromise.join([builtInExtensions, controlFile]) - .then(([builtInExtensions, control]) => new ExtraBuiltInExtensionResolver(builtInExtensions, control)) - .then(resolver => ExtensionScanner.scanExtensions(input, log, resolver)); - - finalBuiltinExtensions = TPromise.join([builtinExtensions, extraBuiltinExtensions]).then(([builtinExtensions, extraBuiltinExtensions]) => { - let resultMap: { [id: string]: IExtensionDescription; } = Object.create(null); - for (let i = 0, len = builtinExtensions.length; i < len; i++) { - resultMap[builtinExtensions[i].id] = builtinExtensions[i]; - } - // Overwrite with extensions found in extra - for (let i = 0, len = extraBuiltinExtensions.length; i < len; i++) { - resultMap[extraBuiltinExtensions[i].id] = extraBuiltinExtensions[i]; + const translationConfig: TPromise = platform.translationsConfigFile + ? pfs.readFile(platform.translationsConfigFile, 'utf8').then((content) => { + try { + return JSON.parse(content) as Translations; + } catch (err) { + return Object.create(null); } + }, (err) => { + return Object.create(null); + }) + : TPromise.as(Object.create(null)); - let resultArr = Object.keys(resultMap).map((id) => resultMap[id]); - resultArr.sort((a, b) => { - const aLastSegment = path.basename(a.extensionFolderPath); - const bLastSegment = path.basename(b.extensionFolderPath); - if (aLastSegment < bLastSegment) { - return -1; + return translationConfig.then((translations) => { + const version = pkg.version; + const commit = product.commit; + const devMode = !!process.env['VSCODE_DEV']; + const locale = platform.locale; + + const builtinExtensions = this._scanExtensionsWithCache( + instantiationService, + messageService, + environmentService, + BUILTIN_MANIFEST_CACHE_FILE, + new ExtensionScannerInput(version, commit, locale, devMode, SystemExtensionsRoot, true, translations), + log + ); + + let finalBuiltinExtensions: TPromise = builtinExtensions; + + if (devMode) { + const builtInExtensionsFilePath = path.normalize(path.join(URI.parse(require.toUrl('')).fsPath, '..', 'build', 'builtInExtensions.json')); + const builtInExtensions = pfs.readFile(builtInExtensionsFilePath, 'utf8') + .then(raw => JSON.parse(raw)); + + const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json'); + const controlFile = pfs.readFile(controlFilePath, 'utf8') + .then(raw => JSON.parse(raw), () => ({} as any)); + + const input = new ExtensionScannerInput(version, commit, locale, devMode, ExtraDevSystemExtensionsRoot, true, translations); + const extraBuiltinExtensions = TPromise.join([builtInExtensions, controlFile]) + .then(([builtInExtensions, control]) => new ExtraBuiltInExtensionResolver(builtInExtensions, control)) + .then(resolver => ExtensionScanner.scanExtensions(input, log, resolver)); + + finalBuiltinExtensions = TPromise.join([builtinExtensions, extraBuiltinExtensions]).then(([builtinExtensions, extraBuiltinExtensions]) => { + let resultMap: { [id: string]: IExtensionDescription; } = Object.create(null); + for (let i = 0, len = builtinExtensions.length; i < len; i++) { + resultMap[builtinExtensions[i].id] = builtinExtensions[i]; } - if (aLastSegment > bLastSegment) { - return 1; + // Overwrite with extensions found in extra + for (let i = 0, len = extraBuiltinExtensions.length; i < len; i++) { + resultMap[extraBuiltinExtensions[i].id] = extraBuiltinExtensions[i]; } - return 0; + + let resultArr = Object.keys(resultMap).map((id) => resultMap[id]); + resultArr.sort((a, b) => { + const aLastSegment = path.basename(a.extensionFolderPath); + const bLastSegment = path.basename(b.extensionFolderPath); + if (aLastSegment < bLastSegment) { + return -1; + } + if (aLastSegment > bLastSegment) { + return 1; + } + return 0; + }); + return resultArr; }); - return resultArr; - }); - } + } - const userExtensions = ( - environmentService.disableExtensions || !environmentService.extensionsPath - ? TPromise.as([]) - : this._scanExtensionsWithCache( - instantiationService, - messageService, - environmentService, - USER_MANIFEST_CACHE_FILE, - new ExtensionScannerInput(version, commit, locale, devMode, environmentService.extensionsPath, false), - log - ) - ); + const userExtensions = ( + environmentService.disableExtensions || !environmentService.extensionsPath + ? TPromise.as([]) + : this._scanExtensionsWithCache( + instantiationService, + messageService, + environmentService, + USER_MANIFEST_CACHE_FILE, + new ExtensionScannerInput(version, commit, locale, devMode, environmentService.extensionsPath, false, translations), + log + ) + ); - // Always load developed extensions while extensions development - const developedExtensions = ( - environmentService.isExtensionDevelopment - ? ExtensionScanner.scanOneOrMultipleExtensions( - new ExtensionScannerInput(version, commit, locale, devMode, environmentService.extensionDevelopmentPath, false), log - ) - : TPromise.as([]) - ); + // Always load developed extensions while extensions development + const developedExtensions = ( + environmentService.isExtensionDevelopment + ? ExtensionScanner.scanOneOrMultipleExtensions( + new ExtensionScannerInput(version, commit, locale, devMode, environmentService.extensionDevelopmentPath, false, translations), log + ) + : TPromise.as([]) + ); - return TPromise.join([finalBuiltinExtensions, userExtensions, developedExtensions]) - .then((extensionDescriptions: IExtensionDescription[][]) => { + return TPromise.join([finalBuiltinExtensions, userExtensions, developedExtensions]).then((extensionDescriptions: IExtensionDescription[][]) => { const system = extensionDescriptions[0]; const user = extensionDescriptions[1]; const development = extensionDescriptions[2]; @@ -740,6 +753,8 @@ export class ExtensionService extends Disposable implements IExtensionService { log.error('', err); return { system: [], user: [], development: [] }; }); + }); + } private static _handleExtensionPoint(extensionPoint: ExtensionPoint, availableExtensions: IExtensionDescription[], messageHandler: (msg: IMessage) => void): void {