diff --git a/build/lib/i18n.js b/build/lib/i18n.js
index 2e7415cd721..6ab4c0f5a30 100644
--- a/build/lib/i18n.js
+++ b/build/lib/i18n.js
@@ -101,161 +101,158 @@ class TextModel {
return this._lines;
}
}
-let XLF = /** @class */ (() => {
- class XLF {
- constructor(project) {
- this.project = project;
- this.buffer = [];
- this.files = Object.create(null);
- this.numberOfMessages = 0;
+class XLF {
+ constructor(project) {
+ this.project = project;
+ this.buffer = [];
+ this.files = Object.create(null);
+ this.numberOfMessages = 0;
+ }
+ toString() {
+ this.appendHeader();
+ for (let file in this.files) {
+ this.appendNewLine(``, 2);
+ for (let item of this.files[file]) {
+ this.addStringItem(file, item);
+ }
+ this.appendNewLine('', 2);
}
- toString() {
- this.appendHeader();
- for (let file in this.files) {
- this.appendNewLine(``, 2);
- for (let item of this.files[file]) {
- this.addStringItem(file, item);
+ this.appendFooter();
+ return this.buffer.join('\r\n');
+ }
+ addFile(original, keys, messages) {
+ if (keys.length === 0) {
+ console.log('No keys in ' + original);
+ return;
+ }
+ if (keys.length !== messages.length) {
+ throw new Error(`Unmatching keys(${keys.length}) and messages(${messages.length}).`);
+ }
+ this.numberOfMessages += keys.length;
+ this.files[original] = [];
+ let existingKeys = new Set();
+ for (let i = 0; i < keys.length; i++) {
+ let key = keys[i];
+ let realKey;
+ let comment;
+ if (Is.string(key)) {
+ realKey = key;
+ comment = undefined;
+ }
+ else if (LocalizeInfo.is(key)) {
+ realKey = key.key;
+ if (key.comment && key.comment.length > 0) {
+ comment = key.comment.map(comment => encodeEntities(comment)).join('\r\n');
}
- this.appendNewLine('', 2);
}
- this.appendFooter();
- return this.buffer.join('\r\n');
- }
- addFile(original, keys, messages) {
- if (keys.length === 0) {
- console.log('No keys in ' + original);
- return;
+ if (!realKey || existingKeys.has(realKey)) {
+ continue;
}
- if (keys.length !== messages.length) {
- throw new Error(`Unmatching keys(${keys.length}) and messages(${messages.length}).`);
- }
- this.numberOfMessages += keys.length;
- this.files[original] = [];
- let existingKeys = new Set();
- for (let i = 0; i < keys.length; i++) {
- let key = keys[i];
- let realKey;
- let comment;
- if (Is.string(key)) {
- realKey = key;
- comment = undefined;
- }
- else if (LocalizeInfo.is(key)) {
- realKey = key.key;
- if (key.comment && key.comment.length > 0) {
- comment = key.comment.map(comment => encodeEntities(comment)).join('\r\n');
- }
- }
- if (!realKey || existingKeys.has(realKey)) {
- continue;
- }
- existingKeys.add(realKey);
- let message = encodeEntities(messages[i]);
- this.files[original].push({ id: realKey, message: message, comment: comment });
- }
- }
- addStringItem(file, item) {
- if (!item.id || item.message === undefined || item.message === null) {
- throw new Error(`No item ID or value specified: ${JSON.stringify(item)}. File: ${file}`);
- }
- if (item.message.length === 0) {
- log(`Item with id ${item.id} in file ${file} has an empty message.`);
- }
- this.appendNewLine(``, 4);
- this.appendNewLine(`${item.message}`, 6);
- if (item.comment) {
- this.appendNewLine(`${item.comment}`, 6);
- }
- this.appendNewLine('', 4);
- }
- appendHeader() {
- this.appendNewLine('', 0);
- this.appendNewLine('', 0);
- }
- appendFooter() {
- this.appendNewLine('', 0);
- }
- appendNewLine(content, indent) {
- let line = new Line(indent);
- line.append(content);
- this.buffer.push(line.toString());
+ existingKeys.add(realKey);
+ let message = encodeEntities(messages[i]);
+ this.files[original].push({ id: realKey, message: message, comment: comment });
}
}
- XLF.parsePseudo = function (xlfString) {
- return new Promise((resolve) => {
- let parser = new xml2js.Parser();
- let files = [];
- parser.parseString(xlfString, function (_err, result) {
- const fileNodes = result['xliff']['file'];
- fileNodes.forEach(file => {
- const originalFilePath = file.$.original;
- const messages = {};
- const transUnits = file.body[0]['trans-unit'];
- if (transUnits) {
- transUnits.forEach((unit) => {
- const key = unit.$.id;
- const val = pseudify(unit.source[0]['_'].toString());
- if (key && val) {
- messages[key] = decodeEntities(val);
- }
- });
- files.push({ messages: messages, originalFilePath: originalFilePath, language: 'ps' });
- }
- });
- resolve(files);
- });
- });
- };
- XLF.parse = function (xlfString) {
- return new Promise((resolve, reject) => {
- let parser = new xml2js.Parser();
- let files = [];
- parser.parseString(xlfString, function (err, result) {
- if (err) {
- reject(new Error(`XLF parsing error: Failed to parse XLIFF string. ${err}`));
- }
- const fileNodes = result['xliff']['file'];
- if (!fileNodes) {
- reject(new Error(`XLF parsing error: XLIFF file does not contain "xliff" or "file" node(s) required for parsing.`));
- }
- fileNodes.forEach((file) => {
- const originalFilePath = file.$.original;
- if (!originalFilePath) {
- reject(new Error(`XLF parsing error: XLIFF file node does not contain original attribute to determine the original location of the resource file.`));
- }
- let language = file.$['target-language'];
- if (!language) {
- reject(new Error(`XLF parsing error: XLIFF file node does not contain target-language attribute to determine translated language.`));
- }
- const messages = {};
- const transUnits = file.body[0]['trans-unit'];
- if (transUnits) {
- transUnits.forEach((unit) => {
- const key = unit.$.id;
- if (!unit.target) {
- return; // No translation available
- }
- let val = unit.target[0];
- if (typeof val !== 'string') {
- val = val._;
- }
- if (key && val) {
- messages[key] = decodeEntities(val);
- }
- else {
- reject(new Error(`XLF parsing error: XLIFF file ${originalFilePath} does not contain full localization data. ID or target translation for one of the trans-unit nodes is not present.`));
- }
- });
- files.push({ messages: messages, originalFilePath: originalFilePath, language: language.toLowerCase() });
- }
- });
- resolve(files);
- });
- });
- };
- return XLF;
-})();
+ addStringItem(file, item) {
+ if (!item.id || item.message === undefined || item.message === null) {
+ throw new Error(`No item ID or value specified: ${JSON.stringify(item)}. File: ${file}`);
+ }
+ if (item.message.length === 0) {
+ log(`Item with id ${item.id} in file ${file} has an empty message.`);
+ }
+ this.appendNewLine(``, 4);
+ this.appendNewLine(`${item.message}`, 6);
+ if (item.comment) {
+ this.appendNewLine(`${item.comment}`, 6);
+ }
+ this.appendNewLine('', 4);
+ }
+ appendHeader() {
+ this.appendNewLine('', 0);
+ this.appendNewLine('', 0);
+ }
+ appendFooter() {
+ this.appendNewLine('', 0);
+ }
+ appendNewLine(content, indent) {
+ let line = new Line(indent);
+ line.append(content);
+ this.buffer.push(line.toString());
+ }
+}
exports.XLF = XLF;
+XLF.parsePseudo = function (xlfString) {
+ return new Promise((resolve) => {
+ let parser = new xml2js.Parser();
+ let files = [];
+ parser.parseString(xlfString, function (_err, result) {
+ const fileNodes = result['xliff']['file'];
+ fileNodes.forEach(file => {
+ const originalFilePath = file.$.original;
+ const messages = {};
+ const transUnits = file.body[0]['trans-unit'];
+ if (transUnits) {
+ transUnits.forEach((unit) => {
+ const key = unit.$.id;
+ const val = pseudify(unit.source[0]['_'].toString());
+ if (key && val) {
+ messages[key] = decodeEntities(val);
+ }
+ });
+ files.push({ messages: messages, originalFilePath: originalFilePath, language: 'ps' });
+ }
+ });
+ resolve(files);
+ });
+ });
+};
+XLF.parse = function (xlfString) {
+ return new Promise((resolve, reject) => {
+ let parser = new xml2js.Parser();
+ let files = [];
+ parser.parseString(xlfString, function (err, result) {
+ if (err) {
+ reject(new Error(`XLF parsing error: Failed to parse XLIFF string. ${err}`));
+ }
+ const fileNodes = result['xliff']['file'];
+ if (!fileNodes) {
+ reject(new Error(`XLF parsing error: XLIFF file does not contain "xliff" or "file" node(s) required for parsing.`));
+ }
+ fileNodes.forEach((file) => {
+ const originalFilePath = file.$.original;
+ if (!originalFilePath) {
+ reject(new Error(`XLF parsing error: XLIFF file node does not contain original attribute to determine the original location of the resource file.`));
+ }
+ let language = file.$['target-language'];
+ if (!language) {
+ reject(new Error(`XLF parsing error: XLIFF file node does not contain target-language attribute to determine translated language.`));
+ }
+ const messages = {};
+ const transUnits = file.body[0]['trans-unit'];
+ if (transUnits) {
+ transUnits.forEach((unit) => {
+ const key = unit.$.id;
+ if (!unit.target) {
+ return; // No translation available
+ }
+ let val = unit.target[0];
+ if (typeof val !== 'string') {
+ val = val._;
+ }
+ if (key && val) {
+ messages[key] = decodeEntities(val);
+ }
+ else {
+ reject(new Error(`XLF parsing error: XLIFF file ${originalFilePath} does not contain full localization data. ID or target translation for one of the trans-unit nodes is not present.`));
+ }
+ });
+ files.push({ messages: messages, originalFilePath: originalFilePath, language: language.toLowerCase() });
+ }
+ });
+ resolve(files);
+ });
+ });
+};
class Limiter {
constructor(maxDegreeOfParalellism) {
this.maxDegreeOfParalellism = maxDegreeOfParalellism;
diff --git a/build/package.json b/build/package.json
index ecff6c7a182..3daba3dd482 100644
--- a/build/package.json
+++ b/build/package.json
@@ -44,7 +44,7 @@
"minimist": "^1.2.3",
"request": "^2.85.0",
"terser": "4.3.8",
- "typescript": "^3.9.3",
+ "typescript": "^4.0.0-dev.20200612",
"vsce": "1.48.0",
"vscode-telemetry-extractor": "^1.5.4",
"xml2js": "^0.4.17"
diff --git a/build/yarn.lock b/build/yarn.lock
index 8f615cb4e6c..3f7d72a7438 100644
--- a/build/yarn.lock
+++ b/build/yarn.lock
@@ -2519,10 +2519,10 @@ typescript@^3.0.1:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977"
integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==
-typescript@^3.9.3:
- version "3.9.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a"
- integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==
+typescript@^4.0.0-dev.20200612:
+ version "4.0.0-dev.20200612"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.0-dev.20200612.tgz#6f1f1a8508eae00ef79b57116886dc05051b398e"
+ integrity sha512-o69PZMHrijfGcfvPmTJjLOmYZYccfpDcpFohMmBVLZLOdtRWzjOZSfymGq1J13w6tRlvnLdREpdH40cCnhURow==
typical@^4.0.0:
version "4.0.0"
diff --git a/package.json b/package.json
index bd9b3997a67..885d01f27bf 100644
--- a/package.json
+++ b/package.json
@@ -88,8 +88,8 @@
"@types/winreg": "^1.2.30",
"@types/yauzl": "^2.9.1",
"@types/yazl": "^2.4.2",
- "@typescript-eslint/eslint-plugin": "3.1.0",
- "@typescript-eslint/parser": "^3.1.0",
+ "@typescript-eslint/eslint-plugin": "3.2.0",
+ "@typescript-eslint/parser": "^3.2.1-alpha.2",
"ansi-colors": "^3.2.3",
"asar": "^0.14.0",
"chromium-pickle-js": "^0.2.0",
@@ -154,7 +154,7 @@
"source-map": "^0.4.4",
"style-loader": "^1.0.0",
"ts-loader": "^4.4.2",
- "typescript": "^3.9.3",
+ "typescript": "^4.0.0-dev.20200612",
"typescript-formatter": "7.1.0",
"underscore": "^1.8.2",
"vinyl": "^2.0.0",
diff --git a/src/vs/base/test/node/path.test.ts b/src/vs/base/test/node/path.test.ts
index 14ef9c92df1..3150f8d6094 100644
--- a/src/vs/base/test/node/path.test.ts
+++ b/src/vs/base/test/node/path.test.ts
@@ -164,8 +164,7 @@ suite('Paths (Node Implementation)', () => {
os = 'posix';
}
const message =
- `path.${os}.join(${test[0].map(JSON.stringify).join(',')})\n expect=${
- JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
+ `path.${os}.join(${test[0].map(JSON.stringify).join(',')})\n expect=${JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
if (actual !== expected && actualAlt !== expected) {
failures.push(`\n${message}`);
}
@@ -319,8 +318,7 @@ suite('Paths (Node Implementation)', () => {
os = 'posix';
}
const actual = extname(input);
- const message = `path.${os}.extname(${JSON.stringify(input)})\n expect=${
- JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
+ const message = `path.${os}.extname(${JSON.stringify(input)})\n expect=${JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
if (actual !== expected) {
failures.push(`\n${message}`);
}
@@ -328,8 +326,7 @@ suite('Paths (Node Implementation)', () => {
{
const input = `C:${test[0].replace(slashRE, '\\')}`;
const actual = path.win32.extname(input);
- const message = `path.win32.extname(${JSON.stringify(input)})\n expect=${
- JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
+ const message = `path.win32.extname(${JSON.stringify(input)})\n expect=${JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
if (actual !== expected) {
failures.push(`\n${message}`);
}
@@ -416,8 +413,7 @@ suite('Paths (Node Implementation)', () => {
const expected = test[1];
const message =
- `path.${os}.resolve(${test[0].map(JSON.stringify).join(',')})\n expect=${
- JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
+ `path.${os}.resolve(${test[0].map(JSON.stringify).join(',')})\n expect=${JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
if (actual !== expected && actualAlt !== expected) {
failures.push(`\n${message}`);
}
@@ -585,9 +581,7 @@ suite('Paths (Node Implementation)', () => {
const actual = relative(test[0], test[1]);
const expected = test[2];
const os = relative === path.win32.relative ? 'win32' : 'posix';
- const message = `path.${os}.relative(${
- test.slice(0, 2).map(JSON.stringify).join(',')})\n expect=${
- JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
+ const message = `path.${os}.relative(${test.slice(0, 2).map(JSON.stringify).join(',')})\n expect=${JSON.stringify(expected)}\n actual=${JSON.stringify(actual)}`;
if (actual !== expected) {
failures.push(`\n${message}`);
}
diff --git a/src/vs/platform/instantiation/common/instantiationService.ts b/src/vs/platform/instantiation/common/instantiationService.ts
index 76ea96249b9..30ad4283515 100644
--- a/src/vs/platform/instantiation/common/instantiationService.ts
+++ b/src/vs/platform/instantiation/common/instantiationService.ts
@@ -96,8 +96,7 @@ export class InstantiationService implements IInstantiationService {
// check for argument mismatches, adjust static args if needed
if (args.length !== firstServiceArgPos) {
- console.warn(`[createInstance] First service dependency of ${ctor.name} at position ${
- firstServiceArgPos + 1} conflicts with ${args.length} static arguments`);
+ console.warn(`[createInstance] First service dependency of ${ctor.name} at position ${firstServiceArgPos + 1} conflicts with ${args.length} static arguments`);
let delta = firstServiceArgPos - args.length;
if (delta > 0) {
diff --git a/yarn.lock b/yarn.lock
index 283315f8e58..b14decdc251 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -340,41 +340,64 @@
dependencies:
"@types/node" "*"
-"@typescript-eslint/eslint-plugin@3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.1.0.tgz#4ac00ecca3bbea740c577f1843bc54fa69c3def2"
- integrity sha512-D52KwdgkjYc+fmTZKW7CZpH5ZBJREJKZXRrveMiRCmlzZ+Rw9wRVJ1JAmHQ9b/+Ehy1ZeaylofDB9wwXUt83wg==
+"@typescript-eslint/eslint-plugin@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.2.0.tgz#7fb997f391af32ae6ca1dbe56bcefe4dd30bda14"
+ integrity sha512-t9RTk/GyYilIXt6BmZurhBzuMT9kLKw3fQoJtK9ayv0tXTlznXEAnx07sCLXdkN3/tZDep1s1CEV95CWuARYWA==
dependencies:
- "@typescript-eslint/experimental-utils" "3.1.0"
+ "@typescript-eslint/experimental-utils" "3.2.0"
functional-red-black-tree "^1.0.1"
regexpp "^3.0.0"
semver "^7.3.2"
tsutils "^3.17.1"
-"@typescript-eslint/experimental-utils@3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.1.0.tgz#2d5dba7c2ac2a3da3bfa3f461ff64de38587a872"
- integrity sha512-Zf8JVC2K1svqPIk1CB/ehCiWPaERJBBokbMfNTNRczCbQSlQXaXtO/7OfYz9wZaecNvdSvVADt6/XQuIxhC79w==
+"@typescript-eslint/experimental-utils@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.2.0.tgz#4dab8fc9f44f059ec073470a81bb4d7d7d51e6c5"
+ integrity sha512-UbJBsk+xO9dIFKtj16+m42EvUvsjZbbgQ2O5xSTSfVT1Z3yGkL90DVu0Hd3029FZ5/uBgl+F3Vo8FAcEcqc6aQ==
dependencies:
"@types/json-schema" "^7.0.3"
- "@typescript-eslint/typescript-estree" "3.1.0"
+ "@typescript-eslint/typescript-estree" "3.2.0"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
-"@typescript-eslint/parser@^3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.1.0.tgz#9c02ba5d88ad2355672f39e6cd4176f172dd47f8"
- integrity sha512-NcDSJK8qTA2tPfyGiPes9HtVKLbksmuYjlgGAUs7Ld2K0swdWibnCq9IJx9kJN8JJdgUJSorFiGaPHBgH81F/Q==
+"@typescript-eslint/experimental-utils@3.2.1-alpha.2+ee9f100a":
+ version "3.2.1-alpha.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.2.1-alpha.2.tgz#39381813f91a27534b58d8c81dc700e97630b21b"
+ integrity sha512-1PdtW30JApIFnxyj/Bxm0EANnEdORXh687Y+mBfSR+7aiUuIbohpM0Inolrmo3+T2iNvB1kjnxwU7CrsEPrmIw==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/typescript-estree" "3.2.1-alpha.2+ee9f100a"
+ eslint-scope "^5.0.0"
+ eslint-utils "^2.0.0"
+
+"@typescript-eslint/parser@^3.2.1-alpha.2":
+ version "3.2.1-alpha.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.2.1-alpha.2.tgz#cefecb8fe2cdd3b5a4505b67ead696528c27bb7a"
+ integrity sha512-im7amaBF3zY0LjUF5Qcl5tkf+hoHwsd+29P4GbU4DTPy/Bhv+f/PvZ2jTPeimzJEZBZCzzCztMqKqfoPjhHIlQ==
dependencies:
"@types/eslint-visitor-keys" "^1.0.0"
- "@typescript-eslint/experimental-utils" "3.1.0"
- "@typescript-eslint/typescript-estree" "3.1.0"
+ "@typescript-eslint/experimental-utils" "3.2.1-alpha.2+ee9f100a"
+ "@typescript-eslint/typescript-estree" "3.2.1-alpha.2+ee9f100a"
eslint-visitor-keys "^1.1.0"
-"@typescript-eslint/typescript-estree@3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.1.0.tgz#eaff52d31e615e05b894f8b9d2c3d8af152a5dd2"
- integrity sha512-+4nfYauqeQvK55PgFrmBWFVYb6IskLyOosYEmhH3mSVhfBp9AIJnjExdgDmKWoOBHRcPM8Ihfm2BFpZf0euUZQ==
+"@typescript-eslint/typescript-estree@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.2.0.tgz#c735f1ca6b4d3cd671f30de8c9bde30843e7ead8"
+ integrity sha512-uh+Y2QO7dxNrdLw7mVnjUqkwO/InxEqwN0wF+Za6eo3coxls9aH9kQ/5rSvW2GcNanebRTmsT5w1/92lAOb1bA==
+ dependencies:
+ debug "^4.1.1"
+ eslint-visitor-keys "^1.1.0"
+ glob "^7.1.6"
+ is-glob "^4.0.1"
+ lodash "^4.17.15"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/typescript-estree@3.2.1-alpha.2+ee9f100a":
+ version "3.2.1-alpha.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.2.1-alpha.2.tgz#188b6c30874b6dc5a26a4d4334ba2b341bdf501f"
+ integrity sha512-uYInLBbPIAgbrxs3C/Is3HTGySmBTLQ02hexD6sb3vOaNykG1H97pHOc20CW8UXeSPosqqF3a5vE3gnrhP+yIQ==
dependencies:
debug "^4.1.1"
eslint-visitor-keys "^1.1.0"
@@ -9264,10 +9287,10 @@ typescript@^2.6.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4"
integrity sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=
-typescript@^3.9.3:
- version "3.9.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a"
- integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==
+typescript@^4.0.0-dev.20200612:
+ version "4.0.0-dev.20200612"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.0-dev.20200612.tgz#6f1f1a8508eae00ef79b57116886dc05051b398e"
+ integrity sha512-o69PZMHrijfGcfvPmTJjLOmYZYccfpDcpFohMmBVLZLOdtRWzjOZSfymGq1J13w6tRlvnLdREpdH40cCnhURow==
uc.micro@^1.0.1, uc.micro@^1.0.3:
version "1.0.3"