feat: add support for TypeScript 3.3 (and drop older versions) (#29004)

https://blogs.msdn.microsoft.com/typescript/2019/01/31/announcing-typescript-3-3/

BREAKING CHANGE: TypeScript 3.1 and 3.2 are no longer supported.

Please update your TypeScript version to 3.3

PR Close #29004
This commit is contained in:
Igor Minar 2019-02-02 01:02:16 -08:00 committed by Kara Erickson
parent 9a7f5601fa
commit 75748d6044
21 changed files with 59 additions and 167 deletions

View File

@ -157,7 +157,7 @@
"tree-kill": "^1.1.0", "tree-kill": "^1.1.0",
"ts-node": "^3.3.0", "ts-node": "^3.3.0",
"tslint": "~5.9.1", "tslint": "~5.9.1",
"typescript": "^3.2.2", "typescript": "~3.3.3333",
"uglify-js": "^3.0.15", "uglify-js": "^3.0.15",
"unist-util-filter": "^0.2.1", "unist-util-filter": "^0.2.1",
"unist-util-source": "^1.0.1", "unist-util-source": "^1.0.1",

View File

@ -10125,6 +10125,11 @@ typescript@^2.4.1:
version "2.6.2" version "2.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4"
typescript@~3.3.3333:
version "3.3.3333"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz#171b2c5af66c59e9431199117a3bcadc66fdcfd6"
integrity sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==
uglify-es@^3.3.4: uglify-es@^3.3.4:
version "3.3.9" version "3.3.9"
resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"

View File

@ -26,6 +26,11 @@ function testBazel() {
# Create project # Create project
ng new demo --collection=@angular/bazel --defaults --skip-git --skip-install --style=scss ng new demo --collection=@angular/bazel --defaults --skip-git --skip-install --style=scss
cd demo cd demo
# Do an initial install to ensure packages like node-sass are built.
yarn
# Force more recent TS version until new Angular CLI projects also use it.
# --ignore-scripts is necessary because there is a postinstall script that uses ngc.
yarn add typescript@3.3.3333 --dev --ignore-scripts
installLocalPackages installLocalPackages
yarn webdriver-manager update --gecko=false --standalone=false ${CI_CHROMEDRIVER_VERSION_ARG:---versions.chrome 2.45} yarn webdriver-manager update --gecko=false --standalone=false ${CI_CHROMEDRIVER_VERSION_ARG:---versions.chrome 2.45}
ng generate component widget --style=css ng generate component widget --style=css

View File

@ -22,7 +22,7 @@
"@types/jasmine": "2.8.8", "@types/jasmine": "2.8.8",
"@types/source-map": "0.5.1", "@types/source-map": "0.5.1",
"protractor": "5.1.2", "protractor": "5.1.2",
"typescript": "3.1.1" "typescript": "3.3.3333"
}, },
"scripts": { "scripts": {
"postinstall": "ngc -p ./angular-metadata.tsconfig.json", "postinstall": "ngc -p ./angular-metadata.tsconfig.json",

View File

@ -1,31 +0,0 @@
{
"name": "angular-integration",
"description": "Assert that users with TypeScript 3.1 can type-check an Angular application",
"version": "0.0.0",
"license": "MIT",
"dependencies": {
"@angular/animations": "file:../../dist/packages-dist/animations",
"@angular/common": "file:../../dist/packages-dist/common",
"@angular/compiler": "file:../../dist/packages-dist/compiler",
"@angular/compiler-cli": "file:../../dist/packages-dist/compiler-cli",
"@angular/core": "file:../../dist/packages-dist/core",
"@angular/elements": "file:../../dist/packages-dist/elements",
"@angular/forms": "file:../../dist/packages-dist/forms",
"@angular/http": "file:../../dist/packages-dist/http",
"@angular/platform-browser": "file:../../dist/packages-dist/platform-browser",
"@angular/platform-browser-dynamic": "file:../../dist/packages-dist/platform-browser-dynamic",
"@angular/platform-server": "file:../../dist/packages-dist/platform-server",
"@angular/platform-webworker": "file:../../dist/packages-dist/platform-webworker",
"@angular/platform-webworker-dynamic": "file:../../dist/packages-dist/platform-webworker-dynamic",
"@angular/router": "file:../../dist/packages-dist/router",
"@angular/service-worker": "file:../../dist/packages-dist/service-worker",
"@angular/upgrade": "file:../../dist/packages-dist/upgrade",
"@types/jasmine": "2.5.41",
"rxjs": "file:../../node_modules/rxjs",
"typescript": "3.1.x",
"zone.js": "file:../../node_modules/zone.js"
},
"scripts": {
"test": "tsc"
}
}

View File

@ -1,24 +0,0 @@
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"outDir": "../../dist/typings_test_ts31/",
"rootDir": ".",
"target": "es5",
"lib": [
"es5",
"dom",
"es2015.collection",
"es2015.iterable",
"es2015.promise"
],
"types": [],
"strictNullChecks": true
},
"files": [
"include-all.ts",
"node_modules/@types/jasmine/index.d.ts"
]
}

