diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js index 385b024609bba82f0b1c72c9154c1895ab68a5de..55094f4f449ac655a5bacf71cb781659b4541c25 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 ed2819ba97fd16c451b829d5c5021ce706664692..c5030630b400af37402e25cdd2b7543d7e757403 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 3aecfb034d5309548b9ec1c83780871737ec144a..29d3d43ae8081c64cd2a75824cd6e2cfd62d2f81 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 5f4354623e6ae293f544c21c880c80a7f5867c27..8893cc34b938e8bbf4d75fc7f84461944695c7b9 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 e6c3983fb9978e64d0994f5acb259167e7898dcc..d7ec451f0e13950d7f018f95e3c8cfec69dc7c29 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 d56ce44d2071b000c76a7e75eb75c19a1d3ee234..2e72c542ec033d121e98dd46fdcdfc3cf2c96eb0 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 dc280420de196fe182f1b8a846e709ba3fe84ff7..d5af69f3d44c4be6a822acfbab6c98f7b9c703a3 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 fe7e6bdb413ef585897df7732e5bbba3d91d8bb1..6c13e41f4a17efbaf850fa817866da5009590124 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 e0072b69ac8071901055853414a8e4b11c560189..350fdcb5fe36a44560b0f7df2b9bdd7432111ed6 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 98a28305498b2d090e132d4b7e08db4527de8ecd..b6eaa522dcba11b6079f17de75875e5b21e9c490 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 28398ec628a635f4a710ec452bde54889b9caa00..f840f51b49fcf3eb31974563d5685c3b98e57c01 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 c63b52e02b46c7beaada85fbbe8f1dc17c4adb81..4966ea7271b2cb661f6be7cf74b2fd9ca620cb92 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 e2fc7ae342ed707821e4a916082d74b72376565c..112e5f2ac8d3edcca99816a90b6e9178b660a210 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 525398dcf9a5a6170882ec9568444ed0b11b36b7..8ab76f556d0a8dc023fcec40c80759891e404c2d 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 e2fc7ae342ed707821e4a916082d74b72376565c..112e5f2ac8d3edcca99816a90b6e9178b660a210 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 8453070369be3ee89f56ff98b25e4464c021406b..a8bbb91b7613c4e23f075182382e69177815890b 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 37ab867085ecc9294b59ee5b255b579c87218292..234cd4aab312fb0542201ad81527294a78567217 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 f12116b9872d1fda6299dbc3c523d9310234fd59..157ff1d875cba8d2c65558434f398e5c9e12b033 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 386eb318a345e36a68466f740d83a49f69a789a0..47c5c2e51b717cefb936d0f55ab3ae6de64bc62d 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 374be5cea889a6f4b898dd6b64ed8b7e0d2501c1..7d2d4b4524e59fed99e7eb227d834232c49ad00b 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 e2fc7ae342ed707821e4a916082d74b72376565c..112e5f2ac8d3edcca99816a90b6e9178b660a210 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 b3377418c01372f35155417253a89834632dfda6..341bfc1512ac0591a8b6c0d19f52c53d91a34750 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 72d121783ebfb955bb1fd1eb904ba679e09b42af..bab69ccbd1f7afac31be4c915c83cff67213d096 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 78b59664ccca93f21a147d4c965e8213adbd1a63..5b9b79b5c1191566cb7a55573fbf0ad740fc4dd9 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 562689ecf524a3d66db660b0a1687904c418ffb4..6a27caaa942116fdef19c7d22ba21bd1f482ba7e 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 8c005a3357ae1644ce547dd7832e085effa1a1ea..fde3e6efbe8b1d781eaa2d29e45349cd95879faf 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 386eb318a345e36a68466f740d83a49f69a789a0..47c5c2e51b717cefb936d0f55ab3ae6de64bc62d 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 560adaf940ea58a99e9faca9c9fe8bc36778ab03..ec99b44b91d51d43a7e7ce480c306765798adb13 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 63f221546097321fd8032f25e017caad1ffae297..b1ed9e8c9a1b99a6ba7c6cc731578b6f759010f4 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 fda42159223d6579ef2eae07f991253803d9e487..146b7fd061a9878ab2b1741dd96d98df6904b124 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 fa6d0a1014d49278c35b7cad465b89d33a749529..74ebd7c4fcfcc1dc36d48a77d0aefa622f17c905 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 dba83356e28716162011390378e16af303911a9b..f8e04312c2736056acb63f19141ce0018f748ce3 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 e2fc7ae342ed707821e4a916082d74b72376565c..112e5f2ac8d3edcca99816a90b6e9178b660a210 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 bfe9fcaa5c5836fa77bcee72a52df1bfdf7b65d6..f1408fe4a109492c8ee7907cfcca03bf673cd400 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 e2fc7ae342ed707821e4a916082d74b72376565c..112e5f2ac8d3edcca99816a90b6e9178b660a210 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 8d69f33a783aff3db586d012cc2ac87df11cb1e6..3a94a50c4c3c3c9116c117b5b65f1d827692a71a 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 4cc0b7cd009a5adb1c4d87313e95191fdf4d0883..0fcc8a28cac0b15db4afa7fd7a682bc5d5b516e2 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 e92627112c745cc086cb6b0c45e2c45fb2fe6b5c..ddd2e64b83f6c45be03b8cbf7024ada4b3b61c45 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 a5148ec7769a9693794d1db5dd39e2d9214decc5..0306de78a920424a4760a89fdbd9df9f17c6e3a3 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 d79f768e15018191b5dbf0aa4636354f4efdedb2..2ae8762450b995a88aaf981b3da9531114ae68e4 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 d66a67a61c9592d2faeac17d26c7b7dc84b4f451..e0d15b0ad050970783b46713449bb347a9aa7dd8 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); } - - 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; + }, (err) => { + return Object.create(null); + }) + : TPromise.as(Object.create(null)); + + 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; - }); - 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 - ) - ); - // 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([]) - ); + 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 TPromise.join([finalBuiltinExtensions, userExtensions, developedExtensions]) - .then((extensionDescriptions: IExtensionDescription[][]) => { + 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, translations), log + ) + : TPromise.as([]) + ); + + 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 {