Browse Source

noImplicitAny: Fix basic errors (#17668)

* Fix basic noImplicitAny errors

* noImplicitAny HeatmapCtrl

* Update error limit
Tobias Skarhed 6 years ago
parent
commit
c9ad411d8e

+ 1 - 0
package.json

@@ -190,6 +190,7 @@
     "@babel/polyfill": "7.2.5",
     "@babel/polyfill": "7.2.5",
     "@torkelo/react-select": "2.4.1",
     "@torkelo/react-select": "2.4.1",
     "@types/angular-route": "1.7.0",
     "@types/angular-route": "1.7.0",
+    "@types/enzyme-adapter-react-16": "1.0.5",
     "@types/react-redux": "^7.0.8",
     "@types/react-redux": "^7.0.8",
     "@types/reselect": "2.2.0",
     "@types/reselect": "2.2.0",
     "angular": "1.6.6",
     "angular": "1.6.6",

+ 1 - 1
public/app/plugins/panel/heatmap/display_editor.ts

@@ -3,7 +3,7 @@ export class HeatmapDisplayEditorCtrl {
   panelCtrl: any;
   panelCtrl: any;
 
 
   /** @ngInject */
   /** @ngInject */
-  constructor($scope) {
+  constructor($scope: any) {
     $scope.editor = this;
     $scope.editor = this;
     this.panelCtrl = $scope.ctrl;
     this.panelCtrl = $scope.ctrl;
     this.panel = this.panelCtrl.panel;
     this.panel = this.panelCtrl.panel;

+ 14 - 12
public/app/plugins/panel/heatmap/heatmap_ctrl.ts

@@ -12,11 +12,13 @@ import {
   calculateBucketSize,
   calculateBucketSize,
   sortSeriesByLabel,
   sortSeriesByLabel,
 } from './heatmap_data_converter';
 } from './heatmap_data_converter';
+import { auto } from 'angular';
+import { TimeSrv } from 'app/features/dashboard/services/TimeSrv';
 
 
 const X_BUCKET_NUMBER_DEFAULT = 30;
 const X_BUCKET_NUMBER_DEFAULT = 30;
 const Y_BUCKET_NUMBER_DEFAULT = 10;
 const Y_BUCKET_NUMBER_DEFAULT = 10;
 
 
-const panelDefaults = {
+const panelDefaults: any = {
   heatmap: {},
   heatmap: {},
   cards: {
   cards: {
     cardPadding: null,
     cardPadding: null,
@@ -117,7 +119,7 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
   scaledDecimals: number;
   scaledDecimals: number;
 
 
   /** @ngInject */
   /** @ngInject */
-  constructor($scope, $injector, timeSrv) {
+  constructor($scope: any, $injector: auto.IInjectorService, timeSrv: TimeSrv) {
     super($scope, $injector);
     super($scope, $injector);
     this.timeSrv = timeSrv;
     this.timeSrv = timeSrv;
     this.selectionActivated = false;
     this.selectionActivated = false;
@@ -143,7 +145,7 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
     this.unitFormats = kbn.getUnitFormats();
     this.unitFormats = kbn.getUnitFormats();
   }
   }
 
 
-  zoomOut(evt) {
+  zoomOut(evt: any) {
     this.publishAppEvent('zoom-out', 2);
     this.publishAppEvent('zoom-out', 2);
   }
   }
 
 
@@ -275,7 +277,7 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
     }
     }
   }
   }
 
 
-  onDataReceived(dataList) {
+  onDataReceived(dataList: any) {
     this.series = dataList.map(this.seriesHandler.bind(this));
     this.series = dataList.map(this.seriesHandler.bind(this));
 
 
     this.dataWarning = null;
     this.dataWarning = null;
@@ -312,12 +314,12 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
     this.render();
     this.render();
   }
   }
 
 
-  onCardColorChange(newColor) {
+  onCardColorChange(newColor: any) {
     this.panel.color.cardColor = newColor;
     this.panel.color.cardColor = newColor;
     this.render();
     this.render();
   }
   }
 
 
-  seriesHandler(seriesData) {
+  seriesHandler(seriesData: any) {
     if (seriesData.datapoints === undefined) {
     if (seriesData.datapoints === undefined) {
       throw new Error('Heatmap error: data should be a time series');
       throw new Error('Heatmap error: data should be a time series');
     }
     }
@@ -341,19 +343,19 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
     return series;
     return series;
   }
   }
 
 
-  parseSeries(series) {
+  parseSeries(series: any[]) {
     const min = _.min(_.map(series, s => s.stats.min));
     const min = _.min(_.map(series, s => s.stats.min));
     const minLog = _.min(_.map(series, s => s.stats.logmin));
     const minLog = _.min(_.map(series, s => s.stats.logmin));
     const max = _.max(_.map(series, s => s.stats.max));
     const max = _.max(_.map(series, s => s.stats.max));
 
 
     return {
     return {
-      max: max,
-      min: min,
-      minLog: minLog,
+      max,
+      min,
+      minLog,
     };
     };
   }
   }
 
 
-  parseHistogramSeries(series) {
+  parseHistogramSeries(series: any[]) {
     const bounds = _.map(series, s => Number(s.alias));
     const bounds = _.map(series, s => Number(s.alias));
     const min = _.min(bounds);
     const min = _.min(bounds);
     const minLog = _.min(bounds);
     const minLog = _.min(bounds);
@@ -366,7 +368,7 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
     };
     };
   }
   }
 
 
-  link(scope, elem, attrs, ctrl) {
+  link(scope: any, elem: any, attrs: any, ctrl: any) {
     rendering(scope, elem, attrs, ctrl);
     rendering(scope, elem, attrs, ctrl);
   }
   }
 }
 }