View File

@ -1,73 +0,0 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import * as animations from '@angular/animations';
import * as animationsBrowser from '@angular/animations/browser';
import * as animationsBrowserTesting from '@angular/animations/browser/testing';
import * as common from '@angular/common';
import * as commonHttp from '@angular/common/http';
import * as commonTesting from '@angular/common/testing';
import * as commonHttpTesting from '@angular/common/testing';
import * as compiler from '@angular/compiler';
import * as compilerTesting from '@angular/compiler/testing';
import * as core from '@angular/core';
import * as coreTesting from '@angular/core/testing';
import * as elements from '@angular/elements';
import * as forms from '@angular/forms';
import * as http from '@angular/http';
import * as httpTesting from '@angular/http/testing';
import * as platformBrowser from '@angular/platform-browser';
import * as platformBrowserDynamic from '@angular/platform-browser-dynamic';
import * as platformBrowserDynamicTesting from '@angular/platform-browser-dynamic/testing';
import * as platformBrowserAnimations from '@angular/platform-browser/animations';
import * as platformBrowserTesting from '@angular/platform-browser/testing';
import * as platformServer from '@angular/platform-server';
import * as platformServerTesting from '@angular/platform-server/testing';
import * as platformWebworker from '@angular/platform-webworker';
import * as platformWebworkerDynamic from '@angular/platform-webworker-dynamic';
import * as router from '@angular/router';
import * as routerTesting from '@angular/router/testing';
import * as routerUpgrade from '@angular/router/upgrade';
import * as serviceWorker from '@angular/service-worker';
import * as upgrade from '@angular/upgrade';
import * as upgradeStatic from '@angular/upgrade/static';
export default {
animations,
animationsBrowser,
animationsBrowserTesting,
common,
commonTesting,
commonHttp,
commonHttpTesting,
compiler,
compilerTesting,
core,
coreTesting,
elements,
forms,
http,
httpTesting,
platformBrowser,
platformBrowserTesting,
platformBrowserDynamic,
platformBrowserDynamicTesting,
platformBrowserAnimations,
platformServer,
platformServerTesting,
platformWebworker,
platformWebworkerDynamic,
router,
routerTesting,
routerUpgrade,
serviceWorker,
upgrade,
upgradeStatic
};

View File

