diff --git a/api/charts.api.md b/api/charts.api.md index 568bb4bdc9..a897f1aee9 100644 --- a/api/charts.api.md +++ b/api/charts.api.md @@ -1543,6 +1543,7 @@ export type TooltipType = $Values; // @public export interface TooltipValue { color: Color; + formattedValue: string; isHighlighted: boolean; isVisible: boolean; label: string; diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-axes-different-tooltip-formatter-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-axes-different-tooltip-formatter-visually-looks-correct-1-snap.png index 9077e825b6..1034996b78 100644 Binary files a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-axes-different-tooltip-formatter-visually-looks-correct-1-snap.png and b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-axes-different-tooltip-formatter-visually-looks-correct-1-snap.png differ diff --git a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-all-custom-tick-formatters-1-snap.png b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-all-custom-tick-formatters-1-snap.png index 0748b82422..a629cecaa7 100644 Binary files a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-all-custom-tick-formatters-1-snap.png and b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-all-custom-tick-formatters-1-snap.png differ diff --git a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-axis-tick-formatter-with-no-header-formatter-1-snap.png b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-axis-tick-formatter-with-no-header-formatter-1-snap.png new file mode 100644 index 0000000000..80cf969746 Binary files /dev/null and b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-axis-tick-formatter-with-no-header-formatter-1-snap.png differ diff --git a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-default-tick-formatter-with-no-axis-tick-formatter-nor-header-formatter-1-snap.png b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-default-tick-formatter-with-no-axis-tick-formatter-nor-header-formatter-1-snap.png new file mode 100644 index 0000000000..0748b82422 Binary files /dev/null and b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-default-tick-formatter-with-no-axis-tick-formatter-nor-header-formatter-1-snap.png differ diff --git a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-default-tick-formatter-with-no-axis-tick-formatter-nor-series-tick-formatter-1-snap.png b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-default-tick-formatter-with-no-axis-tick-formatter-nor-series-tick-formatter-1-snap.png index d77d1b0cb6..9fab4d9326 100644 Binary files a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-default-tick-formatter-with-no-axis-tick-formatter-nor-series-tick-formatter-1-snap.png and b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-default-tick-formatter-with-no-axis-tick-formatter-nor-series-tick-formatter-1-snap.png differ diff --git a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-header-formatter-for-x-axis-1-snap.png b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-header-formatter-for-x-axis-1-snap.png new file mode 100644 index 0000000000..a629cecaa7 Binary files /dev/null and b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-header-formatter-for-x-axis-1-snap.png differ diff --git a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-series-tick-formatter-with-no-axis-tick-formatter-1-snap.png b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-series-tick-formatter-with-no-axis-tick-formatter-1-snap.png index 0748b82422..c386730f22 100644 Binary files a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-series-tick-formatter-with-no-axis-tick-formatter-1-snap.png and b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-series-tick-formatter-with-no-axis-tick-formatter-1-snap.png differ diff --git a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-series-tick-formatter-with-no-axis-tick-formatter-missing-series-tick-formatter-1-snap.png b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-series-tick-formatter-with-no-axis-tick-formatter-missing-series-tick-formatter-1-snap.png index f96564b5a0..a0883e9bbb 100644 Binary files a/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-series-tick-formatter-with-no-axis-tick-formatter-missing-series-tick-formatter-1-snap.png and b/integration/tests/__image_snapshots__/interactions-test-ts-interactions-tooltip-formatting-should-use-series-tick-formatter-with-no-axis-tick-formatter-missing-series-tick-formatter-1-snap.png differ diff --git a/integration/tests/interactions.test.ts b/integration/tests/interactions.test.ts index fbc8368e2b..52b372bc36 100644 --- a/integration/tests/interactions.test.ts +++ b/integration/tests/interactions.test.ts @@ -232,28 +232,49 @@ describe('Interactions', () => { describe('Tooltip formatting', () => { it('should use all custom tick formatters', async () => { await common.expectChartWithMouseAtUrlToMatchScreenshot( - 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show%20legend=true&knob-Disable%20Y%20Axis%20tickFormat=&knob-Y%20Axis%20value%20format=0[.]0&knob-Y%20Axis%20unit=pets&knob-Disable%20dog%20line%20tickFormat=&knob-Dog%20line%20unit=dogs&knob-Disable%20cat%20line%20tickFormat=&knob-Cat%20line%20unit=cats', + 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show%20legend_Y%20axis=true&knob-Disable%20Axis%20tickFormat_Y%20axis=&knob-Axis%20value%20format_Y%20axis=0[.]0&knob-Axis%20unit_Y%20axis=pets&knob-Disable%20header%20tickFormat_X%20axis=&knob-Header%20unit_X%20axis=(header)&knob-Disable%20Axis%20tickFormat_X%20axis=&knob-Axis%20unit_X%20axis=(axis)&knob-Disable%20dog%20line%20tickFormat_Y%20axis=&knob-Dog%20line%20unit_Y%20axis=dogs&knob-Disable%20cat%20line%20tickFormat_Y%20axis=&knob-Cat%20line%20unit_Y%20axis=cats', { left: 280, top: 80 }, ); }); it('should use series tick formatter with no axis tick formatter', async () => { await common.expectChartWithMouseAtUrlToMatchScreenshot( - 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show%20legend=true&knob-Disable%20Y%20Axis%20tickFormat=&knob-Y%20Axis%20value%20format=0[.]0&knob-Y%20Axis%20unit=pets&knob-Disable%20dog%20line%20tickFormat=&knob-Dog%20line%20unit=dogs&knob-Disable%20cat%20line%20tickFormat=&knob-Cat%20line%20unit=cats', + 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show legend_Y axis=true&knob-Disable Axis tickFormat_Y axis=true&knob-Axis value format_Y axis=0[.]0&knob-Axis unit_Y axis=pets&knob-Disable header tickFormat_X axis=&knob-Header unit_X axis=(header)&knob-Disable Axis tickFormat_X axis=&knob-Axis unit_X axis=(axis)&knob-Disable dog line tickFormat_Y axis=&knob-Dog line unit_Y axis=dogs&knob-Disable cat line tickFormat_Y axis=&knob-Cat line unit_Y axis=cats', { left: 280, top: 80 }, ); }); it('should use series tick formatter with no axis tick formatter, missing series tick formatter', async () => { await common.expectChartWithMouseAtUrlToMatchScreenshot( - 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show%20legend=true&knob-Disable%20Y%20Axis%20tickFormat=true&knob-Y%20Axis%20value%20format=0[.]0&knob-Y%20Axis%20unit=pets&knob-Disable%20dog%20line%20tickFormat=true&knob-Dog%20line%20unit=dogs&knob-Disable%20cat%20line%20tickFormat=&knob-Cat%20line%20unit=cats', + 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show legend_Y axis=true&knob-Disable Axis tickFormat_Y axis=true&knob-Axis value format_Y axis=0[.]0&knob-Axis unit_Y axis=pets&knob-Disable header tickFormat_X axis=&knob-Header unit_X axis=(header)&knob-Disable Axis tickFormat_X axis=&knob-Axis unit_X axis=(axis)&knob-Disable dog line tickFormat_Y axis=true&knob-Dog line unit_Y axis=dogs&knob-Disable cat line tickFormat_Y axis=&knob-Cat line unit_Y axis=cats', { left: 280, top: 80 }, ); }); it('should use default tick formatter with no axis tick formatter, nor series tick formatter', async () => { await common.expectChartWithMouseAtUrlToMatchScreenshot( - 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show%20legend=true&knob-Disable%20Y%20Axis%20tickFormat=true&knob-Y%20Axis%20value%20format=0[.]0&knob-Y%20Axis%20unit=pets&knob-Disable%20dog%20line%20tickFormat=true&knob-Dog%20line%20unit=dogs&knob-Disable%20cat%20line%20tickFormat=true&knob-Cat%20line%20unit=cats', + 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show legend_Y axis=true&knob-Disable Axis tickFormat_Y axis=true&knob-Axis value format_Y axis=0[.]0&knob-Axis unit_Y axis=pets&knob-Disable header tickFormat_X axis=&knob-Header unit_X axis=(header)&knob-Disable Axis tickFormat_X axis=&knob-Axis unit_X axis=(axis)&knob-Disable dog line tickFormat_Y axis=true&knob-Dog line unit_Y axis=dogs&knob-Disable cat line tickFormat_Y axis=true&knob-Cat line unit_Y axis=cats', + { left: 280, top: 80 }, + ); + }); + + it('should use headerFormatter for x axis', async () => { + await common.expectChartWithMouseAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show legend_Y axis=true&knob-Disable Axis tickFormat_Y axis=&knob-Axis value format_Y axis=0[.]0&knob-Axis unit_Y axis=pets&knob-Disable header tickFormat_X axis=&knob-Header unit_X axis=(header)&knob-Disable Axis tickFormat_X axis=&knob-Axis unit_X axis=(axis)&knob-Disable dog line tickFormat_Y axis=&knob-Dog line unit_Y axis=dogs&knob-Disable cat line tickFormat_Y axis=&knob-Cat line unit_Y axis=cats', + { left: 280, top: 80 }, + ); + }); + + it('should use axis tick formatter with no headerFormatter', async () => { + await common.expectChartWithMouseAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show legend_Y axis=true&knob-Disable Axis tickFormat_Y axis=&knob-Axis value format_Y axis=0[.]0&knob-Axis unit_Y axis=pets&knob-Disable header tickFormat_X axis=true&knob-Header unit_X axis=(header)&knob-Disable Axis tickFormat_X axis=&knob-Axis unit_X axis=(axis)&knob-Disable dog line tickFormat_Y axis=&knob-Dog line unit_Y axis=dogs&knob-Disable cat line tickFormat_Y axis=&knob-Cat line unit_Y axis=cats', + { left: 280, top: 80 }, + ); + }); + + it('should use default tick formatter with no axis tick formatter nor headerFormatter', async () => { + await common.expectChartWithMouseAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/axes--different-tooltip-formatter&knob-Show legend_Y axis=true&knob-Disable Axis tickFormat_Y axis=&knob-Axis value format_Y axis=0[.]0&knob-Axis unit_Y axis=pets&knob-Disable header tickFormat_X axis=true&knob-Header unit_X axis=(header)&knob-Disable Axis tickFormat_X axis=true&knob-Axis unit_X axis=(axis)&knob-Disable dog line tickFormat_Y axis=&knob-Dog line unit_Y axis=dogs&knob-Disable cat line tickFormat_Y axis=&knob-Cat line unit_Y axis=cats', { left: 280, top: 80 }, ); }); diff --git a/package.json b/package.json index bb69a49c16..1799438708 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "semantic-release": "semantic-release", "start": "yarn storybook", "start-docs": "start-storybook -p 8001 -c .storybook-docs --ci", - "storybook": "RNG_SEED='elastic-charts' start-storybook -p 9001 -c .storybook --ci", + "storybook": "RNG_SEED='elastic-charts' start-storybook -p 9001 -c .storybook --ci --no-version-updates", "storybook:build": "rm -rf .out && build-storybook -c .storybook -o .out", "test": "jest --verbose --config jest.config.js", "test:tz": "yarn test:tz-utc && yarn test:tz-ny && yarn test:tz-jp", @@ -95,14 +95,14 @@ "@semantic-release/github": "^6.0.1", "@semantic-release/npm": "^6.0.0", "@semantic-release/release-notes-generator": "^7.3.5", - "@storybook/addon-actions": "5.3.19", + "@storybook/addon-actions": "^5.3.19", "@storybook/addon-docs": "^5.3.19", "@storybook/addon-info": "^5.3.19", - "@storybook/addon-knobs": "5.3.19", + "@storybook/addon-knobs": "^5.3.19", "@storybook/addon-links": "^5.3.19", "@storybook/addon-storysource": "^5.3.19", "@storybook/preset-typescript": "^3.0.0", - "@storybook/react": "5.3.19", + "@storybook/react": "^5.3.19", "@storybook/source-loader": "^5.3.19", "@storybook/theming": "^5.3.19", "@types/chroma-js": "^2.0.0", @@ -125,7 +125,6 @@ "@types/luxon": "^1.11.1", "@types/moment-timezone": "^0.5.12", "@types/puppeteer": "^1.19.1", - "@types/react": "^16.9.41", "@types/react-dom": "^16.9.8", "@types/react-redux": "^7.1.1", "@types/seedrandom": "^2.4.28", @@ -145,7 +144,7 @@ "core-js": "^3.6.4", "cross-env": "^7.0.2", "css-loader": "^3.6.0", - "cz-conventional-changelog": "^3.0.2", + "cz-conventional-changelog": "^3.3.0", "enzyme": "^3.9.0", "enzyme-adapter-react-16": "^1.10.0", "eslint": "^7.1.0", @@ -189,6 +188,8 @@ "react-dom": "^16.13.0", "react-is": "^16.13.0", "redux-devtools-extension": "^2.13.8", + "redux-immutable-state-invariant": "^2.1.0", + "redux-logger": "^3.0.6", "sass-graph": "^3.0.5", "sass-loader": "^9.0.2", "seedrandom": "^3.0.5", @@ -210,10 +211,6 @@ "react": "^16.12.0", "react-dom": "^16.12.0" }, - "optionalDependencies": { - "redux-immutable-state-invariant": "^2.1.0", - "redux-logger": "^3.0.6" - }, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" diff --git a/src/chart_types/goal_chart/state/selectors/tooltip.ts b/src/chart_types/goal_chart/state/selectors/tooltip.ts index 4a3eab00d2..57ff9b2c82 100644 --- a/src/chart_types/goal_chart/state/selectors/tooltip.ts +++ b/src/chart_types/goal_chart/state/selectors/tooltip.ts @@ -51,7 +51,8 @@ export const getTooltipInfoSelector = createCachedSelector( specId: spec.id, key: spec.id, }, - value: `${shape.actual}`, + value: shape.actual, + formattedValue: `${shape.actual}`, }); }); diff --git a/src/chart_types/partition_chart/state/selectors/tooltip.ts b/src/chart_types/partition_chart/state/selectors/tooltip.ts index 934f591310..d5b5cc99f6 100644 --- a/src/chart_types/partition_chart/state/selectors/tooltip.ts +++ b/src/chart_types/partition_chart/state/selectors/tooltip.ts @@ -52,6 +52,7 @@ export const getTooltipInfoSelector = createCachedSelector( pickedShapes.forEach((shape) => { const labelFormatter = labelFormatters[shape.depth - 1]; const formatter = labelFormatter?.nodeLabel; + const value = primaryValueGetterFun(shape); tooltipInfo.values.push({ label: formatter ? formatter(shape.dataName) : shape.dataName, @@ -62,9 +63,8 @@ export const getTooltipInfoSelector = createCachedSelector( specId: pieSpec.id, key: pieSpec.id, }, - value: `${valueFormatter(primaryValueGetterFun(shape))} (${pieSpec.percentFormatter( - percentValueGetter(shape), - )})`, + value, + formattedValue: `${valueFormatter(value)} (${pieSpec.percentFormatter(percentValueGetter(shape))})`, valueAccessor: shape.depth, }); }); diff --git a/src/chart_types/xy_chart/legend/legend.ts b/src/chart_types/xy_chart/legend/legend.ts index d630edc48e..fe288c124e 100644 --- a/src/chart_types/xy_chart/legend/legend.ts +++ b/src/chart_types/xy_chart/legend/legend.ts @@ -67,7 +67,6 @@ export function computeLegend( ): LegendItem[] { const legendItems: LegendItem[] = []; const sortedCollection = getSortedDataSeriesColorsValuesMap(seriesCollection); - const fallbackTickFormatter = specs.find(({ tickFormat }) => tickFormat)?.tickFormat ?? defaultTickFormatter; sortedCollection.forEach((series, key) => { const { banded, lastValue, seriesIdentifier } = series; @@ -85,7 +84,7 @@ export function computeLegend( // Use this to get axis spec w/ tick formatter const { yAxis } = getAxesSpecForSpecId(axesSpecs, spec.groupId); - const formatter = yAxis?.tickFormat ?? fallbackTickFormatter; + const formatter = spec.tickFormat ?? yAxis?.tickFormat ?? defaultTickFormatter; const { hideInLegend } = spec; legendItems.push({ diff --git a/src/chart_types/xy_chart/state/chart_state.interactions.test.ts b/src/chart_types/xy_chart/state/chart_state.interactions.test.ts index 1ecd8d7d8c..e7c736c479 100644 --- a/src/chart_types/xy_chart/state/chart_state.interactions.test.ts +++ b/src/chart_types/xy_chart/state/chart_state.interactions.test.ts @@ -767,8 +767,10 @@ function mouseOverTestSuite(scaleType: ScaleType) { MockStore.addSpecs([spec, leftAxis, bottomAxis, currentSettingSpec], store); store.dispatch(onPointerMove({ x: chartLeft + 0, y: chartTop + 89 }, 0)); const tooltipInfo = getTooltipInfoAndGeometriesSelector(store.getState()); - expect(tooltipInfo.tooltip.header?.value).toBe('bottom 0'); - expect(tooltipInfo.tooltip.values[0].value).toBe('left 10'); + expect(tooltipInfo.tooltip.header?.value).toBe(0); + expect(tooltipInfo.tooltip.header?.formattedValue).toBe('bottom 0'); + expect(tooltipInfo.tooltip.values[0].value).toBe(10); + expect(tooltipInfo.tooltip.values[0].formattedValue).toBe('left 10'); }); test('chart 90 deg rotated', () => { @@ -780,8 +782,10 @@ function mouseOverTestSuite(scaleType: ScaleType) { store.dispatch(onPointerMove({ x: chartLeft + 0, y: chartTop + 89 }, 0)); const tooltipInfo = getTooltipInfoAndGeometriesSelector(store.getState()); - expect(tooltipInfo.tooltip.header?.value).toBe('left 1'); - expect(tooltipInfo.tooltip.values[0].value).toBe('bottom 5'); + expect(tooltipInfo.tooltip.header?.value).toBe(1); + expect(tooltipInfo.tooltip.header?.formattedValue).toBe('left 1'); + expect(tooltipInfo.tooltip.values[0].value).toBe(5); + expect(tooltipInfo.tooltip.values[0].formattedValue).toBe('bottom 5'); }); }); describe('brush', () => { diff --git a/src/chart_types/xy_chart/state/chart_state.test.ts b/src/chart_types/xy_chart/state/chart_state.test.ts index e26a165a47..7c978b7f25 100644 --- a/src/chart_types/xy_chart/state/chart_state.test.ts +++ b/src/chart_types/xy_chart/state/chart_state.test.ts @@ -760,6 +760,7 @@ describe.skip('Chart Store', () => { const tooltipValue: TooltipValue = { label: 'a', value: 'a', + formattedValue: 'a', color: 'a', isHighlighted: false, seriesIdentifier: { @@ -873,6 +874,7 @@ describe.skip('Chart Store', () => { const tooltipValue: TooltipValue = { label: 'a', value: 'a', + formattedValue: 'a', color: 'a', isHighlighted: false, seriesIdentifier: { @@ -1019,6 +1021,7 @@ describe.skip('Chart Store', () => { const highlightedTooltipValue: TooltipValue = { label: 'foo', value: 1, + formattedValue: '1', color: 'color', isHighlighted: true, seriesIdentifier: { @@ -1031,6 +1034,7 @@ describe.skip('Chart Store', () => { const unhighlightedTooltipValue: TooltipValue = { label: 'foo', value: 1, + formattedValue: '1', color: 'color', isHighlighted: false, seriesIdentifier: { @@ -1063,6 +1067,7 @@ describe.skip('Chart Store', () => { const headerValue: TooltipValue = { label: 'header', value: 'foo', + formattedValue: 'foo', color: 'a', isHighlighted: false, seriesIdentifier: { @@ -1079,6 +1084,7 @@ describe.skip('Chart Store', () => { const tooltipValue: TooltipValue = { label: 'a', value: 123, + formattedValue: '123', color: 'a', isHighlighted: false, seriesIdentifier: { diff --git a/src/chart_types/xy_chart/state/chart_state.timescales.test.ts b/src/chart_types/xy_chart/state/chart_state.timescales.test.ts index 6143d6d9ce..282963a0d3 100644 --- a/src/chart_types/xy_chart/state/chart_state.timescales.test.ts +++ b/src/chart_types/xy_chart/state/chart_state.timescales.test.ts @@ -91,18 +91,24 @@ describe('Render chart', () => { store.dispatch(onPointerMove({ x: 15, y: 10 }, 0)); // check first valid tooltip let tooltip = getTooltipInfoSelector(store.getState()); expect(tooltip.values.length).toBe(1); - expect(tooltip.header?.value).toBe(`${day1}`); - expect(tooltip.values[0].value).toBe(`${10}`); + expect(tooltip.header?.value).toBe(day1); + expect(tooltip.header?.formattedValue).toBe(`${day1}`); + expect(tooltip.values[0].value).toBe(10); + expect(tooltip.values[0].formattedValue).toBe(`${10}`); store.dispatch(onPointerMove({ x: 35, y: 10 }, 1)); // check second valid tooltip tooltip = getTooltipInfoSelector(store.getState()); expect(tooltip.values.length).toBe(1); - expect(tooltip.header?.value).toBe(`${day2}`); - expect(tooltip.values[0].value).toBe(`${22}`); + expect(tooltip.header?.value).toBe(day2); + expect(tooltip.header?.formattedValue).toBe(`${day2}`); + expect(tooltip.values[0].value).toBe(22); + expect(tooltip.values[0].formattedValue).toBe(`${22}`); store.dispatch(onPointerMove({ x: 76, y: 10 }, 2)); // check third valid tooltip tooltip = getTooltipInfoSelector(store.getState()); expect(tooltip.values.length).toBe(1); - expect(tooltip.header?.value).toBe(`${day3}`); - expect(tooltip.values[0].value).toBe(`${6}`); + expect(tooltip.header?.value).toBe(day3); + expect(tooltip.header?.formattedValue).toBe(`${day3}`); + expect(tooltip.values[0].value).toBe(6); + expect(tooltip.values[0].formattedValue).toBe(`${6}`); }); }); describe('line, utc-time, 5m interval', () => { @@ -159,18 +165,24 @@ describe('Render chart', () => { store.dispatch(onPointerMove({ x: 15, y: 10 }, 0)); // check first valid tooltip let tooltip = getTooltipInfoSelector(store.getState()); expect(tooltip.values.length).toBe(1); - expect(tooltip.header?.value).toBe(`${date1}`); - expect(tooltip.values[0].value).toBe(`${10}`); + expect(tooltip.header?.value).toBe(date1); + expect(tooltip.header?.formattedValue).toBe(`${date1}`); + expect(tooltip.values[0].value).toBe(10); + expect(tooltip.values[0].formattedValue).toBe(`${10}`); store.dispatch(onPointerMove({ x: 35, y: 10 }, 1)); // check second valid tooltip tooltip = getTooltipInfoSelector(store.getState()); expect(tooltip.values.length).toBe(1); - expect(tooltip.header?.value).toBe(`${date2}`); - expect(tooltip.values[0].value).toBe(`${22}`); + expect(tooltip.header?.value).toBe(date2); + expect(tooltip.header?.formattedValue).toBe(`${date2}`); + expect(tooltip.values[0].value).toBe(22); + expect(tooltip.values[0].formattedValue).toBe(`${22}`); store.dispatch(onPointerMove({ x: 76, y: 10 }, 2)); // check third valid tooltip tooltip = getTooltipInfoSelector(store.getState()); expect(tooltip.values.length).toBe(1); - expect(tooltip.header?.value).toBe(`${date3}`); - expect(tooltip.values[0].value).toBe(`${6}`); + expect(tooltip.header?.value).toBe(date3); + expect(tooltip.header?.formattedValue).toBe(`${date3}`); + expect(tooltip.values[0].value).toBe(6); + expect(tooltip.values[0].formattedValue).toBe(`${6}`); }); }); describe('line, non utc-time, 5m + 1s interval', () => { @@ -245,18 +257,24 @@ describe('Render chart', () => { store.dispatch(onPointerMove({ x: 15, y: 10 }, 0)); // check first valid tooltip let tooltip = getTooltipInfoSelector(store.getState()); expect(tooltip.values.length).toBe(1); - expect(tooltip.header?.value).toBe(`${date1}`); - expect(tooltip.values[0].value).toBe(`${10}`); + expect(tooltip.header?.value).toBe(date1); + expect(tooltip.header?.formattedValue).toBe(`${date1}`); + expect(tooltip.values[0].value).toBe(10); + expect(tooltip.values[0].formattedValue).toBe(`${10}`); store.dispatch(onPointerMove({ x: 35, y: 10 }, 1)); // check second valid tooltip tooltip = getTooltipInfoSelector(store.getState()); expect(tooltip.values.length).toBe(1); - expect(tooltip.header?.value).toBe(`${date2}`); - expect(tooltip.values[0].value).toBe(`${22}`); + expect(tooltip.header?.value).toBe(date2); + expect(tooltip.header?.formattedValue).toBe(`${date2}`); + expect(tooltip.values[0].value).toBe(22); + expect(tooltip.values[0].formattedValue).toBe(`${22}`); store.dispatch(onPointerMove({ x: 76, y: 10 }, 2)); // check third valid tooltip tooltip = getTooltipInfoSelector(store.getState()); expect(tooltip.values.length).toBe(1); - expect(tooltip.header?.value).toBe(`${date3}`); - expect(tooltip.values[0].value).toBe(`${6}`); + expect(tooltip.header?.value).toBe(date3); + expect(tooltip.header?.formattedValue).toBe(`${date3}`); + expect(tooltip.values[0].value).toBe(6); + expect(tooltip.values[0].formattedValue).toBe(`${6}`); }); }); }); diff --git a/src/chart_types/xy_chart/tooltip/tooltip.test.ts b/src/chart_types/xy_chart/tooltip/tooltip.test.ts index 26f6af8547..5935d02788 100644 --- a/src/chart_types/xy_chart/tooltip/tooltip.test.ts +++ b/src/chart_types/xy_chart/tooltip/tooltip.test.ts @@ -131,7 +131,9 @@ describe('Tooltip formatting', () => { expect(tooltipValue.label).toBe('bar_1'); expect(tooltipValue.isHighlighted).toBe(false); expect(tooltipValue.color).toBe('blue'); - expect(tooltipValue.value).toBe('10'); + expect(tooltipValue.value).toBe(10); + expect(tooltipValue.formattedValue).toBe('10'); + expect(tooltipValue.formattedValue).toBe('10'); expect(YAXIS_SPEC.tickFormat).not.toBeCalledWith(null); }); it('should set name as spec name when provided', () => { @@ -237,7 +239,8 @@ describe('Tooltip formatting', () => { expect(tooltipValue.label).toBe('bar_1'); expect(tooltipValue.isHighlighted).toBe(false); expect(tooltipValue.color).toBe('blue'); - expect(tooltipValue.value).toBe('10'); + expect(tooltipValue.value).toBe(10); + expect(tooltipValue.formattedValue).toBe('10'); }); test('format y0 tooltip', () => { const geometry: BarGeometry = { @@ -253,7 +256,8 @@ describe('Tooltip formatting', () => { expect(tooltipValue.label).toBe('bar_1'); expect(tooltipValue.isHighlighted).toBe(false); expect(tooltipValue.color).toBe('blue'); - expect(tooltipValue.value).toBe('10'); + expect(tooltipValue.value).toBe(10); + expect(tooltipValue.formattedValue).toBe('10'); }); test('format x tooltip', () => { const geometry: BarGeometry = { @@ -269,7 +273,8 @@ describe('Tooltip formatting', () => { expect(tooltipValue.label).toBe('bar_1'); expect(tooltipValue.isHighlighted).toBe(false); expect(tooltipValue.color).toBe('blue'); - expect(tooltipValue.value).toBe('1'); + expect(tooltipValue.value).toBe(1); + expect(tooltipValue.formattedValue).toBe('1'); // disable any highlight on x value tooltipValue = formatTooltip(geometry, SPEC_1, true, true, false, YAXIS_SPEC); expect(tooltipValue.isHighlighted).toBe(false); @@ -287,7 +292,8 @@ describe('Tooltip formatting', () => { tickFormat: tickFormatter, }; const tooltipValue = formatTooltip(indexedGeometry, spec, false, false, false, axisSpec); - expect(tooltipValue.value).toBe('10 spec'); + expect(tooltipValue.value).toBe(10); + expect(tooltipValue.formattedValue).toBe('10 spec'); }); it('should format ticks with custom formatter from axis', () => { @@ -297,12 +303,14 @@ describe('Tooltip formatting', () => { tickFormat: axisTickFormatter, }; const tooltipValue = formatTooltip(indexedGeometry, SPEC_1, false, false, false, axisSpec); - expect(tooltipValue.value).toBe('10 axis'); + expect(tooltipValue.value).toBe(10); + expect(tooltipValue.formattedValue).toBe('10 axis'); }); it('should format ticks with default formatter', () => { const tooltipValue = formatTooltip(indexedGeometry, SPEC_1, false, false, false, YAXIS_SPEC); - expect(tooltipValue.value).toBe('10'); + expect(tooltipValue.value).toBe(10); + expect(tooltipValue.formattedValue).toBe('10'); }); it('should format header with custom formatter from axis', () => { @@ -317,7 +325,8 @@ describe('Tooltip formatting', () => { tickFormat: tickFormatter, }; const tooltipValue = formatTooltip(indexedGeometry, spec, true, false, false, axisSpec); - expect(tooltipValue.value).toBe('1 axis'); + expect(tooltipValue.value).toBe(1); + expect(tooltipValue.formattedValue).toBe('1 axis'); }); it('should format header with default formatter from axis', () => { @@ -327,6 +336,7 @@ describe('Tooltip formatting', () => { tickFormat: tickFormatter, }; const tooltipValue = formatTooltip(indexedGeometry, spec, true, false, false, YAXIS_SPEC); - expect(tooltipValue.value).toBe('1'); + expect(tooltipValue.value).toBe(1); + expect(tooltipValue.formattedValue).toBe('1'); }); }); diff --git a/src/chart_types/xy_chart/tooltip/tooltip.ts b/src/chart_types/xy_chart/tooltip/tooltip.ts index c0c014e096..44b6f8e601 100644 --- a/src/chart_types/xy_chart/tooltip/tooltip.ts +++ b/src/chart_types/xy_chart/tooltip/tooltip.ts @@ -43,8 +43,8 @@ export function getHighligthedValues( ): Map { const seriesTooltipValues = new Map(); - tooltipValues.forEach(({ value, seriesIdentifier, valueAccessor }) => { - const seriesValue = defaultValue || value; + tooltipValues.forEach(({ formattedValue, seriesIdentifier, valueAccessor }) => { + const seriesValue = defaultValue || formattedValue; const current: LegendItemExtraValues = seriesTooltipValues.get(seriesIdentifier.key) ?? new Map(); if (defaultValue) { if (!current.has(BandedAccessorType.Y0)) { @@ -91,7 +91,8 @@ export function formatTooltip( seriesIdentifier, valueAccessor: accessor, label, - value: tickFormatter(value, tickFormatOptions), + value, + formattedValue: tickFormatter(value, tickFormatOptions), markValue: isHeader || mark === null ? null : mark, color, isHighlighted: isHeader ? false : isHighlighted, diff --git a/src/components/chart.tsx b/src/components/chart.tsx index e00dea5752..e42e21cf3b 100644 --- a/src/components/chart.tsx +++ b/src/components/chart.tsx @@ -58,10 +58,21 @@ const getMiddlware = (id: string): StoreEnhancer => { const middlware: Middleware[] = []; if (process.env.DEBUG_REDUX === 'true') { - /* eslint-disable @typescript-eslint/no-var-requires, import/no-extraneous-dependencies */ - middlware.push(require('redux-immutable-state-invariant').default()); - // https://github.com/LogRocket/redux-logger#options-description - middlware.push(require('redux-logger').createLogger({})); + /* eslint-disable no-console, global-require, @typescript-eslint/no-var-requires, import/no-extraneous-dependencies, @typescript-eslint/no-unsafe-call */ + try { + const mw = require('redux-immutable-state-invariant'); + middlware.push(mw.default()); + } catch { + console.warn('`redux-immutable-state-invariant` not found with DEBUG_REDUX enabled'); + } + + try { + // https://github.com/LogRocket/redux-logger#options-description + const mw = require('redux-logger'); + middlware.push(mw.createLogger({})); + } catch { + console.warn('`redux-logger` not found with DEBUG_REDUX enabled'); + } /* eslint-enable */ } diff --git a/src/components/tooltip/tooltip.tsx b/src/components/tooltip/tooltip.tsx index 29b3922b4e..456be08acc 100644 --- a/src/components/tooltip/tooltip.tsx +++ b/src/components/tooltip/tooltip.tsx @@ -91,7 +91,9 @@ const TooltipComponent = ({ return null; } - return
{headerFormatter ? headerFormatter(header) : header.value}
; + return ( +
{headerFormatter ? headerFormatter(header) : header.formattedValue}
+ ); }, [headerFormatter], ); @@ -99,7 +101,10 @@ const TooltipComponent = ({ const renderValues = (values: TooltipValue[]) => (
{values.map( - ({ seriesIdentifier, valueAccessor, label, value, markValue, color, isHighlighted, isVisible }, index) => { + ( + { seriesIdentifier, valueAccessor, label, formattedValue, markValue, color, isHighlighted, isVisible }, + index, + ) => { if (!isVisible) { return null; } @@ -123,7 +128,7 @@ const TooltipComponent = ({
{label} - {value} + {formattedValue} {markValue &&  ({markValue})}
diff --git a/src/specs/settings.tsx b/src/specs/settings.tsx index b99423cd44..2ec8ab9cda 100644 --- a/src/specs/settings.tsx +++ b/src/specs/settings.tsx @@ -101,11 +101,15 @@ export interface TooltipValue { */ label: string; /** - * The value to display + * The value */ value: any; /** - * The mark value to display + * The formatted value to display + */ + formattedValue: string; + /** + * The mark value */ markValue?: any; /** diff --git a/stories/axes/6a_different_tooltip_formatter.tsx b/stories/axes/6a_different_tooltip_formatter.tsx index 62cdd2ac17..6ef6a3dd2c 100644 --- a/stories/axes/6a_different_tooltip_formatter.tsx +++ b/stories/axes/6a_different_tooltip_formatter.tsx @@ -25,14 +25,18 @@ import { Axis, Chart, LineSeries, Position, ScaleType, Settings } from '../../sr import { SB_SOURCE_PANEL } from '../utils/storybook'; export const Example = () => { - const showLegend = boolean('Show legend', true); - const disableAxisFormat = boolean('Disable Y Axis tickFormat', false); - const axisFormat = text('Y Axis value format', '0[.]0'); - const axisUnit = text('Y Axis unit', 'pets'); - const disableDogLineFormat = boolean('Disable dog line tickFormat', false); - const dogLineFormat = text('Dog line unit', 'dogs'); - const disableCatLineFormat = boolean('Disable cat line tickFormat', false); - const catLineFormat = text('Cat line unit', 'cats'); + const showLegend = boolean('Show legend', true, 'Y axis'); + const disableYAxisFormat = boolean('Disable Axis tickFormat', false, 'Y axis'); + const yAxisFormat = text('Axis value format', '0[.]0', 'Y axis'); + const yAxisUnit = text('Axis unit', 'pets', 'Y axis'); + const disableHeaderFormat = boolean('Disable header tickFormat', false, 'X axis'); + const headerUnit = text('Header unit', '(header)', 'X axis'); + const disableXAxisFormat = boolean('Disable Axis tickFormat', false, 'X axis'); + const xAxisUnit = text('Axis unit', '(axis)', 'X axis'); + const disableDogLineFormat = boolean('Disable dog line tickFormat', false, 'Y axis'); + const dogLineFormat = text('Dog line unit', 'dogs', 'Y axis'); + const disableCatLineFormat = boolean('Disable cat line tickFormat', false, 'Y axis'); + const catLineFormat = text('Cat line unit', 'cats', 'Y axis'); return ( @@ -45,19 +49,30 @@ export const Example = () => { }} showLegendExtra showLegend={showLegend} + tooltip={{ + headerFormatter: disableHeaderFormat + ? undefined + : ({ value }) => `${value}${headerUnit ? ` ${headerUnit}` : ''}`, + }} + /> + `${value}${xAxisUnit ? ` ${xAxisUnit}` : ''}`} /> - `${numeral(d).format(axisFormat)}${axisUnit ? ` ${axisUnit}` : ''}` + disableYAxisFormat ? undefined : (d) => `${numeral(d).format(yAxisFormat)}${yAxisUnit ? ` ${yAxisUnit}` : ''}` } /> { /> =0.0.4: version "1.0.1" @@ -7355,6 +7063,11 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" +assert-never@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" + integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== + assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" @@ -7383,17 +7096,12 @@ ast-types@0.11.3: resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" integrity sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA== -ast-types@0.12.4, ast-types@^0.12.2: +ast-types@0.12.4: version "0.12.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.12.4.tgz#71ce6383800f24efc9a1a3308f3a6e420a0974d1" integrity sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw== -ast-types@0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" - integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== - -ast-types@^0.13.2: +ast-types@0.13.3, ast-types@^0.13.2: version "0.13.3" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== @@ -8005,7 +7713,7 @@ babel-preset-typescript-vue@^1.0.3: "@babel/preset-typescript" "^7.3.3" vue-template-compiler "^2.6.11" -babel-runtime@^6.18.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.23.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -8013,20 +7721,12 @@ babel-runtime@^6.18.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= +babel-walk@3.0.0-canary-5: + version "3.0.0-canary-5" + resolved "https://registry.yarnpkg.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz#f66ecd7298357aee44955f235a6ef54219104b11" + integrity sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw== dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + "@babel/types" "^7.9.6" backport@^4.8.0: version "4.8.0" @@ -8137,7 +7837,7 @@ bluebird@3.4.6: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" integrity sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8= -bluebird@^3.3.5, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: +bluebird@^3.1.1, bluebird@^3.3.5, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -8366,7 +8066,7 @@ browserslist@^4.7.0: electron-to-chromium "^1.3.363" node-releases "^1.1.50" -browserslist@^4.8.2, browserslist@^4.8.3: +browserslist@^4.8.3: version "4.8.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.5.tgz#691af4e327ac877b25e7a3f7ee869c4ef36cdea3" integrity sha512-4LMHuicxkabIB+n9874jZX/az1IaZ5a+EUuvD7KFOu9x/Bd5YHyO0DIz2ls/Kl8g0ItS4X/ilEgf4T1Br0lgSg== @@ -8596,11 +8296,6 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -8680,14 +8375,6 @@ ccount@^1.0.0, ccount@^1.0.3: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.4.tgz#9cf2de494ca84060a2a8d2854edd6dfb0445f386" integrity sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w== -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -8747,7 +8434,7 @@ character-entities@^1.0.0: resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.3.tgz#bbed4a52fe7ef98cc713c6d80d9faa26916d54e6" integrity sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w== -character-parser@^2.1.1: +character-parser@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= @@ -8886,7 +8573,7 @@ classnames@^2.2.5, classnames@^2.2.6: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -clean-css@^4.1.11, clean-css@^4.2.1: +clean-css@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== @@ -8981,15 +8668,6 @@ clipboard@^2.0.0: select "^1.1.2" tiny-emitter "^2.0.0" -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -9339,15 +9017,20 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -constantinople@^3.0.1, constantinople@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647" - integrity sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw== +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== + dependencies: + bluebird "^3.1.1" + +constantinople@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-4.0.1.tgz#0def113fa0e4dc8de83331a5cf79c8b325213151" + integrity sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw== dependencies: - "@types/babel-types" "^7.0.0" - "@types/babylon" "^6.16.2" - babel-types "^6.26.0" - babylon "^6.18.0" + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.1" constants-browserify@^1.0.0: version "1.0.0" @@ -9409,6 +9092,11 @@ conventional-commit-types@^2.0.0: resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.3.0.tgz#bc3c8ebba0a9e4b3ecc548f1d0674e251ab8be22" integrity sha512-6iB39PrcGYdz0n3z31kj6/Km6mK9hm9oMRhwcLnKxE7WNoeRKZbTAobliKrbYZ5jqyCvtcVEfjCiaEzhL3AVmQ== +conventional-commit-types@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz#7c9214e58eae93e85dd66dbfbafe7e4fffa2365b" + integrity sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg== + conventional-commits-filter@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1" @@ -9890,17 +9578,16 @@ cz-conventional-changelog@3.0.1: optionalDependencies: "@commitlint/load" ">6.1.1" -cz-conventional-changelog@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.0.2.tgz#f6b9a406177ab07f9a3a087e06103a045b376260" - integrity sha512-MPxERbtQyVp0nnpCBiwzKGKmMBSswmCV3Jpef3Axqd5f3c/SOc6VFiSUlclOyZXBn3Xtf4snzt4O15hBTRb2gA== +cz-conventional-changelog@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz#9246947c90404149b3fe2cf7ee91acad3b7d22d2" + integrity sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw== dependencies: chalk "^2.4.1" commitizen "^4.0.3" - conventional-commit-types "^2.0.0" + conventional-commit-types "^3.0.0" lodash.map "^4.5.1" longest "^2.0.1" - right-pad "^1.0.1" word-wrap "^1.0.3" optionalDependencies: "@commitlint/load" ">6.1.1" @@ -10061,7 +9748,7 @@ decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -11335,6 +11022,11 @@ estraverse@^5.1.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== +estree-walker@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" + integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== + esutils@^2.0.0, esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -11977,9 +11669,9 @@ flatted@^2.0.0: integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== flow-parser@0.*: - version "0.116.1" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.116.1.tgz#2cded960269f702552feb5419c57c7c146ba171e" - integrity sha512-uMbaTjiMhBKa/il1esHyWyVVWfrWdG/eLmG62MQulZ59Yghpa30H1tmukFZLptsBafZ8ddiPyf7I+SiA+euZ6A== + version "0.133.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.133.0.tgz#670c2b03fc26dc921efa685359addc6061a2337a" + integrity sha512-ONvDDUcQVY7bMQG4ht7Ti+2IYjBBPphkc7fGmHXZHrrNNjGG4tykLZjIrIx710/k77x2djaY9VKlHC342Luy3A== flush-write-stream@^1.0.0: version "1.1.1" @@ -12284,6 +11976,13 @@ geckodriver@^1.19.1: https-proxy-agent "3.0.0" tar "4.4.2" +generic-names@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" + integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== + dependencies: + loader-utils "^1.1.0" + genfun@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" @@ -12828,6 +12527,11 @@ hash-sum@^1.0.2: resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= +hash-sum@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" + integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== + hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -13227,6 +12931,11 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: dependencies: safer-buffer ">= 2.1.2 < 3" +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -13752,13 +13461,13 @@ is-dom@^1.0.9: is-object "^1.0.1" is-window "^1.0.2" -is-expression@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" - integrity sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8= +is-expression@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-4.0.0.tgz#c33155962abf21d0afd2552514d67d2ec16fd2ab" + integrity sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A== dependencies: - acorn "~4.0.2" - object-assign "^4.0.1" + acorn "^7.1.1" + object-assign "^4.1.1" is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -13947,7 +13656,12 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-promise@^2.0.0, is-promise@^2.1.0: +is-promise@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= @@ -13957,12 +13671,12 @@ is-redirect@^1.0.0: resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= -is-regex@^1.0.3, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== +is-regex@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== dependencies: - has "^1.0.3" + has-symbols "^1.0.1" is-regex@^1.0.4: version "1.0.4" @@ -13971,6 +13685,13 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + is-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" @@ -14792,7 +14513,7 @@ js-string-escape@^1.0.1: resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= -js-stringify@^1.0.1: +js-stringify@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= @@ -14829,9 +14550,9 @@ jsbn@~0.1.0: integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jscodeshift@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.7.0.tgz#4eee7506fd4fdacbd80340287d61575af991fdab" - integrity sha512-Kt6rpTa1HVhAWagD6J0y6qxxqRmDgkFvczerLgOsDNSGoUZSmq2CO1vFRcda9OV1BaZKSHCIh+VREPts5tB/Ig== + version "0.7.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.7.1.tgz#0236ad475d6f0770ca998a0160925d62b57d2507" + integrity sha512-YMkZSyoc8zg5woZL23cmWlnFLPH/mHilonGA7Qbzs7H6M4v4PH0Qsn4jeDyw+CHhVoAnm9UxQyB0Yw1OT+mktA== dependencies: "@babel/core" "^7.1.6" "@babel/parser" "^7.1.6" @@ -15199,13 +14920,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levenary@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.0.tgz#fc146fe75f32dc483a0a2c64aef720f602cd6210" - integrity sha512-VHcwhO0UTpUW7rLPN2/OiWJdgA1e9BqEDALhrgCe/F+uUJnep6CoUsTzMeP8Rh0NGr9uKquXxqe7lwLZo509nQ== - dependencies: - leven "^3.1.0" - levenary@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" @@ -15535,6 +15249,11 @@ lodash._root@~3.0.0: resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + lodash.capitalize@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" @@ -15780,11 +15499,6 @@ longest-streak@^2.0.1: resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105" integrity sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw== -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= - longest@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8" @@ -15863,6 +15577,13 @@ macos-release@^2.2.0: resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== +magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -16233,6 +15954,13 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -17444,9 +17172,9 @@ open@^6.1.0, open@^6.3.0: is-wsl "^1.1.0" open@^7.0.0: - version "7.0.4" - resolved "https://registry.yarnpkg.com/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" - integrity sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== + version "7.2.1" + resolved "https://registry.yarnpkg.com/open/-/open-7.2.1.tgz#07b0ade11a43f2a8ce718480bdf3d7563a095195" + integrity sha512-xbYCJib4spUdmcs0g/2mK1nKo/jO2T7INClWd/beL7PFkXRWgr8B23ssDHX/USPn2M2IjDR5UdpYs6I67SnTSA== dependencies: is-docker "^2.0.0" is-wsl "^2.1.1" @@ -18202,6 +17930,21 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" +postcss-modules@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-3.2.2.tgz#ee390de0f9f18e761e1778dfb9be26685c02c51f" + integrity sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw== + dependencies: + generic-names "^2.0.1" + icss-replace-symbols "^1.1.0" + lodash.camelcase "^4.3.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + string-hash "^1.1.1" + postcss-reporter@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" @@ -18263,7 +18006,7 @@ postcss@^7.0.18: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.32: +postcss@^7.0.27, postcss@^7.0.32: version "7.0.32" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== @@ -18524,110 +18267,108 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -pug-attrs@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz#b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336" - integrity sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ== +pug-attrs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-3.0.0.tgz#b10451e0348165e31fad1cc23ebddd9dc7347c41" + integrity sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA== dependencies: - constantinople "^3.0.1" - js-stringify "^1.0.1" - pug-runtime "^2.0.5" + constantinople "^4.0.1" + js-stringify "^1.0.2" + pug-runtime "^3.0.0" -pug-code-gen@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.2.tgz#ad0967162aea077dcf787838d94ed14acb0217c2" - integrity sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw== +pug-code-gen@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-3.0.1.tgz#ff3b337b100c494ea63ef766091d27f7d73acb7e" + integrity sha512-xJIGvmXTQlkJllq6hqxxjRWcay2F9CU69TuAuiVZgHK0afOhG5txrQOcZyaPHBvSWCU/QQOqEp5XCH94rRZpBQ== dependencies: - constantinople "^3.1.2" + constantinople "^4.0.1" doctypes "^1.1.0" - js-stringify "^1.0.1" - pug-attrs "^2.0.4" - pug-error "^1.3.3" - pug-runtime "^2.0.5" - void-elements "^2.0.1" - with "^5.0.0" - -pug-error@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz#f342fb008752d58034c185de03602dd9ffe15fa6" - integrity sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ== + js-stringify "^1.0.2" + pug-attrs "^3.0.0" + pug-error "^2.0.0" + pug-runtime "^3.0.0" + void-elements "^3.1.0" + with "^7.0.0" + +pug-error@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-2.0.0.tgz#5c62173cb09c34de2a2ce04f17b8adfec74d8ca5" + integrity sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ== -pug-filters@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz#ab2cc82db9eeccf578bda89130e252a0db026aa7" - integrity sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg== +pug-filters@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-4.0.0.tgz#d3e49af5ba8472e9b7a66d980e707ce9d2cc9b5e" + integrity sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A== dependencies: - clean-css "^4.1.11" - constantinople "^3.0.1" + constantinople "^4.0.1" jstransformer "1.0.0" - pug-error "^1.3.3" - pug-walk "^1.1.8" - resolve "^1.1.6" - uglify-js "^2.6.1" + pug-error "^2.0.0" + pug-walk "^2.0.0" + resolve "^1.15.1" -pug-lexer@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz#531cde48c7c0b1fcbbc2b85485c8665e31489cfd" - integrity sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA== +pug-lexer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-5.0.0.tgz#0b779e7d8cbf0f103803675be96351942fd9a727" + integrity sha512-52xMk8nNpuyQ/M2wjZBN5gXQLIylaGkAoTk5Y1pBhVqaopaoj8Z0iVzpbFZAqitL4RHNVDZRnJDsqEYe99Ti0A== dependencies: - character-parser "^2.1.1" - is-expression "^3.0.0" - pug-error "^1.3.3" + character-parser "^2.2.0" + is-expression "^4.0.0" + pug-error "^2.0.0" -pug-linker@^3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz#f5bf218b0efd65ce6670f7afc51658d0f82989fb" - integrity sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg== +pug-linker@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-4.0.0.tgz#12cbc0594fc5a3e06b9fc59e6f93c146962a7708" + integrity sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw== dependencies: - pug-error "^1.3.3" - pug-walk "^1.1.8" + pug-error "^2.0.0" + pug-walk "^2.0.0" -pug-load@^2.0.12: - version "2.0.12" - resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz#d38c85eb85f6e2f704dea14dcca94144d35d3e7b" - integrity sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg== +pug-load@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-3.0.0.tgz#9fd9cda52202b08adb11d25681fb9f34bd41b662" + integrity sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ== dependencies: - object-assign "^4.1.0" - pug-walk "^1.1.8" + object-assign "^4.1.1" + pug-walk "^2.0.0" -pug-parser@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz#03e7ada48b6840bd3822f867d7d90f842d0ffdc9" - integrity sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA== +pug-parser@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-6.0.0.tgz#a8fdc035863a95b2c1dc5ebf4ecf80b4e76a1260" + integrity sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw== dependencies: - pug-error "^1.3.3" - token-stream "0.0.1" + pug-error "^2.0.0" + token-stream "1.0.0" -pug-runtime@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz#6da7976c36bf22f68e733c359240d8ae7a32953a" - integrity sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw== +pug-runtime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-3.0.0.tgz#d523025fdc0a1efe70929d1fd3a2d24121ffffb6" + integrity sha512-GoEPcmQNnaTsePEdVA05bDpY+Op5VLHKayg08AQiqJBWU/yIaywEYv7TetC5dEQS3fzBBoyb2InDcZEg3mPTIA== -pug-strip-comments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz#cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8" - integrity sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw== +pug-strip-comments@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz#f94b07fd6b495523330f490a7f554b4ff876303e" + integrity sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ== dependencies: - pug-error "^1.3.3" + pug-error "^2.0.0" -pug-walk@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz#b408f67f27912f8c21da2f45b7230c4bd2a5ea7a" - integrity sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA== +pug-walk@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-2.0.0.tgz#417aabc29232bb4499b5b5069a2b2d2a24d5f5fe" + integrity sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ== -pug@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz#ee7682ec0a60494b38d48a88f05f3b0ac931377d" - integrity sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw== - dependencies: - pug-code-gen "^2.0.2" - pug-filters "^3.1.1" - pug-lexer "^4.1.0" - pug-linker "^3.0.6" - pug-load "^2.0.12" - pug-parser "^5.0.1" - pug-runtime "^2.0.5" - pug-strip-comments "^1.0.4" +pug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pug/-/pug-3.0.0.tgz#101eecd7a236cd9906e420e17799d4d57f2b7d93" + integrity sha512-inmsJyFBSHZaiGLaguoFgJGViX0If6AcfcElimvwj9perqjDpUpw79UIEDZbWFmoGVidh08aoE+e8tVkjVJPCw== + dependencies: + pug-code-gen "^3.0.0" + pug-filters "^4.0.0" + pug-lexer "^5.0.0" + pug-linker "^4.0.0" + pug-load "^3.0.0" + pug-parser "^6.0.0" + pug-runtime "^3.0.0" + pug-strip-comments "^2.0.0" pump@^2.0.0: version "2.0.1" @@ -19493,6 +19234,16 @@ realpath-native@^2.0.0: resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== +recast@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.19.1.tgz#555f3612a5a10c9f44b9a923875c51ff775de6c8" + integrity sha512-8FCjrBxjeEU2O6I+2hyHyBFH1siJbMBLwIRvVr1T3FD2cL754sOaJDsJ/8h3xYltasbJ8jqWRIhMuDGBSiSbjw== + dependencies: + ast-types "0.13.3" + esprima "~4.0.0" + private "^0.1.8" + source-map "~0.6.1" + recast@^0.14.7: version "0.14.7" resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d" @@ -19514,11 +19265,11 @@ recast@^0.17.3: source-map "~0.6.1" recast@^0.18.1: - version "0.18.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.18.5.tgz#9d5adbc07983a3c8145f3034812374a493e0fe4d" - integrity sha512-sD1WJrpLQAkXGyQZyGzTM75WJvyAd98II5CHdK3IYbt/cZlU0UzCRVU11nUFNXX9fBVEt4E9ajkMjBlUlG+Oog== + version "0.18.10" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.18.10.tgz#605ebbe621511eb89b6356a7e224bff66ed91478" + integrity sha512-XNvYvkfdAN9QewbrxeTOjgINkdY/odTgTS56ZNEWL9Ml0weT4T3sFtvnTuF+Gxyu46ANcRm1ntrF6F5LAJPAaQ== dependencies: - ast-types "0.13.2" + ast-types "0.13.3" esprima "~4.0.0" private "^0.1.8" source-map "~0.6.1" @@ -19984,7 +19735,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -20220,13 +19971,6 @@ reusify@^1.0.0: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - right-pad@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0" @@ -20434,14 +20178,14 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.1, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== +schema-utils@^2.0.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" schema-utils@^2.5.0, schema-utils@^2.6.0: version "2.6.1" @@ -20451,6 +20195,15 @@ schema-utils@^2.5.0, schema-utils@^2.6.0: ajv "^6.10.2" ajv-keywords "^3.4.1" +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -20620,10 +20373,10 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serialize-javascript@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" - integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: randombytes "^2.1.0" @@ -21050,7 +20803,7 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -21065,6 +20818,11 @@ source-map@^0.7.1, source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + space-separated-tokens@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.4.tgz#27910835ae00d0adfcdbd0ad7e611fb9544351fa" @@ -21320,6 +21078,11 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + string-length@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" @@ -21855,16 +21618,16 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser-webpack-plugin@^2.1.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.7.tgz#4910ff5d1a872168cc7fa6cd3749e2b0d60a8a0b" - integrity sha512-xzYyaHUNhzgaAdBsXxk2Yvo/x1NJdslUaussK3fdpBbvttm1iIwU+c26dj9UxJcwk2c5UWt5F55MUTIA8BE7Dg== + version "2.3.8" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" + integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== dependencies: cacache "^13.0.1" find-cache-dir "^3.3.1" jest-worker "^25.4.0" p-limit "^2.3.0" schema-utils "^2.6.6" - serialize-javascript "^3.1.0" + serialize-javascript "^4.0.0" source-map "^0.6.1" terser "^4.6.12" webpack-sources "^1.4.3" @@ -22028,11 +21791,6 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -22080,10 +21838,10 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -token-stream@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" - integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= +token-stream@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4" + integrity sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ= tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: version "2.5.0" @@ -22386,16 +22144,6 @@ ua-parser-js@^0.7.18: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== -uglify-js@^2.6.1: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - uglify-js@^3.1.4: version "3.10.3" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.3.tgz#f0d2f99736c14de46d2d24649ba328be3e71c3bf" @@ -22409,11 +22157,6 @@ uglify-js@^3.5.1: commander "2.20.0" source-map "~0.6.1" -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= - uid-number@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -22998,37 +22741,46 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -void-elements@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= +void-elements@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk= vue-docgen-api@^4.1.0: - version "4.7.6" - resolved "https://registry.yarnpkg.com/vue-docgen-api/-/vue-docgen-api-4.7.6.tgz#1db24bce8e3119a29603361ca5ce6d73c93fffc3" - integrity sha512-eB4cVAVliiQVQIwvbhWs0t6RAFIdVabyGlDAxjtq3ghgtOQdUiVKMQsJPi+YxbMlWS99nrWLp+kC8TdMIuh6+g== + version "4.32.1" + resolved "https://registry.yarnpkg.com/vue-docgen-api/-/vue-docgen-api-4.32.1.tgz#1622b1db76d73547a7686f46ef9078b957b2a376" + integrity sha512-N9xI2OZ+0aZgJrHzTEkNCOu2EBGUWkofJIVMZCQ9Z/IrMsEoezWGQ17qkcqlLpxepgl4NCjPBNZqqb6TZCCMlA== dependencies: "@babel/parser" "^7.6.0" "@babel/types" "^7.6.0" - ast-types "^0.12.2" + "@vue/compiler-dom" "^3.0.0-rc.6" + "@vue/compiler-sfc" "^3.0.0-rc.6" + ast-types "0.13.3" hash-sum "^1.0.2" lru-cache "^4.1.5" - pug "^2.0.3" - recast "^0.17.3" + pug "^3.0.0" + recast "0.19.1" ts-map "^1.0.3" - vue-template-compiler "^2.0.0" + vue-inbrowser-compiler-utils "^4.32.1" vue-docgen-loader@^1.3.0-beta.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/vue-docgen-loader/-/vue-docgen-loader-1.3.0.tgz#449c2e09b1434f65ae4d8536dc63c61dbeb640b2" - integrity sha512-K/r3IulRQlZpRIvR0Ed8vdPQCCd1WbcajOgm/4fdwtO4pWorLLX9o0YGM1rlkX3DXybqOolQ5LEh7E3kTer1qg== + version "1.5.0" + resolved "https://registry.yarnpkg.com/vue-docgen-loader/-/vue-docgen-loader-1.5.0.tgz#bf8797ea9dde87a8d734b56176f105477d9bf266" + integrity sha512-LKZ8mxeIQ44uSUMTplnwOXbC4bO4E2vyZDTbn7/1QlVwJPEIjk3ahL0DA1m27IEw6YTlHOwtWS0PrHmDkFgyAg== dependencies: clone "^2.1.2" jscodeshift "^0.7.0" loader-utils "^1.2.3" querystring "^0.2.0" -vue-template-compiler@^2.0.0, vue-template-compiler@^2.6.11: +vue-inbrowser-compiler-utils@^4.32.1: + version "4.32.1" + resolved "https://registry.yarnpkg.com/vue-inbrowser-compiler-utils/-/vue-inbrowser-compiler-utils-4.32.1.tgz#d8774a4b7e91677d4d17d441485f5eafc77bc65d" + integrity sha512-IL8rBV3lCyHErqD8sBdQhWz3zJ/wLzG6JfoSzZ3K6HShS5QqIQfJN0GESvzIos6EGvmtByEf4TTJnjm12b51VQ== + dependencies: + camelcase "^5.3.1" + +vue-template-compiler@^2.6.11: version "2.6.11" resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA== @@ -23399,11 +23151,6 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - windows-release@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" @@ -23434,24 +23181,21 @@ winston@^3.2.1: triple-beam "^1.3.0" winston-transport "^4.3.0" -with@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" - integrity sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4= +with@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac" + integrity sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w== dependencies: - acorn "^3.1.0" - acorn-globals "^3.0.0" + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" + assert-never "^1.2.1" + babel-walk "3.0.0-canary-5" word-wrap@^1.0.3, word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -23817,16 +23561,6 @@ yargs@^8.0.2: y18n "^3.2.1" yargs-parser "^7.0.0" -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"