+ 17 - 17
public/app/plugins/panel/heatmap/heatmap_tooltip.ts

@@ -19,7 +19,7 @@ export class HeatmapTooltip {
   mouseOverBucket: boolean;
   mouseOverBucket: boolean;
   originalFillColor: any;
   originalFillColor: any;
 
 
-  constructor(elem, scope) {
+  constructor(elem: JQuery, scope: any) {
     this.scope = scope;
     this.scope = scope;
     this.dashboard = scope.ctrl.dashboard;
     this.dashboard = scope.ctrl.dashboard;
     this.panelCtrl = scope.ctrl;
     this.panelCtrl = scope.ctrl;
@@ -35,7 +35,7 @@ export class HeatmapTooltip {
     this.destroy();
     this.destroy();
   }
   }
 
 
-  onMouseMove(e) {
+  onMouseMove(e: any) {
     if (!this.panel.tooltip.show) {
     if (!this.panel.tooltip.show) {
       return;
       return;
     }
     }
@@ -58,7 +58,7 @@ export class HeatmapTooltip {
     this.tooltip = null;
     this.tooltip = null;
   }
   }
 
 
-  show(pos, data) {
+  show(pos: { panelRelY: any }, data: any) {
     if (!this.panel.tooltip.show || !data) {
     if (!this.panel.tooltip.show || !data) {
       return;
       return;
     }
     }
@@ -109,7 +109,7 @@ export class HeatmapTooltip {
       if (yData.bounds) {
       if (yData.bounds) {
         if (data.tsBuckets) {
         if (data.tsBuckets) {
           // Use Y-axis labels
           // Use Y-axis labels
-          const tickFormatter = valIndex => {
+          const tickFormatter = (valIndex: string | number) => {
             return data.tsBucketsFormatted ? data.tsBucketsFormatted[valIndex] : data.tsBuckets[valIndex];
             return data.tsBucketsFormatted ? data.tsBucketsFormatted[valIndex] : data.tsBuckets[valIndex];
           };
           };
 
 
@@ -152,13 +152,13 @@ export class HeatmapTooltip {
     this.move(pos);
     this.move(pos);
   }
   }
 
 
-  getBucketIndexes(pos, data) {
+  getBucketIndexes(pos: { panelRelY?: any; x?: any; y?: any }, data: any) {
     const xBucketIndex = this.getXBucketIndex(pos.x, data);
     const xBucketIndex = this.getXBucketIndex(pos.x, data);
     const yBucketIndex = this.getYBucketIndex(pos.y, data);
     const yBucketIndex = this.getYBucketIndex(pos.y, data);
     return { xBucketIndex, yBucketIndex };
     return { xBucketIndex, yBucketIndex };
   }
   }
 
 
-  getXBucketIndex(x, data) {
+  getXBucketIndex(x: number, data: { buckets: any; xBucketSize: number }) {
     // First try to find X bucket by checking x pos is in the
     // First try to find X bucket by checking x pos is in the
     // [bucket.x, bucket.x + xBucketSize] interval
     // [bucket.x, bucket.x + xBucketSize] interval
     const xBucket: any = _.find(data.buckets, bucket => {
     const xBucket: any = _.find(data.buckets, bucket => {
@@ -167,7 +167,7 @@ export class HeatmapTooltip {
     return xBucket ? xBucket.x : getValueBucketBound(x, data.xBucketSize, 1);
     return xBucket ? xBucket.x : getValueBucketBound(x, data.xBucketSize, 1);
   }
   }
 
 
-  getYBucketIndex(y, data) {
+  getYBucketIndex(y: number, data: { tsBuckets: any; yBucketSize: number }) {
     if (data.tsBuckets) {
     if (data.tsBuckets) {
       return Math.floor(y);
       return Math.floor(y);
     }
     }
@@ -175,17 +175,17 @@ export class HeatmapTooltip {
     return yBucketIndex;
     return yBucketIndex;
   }
   }
 
 
-  getSharedTooltipPos(pos) {
+  getSharedTooltipPos(pos: { pageX: any; x: any; pageY: any; panelRelY: number }) {
     // get pageX from position on x axis and pageY from relative position in original panel
     // get pageX from position on x axis and pageY from relative position in original panel
     pos.pageX = this.heatmapPanel.offset().left + this.scope.xScale(pos.x);
     pos.pageX = this.heatmapPanel.offset().left + this.scope.xScale(pos.x);
     pos.pageY = this.heatmapPanel.offset().top + this.scope.chartHeight * pos.panelRelY;
     pos.pageY = this.heatmapPanel.offset().top + this.scope.chartHeight * pos.panelRelY;
     return pos;
     return pos;
   }
   }
 
 
-  addHistogram(data) {
+  addHistogram(data: { x: string | number }) {
     const xBucket = this.scope.ctrl.data.buckets[data.x];
     const xBucket = this.scope.ctrl.data.buckets[data.x];
     const yBucketSize = this.scope.ctrl.data.yBucketSize;
     const yBucketSize = this.scope.ctrl.data.yBucketSize;
-    let min, max, ticks;
+    let min: number, max: number, ticks: number;
     if (this.scope.ctrl.data.tsBuckets) {
     if (this.scope.ctrl.data.tsBuckets) {
       min = 0;
       min = 0;
       max = this.scope.ctrl.data.tsBuckets.length - 1;
       max = this.scope.ctrl.data.tsBuckets.length - 1;
@@ -206,7 +206,7 @@ export class HeatmapTooltip {
     const scale = this.scope.yScale.copy();
     const scale = this.scope.yScale.copy();
     const histXScale = scale.domain([min, max]).range([0, HISTOGRAM_WIDTH]);
     const histXScale = scale.domain([min, max]).range([0, HISTOGRAM_WIDTH]);
 
 
-    let barWidth;
+    let barWidth: number;
     if (this.panel.yAxis.logBase === 1) {
     if (this.panel.yAxis.logBase === 1) {
       barWidth = Math.floor((HISTOGRAM_WIDTH / (max - min)) * yBucketSize * 0.9);
       barWidth = Math.floor((HISTOGRAM_WIDTH / (max - min)) * yBucketSize * 0.9);
     } else {
     } else {
@@ -233,19 +233,19 @@ export class HeatmapTooltip {
       .data(histogramData)
       .data(histogramData)
       .enter()
       .enter()
       .append('rect')
       .append('rect')
-      .attr('x', d => {
+      .attr('x', (d: any[]) => {
         return histXScale(d[0]);
         return histXScale(d[0]);
       })
       })
       .attr('width', barWidth)
       .attr('width', barWidth)
-      .attr('y', d => {
+      .attr('y', (d: any[]) => {
         return HISTOGRAM_HEIGHT - histYScale(d[1]);
         return HISTOGRAM_HEIGHT - histYScale(d[1]);
       })
       })
-      .attr('height', d => {
+      .attr('height', (d: any[]) => {
         return histYScale(d[1]);
         return histYScale(d[1]);
       });
       });
   }
   }
 
 
-  move(pos) {
+  move(pos: { panelRelY?: any; pageX?: any; pageY?: any }) {
     if (!this.tooltip) {
     if (!this.tooltip) {
       return;
       return;
     }
     }
@@ -268,9 +268,9 @@ export class HeatmapTooltip {
     return this.tooltip.style('left', left + 'px').style('top', top + 'px');
     return this.tooltip.style('left', left + 'px').style('top', top + 'px');
   }
   }
 
 
-  countValueFormatter(decimals, scaledDecimals = null) {
+  countValueFormatter(decimals: number, scaledDecimals: any = null) {
     const format = 'short';
     const format = 'short';
-    return value => {
+    return (value: number) => {
       return getValueFormat(format)(value, decimals, scaledDecimals);
       return getValueFormat(format)(value, decimals, scaledDecimals);
     };
     };
   }
   }

+ 3 - 1
public/app/plugins/panel/heatmap/specs/heatmap_ctrl.test.ts

@@ -1,5 +1,6 @@
 import { HeatmapCtrl } from '../heatmap_ctrl';
 import { HeatmapCtrl } from '../heatmap_ctrl';
 import { dateTime } from '@grafana/ui/src/utils/moment_wrapper';
 import { dateTime } from '@grafana/ui/src/utils/moment_wrapper';
+import { TimeSrv } from 'app/features/dashboard/services/TimeSrv';
 
 
 describe('HeatmapCtrl', () => {
 describe('HeatmapCtrl', () => {
   const ctx = {} as any;
   const ctx = {} as any;
@@ -20,7 +21,8 @@ describe('HeatmapCtrl', () => {
   };
   };
 
 
   beforeEach(() => {
   beforeEach(() => {
-    ctx.ctrl = new HeatmapCtrl($scope, $injector, {});
+    //@ts-ignore
+    ctx.ctrl = new HeatmapCtrl($scope, $injector, {} as TimeSrv);
   });
   });
 
 
   describe('when time series are outside range', () => {
   describe('when time series are outside range', () => {

+ 2 - 2
public/app/plugins/panel/piechart/PieChartOptionsBox.tsx

@@ -14,8 +14,8 @@ const labelWidth = 8;
 const pieChartOptions = [{ value: PieChartType.PIE, label: 'Pie' }, { value: PieChartType.DONUT, label: 'Donut' }];
 const pieChartOptions = [{ value: PieChartType.PIE, label: 'Pie' }, { value: PieChartType.DONUT, label: 'Donut' }];
 
 
 export class PieChartOptionsBox extends PureComponent<PanelEditorProps<PieChartOptions>> {
 export class PieChartOptionsBox extends PureComponent<PanelEditorProps<PieChartOptions>> {
-  onPieTypeChange = pieType => this.props.onOptionsChange({ ...this.props.options, pieType: pieType.value });
-  onStrokeWidthChange = ({ target }) =>
+  onPieTypeChange = (pieType: any) => this.props.onOptionsChange({ ...this.props.options, pieType: pieType.value });
+  onStrokeWidthChange = ({ target }: any) =>
     this.props.onOptionsChange({ ...this.props.options, strokeWidth: target.value });
     this.props.onOptionsChange({ ...this.props.options, strokeWidth: target.value });
 
 
   render() {
   render() {

+ 5 - 3
public/app/plugins/panel/pluginlist/module.ts

@@ -1,5 +1,7 @@
 import _ from 'lodash';
 import _ from 'lodash';
 import { PanelCtrl } from '../../../features/panel/panel_ctrl';
 import { PanelCtrl } from '../../../features/panel/panel_ctrl';
+import { auto } from 'angular';
+import { BackendSrv } from '@grafana/runtime';
 
 
 class PluginListCtrl extends PanelCtrl {
 class PluginListCtrl extends PanelCtrl {
   static templateUrl = 'module.html';
   static templateUrl = 'module.html';
@@ -12,7 +14,7 @@ class PluginListCtrl extends PanelCtrl {
   panelDefaults = {};
   panelDefaults = {};
 
 
   /** @ngInject */
   /** @ngInject */
-  constructor($scope, $injector, private backendSrv) {
+  constructor($scope: any, $injector: auto.IInjectorService, private backendSrv: BackendSrv) {
     super($scope, $injector);
     super($scope, $injector);
 
 
     _.defaults(this.panel, this.panelDefaults);
     _.defaults(this.panel, this.panelDefaults);
@@ -32,14 +34,14 @@ class PluginListCtrl extends PanelCtrl {
     this.addEditorTab('Options', 'public/app/plugins/panel/pluginlist/editor.html');
     this.addEditorTab('Options', 'public/app/plugins/panel/pluginlist/editor.html');
   }
   }
 
 
-  gotoPlugin(plugin, evt) {
+  gotoPlugin(plugin: { id: any }, evt: any) {
     if (evt) {
     if (evt) {
       evt.stopPropagation();
       evt.stopPropagation();
     }
     }
     this.$location.url(`plugins/${plugin.id}/edit`);
     this.$location.url(`plugins/${plugin.id}/edit`);
   }
   }
 
 
-  updateAvailable(plugin, $event) {
+  updateAvailable(plugin: any, $event: any) {
     $event.stopPropagation();
     $event.stopPropagation();
     $event.preventDefault();
     $event.preventDefault();
 
 

+ 1 - 1
public/app/plugins/panel/table/column_options.ts

@@ -67,7 +67,7 @@ export class ColumnOptionsCtrl {
   }
   }
 
 
   addColumnStyle() {
   addColumnStyle() {
-    const newStyleRule = {
+    const newStyleRule: object = {
       unit: 'short',
       unit: 'short',
       type: 'number',
       type: 'number',
       alias: '',
       alias: '',

+ 2 - 2
public/test/jest-setup.ts

@@ -22,12 +22,12 @@ const global = window as any;
 global.$ = global.jQuery = $;
 global.$ = global.jQuery = $;
 
 
 const localStorageMock = (() => {
 const localStorageMock = (() => {
-  let store = {};
+  let store: any = {};
   return {
   return {
     getItem: (key: string) => {
     getItem: (key: string) => {
       return store[key];
       return store[key];
     },
     },
-    setItem: (key: string, value) => {
+    setItem: (key: string, value: any) => {
       store[key] = value.toString();
       store[key] = value.toString();
     },
     },
     clear: () => {
     clear: () => {

+ 4 - 4
public/test/jest-shim.ts

@@ -1,15 +1,15 @@
 declare var global: NodeJS.Global;
 declare var global: NodeJS.Global;
 
 
-(global as any).requestAnimationFrame = callback => {
+(global as any).requestAnimationFrame = (callback: any) => {
   setTimeout(callback, 0);
   setTimeout(callback, 0);
 };
 };
 
 
-(Promise.prototype as any).finally = function(onFinally) {
+(Promise.prototype as any).finally = function(onFinally: any) {
   return this.then(
   return this.then(
     /* onFulfilled */
     /* onFulfilled */
-    res => Promise.resolve(onFinally()).then(() => res),
+    (res: any) => Promise.resolve(onFinally()).then(() => res),
     /* onRejected */
     /* onRejected */
-    err =>
+    (err: any) =>
       Promise.resolve(onFinally()).then(() => {
       Promise.resolve(onFinally()).then(() => {
         throw err;
         throw err;
       })
       })

+ 3 - 3
public/test/mocks/common.ts

@@ -8,11 +8,11 @@ export const backendSrv = {
   post: jest.fn(),
   post: jest.fn(),
 };
 };
 
 
-export function createNavTree(...args) {
-  const root = [];
+export function createNavTree(...args: any[]) {
+  const root: any[] = [];
   let node = root;
   let node = root;
   for (const arg of args) {
   for (const arg of args) {
-    const child = { id: arg, url: `/url/${arg}`, text: `${arg}-Text`, children: [] };
+    const child: any = { id: arg, url: `/url/${arg}`, text: `${arg}-Text`, children: [] };
     node.push(child);
     node.push(child);
     node = child.children;
     node = child.children;
   }
   }

+ 1 - 1
public/test/mocks/mockExploreState.ts

@@ -6,7 +6,7 @@ import { StoreState } from 'app/types';
 
 
 export const mockExploreState = (options: any = {}) => {
 export const mockExploreState = (options: any = {}) => {
   const isLive = options.isLive || false;
   const isLive = options.isLive || false;
-  const history = [];
+  const history: any[] = [];
   const eventBridge = {
   const eventBridge = {
     emit: jest.fn(),
     emit: jest.fn(),
   };
   };

+ 5 - 5
public/test/specs/helpers.ts

@@ -14,12 +14,12 @@ export function ControllerTestContext(this: any) {
   this.annotationsSrv = {};
   this.annotationsSrv = {};
   this.contextSrv = {};
   this.contextSrv = {};
   this.timeSrv = new TimeSrvStub();
   this.timeSrv = new TimeSrvStub();
-  this.templateSrv = new TemplateSrvStub();
+  this.templateSrv = TemplateSrvStub();
   this.datasourceSrv = {
   this.datasourceSrv = {
     getMetricSources: () => {},
     getMetricSources: () => {},
     get: () => {
     get: () => {
       return {
       return {
-        then: callback => {
+        then: (callback: (a: any) => void) => {
           callback(self.datasource);
           callback(self.datasource);
         },
         },
       };
       };
@@ -84,7 +84,7 @@ export function ControllerTestContext(this: any) {
       self.scope.panel = {};
       self.scope.panel = {};
       self.scope.dashboard = { meta: {} };
       self.scope.dashboard = { meta: {} };
       self.scope.dashboardMeta = {};
       self.scope.dashboardMeta = {};
-      self.scope.dashboardViewState = new DashboardViewStateStub();
+      self.scope.dashboardViewState = DashboardViewStateStub();
       self.scope.appEvent = sinon.spy();
       self.scope.appEvent = sinon.spy();
       self.scope.onAppEvent = sinon.spy();
       self.scope.onAppEvent = sinon.spy();
 
 
@@ -102,14 +102,14 @@ export function ControllerTestContext(this: any) {
     });
     });
   };
   };
 
 
-  this.setIsUtc = (isUtc = false) => {
+  this.setIsUtc = (isUtc: any = false) => {
     self.isUtc = isUtc;
     self.isUtc = isUtc;
   };
   };
 }
 }
 
 
 export function ServiceTestContext(this: any) {
 export function ServiceTestContext(this: any) {
   const self = this;
   const self = this;
-  self.templateSrv = new TemplateSrvStub();
+  self.templateSrv = TemplateSrvStub();
   self.timeSrv = new TimeSrvStub();
   self.timeSrv = new TimeSrvStub();
   self.datasourceSrv = {};
   self.datasourceSrv = {};
   self.backendSrv = {};
   self.backendSrv = {};

+ 1 - 1
scripts/ci-frontend-metrics.sh

@@ -3,7 +3,7 @@
 echo -e "Collecting code stats (typescript errors & more)"
 echo -e "Collecting code stats (typescript errors & more)"
 
 
 
 
-ERROR_COUNT_LIMIT=4599
+ERROR_COUNT_LIMIT=4400
 DIRECTIVES_LIMIT=172
 DIRECTIVES_LIMIT=172
 CONTROLLERS_LIMIT=139
 CONTROLLERS_LIMIT=139
 
 

+ 15 - 0
yarn.lock

@@ -1965,6 +1965,21 @@
     "@types/d3-voronoi" "*"
     "@types/d3-voronoi" "*"
     "@types/d3-zoom" "*"
     "@types/d3-zoom" "*"
 
 
+"@types/enzyme-adapter-react-16@^1.0.5":
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.5.tgz#1bf30a166f49be69eeda4b81e3f24113c8b4e9d5"
+  integrity sha512-K7HLFTkBDN5RyRmU90JuYt8OWEY2iKUn43SDWEoBOXd/PowUWjLZ3Q6qMBiQuZeFYK/TOstaZxsnI0fXoAfLpg==
+  dependencies:
+    "@types/enzyme" "*"
+
+"@types/enzyme@*":
+  version "3.9.3"
+  resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.9.3.tgz#d1029c0edd353d7b00f3924803eb88216460beed"
+  integrity sha512-jDKoZiiMA3lGO3skSO7dfqEHNvmiTLLV+PHD9EBQVlJANJvpY6qq1zzjRI24ZOtG7F+CS7BVWDXKewRmN8PjHQ==
+  dependencies:
+    "@types/cheerio" "*"
+    "@types/react" "*"
+
 "@types/enzyme@3.9.0":
 "@types/enzyme@3.9.0":
   version "3.9.0"
   version "3.9.0"
   resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.9.0.tgz#a81c91e2dfd2d70e67f013f2c0e5efed6df05489"
   resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.9.0.tgz#a81c91e2dfd2d70e67f013f2c0e5efed6df05489"