@ -1,6 +1,6 @@
{ {
"name": "angular-integration", "name": "angular-integration",
"description": "Assert that users with TypeScript 3.2 can type-check an Angular application", "description": "Assert that users with TypeScript 3.3 can type-check an Angular application",
"version": "0.0.0", "version": "0.0.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -22,7 +22,7 @@
"@angular/upgrade": "file:../../dist/packages-dist/upgrade", "@angular/upgrade": "file:../../dist/packages-dist/upgrade",
"@types/jasmine": "2.5.41", "@types/jasmine": "2.5.41",
"rxjs": "file:../../node_modules/rxjs", "rxjs": "file:../../node_modules/rxjs",
"typescript": "3.2.x", "typescript": "3.3.x",
"zone.js": "file:../../node_modules/zone.js" "zone.js": "file:../../node_modules/zone.js"
}, },
"scripts": { "scripts": {

View File

@ -94,9 +94,9 @@
"source-map": "^0.6.1", "source-map": "^0.6.1",
"source-map-support": "0.5.9", "source-map-support": "0.5.9",
"systemjs": "0.18.10", "systemjs": "0.18.10",
"tsickle": "0.34.0", "tsickle": "0.34.3",
"tslib": "^1.9.0", "tslib": "^1.9.0",
"typescript": "~3.2.2", "typescript": "~3.3.3333",
"xhr2": "0.1.4", "xhr2": "0.1.4",
"yargs": "9.0.1", "yargs": "9.0.1",
"zone.js": "^0.8.26" "zone.js": "^0.8.26"

View File

@ -28,11 +28,11 @@
"@types/node": "6.0.84", "@types/node": "6.0.84",
"semver": "^5.6.0", "semver": "^5.6.0",
"shelljs": "0.8.2", "shelljs": "0.8.2",
"tsickle": "0.34.0" "tsickle": "0.34.3"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/compiler-cli": "0.0.0-PLACEHOLDER", "@angular/compiler-cli": "0.0.0-PLACEHOLDER",
"typescript": ">=3.1.1 <3.3" "typescript": ">=3.3.3333 <3.4"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -300,7 +300,7 @@ export * from './index';
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
/** /**
* @license * @license
@ -316,7 +316,7 @@ export { MyModule } from './mymodule';
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
/** /**
* @license * @license
@ -337,7 +337,7 @@ MyModule.decorators = [
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
/** /**
* @license * @license
@ -371,7 +371,7 @@ export * from './index';
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
/** /**
* @license * @license
@ -514,7 +514,7 @@ import { NgModule } from '@angular/core';
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
class SecondaryModule { class SecondaryModule {
} }
@ -526,7 +526,7 @@ const a = 1;
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
/** /**
@ -549,7 +549,7 @@ import { NgModule } from '@angular/core';
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
class MyModule { class MyModule {
} }
@ -559,7 +559,7 @@ MyModule.decorators = [
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
/** /**

View File

@ -24,7 +24,7 @@
}, },
"peerDependencies": { "peerDependencies": {
"@angular/compiler": "0.0.0-PLACEHOLDER", "@angular/compiler": "0.0.0-PLACEHOLDER",
"typescript": ">=3.1.1 <3.3" "typescript": ">=3.3.3333 <3.4"
}, },
"engines": { "engines": {
"node": ">=8.0" "node": ">=8.0"

View File

@ -44,6 +44,9 @@ export class GeneratedShimsHostWrapper implements ts.CompilerHost {
if (delegate.directoryExists !== undefined) { if (delegate.directoryExists !== undefined) {
this.directoryExists = (directoryName: string) => delegate.directoryExists !(directoryName); this.directoryExists = (directoryName: string) => delegate.directoryExists !(directoryName);
} }
if (delegate.getDirectories !== undefined) {
this.getDirectories = (path: string) => delegate.getDirectories !(path);
}
} }
resolveTypeReferenceDirectives?: resolveTypeReferenceDirectives?:
@ -84,7 +87,7 @@ export class GeneratedShimsHostWrapper implements ts.CompilerHost {
getCurrentDirectory(): string { return this.delegate.getCurrentDirectory(); } getCurrentDirectory(): string { return this.delegate.getCurrentDirectory(); }
getDirectories(path: string): string[] { return this.delegate.getDirectories(path); } getDirectories?: (path: string) => string[];
getCanonicalFileName(fileName: string): string { getCanonicalFileName(fileName: string): string {
return this.delegate.getCanonicalFileName(fileName); return this.delegate.getCanonicalFileName(fileName);

View File

@ -41,6 +41,9 @@ export class SyntheticFilesCompilerHost implements PluginCompilerHost {
this.syntheticFiles.set(generated.fileName, generated); this.syntheticFiles.set(generated.fileName, generated);
} }
} }
if (delegate.getDirectories !== undefined) {
this.getDirectories = (path: string) => delegate.getDirectories !(path);
}
} }
fileExists(filePath: string): boolean { fileExists(filePath: string): boolean {
@ -88,7 +91,7 @@ export class SyntheticFilesCompilerHost implements PluginCompilerHost {
getNewLine(): string { return this.delegate.getNewLine(); } getNewLine(): string { return this.delegate.getNewLine(); }
getDirectories(path: string) { return this.delegate.getDirectories(path); } getDirectories?: (path: string) => string[];
readFile(fileName: string): string|undefined { return this.delegate.readFile(fileName); } readFile(fileName: string): string|undefined { return this.delegate.readFile(fileName); }

View File

@ -34,6 +34,10 @@ export class TypeCheckProgramHost implements ts.CompilerHost {
// as efficient as possible. To support both of these requirements, all of the program's // as efficient as possible. To support both of these requirements, all of the program's
// source files are loaded into the cache up front. // source files are loaded into the cache up front.
program.getSourceFiles().forEach(file => { this.sfCache.set(file.fileName, file); }); program.getSourceFiles().forEach(file => { this.sfCache.set(file.fileName, file); });
if (delegate.getDirectories !== undefined) {
this.getDirectories = (path: string) => delegate.getDirectories !(path);
}
} }
getSourceFile( getSourceFile(
@ -77,7 +81,7 @@ export class TypeCheckProgramHost implements ts.CompilerHost {
getCurrentDirectory(): string { return this.delegate.getCurrentDirectory(); } getCurrentDirectory(): string { return this.delegate.getCurrentDirectory(); }
getDirectories(path: string): string[] { return this.delegate.getDirectories(path); } getDirectories?: (path: string) => string[];
getCanonicalFileName(fileName: string): string { getCanonicalFileName(fileName: string): string {
return this.delegate.getCanonicalFileName(fileName); return this.delegate.getCanonicalFileName(fileName);

View File

@ -72,14 +72,14 @@ const defaultEmitCallback: TsEmitCallback =
* Minimum supported TypeScript version * Minimum supported TypeScript version
* supported typescript version v, v >= MIN_TS_VERSION * supported typescript version v, v >= MIN_TS_VERSION
*/ */
const MIN_TS_VERSION = '3.1.1'; const MIN_TS_VERSION = '3.3.3333';
/** /**
* Supremum of supported TypeScript versions * Supremum of supported TypeScript versions
* supported typescript version v, v < MAX_TS_VERSION * supported typescript version v, v < MAX_TS_VERSION
* MAX_TS_VERSION is not considered as a supported TypeScript version * MAX_TS_VERSION is not considered as a supported TypeScript version
*/ */
const MAX_TS_VERSION = '3.3.0'; const MAX_TS_VERSION = '3.4.0';
class AngularCompilerProgram implements Program { class AngularCompilerProgram implements Program {
private rootNames: string[]; private rootNames: string[];
@ -463,14 +463,14 @@ class AngularCompilerProgram implements Program {
// Match behavior of tsc: only produce emit diagnostics if it would block // Match behavior of tsc: only produce emit diagnostics if it would block
// emit. If noEmitOnError is false, the emit will happen in spite of any // emit. If noEmitOnError is false, the emit will happen in spite of any
// errors, so we should not report them. // errors, so we should not report them.
if (this.options.noEmitOnError === true) { if (emitResult && this.options.noEmitOnError === true) {
// translate the diagnostics in the emitResult as well. // translate the diagnostics in the emitResult as well.
const translatedEmitDiags = translateDiagnostics(this.hostAdapter, emitResult.diagnostics); const translatedEmitDiags = translateDiagnostics(this.hostAdapter, emitResult.diagnostics);
emitResult.diagnostics = translatedEmitDiags.ts.concat( emitResult.diagnostics = translatedEmitDiags.ts.concat(
this.structuralDiagnostics.concat(translatedEmitDiags.ng).map(ngToTsDiagnostic)); this.structuralDiagnostics.concat(translatedEmitDiags.ng).map(ngToTsDiagnostic));
} }
if (!outSrcMapping.length) { if (emitResult && !outSrcMapping.length) {
// if no files were emitted by TypeScript, also don't emit .json files // if no files were emitted by TypeScript, also don't emit .json files
emitResult.diagnostics = emitResult.diagnostics =
emitResult.diagnostics.concat([createMessageDiagnostic(`Emitted no files.`)]); emitResult.diagnostics.concat([createMessageDiagnostic(`Emitted no files.`)]);
@ -506,7 +506,7 @@ class AngularCompilerProgram implements Program {
}); });
} }
const emitEnd = Date.now(); const emitEnd = Date.now();
if (this.options.diagnostics) { if (emitResult && this.options.diagnostics) {
emitResult.diagnostics = emitResult.diagnostics.concat([createMessageDiagnostic([ emitResult.diagnostics = emitResult.diagnostics.concat([createMessageDiagnostic([
`Emitted in ${emitEnd - emitStart}ms`, `Emitted in ${emitEnd - emitStart}ms`,
`- ${emittedUserTsCount} user ts files`, `- ${emittedUserTsCount} user ts files`,

View File

@ -2803,7 +2803,7 @@ describe('ngtsc behavioral tests', () => {
const fileoverview = ` const fileoverview = `
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
`; `;
expect(trim(jsContents).startsWith(trim(fileoverview))).toBeTruthy(); expect(trim(jsContents).startsWith(trim(fileoverview))).toBeTruthy();
@ -2820,7 +2820,7 @@ describe('ngtsc behavioral tests', () => {
const fileoverview = ` const fileoverview = `
/** /**
* @fileoverview added by tsickle * @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
`; `;
expect(trim(jsContents).startsWith(trim(fileoverview))).toBeTruthy(); expect(trim(jsContents).startsWith(trim(fileoverview))).toBeTruthy();
@ -2852,7 +2852,7 @@ describe('ngtsc behavioral tests', () => {
* @fileoverview Some Comp overview * @fileoverview Some Comp overview
* @modName {some_comp} * @modName {some_comp}
* *
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
`; `;
expect(trim(jsContents).startsWith(trim(fileoverview))).toBeTruthy(); expect(trim(jsContents).startsWith(trim(fileoverview))).toBeTruthy();
@ -2880,7 +2880,7 @@ describe('ngtsc behavioral tests', () => {
* @fileoverview Some Comp overview * @fileoverview Some Comp overview
* @modName {some_comp} * @modName {some_comp}
* *
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/ */
`; `;
expect(trim(jsContents).startsWith(trim(fileoverview))).toBeTruthy(); expect(trim(jsContents).startsWith(trim(fileoverview))).toBeTruthy();

View File

@ -27,7 +27,7 @@
"chai": "^4.1.2", "chai": "^4.1.2",
"jasmine": "^3.1.0", "jasmine": "^3.1.0",
"source-map-support": "^0.5.9", "source-map-support": "^0.5.9",
"typescript": "~3.2.2" "typescript": "~3.3.3333"
}, },
"repository": {}, "repository": {},
"keywords": [ "keywords": [

View File

@ -10267,10 +10267,10 @@ try-require@^1.0.0:
resolved "https://registry.yarnpkg.com/try-require/-/try-require-1.2.1.tgz#34489a2cac0c09c1cc10ed91ba011594d4333be2" resolved "https://registry.yarnpkg.com/try-require/-/try-require-1.2.1.tgz#34489a2cac0c09c1cc10ed91ba011594d4333be2"
integrity sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I= integrity sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I=
tsickle@0.34.0: tsickle@0.34.3:
version "0.34.0" version "0.34.3"
resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.34.0.tgz#10187fa6401a288a65efb93a60bf28b2ff95f90b" resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.34.3.tgz#8085067a26d7bff466ddadb2eba18849b49159b8"
integrity sha512-O3wCPRtL18Hc/ZBnaiKwmmjVzeCWTOTpsi0btfC7FWL3RnXpxLPxD6hoJ0QEXuSfG/0QJk+MWNjqT9N6fOyyIg== integrity sha512-mb1v3nsr6rYaZky22xj0d6qv4ogAR40Bc6r37jwWOg3bEIO/ZppEFZiEADs/NNVLcWTPgmNmPZgaX5CfAH6oXA==
dependencies: dependencies:
minimist "^1.2.0" minimist "^1.2.0"
mkdirp "^0.5.1" mkdirp "^0.5.1"
@ -10383,10 +10383,10 @@ typescript@~3.1.6:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68"
integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==
typescript@~3.2.2: typescript@~3.3.3333:
version "3.2.2" version "3.3.3333"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz#171b2c5af66c59e9431199117a3bcadc66fdcfd6"
integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg== integrity sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==
uglify-es@^3.3.9: uglify-es@^3.3.9:
version "3.3.9" version "3.3.9"