From 9b802c210c55b35712c1b4bb727ebb5d59a636c1 Mon Sep 17 00:00:00 2001 From: Mark Pedrotti Date: Thu, 21 Feb 2019 19:12:28 -0500 Subject: [PATCH 1/3] expect, jest-matcher-utils: Improve report when matcher fails, part 9 (#7940) --- CHANGELOG.md | 1 + .../__snapshots__/matchers.test.js.snap | 52 ++++++++++++ .../expect/src/__tests__/matchers.test.js | 53 ++++++++++++ packages/expect/src/matchers.ts | 13 ++- .../__snapshots__/index.test.ts.snap | 60 +++++++++++++- .../src/__tests__/index.test.ts | 80 ++++++++++++++++++- packages/jest-matcher-utils/src/index.ts | 22 +++-- 7 files changed, 259 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b95746b8ceb7..bcfc390b745f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - `[expect]`: Improve report when matcher fails, part 7 ([#7866](https://github.com/facebook/jest/pull/7866)) - `[expect]`: Improve report when matcher fails, part 8 ([#7876](https://github.com/facebook/jest/pull/7876)) +- `[expect]`: Improve report when matcher fails, part 9 ([#7940](https://github.com/facebook/jest/pull/7940)) - `[pretty-format]` Support `React.memo` ([#7891](https://github.com/facebook/jest/pull/7891)) - `[jest-config]` Print error information on preset normalization error ([#7935](https://github.com/facebook/jest/pull/7935)) diff --git a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap index fa555849d062..d1bbf22e1b1d 100644 --- a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap +++ b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap @@ -563,6 +563,58 @@ Expected difference: < 0.005 Received difference: 0.005000099999999952" `; +exports[`.toBeCloseTo() throws: Matcher error promise empty isNot false received 1`] = ` +"expect(received).toBeCloseTo(expected, precision) + +Matcher error: received value must be a number + +Received has type: string +Received has value: \\"\\"" +`; + +exports[`.toBeCloseTo() throws: Matcher error promise empty isNot true expected 1`] = ` +"expect(received).not.toBeCloseTo(expected) + +Matcher error: expected value must be a number + +Expected has value: undefined" +`; + +exports[`.toBeCloseTo() throws: Matcher error promise rejects isNot false expected 1`] = ` +"expect(received).rejects.toBeCloseTo(expected) + +Matcher error: expected value must be a number + +Expected has type: string +Expected has value: \\"0\\"" +`; + +exports[`.toBeCloseTo() throws: Matcher error promise rejects isNot true received 1`] = ` +"expect(received).rejects.not.toBeCloseTo(expected) + +Matcher error: received value must be a number + +Received has type: symbol +Received has value: Symbol(0.1)" +`; + +exports[`.toBeCloseTo() throws: Matcher error promise resolves isNot false received 1`] = ` +"expect(received).resolves.toBeCloseTo(expected, precision) + +Matcher error: received value must be a number + +Received has type: boolean +Received has value: false" +`; + +exports[`.toBeCloseTo() throws: Matcher error promise resolves isNot true expected 1`] = ` +"expect(received).resolves.not.toBeCloseTo(expected, precision) + +Matcher error: expected value must be a number + +Expected has value: null" +`; + exports[`.toBeDefined(), .toBeUndefined() '"a"' is defined 1`] = ` "expect(received).not.toBeDefined() diff --git a/packages/expect/src/__tests__/matchers.test.js b/packages/expect/src/__tests__/matchers.test.js index b57c29447d9b..fa29aba611ed 100644 --- a/packages/expect/src/__tests__/matchers.test.js +++ b/packages/expect/src/__tests__/matchers.test.js @@ -1006,6 +1006,59 @@ describe('.toBeCloseTo()', () => { ).toThrowErrorMatchingSnapshot(); }); }); + + describe('throws: Matcher error', () => { + test('promise empty isNot false received', () => { + const precision = 3; + const expected = 0; + const received = ''; + expect(() => { + jestExpect(received).toBeCloseTo(expected, precision); + }).toThrowErrorMatchingSnapshot(); + }); + + test('promise empty isNot true expected', () => { + const received = 0.1; + // expected is undefined + expect(() => { + jestExpect(received).not.toBeCloseTo(); + }).toThrowErrorMatchingSnapshot(); + }); + + test('promise rejects isNot false expected', () => { + const expected = '0'; + const received = Promise.reject(0.01); + return expect( + jestExpect(received).rejects.toBeCloseTo(expected), + ).rejects.toThrowErrorMatchingSnapshot(); + }); + + test('promise rejects isNot true received', () => { + const expected = 0; + const received = Promise.reject(Symbol('0.1')); + return expect( + jestExpect(received).rejects.not.toBeCloseTo(expected), + ).rejects.toThrowErrorMatchingSnapshot(); + }); + + test('promise resolves isNot false received', () => { + const precision = 3; + const expected = 0; + const received = Promise.resolve(false); + return expect( + jestExpect(received).resolves.toBeCloseTo(expected, precision), + ).rejects.toThrowErrorMatchingSnapshot(); + }); + + test('promise resolves isNot true expected', () => { + const precision = 3; + const expected = null; + const received = Promise.resolve(0.1); + expect( + jestExpect(received).resolves.not.toBeCloseTo(expected, precision), + ).rejects.toThrowErrorMatchingSnapshot(); + }); + }); }); describe('.toMatch()', () => { diff --git a/packages/expect/src/matchers.ts b/packages/expect/src/matchers.ts index 6154f33d7873..adb628dd4231 100644 --- a/packages/expect/src/matchers.ts +++ b/packages/expect/src/matchers.ts @@ -93,13 +93,12 @@ const matchers: MatchersObject = { precision: number = 2, ) { const secondArgument = arguments.length === 3 ? 'precision' : undefined; - const isNot = this.isNot; const options: MatcherHintOptions = { - isNot, + isNot: this.isNot, promise: this.promise, secondArgument, }; - ensureNumbers(received, expected, '.toBeCloseTo'); + ensureNumbers(received, expected, 'toBeCloseTo', options); let pass = false; let expectedDiff = 0; @@ -180,7 +179,7 @@ const matchers: MatchersObject = { isNot, promise: this.promise, }; - ensureNumbers(received, expected, '.toBeGreaterThan'); + ensureNumbers(received, expected, 'toBeGreaterThan', options); const pass = received > expected; @@ -203,7 +202,7 @@ const matchers: MatchersObject = { isNot, promise: this.promise, }; - ensureNumbers(received, expected, '.toBeGreaterThanOrEqual'); + ensureNumbers(received, expected, 'toBeGreaterThanOrEqual', options); const pass = received >= expected; @@ -266,7 +265,7 @@ const matchers: MatchersObject = { isNot, promise: this.promise, }; - ensureNumbers(received, expected, '.toBeLessThan'); + ensureNumbers(received, expected, 'toBeLessThan', options); const pass = received < expected; @@ -285,7 +284,7 @@ const matchers: MatchersObject = { isNot, promise: this.promise, }; - ensureNumbers(received, expected, '.toBeLessThanOrEqual'); + ensureNumbers(received, expected, 'toBeLessThanOrEqual', options); const pass = received <= expected; diff --git a/packages/jest-matcher-utils/src/__tests__/__snapshots__/index.test.ts.snap b/packages/jest-matcher-utils/src/__tests__/__snapshots__/index.test.ts.snap index 6a3d31c4315c..208598d4c2f2 100644 --- a/packages/jest-matcher-utils/src/__tests__/__snapshots__/index.test.ts.snap +++ b/packages/jest-matcher-utils/src/__tests__/__snapshots__/index.test.ts.snap @@ -18,8 +18,8 @@ Expected has type: object Expected has value: {\\"a\\": 1}" `; -exports[`.ensureNumbers() throws error when expected is not a number 1`] = ` -"expect(received)[.not]This matcher(expected) +exports[`.ensureNumbers() throws error when expected is not a number (backward compatibility) 1`] = ` +"expect(received)[.not].toBeCloseTo(expected) Matcher error: expected value must be a number @@ -27,8 +27,8 @@ Expected has type: string Expected has value: \\"not_a_number\\"" `; -exports[`.ensureNumbers() throws error when received is not a number 1`] = ` -"expect(received)[.not]This matcher(expected) +exports[`.ensureNumbers() throws error when received is not a number (backward compatibility) 1`] = ` +"expect(received)[.not].toBeCloseTo(expected) Matcher error: received value must be a number @@ -36,6 +36,58 @@ Received has type: string Received has value: \\"not_a_number\\"" `; +exports[`.ensureNumbers() with options promise empty isNot false received 1`] = ` +"expect(received).toBeCloseTo(expected, precision) + +Matcher error: received value must be a number + +Received has type: string +Received has value: \\"\\"" +`; + +exports[`.ensureNumbers() with options promise empty isNot true expected 1`] = ` +"expect(received).not.toBeCloseTo(expected) + +Matcher error: expected value must be a number + +Expected has value: undefined" +`; + +exports[`.ensureNumbers() with options promise rejects isNot false expected 1`] = ` +"expect(received).rejects.toBeCloseTo(expected) + +Matcher error: expected value must be a number + +Expected has type: string +Expected has value: \\"0\\"" +`; + +exports[`.ensureNumbers() with options promise rejects isNot true received 1`] = ` +"expect(received).rejects.not.toBeCloseTo(expected) + +Matcher error: received value must be a number + +Received has type: symbol +Received has value: Symbol(0.1)" +`; + +exports[`.ensureNumbers() with options promise resolves isNot false received 1`] = ` +"expect(received).resolves.toBeCloseTo(expected) + +Matcher error: received value must be a number + +Received has type: boolean +Received has value: false" +`; + +exports[`.ensureNumbers() with options promise resolves isNot true expected 1`] = ` +"expect(received).resolves.not.toBeCloseTo(expected) + +Matcher error: expected value must be a number + +Expected has value: null" +`; + exports[`.stringify() reduces maxDepth if stringifying very large objects 1`] = `"{\\"a\\": 1, \\"b\\": [Object]}"`; exports[`.stringify() reduces maxDepth if stringifying very large objects 2`] = `"{\\"a\\": 1, \\"b\\": {\\"0\\": \\"test\\", \\"1\\": \\"test\\", \\"2\\": \\"test\\", \\"3\\": \\"test\\", \\"4\\": \\"test\\", \\"5\\": \\"test\\", \\"6\\": \\"test\\", \\"7\\": \\"test\\", \\"8\\": \\"test\\", \\"9\\": \\"test\\"}}"`; diff --git a/packages/jest-matcher-utils/src/__tests__/index.test.ts b/packages/jest-matcher-utils/src/__tests__/index.test.ts index a78976c11a3c..e5f0ad94cca1 100644 --- a/packages/jest-matcher-utils/src/__tests__/index.test.ts +++ b/packages/jest-matcher-utils/src/__tests__/index.test.ts @@ -13,6 +13,7 @@ import { getLabelPrinter, pluralize, stringify, + MatcherHintOptions, } from '../'; describe('.stringify()', () => { @@ -98,19 +99,90 @@ describe('.ensureNumbers()', () => { }).not.toThrow(); }); - test('throws error when expected is not a number', () => { + test('throws error when expected is not a number (backward compatibility)', () => { expect(() => { // @ts-ignore - ensureNumbers(1, 'not_a_number'); + ensureNumbers(1, 'not_a_number', '.toBeCloseTo'); }).toThrowErrorMatchingSnapshot(); }); - test('throws error when received is not a number', () => { + test('throws error when received is not a number (backward compatibility)', () => { expect(() => { // @ts-ignore - ensureNumbers('not_a_number', 3); + ensureNumbers('not_a_number', 3, '.toBeCloseTo'); }).toThrowErrorMatchingSnapshot(); }); + + describe('with options', () => { + const matcherName = 'toBeCloseTo'; + + test('promise empty isNot false received', () => { + const options: MatcherHintOptions = { + isNot: false, + promise: '', + secondArgument: 'precision', + }; + expect(() => { + // @ts-ignore + ensureNumbers('', 0, matcherName, options); + }).toThrowErrorMatchingSnapshot(); + }); + + test('promise empty isNot true expected', () => { + const options: MatcherHintOptions = { + isNot: true, + // promise undefined is equivalent to empty string + }; + expect(() => { + // @ts-ignore + ensureNumbers(0.1, undefined, matcherName, options); + }).toThrowErrorMatchingSnapshot(); + }); + + test('promise rejects isNot false expected', () => { + const options: MatcherHintOptions = { + isNot: false, + promise: 'rejects', + }; + expect(() => { + // @ts-ignore + ensureNumbers(0.01, '0', matcherName, options); + }).toThrowErrorMatchingSnapshot(); + }); + + test('promise rejects isNot true received', () => { + const options: MatcherHintOptions = { + isNot: true, + promise: 'rejects', + }; + expect(() => { + // @ts-ignore + ensureNumbers(Symbol('0.1'), 0, matcherName, options); + }).toThrowErrorMatchingSnapshot(); + }); + + test('promise resolves isNot false received', () => { + const options: MatcherHintOptions = { + isNot: false, + promise: 'resolves', + }; + expect(() => { + // @ts-ignore + ensureNumbers(false, 0, matcherName, options); + }).toThrowErrorMatchingSnapshot(); + }); + + test('promise resolves isNot true expected', () => { + const options: MatcherHintOptions = { + isNot: true, + promise: 'resolves', + }; + expect(() => { + // @ts-ignore + ensureNumbers(0.1, null, matcherName, options); + }).toThrowErrorMatchingSnapshot(); + }); + }); }); describe('.ensureNoExpected()', () => { diff --git a/packages/jest-matcher-utils/src/index.ts b/packages/jest-matcher-utils/src/index.ts index ef5121d7210a..293c93e8d344 100644 --- a/packages/jest-matcher-utils/src/index.ts +++ b/packages/jest-matcher-utils/src/index.ts @@ -130,12 +130,17 @@ export const ensureNoExpected = ( } }; -export const ensureActualIsNumber = (actual: unknown, matcherName: string) => { - matcherName || (matcherName = 'This matcher'); +export const ensureActualIsNumber = ( + actual: unknown, + matcherName: string, + options?: MatcherHintOptions, +) => { if (typeof actual !== 'number') { + // Prepend maybe not only for backward compatibility. + const matcherString = (options ? '' : '[.not]') + matcherName; throw new Error( matcherErrorMessage( - matcherHint('[.not]' + matcherName), + matcherHint(matcherString, undefined, undefined, options), `${RECEIVED_COLOR('received')} value must be a number`, printWithType('Received', actual, printReceived), ), @@ -146,12 +151,14 @@ export const ensureActualIsNumber = (actual: unknown, matcherName: string) => { export const ensureExpectedIsNumber = ( expected: unknown, matcherName: string, + options?: MatcherHintOptions, ) => { - matcherName || (matcherName = 'This matcher'); if (typeof expected !== 'number') { + // Prepend maybe not only for backward compatibility. + const matcherString = (options ? '' : '[.not]') + matcherName; throw new Error( matcherErrorMessage( - matcherHint('[.not]' + matcherName), + matcherHint(matcherString, undefined, undefined, options), `${EXPECTED_COLOR('expected')} value must be a number`, printWithType('Expected', expected, printExpected), ), @@ -163,9 +170,10 @@ export const ensureNumbers = ( actual: unknown, expected: unknown, matcherName: string, + options?: MatcherHintOptions, ) => { - ensureActualIsNumber(actual, matcherName); - ensureExpectedIsNumber(expected, matcherName); + ensureActualIsNumber(actual, matcherName, options); + ensureExpectedIsNumber(expected, matcherName, options); }; // Sometimes, e.g. when comparing two numbers, the output from jest-diff From cfd60a8aec99f637542f9f8dd4b0d172fe556328 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Fri, 22 Feb 2019 01:13:49 +0100 Subject: [PATCH 2/3] chore: update failing snapshot --- e2e/__tests__/__snapshots__/transform.test.js.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/__tests__/__snapshots__/transform.test.js.snap b/e2e/__tests__/__snapshots__/transform.test.js.snap index 00c81c270f78..a8a139c79177 100644 --- a/e2e/__tests__/__snapshots__/transform.test.js.snap +++ b/e2e/__tests__/__snapshots__/transform.test.js.snap @@ -6,7 +6,7 @@ FAIL __tests__/ignoredFile.test.js babel-jest: Babel ignores __tests__/ignoredFile.test.js - make sure to include the file in Jest's transformIgnorePatterns as well. - at loadBabelConfig (../../../packages/babel-jest/build/index.js:133:13) + at loadBabelConfig (../../../packages/babel-jest/build/index.js:132:13) `; exports[`babel-jest instruments only specific files and collects coverage 1`] = ` From 4ea66e220c9ed0e7908755d72afb05287c88de6e Mon Sep 17 00:00:00 2001 From: Tim Seckinger Date: Fri, 22 Feb 2019 01:17:37 +0100 Subject: [PATCH 3/3] fix jest-haste-map-types (#7951) --- CHANGELOG.md | 4 ++-- babel.config.js | 1 + package.json | 1 + packages/jest-haste-map/src/index.ts | 13 ++++++++----- .../src/__tests__/dependency_resolver.test.ts | 6 +++--- packages/jest-resolve/src/__tests__/resolve.test.ts | 5 +---- packages/jest-transform/src/ScriptTransformer.ts | 1 - yarn.lock | 5 +++++ 8 files changed, 21 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcfc390b745f..4d6ca4619aa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,7 @@ ### Chore & Maintenance -- `[*]`: Setup building, linting and testing of TypeScript ([#7808](https://github.com/facebook/jest/pull/7808), [#7855](https://github.com/facebook/jest/pull/7855)) +- `[*]`: Setup building, linting and testing of TypeScript ([#7808](https://github.com/facebook/jest/pull/7808), [#7855](https://github.com/facebook/jest/pull/7855), [#7951](https://github.com/facebook/jest/pull/7951)) - `[pretty-format]`: Migrate to TypeScript ([#7809](https://github.com/facebook/jest/pull/7809)) - `[diff-sequences]`: Migrate to Typescript ([#7820](https://github.com/facebook/jest/pull/7820)) - `[jest-get-type]`: Migrate to TypeScript ([#7818](https://github.com/facebook/jest/pull/7818)) @@ -39,7 +39,7 @@ - `[jest-watcher]`: Migrate to TypeScript ([#7843](https://github.com/facebook/jest/pull/7843)) - `[jest-mock]`: Migrate to TypeScript ([#7847](https://github.com/facebook/jest/pull/7847), [#7850](https://github.com/facebook/jest/pull/7850)) - `[jest-worker]`: Migrate to TypeScript ([#7853](https://github.com/facebook/jest/pull/7853)) -- `[jest-haste-map]`: Migrate to TypeScript ([#7854](https://github.com/facebook/jest/pull/7854)) +- `[jest-haste-map]`: Migrate to TypeScript ([#7854](https://github.com/facebook/jest/pull/7854), [#7951](https://github.com/facebook/jest/pull/7951)) - `[docs]`: Fix image paths in SnapshotTesting.md for current and version 24 ([#7872](https://github.com/facebook/jest/pull/7872)) - `[babel-jest]`: Migrate to TypeScript ([#7862](https://github.com/facebook/jest/pull/7862)) - `[jest-resolve]`: Migrate to TypeScript ([#7871](https://github.com/facebook/jest/pull/7871)) diff --git a/babel.config.js b/babel.config.js index e295ec832457..5b6610d3801e 100644 --- a/babel.config.js +++ b/babel.config.js @@ -9,6 +9,7 @@ module.exports = { }, { plugins: [ + 'babel-plugin-typescript-strip-namespaces', require.resolve( './scripts/babel-plugin-jest-replace-ts-export-assignment.js' ), diff --git a/package.json b/package.json index a1d279fd9e1a..12bab1f44dbf 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "ansi-styles": "^3.2.0", "babel-eslint": "^9.0.0", "babel-loader": "^8.0.5", + "babel-plugin-typescript-strip-namespaces": "^1.1.0", "camelcase": "^5.0.0", "chalk": "^2.0.1", "codecov": "^3.0.0", diff --git a/packages/jest-haste-map/src/index.ts b/packages/jest-haste-map/src/index.ts index 0bf7125abaf8..f809a46df037 100644 --- a/packages/jest-haste-map/src/index.ts +++ b/packages/jest-haste-map/src/index.ts @@ -98,9 +98,12 @@ type Watcher = { type WorkerInterface = {worker: typeof worker; getSha1: typeof getSha1}; -export type ModuleMap = HasteModuleMap; -export type SerializableModuleMap = HasteSerializableModuleMap; -export type FS = HasteFS; +// TODO: Ditch namespace when this module exports ESM +namespace HasteMap { + export type ModuleMap = HasteModuleMap; + export type SerializableModuleMap = HasteSerializableModuleMap; + export type FS = HasteFS; +} const CHANGE_INTERVAL = 30; const MAX_WAIT_TIME = 240000; @@ -368,7 +371,7 @@ class HasteMap extends EventEmitter { return hasteMap; } - readModuleMap(): ModuleMap { + readModuleMap(): HasteModuleMap { const data = this.read(); return new HasteModuleMap({ duplicates: data.duplicates, @@ -1079,4 +1082,4 @@ function copyMap(input: Map): Map { HasteMap.H = H; HasteMap.ModuleMap = HasteModuleMap; -module.exports = HasteMap; +export = HasteMap; diff --git a/packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts b/packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts index c2f50429462e..f6bdea51c0ba 100644 --- a/packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts +++ b/packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts @@ -33,10 +33,10 @@ beforeEach(() => { roots: ['./packages/jest-resolve-dependencies'], }); return Runtime.createContext(config, {maxWorkers, watchman: false}).then( - (hasteMap: any) => { + (runtimeContext: any) => { dependencyResolver = new DependencyResolver( - hasteMap.resolver, - hasteMap.hasteFS, + runtimeContext.resolver, + runtimeContext.hasteFS, buildSnapshotResolver(config), ); }, diff --git a/packages/jest-resolve/src/__tests__/resolve.test.ts b/packages/jest-resolve/src/__tests__/resolve.test.ts index 014407bc47c7..021ba08aeeac 100644 --- a/packages/jest-resolve/src/__tests__/resolve.test.ts +++ b/packages/jest-resolve/src/__tests__/resolve.test.ts @@ -8,7 +8,7 @@ import fs from 'fs'; import path from 'path'; -import HasteMap from 'jest-haste-map'; +import {ModuleMap} from 'jest-haste-map'; import Resolver from '../'; // @ts-ignore: js file import userResolver from '../__mocks__/userResolver'; @@ -16,9 +16,6 @@ import nodeModulesPaths from '../nodeModulesPaths'; import defaultResolver from '../defaultResolver'; import {ResolverConfig} from '../types'; -// @ts-ignore: types are wrong. not sure how... -const {ModuleMap} = HasteMap; - jest.mock('../__mocks__/userResolver'); beforeEach(() => { diff --git a/packages/jest-transform/src/ScriptTransformer.ts b/packages/jest-transform/src/ScriptTransformer.ts index 690a97c7da33..3d92b9f94cee 100644 --- a/packages/jest-transform/src/ScriptTransformer.ts +++ b/packages/jest-transform/src/ScriptTransformer.ts @@ -110,7 +110,6 @@ export default class ScriptTransformer { content: string, instrument: boolean, ): Config.Path { - // @ts-ignore: not properly exported (needs ESM) const baseCacheDir = HasteMap.getCacheFilePath( this._config.cacheDirectory, 'jest-transform-cache-' + this._config.name, diff --git a/yarn.lock b/yarn.lock index 02da8691c7e2..a16c547fc344 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2610,6 +2610,11 @@ babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== +babel-plugin-typescript-strip-namespaces@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-typescript-strip-namespaces/-/babel-plugin-typescript-strip-namespaces-1.1.0.tgz#7f8b022505bc742905801f9c41dd93f08f34ffc4" + integrity sha512-69kdF5HJoSIdgTVtHDor6XGJzVcxF5Hh92Rnh+rcitBZpj0pVU3Go0CrNJdPog6uoTcB90Ifk9O55FPZg0XN4w== + babel-polyfill@6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d"