From 670537fa280dddfbe921639a8e22a7c11d14e5f3 Mon Sep 17 00:00:00 2001 From: Mark McDowell Date: Tue, 7 Jul 2020 17:59:54 +0100 Subject: [PATCH] feat!: separating code into packages BREAKING CHANGE: first stage of refactor breaking the code down. --- README.md | 13 +- package-lock.json | 1652 +++++++++-------- package.json | 21 + packages/annotations/LICENSE | 24 + packages/annotations/README.md | 5 + packages/annotations/jest.config.js | 7 + packages/annotations/package.json | 49 + .../src}/Annotate.tsx | 3 +- .../src}/BackgroundText.tsx | 8 +- .../src}/BarAnnotation.tsx | 2 +- .../annotation => annotations/src}/Label.tsx | 6 +- .../src}/LabelAnnotation.tsx | 2 +- .../src}/SvgPathAnnotation.tsx | 2 +- .../annotation => annotations/src}/index.ts | 0 packages/annotations/tsconfig.json | 25 + packages/axes/LICENSE | 24 + packages/axes/README.md | 5 + packages/axes/jest.config.js | 7 + packages/axes/package.json | 51 + .../{charts/src/axes => axes/src}/Axis.tsx | 164 +- .../src/axes => axes/src}/AxisZoomCapture.tsx | 2 +- .../{charts/src/axes => axes/src}/XAxis.tsx | 2 +- .../{charts/src/axes => axes/src}/YAxis.tsx | 2 +- .../{charts/src/axes => axes/src}/index.ts | 1 + packages/axes/tsconfig.json | 25 + packages/charts/package.json | 24 +- packages/charts/src/algorithm/index.ts | 63 - packages/charts/src/index.ts | 11 +- packages/coordinates/LICENSE | 24 + packages/coordinates/README.md | 5 + packages/coordinates/jest.config.js | 7 + packages/coordinates/package.json | 50 + .../src}/CrossHairCursor.tsx | 10 +- .../src}/CurrentCoordinate.tsx | 9 +- .../src}/Cursor.tsx | 6 +- .../src}/EdgeCoordinate.tsx | 3 +- .../src}/EdgeCoordinateV2.tsx | 2 +- .../src}/EdgeCoordinateV3.tsx | 2 +- .../src}/EdgeIndicator.tsx | 6 +- .../src}/MouseCoordinateX.tsx | 5 +- .../src}/MouseCoordinateXV2.tsx | 4 +- .../src}/MouseCoordinateY.tsx | 6 +- .../src}/PriceCoordinate.tsx | 5 +- .../coordinates => coordinates/src}/index.ts | 0 packages/coordinates/tsconfig.json | 25 + packages/core/LICENSE | 24 + packages/core/README.md | 5 + packages/core/jest.config.js | 7 + packages/core/package.json | 51 + .../{charts => core}/src/CanvasContainer.tsx | 6 +- packages/{charts => core}/src/Chart.tsx | 4 +- packages/{charts => core}/src/ChartCanvas.tsx | 14 +- .../{charts => core}/src/EventCapture.tsx | 0 .../src/GenericChartComponent.tsx | 6 +- .../{charts => core}/src/GenericComponent.tsx | 4 +- packages/core/src/index.ts | 6 + .../src/utils/ChartDataUtil.ts | 0 .../src/utils/PureComponent.tsx | 0 .../src/utils/__tests__/colors.test.ts | 0 .../src/utils/accumulatingWindow.ts | 0 .../{charts => core}/src/utils/barWidth.ts | 0 .../src/utils/colorPresets.ts | 0 packages/{charts => core}/src/utils/colors.ts | 0 .../src/scale => core/src/utils}/evaluator.ts | 0 .../{charts => core}/src/utils/identity.ts | 0 packages/{charts => core}/src/utils/index.ts | 2 +- .../src/utils/mappedSlidingWindow.ts | 0 packages/{charts => core}/src/utils/merge.ts | 0 packages/{charts => core}/src/utils/noop.ts | 0 packages/{charts => core}/src/utils/rebind.ts | 0 .../src/utils/shallowEqual.ts | 0 .../src/utils/slidingWindow.ts | 0 .../src/utils/strokeDasharray.ts | 0 packages/{charts => core}/src/utils/zipper.ts | 0 packages/core/src/zoom/index.ts | 1 + .../utils => core/src/zoom}/zoomBehavior.ts | 4 +- packages/core/tsconfig.json | 25 + packages/indicators/LICENSE | 24 + packages/indicators/README.md | 5 + packages/indicators/jest.config.js | 7 + packages/indicators/package.json | 50 + .../src/calculator/atr.ts | 2 +- .../src/calculator/bollingerband.ts | 2 +- .../src/calculator/change.ts | 2 +- .../src/calculator/compare.ts | 2 +- .../defaultOptionsForComputation.ts | 0 .../src/calculator/elderRay.ts | 2 +- .../src/calculator/ema.ts | 2 +- .../src/calculator/forceIndex.ts | 2 +- .../src/calculator/heikinAshi.ts | 2 +- .../src/calculator/index.ts | 0 .../src/calculator/kagi.ts | 2 +- .../src/calculator/macd.ts | 0 .../src/calculator/pointAndFigure.ts | 2 +- .../src/calculator/renko.ts | 2 +- .../src/calculator/rsi.ts | 2 +- .../src/calculator/sar.ts | 2 +- .../src/calculator/sma.ts | 2 +- .../src/calculator/smoothedForceIndex.ts | 0 .../src/calculator/sto.ts | 2 +- .../src/calculator/tma.ts | 2 +- .../src/calculator/wma.ts | 2 +- packages/indicators/src/index.ts | 1 + .../src/indicator/atr.ts | 2 +- .../src/indicator/baseIndicator.ts | 2 +- .../src/indicator/bollingerBand.ts | 2 +- .../src/indicator/change.ts | 2 +- .../src/indicator/compare.ts | 2 +- .../indicator/defaultOptionsForAppearance.ts | 0 .../src/indicator/elderImpulse.ts | 2 +- .../src/indicator/elderRay.ts | 2 +- .../src/indicator/ema.ts | 2 +- .../src/indicator/forceIndex.ts | 2 +- .../src/indicator/heikinAshi.ts | 2 +- .../src/indicator/index.ts | 0 .../src/indicator/kagi.ts | 2 +- .../src/indicator/macd.ts | 2 +- .../src/indicator/pointAndFigure.ts | 2 +- .../src/indicator/renko.ts | 2 +- .../src/indicator/rsi.ts | 2 +- .../src/indicator/sar.ts | 2 +- .../src/indicator/sma.ts | 2 +- .../src/indicator/stochasticOscillator.ts | 2 +- .../src/indicator/tma.ts | 2 +- .../src/indicator/wma.ts | 2 +- packages/indicators/tsconfig.json | 25 + packages/interactive/LICENSE | 24 + packages/interactive/README.md | 5 + packages/interactive/package.json | 53 + .../interactive => interactive/src}/Brush.tsx | 14 +- .../src}/ClickCallback.tsx | 5 +- .../src}/DrawingObjectSelector.tsx | 4 +- .../src}/EquidistantChannel.tsx | 3 +- .../src}/FibonacciRetracement.tsx | 3 +- .../src}/GannFan.tsx | 3 +- .../src}/InteractiveText.tsx | 6 +- .../src}/InteractiveYCoordinate.tsx | 2 +- .../src}/StandardDeviationChannel.tsx | 2 +- .../src}/TrendLine.tsx | 2 +- .../src}/ZoomButtons.tsx | 2 +- .../src}/components/ChannelWithArea.tsx | 13 +- .../src}/components/ClickableCircle.tsx | 4 +- .../src}/components/ClickableShape.tsx | 6 +- .../src}/components/GannFan.tsx | 11 +- .../src}/components/HoverTextNearMouse.tsx | 4 +- .../src}/components/InteractiveText.tsx | 6 +- .../components/InteractiveYCoordinate.tsx | 16 +- .../LinearRegressionChannelWithArea.tsx | 13 +- .../components/MouseLocationIndicator.tsx | 16 +- .../src}/components/StraightLine.tsx | 7 +- .../src}/components/Text.tsx | 4 +- .../interactive => interactive/src}/index.ts | 0 .../interactive => interactive/src}/utils.ts | 2 +- .../src}/wrapper/EachEquidistantChannel.tsx | 4 +- .../src}/wrapper/EachFibRetracement.tsx | 4 +- .../src}/wrapper/EachGannFan.tsx | 4 +- .../wrapper/EachInteractiveYCoordinate.tsx | 2 +- .../wrapper/EachLinearRegressionChannel.tsx | 4 +- .../src}/wrapper/EachText.tsx | 4 +- .../src}/wrapper/EachTrendLine.tsx | 4 +- packages/interactive/tsconfig.json | 25 + packages/scales/LICENSE | 24 + packages/scales/README.md | 5 + packages/scales/jest.config.js | 7 + packages/scales/package.json | 51 + .../src}/discontinuousTimeScaleProvider.ts | 2 +- .../src}/financeDiscontinuousScale.ts | 2 +- .../{charts/src/scale => scales/src}/index.ts | 0 .../src/scale => scales/src}/levels.ts | 0 packages/scales/tsconfig.json | 25 + packages/series/LICENSE | 24 + packages/series/README.md | 5 + packages/series/jest.config.js | 7 + packages/series/package.json | 51 + .../src}/AlternatingFillAreaSeries.tsx | 2 +- .../series => series/src}/AreaOnlySeries.tsx | 13 +- .../src/series => series/src}/AreaSeries.tsx | 3 +- .../src/series => series/src}/BarSeries.tsx | 6 +- .../series => series/src}/BollingerSeries.tsx | 0 .../src}/CandlestickSeries.tsx | 13 +- .../series => series/src}/CircleMarker.tsx | 3 +- .../series => series/src}/ElderRaySeries.tsx | 2 +- .../src}/GroupedBarSeries.tsx | 3 +- .../src/series => series/src}/KagiSeries.tsx | 5 +- .../src/series => series/src}/LineSeries.tsx | 6 +- .../src/series => series/src}/MACDSeries.tsx | 0 .../src/series => series/src}/OHLCSeries.tsx | 5 +- .../src}/OverlayBarSeries.tsx | 15 +- .../src}/PointAndFigureSeries.tsx | 5 +- .../src/series => series/src}/RSISeries.tsx | 2 +- .../src/series => series/src}/RenkoSeries.tsx | 5 +- .../src/series => series/src}/SARSeries.tsx | 14 +- .../series => series/src}/SVGComponent.tsx | 3 +- .../series => series/src}/ScatterSeries.tsx | 6 +- .../series => series/src}/SquareMarker.tsx | 2 +- .../src}/StackedBarSeries.tsx | 14 +- .../src}/StochasticSeries.tsx | 0 .../series => series/src}/StraightLine.tsx | 12 +- .../series => series/src}/TriangleMarker.tsx | 2 +- .../src}/VolumeProfileSeries.tsx | 15 +- .../src/series => series/src}/index.ts | 0 packages/series/tsconfig.json | 25 + packages/stories/package.json | 16 +- packages/stories/src/data/index.ts | 1 - .../src/features/FullCanvas.stories.tsx | 2 +- .../stories/src/features/Intro.stories.mdx | 2 +- packages/stories/src/features/axis/axis.tsx | 12 +- .../src/features/axis/index.stories.tsx | 4 +- .../src/features/coordinates/coordinates.tsx | 14 +- .../features/coordinates/index.stories.tsx | 4 +- .../features/interaction/index.stories.tsx | 6 +- .../src/features/interaction/interaction.tsx | 12 +- packages/stories/src/features/stockChart.tsx | 27 +- .../src/indicators/atr/atrIndicator.tsx | 16 +- .../src/indicators/atr/index.stories.tsx | 4 +- .../bollingerBand/bollingerIndicator.tsx | 16 +- .../bollingerBand/index.stories.tsx | 4 +- .../indicators/elderRay/elderRayIndicator.tsx | 16 +- .../src/indicators/elderRay/index.stories.tsx | 4 +- .../src/indicators/ema/emaIndicator.tsx | 16 +- .../src/indicators/ema/index.stories.tsx | 4 +- .../indicators/forceIndex/forceIndicator.tsx | 16 +- .../indicators/forceIndex/index.stories.tsx | 4 +- .../src/indicators/macd/index.stories.tsx | 4 +- .../src/indicators/macd/macdIndicator.tsx | 16 +- .../src/indicators/rsi/index.stories.tsx | 4 +- .../src/indicators/rsi/rsiIndicator.tsx | 16 +- .../src/indicators/sar/index.stories.tsx | 4 +- .../src/indicators/sar/sarIndicator.tsx | 16 +- .../src/series/area/basicAreaSeries.tsx | 12 +- .../stories/src/series/area/index.stories.tsx | 4 +- .../stories/src/series/bar/basicBarSeries.tsx | 12 +- .../stories/src/series/bar/index.stories.tsx | 4 +- .../series/baseline/basicBaselineSeries.tsx | 12 +- .../src/series/baseline/index.stories.tsx | 4 +- .../series/candlestick/basicCandlestick.tsx | 12 +- .../src/series/candlestick/index.stories.tsx | 4 +- .../heikinAshi/basicHeikinAshiSeries.tsx | 14 +- .../src/series/heikinAshi/index.stories.tsx | 4 +- .../src/series/kagi/basicKagiSeries.tsx | 14 +- .../stories/src/series/kagi/index.stories.tsx | 4 +- .../src/series/line/basicLineSeries.tsx | 12 +- .../stories/src/series/line/index.stories.tsx | 4 +- .../src/series/ohlc/basicOHLCSeries.tsx | 14 +- .../stories/src/series/ohlc/index.stories.tsx | 4 +- .../basicPointAndFigureSeries.tsx | 14 +- .../series/pointAndFigure/index.stories.tsx | 4 +- .../src/series/renko/basicRenkoSeries.tsx | 14 +- .../src/series/renko/index.stories.tsx | 4 +- packages/tooltip/LICENSE | 24 + packages/tooltip/README.md | 5 + packages/tooltip/jest.config.js | 7 + packages/tooltip/package.json | 52 + .../src}/BollingerBandTooltip.tsx | 4 +- .../tooltip => tooltip/src}/GroupTooltip.tsx | 2 +- .../tooltip => tooltip/src}/HoverTooltip.tsx | 4 +- .../tooltip => tooltip/src}/MACDTooltip.tsx | 4 +- .../src}/MovingAverageTooltip.tsx | 4 +- .../tooltip => tooltip/src}/OHLCTooltip.tsx | 5 +- .../tooltip => tooltip/src}/RSITooltip.tsx | 5 +- .../tooltip => tooltip/src}/SingleTooltip.tsx | 0 .../src}/SingleValueTooltip.tsx | 5 +- .../src}/StochasticTooltip.tsx | 6 +- .../src}/ToolTipTSpanLabel.tsx | 0 .../tooltip => tooltip/src}/ToolTipText.tsx | 0 .../src}/displayValuesFor.ts | 0 .../src/tooltip => tooltip/src}/index.ts | 0 packages/tooltip/tsconfig.json | 25 + packages/utils/LICENSE | 24 + packages/utils/README.md | 5 + packages/utils/package.json | 47 + packages/utils/src/index.ts | 2 + .../utils => utils/src}/withDeviceRatio.tsx | 36 +- .../src/data => utils/src}/withSize.tsx | 6 +- packages/utils/tsconfig.json | 25 + 275 files changed, 2549 insertions(+), 1557 deletions(-) create mode 100644 packages/annotations/LICENSE create mode 100644 packages/annotations/README.md create mode 100644 packages/annotations/jest.config.js create mode 100644 packages/annotations/package.json rename packages/{charts/src/annotation => annotations/src}/Annotate.tsx (95%) rename packages/{charts/src/annotation => annotations/src}/BackgroundText.tsx (90%) rename packages/{charts/src/annotation => annotations/src}/BarAnnotation.tsx (98%) rename packages/{charts/src/annotation => annotations/src}/Label.tsx (95%) rename packages/{charts/src/annotation => annotations/src}/LabelAnnotation.tsx (97%) rename packages/{charts/src/annotation => annotations/src}/SvgPathAnnotation.tsx (97%) rename packages/{charts/src/annotation => annotations/src}/index.ts (100%) create mode 100644 packages/annotations/tsconfig.json create mode 100644 packages/axes/LICENSE create mode 100644 packages/axes/README.md create mode 100644 packages/axes/jest.config.js create mode 100644 packages/axes/package.json rename packages/{charts/src/axes => axes/src}/Axis.tsx (71%) rename packages/{charts/src/axes => axes/src}/AxisZoomCapture.tsx (99%) rename packages/{charts/src/axes => axes/src}/XAxis.tsx (98%) rename packages/{charts/src/axes => axes/src}/YAxis.tsx (98%) rename packages/{charts/src/axes => axes/src}/index.ts (54%) create mode 100644 packages/axes/tsconfig.json delete mode 100644 packages/charts/src/algorithm/index.ts create mode 100644 packages/coordinates/LICENSE create mode 100644 packages/coordinates/README.md create mode 100644 packages/coordinates/jest.config.js create mode 100644 packages/coordinates/package.json rename packages/{charts/src/coordinates => coordinates/src}/CrossHairCursor.tsx (94%) rename packages/{charts/src/coordinates => coordinates/src}/CurrentCoordinate.tsx (90%) rename packages/{charts/src/coordinates => coordinates/src}/Cursor.tsx (96%) rename packages/{charts/src/coordinates => coordinates/src}/EdgeCoordinate.tsx (99%) rename packages/{charts/src/coordinates => coordinates/src}/EdgeCoordinateV2.tsx (98%) rename packages/{charts/src/coordinates => coordinates/src}/EdgeCoordinateV3.tsx (99%) rename packages/{charts/src/coordinates => coordinates/src}/EdgeIndicator.tsx (96%) rename packages/{charts/src/coordinates => coordinates/src}/MouseCoordinateX.tsx (96%) rename packages/{charts/src/coordinates => coordinates/src}/MouseCoordinateXV2.tsx (97%) rename packages/{charts/src/coordinates => coordinates/src}/MouseCoordinateY.tsx (95%) rename packages/{charts/src/coordinates => coordinates/src}/PriceCoordinate.tsx (95%) rename packages/{charts/src/coordinates => coordinates/src}/index.ts (100%) create mode 100644 packages/coordinates/tsconfig.json create mode 100644 packages/core/LICENSE create mode 100644 packages/core/README.md create mode 100644 packages/core/jest.config.js create mode 100644 packages/core/package.json rename packages/{charts => core}/src/CanvasContainer.tsx (93%) rename packages/{charts => core}/src/Chart.tsx (95%) rename packages/{charts => core}/src/ChartCanvas.tsx (99%) rename packages/{charts => core}/src/EventCapture.tsx (100%) rename packages/{charts => core}/src/GenericChartComponent.tsx (96%) rename packages/{charts => core}/src/GenericComponent.tsx (99%) create mode 100644 packages/core/src/index.ts rename packages/{charts => core}/src/utils/ChartDataUtil.ts (100%) rename packages/{charts => core}/src/utils/PureComponent.tsx (100%) rename packages/{charts => core}/src/utils/__tests__/colors.test.ts (100%) rename packages/{charts => core}/src/utils/accumulatingWindow.ts (100%) rename packages/{charts => core}/src/utils/barWidth.ts (100%) rename packages/{charts => core}/src/utils/colorPresets.ts (100%) rename packages/{charts => core}/src/utils/colors.ts (100%) rename packages/{charts/src/scale => core/src/utils}/evaluator.ts (100%) rename packages/{charts => core}/src/utils/identity.ts (100%) rename packages/{charts => core}/src/utils/index.ts (99%) rename packages/{charts => core}/src/utils/mappedSlidingWindow.ts (100%) rename packages/{charts => core}/src/utils/merge.ts (100%) rename packages/{charts => core}/src/utils/noop.ts (100%) rename packages/{charts => core}/src/utils/rebind.ts (100%) rename packages/{charts => core}/src/utils/shallowEqual.ts (100%) rename packages/{charts => core}/src/utils/slidingWindow.ts (100%) rename packages/{charts => core}/src/utils/strokeDasharray.ts (100%) rename packages/{charts => core}/src/utils/zipper.ts (100%) create mode 100644 packages/core/src/zoom/index.ts rename packages/{charts/src/utils => core/src/zoom}/zoomBehavior.ts (84%) create mode 100644 packages/core/tsconfig.json create mode 100644 packages/indicators/LICENSE create mode 100644 packages/indicators/README.md create mode 100644 packages/indicators/jest.config.js create mode 100644 packages/indicators/package.json rename packages/{charts => indicators}/src/calculator/atr.ts (96%) rename packages/{charts => indicators}/src/calculator/bollingerband.ts (97%) rename packages/{charts => indicators}/src/calculator/change.ts (95%) rename packages/{charts => indicators}/src/calculator/compare.ts (95%) rename packages/{charts => indicators}/src/calculator/defaultOptionsForComputation.ts (100%) rename packages/{charts => indicators}/src/calculator/elderRay.ts (97%) rename packages/{charts => indicators}/src/calculator/ema.ts (97%) rename packages/{charts => indicators}/src/calculator/forceIndex.ts (93%) rename packages/{charts => indicators}/src/calculator/heikinAshi.ts (93%) rename packages/{charts => indicators}/src/calculator/index.ts (100%) rename packages/{charts => indicators}/src/calculator/kagi.ts (99%) rename packages/{charts => indicators}/src/calculator/macd.ts (100%) rename packages/{charts => indicators}/src/calculator/pointAndFigure.ts (99%) rename packages/{charts => indicators}/src/calculator/renko.ts (99%) rename packages/{charts => indicators}/src/calculator/rsi.ts (97%) rename packages/{charts => indicators}/src/calculator/sar.ts (97%) rename packages/{charts => indicators}/src/calculator/sma.ts (93%) rename packages/{charts => indicators}/src/calculator/smoothedForceIndex.ts (100%) rename packages/{charts => indicators}/src/calculator/sto.ts (98%) rename packages/{charts => indicators}/src/calculator/tma.ts (97%) rename packages/{charts => indicators}/src/calculator/wma.ts (94%) create mode 100644 packages/indicators/src/index.ts rename packages/{charts => indicators}/src/indicator/atr.ts (96%) rename packages/{charts => indicators}/src/indicator/baseIndicator.ts (97%) rename packages/{charts => indicators}/src/indicator/bollingerBand.ts (96%) rename packages/{charts => indicators}/src/indicator/change.ts (96%) rename packages/{charts => indicators}/src/indicator/compare.ts (96%) rename packages/{charts => indicators}/src/indicator/defaultOptionsForAppearance.ts (100%) rename packages/{charts => indicators}/src/indicator/elderImpulse.ts (98%) rename packages/{charts => indicators}/src/indicator/elderRay.ts (96%) rename packages/{charts => indicators}/src/indicator/ema.ts (96%) rename packages/{charts => indicators}/src/indicator/forceIndex.ts (96%) rename packages/{charts => indicators}/src/indicator/heikinAshi.ts (93%) rename packages/{charts => indicators}/src/indicator/index.ts (100%) rename packages/{charts => indicators}/src/indicator/kagi.ts (89%) rename packages/{charts => indicators}/src/indicator/macd.ts (96%) rename packages/{charts => indicators}/src/indicator/pointAndFigure.ts (90%) rename packages/{charts => indicators}/src/indicator/renko.ts (89%) rename packages/{charts => indicators}/src/indicator/rsi.ts (96%) rename packages/{charts => indicators}/src/indicator/sar.ts (96%) rename packages/{charts => indicators}/src/indicator/sma.ts (96%) rename packages/{charts => indicators}/src/indicator/stochasticOscillator.ts (94%) rename packages/{charts => indicators}/src/indicator/tma.ts (96%) rename packages/{charts => indicators}/src/indicator/wma.ts (96%) create mode 100644 packages/indicators/tsconfig.json create mode 100644 packages/interactive/LICENSE create mode 100644 packages/interactive/README.md create mode 100644 packages/interactive/package.json rename packages/{charts/src/interactive => interactive/src}/Brush.tsx (95%) rename packages/{charts/src/interactive => interactive/src}/ClickCallback.tsx (88%) rename packages/{charts/src/interactive => interactive/src}/DrawingObjectSelector.tsx (95%) rename packages/{charts/src/interactive => interactive/src}/EquidistantChannel.tsx (99%) rename packages/{charts/src/interactive => interactive/src}/FibonacciRetracement.tsx (99%) rename packages/{charts/src/interactive => interactive/src}/GannFan.tsx (98%) rename packages/{charts/src/interactive => interactive/src}/InteractiveText.tsx (97%) rename packages/{charts/src/interactive => interactive/src}/InteractiveYCoordinate.tsx (98%) rename packages/{charts/src/interactive => interactive/src}/StandardDeviationChannel.tsx (99%) rename packages/{charts/src/interactive => interactive/src}/TrendLine.tsx (99%) rename packages/{charts/src/interactive => interactive/src}/ZoomButtons.tsx (98%) rename packages/{charts/src/interactive => interactive/src}/components/ChannelWithArea.tsx (97%) rename packages/{charts/src/interactive => interactive/src}/components/ClickableCircle.tsx (95%) rename packages/{charts/src/interactive => interactive/src}/components/ClickableShape.tsx (95%) rename packages/{charts/src/interactive => interactive/src}/components/GannFan.tsx (97%) rename packages/{charts/src/interactive => interactive/src}/components/HoverTextNearMouse.tsx (97%) rename packages/{charts/src/interactive => interactive/src}/components/InteractiveText.tsx (96%) rename packages/{charts/src/interactive => interactive/src}/components/InteractiveYCoordinate.tsx (94%) rename packages/{charts/src/interactive => interactive/src}/components/LinearRegressionChannelWithArea.tsx (96%) rename packages/{charts/src/interactive => interactive/src}/components/MouseLocationIndicator.tsx (94%) rename packages/{charts/src/interactive => interactive/src}/components/StraightLine.tsx (98%) rename packages/{charts/src/interactive => interactive/src}/components/Text.tsx (92%) rename packages/{charts/src/interactive => interactive/src}/index.ts (100%) rename packages/{charts/src/interactive => interactive/src}/utils.ts (96%) rename packages/{charts/src/interactive => interactive/src}/wrapper/EachEquidistantChannel.tsx (98%) rename packages/{charts/src/interactive => interactive/src}/wrapper/EachFibRetracement.tsx (98%) rename packages/{charts/src/interactive => interactive/src}/wrapper/EachGannFan.tsx (98%) rename packages/{charts/src/interactive => interactive/src}/wrapper/EachInteractiveYCoordinate.tsx (98%) rename packages/{charts/src/interactive => interactive/src}/wrapper/EachLinearRegressionChannel.tsx (97%) rename packages/{charts/src/interactive => interactive/src}/wrapper/EachText.tsx (97%) rename packages/{charts/src/interactive => interactive/src}/wrapper/EachTrendLine.tsx (98%) create mode 100644 packages/interactive/tsconfig.json create mode 100644 packages/scales/LICENSE create mode 100644 packages/scales/README.md create mode 100644 packages/scales/jest.config.js create mode 100644 packages/scales/package.json rename packages/{charts/src/scale => scales/src}/discontinuousTimeScaleProvider.ts (98%) rename packages/{charts/src/scale => scales/src}/financeDiscontinuousScale.ts (98%) rename packages/{charts/src/scale => scales/src}/index.ts (100%) rename packages/{charts/src/scale => scales/src}/levels.ts (100%) create mode 100644 packages/scales/tsconfig.json create mode 100644 packages/series/LICENSE create mode 100644 packages/series/README.md create mode 100644 packages/series/jest.config.js create mode 100644 packages/series/package.json rename packages/{charts/src/series => series/src}/AlternatingFillAreaSeries.tsx (98%) rename packages/{charts/src/series => series/src}/AreaOnlySeries.tsx (95%) rename packages/{charts/src/series => series/src}/AreaSeries.tsx (97%) rename packages/{charts/src/series => series/src}/BarSeries.tsx (95%) rename packages/{charts/src/series => series/src}/BollingerSeries.tsx (100%) rename packages/{charts/src/series => series/src}/CandlestickSeries.tsx (97%) rename packages/{charts/src/series => series/src}/CircleMarker.tsx (96%) rename packages/{charts/src/series => series/src}/ElderRaySeries.tsx (98%) rename packages/{charts/src/series => series/src}/GroupedBarSeries.tsx (94%) rename packages/{charts/src/series => series/src}/KagiSeries.tsx (96%) rename packages/{charts/src/series => series/src}/LineSeries.tsx (97%) rename packages/{charts/src/series => series/src}/MACDSeries.tsx (100%) rename packages/{charts/src/series => series/src}/OHLCSeries.tsx (96%) rename packages/{charts/src/series => series/src}/OverlayBarSeries.tsx (94%) rename packages/{charts/src/series => series/src}/PointAndFigureSeries.tsx (97%) rename packages/{charts/src/series => series/src}/RSISeries.tsx (98%) rename packages/{charts/src/series => series/src}/RenkoSeries.tsx (96%) rename packages/{charts/src/series => series/src}/SARSeries.tsx (95%) rename packages/{charts/src/series => series/src}/SVGComponent.tsx (76%) rename packages/{charts/src/series => series/src}/ScatterSeries.tsx (95%) rename packages/{charts/src/series => series/src}/SquareMarker.tsx (96%) rename packages/{charts/src/series => series/src}/StackedBarSeries.tsx (97%) rename packages/{charts/src/series => series/src}/StochasticSeries.tsx (100%) rename packages/{charts/src/series => series/src}/StraightLine.tsx (93%) rename packages/{charts/src/series => series/src}/TriangleMarker.tsx (98%) rename packages/{charts/src/series => series/src}/VolumeProfileSeries.tsx (97%) rename packages/{charts/src/series => series/src}/index.ts (100%) create mode 100644 packages/series/tsconfig.json create mode 100644 packages/tooltip/LICENSE create mode 100644 packages/tooltip/README.md create mode 100644 packages/tooltip/jest.config.js create mode 100644 packages/tooltip/package.json rename packages/{charts/src/tooltip => tooltip/src}/BollingerBandTooltip.tsx (96%) rename packages/{charts/src/tooltip => tooltip/src}/GroupTooltip.tsx (98%) rename packages/{charts/src/tooltip => tooltip/src}/HoverTooltip.tsx (98%) rename packages/{charts/src/tooltip => tooltip/src}/MACDTooltip.tsx (97%) rename packages/{charts/src/tooltip => tooltip/src}/MovingAverageTooltip.tsx (98%) rename packages/{charts/src/tooltip => tooltip/src}/OHLCTooltip.tsx (97%) rename packages/{charts/src/tooltip => tooltip/src}/RSITooltip.tsx (95%) rename packages/{charts/src/tooltip => tooltip/src}/SingleTooltip.tsx (100%) rename packages/{charts/src/tooltip => tooltip/src}/SingleValueTooltip.tsx (96%) rename packages/{charts/src/tooltip => tooltip/src}/StochasticTooltip.tsx (96%) rename packages/{charts/src/tooltip => tooltip/src}/ToolTipTSpanLabel.tsx (100%) rename packages/{charts/src/tooltip => tooltip/src}/ToolTipText.tsx (100%) rename packages/{charts/src/tooltip => tooltip/src}/displayValuesFor.ts (100%) rename packages/{charts/src/tooltip => tooltip/src}/index.ts (100%) create mode 100644 packages/tooltip/tsconfig.json create mode 100644 packages/utils/LICENSE create mode 100644 packages/utils/README.md create mode 100644 packages/utils/package.json create mode 100644 packages/utils/src/index.ts rename packages/{charts/src/utils => utils/src}/withDeviceRatio.tsx (50%) rename packages/{stories/src/data => utils/src}/withSize.tsx (77%) create mode 100644 packages/utils/tsconfig.json diff --git a/README.md b/README.md index d2145ffad..f81cb190e 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ # React Financial Charts -[![CircleCI](https://circleci.com/gh/reactivemarkets/react-financial-charts/tree/master.svg?style=shield)](https://circleci.com/gh/reactivemarkets/react-financial-charts/tree/master) +> **Note:** this repo is a fork of [react-stockcharts](https://github.com/rrag/react-stockcharts), renamed, converted to typescript and bug fixes applied due to the original project being unmaintained. + +> **Note:** v1 is a fully breaking change with large parts, if not all, rewritten. Do not expect the same API! although the same features should exist. + +![ci](https://github.com/reactivemarkets/react-financial-charts/workflows/ci/badge.svg) [![codecov](https://codecov.io/gh/reactivemarkets/react-financial-charts/branch/master/graph/badge.svg)](https://codecov.io/gh/reactivemarkets/react-financial-charts) [![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=reactivemarkets/react-financial-charts)](https://dependabot.com) [![GitHub license](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/reactivemarkets/react-financial-charts/blob/master/LICENSE) [![npm version](https://img.shields.io/npm/v/react-financial-charts.svg?style=flat)](https://www.npmjs.com/package/react-financial-charts) -> **Note:** this repo is a fork of [react-stockcharts](https://github.com/rrag/react-stockcharts), renamed, converted to typescript and bug fixes applied due to the original project being unmaintained. - Charts dedicated to finance. The aim with this project is create financial charts that work out of the box. @@ -92,14 +94,15 @@ npm start - [x] Implement PRs from react-stockcharts - [x] Add all typings - [x] Move examples to storybook +- [x] Add all series' to storybook +- [x] Split project into multiple packages - [ ] Correct all class props - [ ] Fix issues with empty datasets - [ ] Migrate to new React Context API - [ ] Remove all UNSAFE methods -- [ ] Add all series' to storybook - [ ] Add documentation to storybook - [ ] Add full test suite -- [ ] Split project into multiple packages + ## LICENSE diff --git a/package-lock.json b/package-lock.json index ae97217da..09c4ba4c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,18 +4,18 @@ "lockfileVersion": 1, "dependencies": { "@babel/code-frame": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.3.tgz", - "integrity": "sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.10.3" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.3.tgz", - "integrity": "sha512-BDIfJ9uNZuI0LajPfoYV28lX8kyCPMHY6uY4WH1lJdcicmAfxCK5ASzaeV0D/wsUaRH/cLk+amuxtC37sZ8TUg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.4.tgz", + "integrity": "sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw==", "dev": true, "requires": { "browserslist": "^4.12.0", @@ -24,19 +24,19 @@ } }, "@babel/core": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.3.tgz", - "integrity": "sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.3", - "@babel/generator": "^7.10.3", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helpers": "^7.10.1", - "@babel/parser": "^7.10.3", - "@babel/template": "^7.10.3", - "@babel/traverse": "^7.10.3", - "@babel/types": "^7.10.3", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.4.tgz", + "integrity": "sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -48,64 +48,64 @@ } }, "@babel/generator": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.3.tgz", - "integrity": "sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", + "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", "dev": true, "requires": { - "@babel/types": "^7.10.3", + "@babel/types": "^7.10.4", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", - "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.3.tgz", - "integrity": "sha512-lo4XXRnBlU6eRM92FkiZxpo1xFLmv3VsPFk61zJKMm7XYJfwqXHsYJTY6agoc4a3L8QPw1HqWehO18coZgbT6A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.3", - "@babel/types": "^7.10.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-react-jsx": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.3.tgz", - "integrity": "sha512-vkxmuFvmovtqTZknyMGj9+uQAZzz5Z9mrbnkJnPkaYGfKTaSsYcjQdXP0lgrWLVh8wU6bCjOmXOpx+kqUi+S5Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/types": "^7.10.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-react-jsx-experimental": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", - "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.4.tgz", + "integrity": "sha512-LyacH/kgQPgLAuaWrvvq1+E7f5bLyT8jXCh7nM67sRsy2cpIGfgWJ+FCnAKQXfY+F0tXUaN6FqLkp4JiCzdK8Q==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-module-imports": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-compilation-targets": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", - "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.1", + "@babel/compat-data": "^7.10.4", "browserslist": "^4.12.0", "invariant": "^2.2.4", "levenary": "^1.1.1", @@ -113,286 +113,286 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.3.tgz", - "integrity": "sha512-iRT9VwqtdFmv7UheJWthGc/h2s7MqoweBF9RUj77NFZsg9VfISvBTum3k6coAhJ8RWv2tj3yUjA03HxPd0vfpQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz", + "integrity": "sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.3", - "@babel/helper-member-expression-to-functions": "^7.10.3", - "@babel/helper-optimise-call-expression": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", - "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-regex": "^7.10.1", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.3.tgz", - "integrity": "sha512-bxRzDi4Sin/k0drWCczppOhov1sBSdBvXJObM1NLHQzjhXhwRtn7aRWGvLJWCYbuu2qUk3EKs6Ci9C9ps8XokQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz", + "integrity": "sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.3", - "@babel/types": "^7.10.3", + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.4", "lodash": "^4.17.13" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.3.tgz", - "integrity": "sha512-0nKcR64XrOC3lsl+uhD15cwxPvaB6QKUDlD84OT9C3myRbhJqTMYir69/RWItUvHpharv0eJ/wk7fl34ONSwZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", "dev": true, "requires": { - "@babel/traverse": "^7.10.3", - "@babel/types": "^7.10.3" + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz", - "integrity": "sha512-FvSj2aiOd8zbeqijjgqdMDSyxsGHaMt5Tr0XjQsGKHD3/1FP3wksjnLAWzxw7lvXiej8W1Jt47SKTZ6upQNiRw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.3", - "@babel/template": "^7.10.3", - "@babel/types": "^7.10.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz", - "integrity": "sha512-iUD/gFsR+M6uiy69JA6fzM5seno8oE85IYZdbVVEuQaZlEzMO2MXblh+KSPJgsZAUx0EEbWXU0yJaW7C9CdAVg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.10.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-hoist-variables": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.3.tgz", - "integrity": "sha512-9JyafKoBt5h20Yv1+BXQMdcXXavozI1vt401KBiRc2qzUepbVnd7ogVNymY1xkQN9fekGwfxtotH2Yf5xsGzgg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.10.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz", - "integrity": "sha512-q7+37c4EPLSjNb2NmWOjNwj0+BOyYlssuQ58kHEWk1Z78K5i8vTUsteq78HMieRPQSl/NtpQyJfdjt3qZ5V2vw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz", + "integrity": "sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A==", "dev": true, "requires": { - "@babel/types": "^7.10.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-module-imports": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz", - "integrity": "sha512-Jtqw5M9pahLSUWA+76nhK9OG8nwYXzhQzVIGFoNaHnXF/r4l7kz4Fl0UAW7B6mqC5myoJiBP5/YQlXQTMfHI9w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", "dev": true, "requires": { - "@babel/types": "^7.10.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-module-transforms": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", - "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz", + "integrity": "sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4", "lodash": "^4.17.13" } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz", - "integrity": "sha512-kT2R3VBH/cnSz+yChKpaKRJQJWxdGoc6SjioRId2wkeV3bK0wLLioFpJROrX0U4xr/NmxSSAWT/9Ih5snwIIzg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.10.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-plugin-utils": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz", - "integrity": "sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", - "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.4.tgz", + "integrity": "sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ==", "dev": true, "requires": { "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.3.tgz", - "integrity": "sha512-sLB7666ARbJUGDO60ZormmhQOyqMX/shKBXZ7fy937s+3ID8gSrneMvKSSb+8xIM5V7Vn6uNVtOY1vIm26XLtA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-wrap-function": "^7.10.1", - "@babel/template": "^7.10.3", - "@babel/traverse": "^7.10.3", - "@babel/types": "^7.10.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-replace-supers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", - "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-simple-access": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", - "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "dev": true, "requires": { - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz", - "integrity": "sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", - "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helpers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", - "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "dev": true, "requires": { - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.3.tgz", - "integrity": "sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.3", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.3.tgz", - "integrity": "sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.3.tgz", - "integrity": "sha512-WUUWM7YTOudF4jZBAJIW9D7aViYC/Fn0Pln4RIHlQALyno3sXSjqmTA4Zy1TKC2D49RCR8Y/Pn4OIUtEypK3CA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz", + "integrity": "sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/helper-remap-async-to-generator": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", - "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", - "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", - "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", - "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", - "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-numeric-separator": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { @@ -407,43 +407,43 @@ } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", - "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.3.tgz", - "integrity": "sha512-yyG3n9dJ1vZ6v5sfmIlMMZ8azQoqx/5/nZTSWX1td6L1H1bsjzA8TInDChpafCZiJkeOFzp/PtrfigAQXxI1Ng==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz", + "integrity": "sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", - "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", - "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -465,12 +465,12 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", - "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-dynamic-import": { @@ -483,21 +483,21 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz", - "integrity": "sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", + "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-import-meta": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.1.tgz", - "integrity": "sha512-ypC4jwfIVF72og0dgvEcFRdOM2V9Qm1tu7RGmdZOlhsccyK0wisXmMObGuWEOd5jQ+K9wcIgSNftCpk2vkjUfQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-json-strings": { @@ -510,21 +510,21 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", - "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.1.tgz", - "integrity": "sha512-XyHIFa9kdrgJS91CUH+ccPVTnJShr8nLGc5bG2IhGXv5p1Rd+8BleGE5yzIg2Nc1QZAdHDa0Qp4m6066OL96Iw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-nullish-coalescing-operator": { @@ -537,12 +537,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", - "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -573,495 +573,495 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", - "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-typescript": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.1.tgz", - "integrity": "sha512-X/d8glkrAtra7CaQGMiGs/OGa6XgUzqPcBXCIGFCpCqnfGlT0Wfbzo/B89xHhnInTaItPK8LALblVXcUOEh95Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", + "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", - "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", - "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-remap-async-to-generator": "^7.10.1" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", - "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", - "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz", + "integrity": "sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.3.tgz", - "integrity": "sha512-irEX0ChJLaZVC7FvvRoSIxJlmk0IczFLcwaRXUArBKYHCHbOhe57aG8q3uw/fJsoSXvZhjRX960hyeAGlVBXZw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-define-map": "^7.10.3", - "@babel/helper-function-name": "^7.10.3", - "@babel/helper-optimise-call-expression": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.3.tgz", - "integrity": "sha512-GWzhaBOsdbjVFav96drOz7FzrcEW6AP5nax0gLIpstiFaI3LOb2tAg06TimaWU6YKOfUACK3FVrxPJ4GSc5TgA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", - "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", - "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", - "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", - "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.1.tgz", - "integrity": "sha512-i4o0YwiJBIsIx7/liVCZ3Q2WkWr1/Yu39PksBOnh/khW2SwIFsGa5Ze+MSon5KbDfrEHP9NeyefAgvUSXzaEkw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", + "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-flow": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-flow": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", - "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", - "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", - "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", - "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", - "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz", + "integrity": "sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", - "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.3.tgz", - "integrity": "sha512-GWXWQMmE1GH4ALc7YXW56BTh/AlzvDWhUNn9ArFF0+Cz5G8esYlVbXfdyHa1xaD1j+GnBoCeoQNlwtZTVdiG/A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz", + "integrity": "sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.10.3", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3", + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", - "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.3.tgz", - "integrity": "sha512-I3EH+RMFyVi8Iy/LekQm948Z4Lz4yKT7rK+vuCAeRm0kTa6Z5W7xuhRxDNJv0FPya/her6AUgrDITb70YHtTvA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", - "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", - "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" } }, "@babel/plugin-transform-parameters": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", - "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz", + "integrity": "sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", - "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.1.tgz", - "integrity": "sha512-V4os6bkWt/jbrzfyVcZn2ZpuHZkvj3vyBU0U/dtS8SZuMS7Rfx5oknTrtfyXJ2/QZk8gX7Yls5Z921ItNpE30Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz", + "integrity": "sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.3.tgz", - "integrity": "sha512-dOV44bnSW5KZ6kYF6xSHBth7TFiHHZReYXH/JH3XnFNV+soEL1F5d8JT7AJ3ZBncd19Qul7SN4YpBnyWOnQ8KA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", + "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.3.tgz", - "integrity": "sha512-Y21E3rZmWICRJnvbGVmDLDZ8HfNDIwjGF3DXYHx1le0v0mIHCs0Gv5SavyW5Z/jgAHLaAoJPiwt+Dr7/zZKcOQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", + "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "^7.10.3", - "@babel/helper-builder-react-jsx-experimental": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-syntax-jsx": "^7.10.1" + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.1.tgz", - "integrity": "sha512-XwDy/FFoCfw9wGFtdn5Z+dHh6HXKHkC6DwKNWpN74VWinUagZfDcEJc3Y8Dn5B3WMVnAllX8Kviaw7MtC5Epwg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz", + "integrity": "sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx-experimental": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-jsx": "^7.10.1" + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.1.tgz", - "integrity": "sha512-4p+RBw9d1qV4S749J42ZooeQaBomFPrSxa9JONLHJ1TxCBo3TzJ79vtmG2S2erUT8PDDrPdw4ZbXGr2/1+dILA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz", + "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-jsx": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.1.tgz", - "integrity": "sha512-neAbaKkoiL+LXYbGDvh6PjPG+YeA67OsZlE78u50xbWh2L1/C81uHiNP5d1fw+uqUIoiNdCC8ZB+G4Zh3hShJA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.4.tgz", + "integrity": "sha512-FTK3eQFrPv2aveerUSazFmGygqIdTtvskG50SnGnbEUnRPcGx2ylBhdFIzoVS1ty44hEgcPoCAyw5r3VDEq+Ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-jsx": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.3.tgz", - "integrity": "sha512-n/fWYGqvTl7OLZs/QcWaKMFdADPvC3V6jYuEOpPyvz97onsW9TXn196fHnHW1ZgkO20/rxLOgKnEtN1q9jkgqA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz", + "integrity": "sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.3.tgz", - "integrity": "sha512-H5kNeW0u8mbk0qa1jVIVTeJJL6/TJ81ltD4oyPx0P499DhMJrTmmIFCmJ3QloGpQG8K9symccB7S7SJpCKLwtw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", - "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", - "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", - "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz", + "integrity": "sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", - "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-regex": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.3.tgz", - "integrity": "sha512-yaBn9OpxQra/bk0/CaA4wr41O0/Whkg6nqjqApcinxM7pro51ojhX6fv1pimAnVjVfDy14K0ULoRL70CA9jWWA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz", + "integrity": "sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", - "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typescript": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.3.tgz", - "integrity": "sha512-qU9Lu7oQyh3PGMQncNjQm8RWkzw6LqsWZQlZPQMgrGt6s3YiBIaQ+3CQV/FA/icGS5XlSWZGwo/l8ErTyelS0Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.4.tgz", + "integrity": "sha512-3WpXIKDJl/MHoAN0fNkSr7iHdUMHZoppXjf2HJ9/ed5Xht5wNIsXllJXdityKOxeA3Z8heYRb1D3p2H5rfCdPw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-syntax-typescript": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.10.4" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", - "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", - "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.3.tgz", - "integrity": "sha512-jHaSUgiewTmly88bJtMHbOd1bJf2ocYxb5BWKSDQIP5tmgFuS/n0gl+nhSrYDhT33m0vPxp+rP8oYYgPgMNQlg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.3", - "@babel/helper-compilation-targets": "^7.10.2", - "@babel/helper-module-imports": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-proposal-async-generator-functions": "^7.10.3", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.1", - "@babel/plugin-proposal-json-strings": "^7.10.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-numeric-separator": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.3", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.3", - "@babel/plugin-proposal-private-methods": "^7.10.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.4.tgz", + "integrity": "sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.10.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.10.4", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.1", + "@babel/plugin-syntax-class-properties": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-json-strings": "^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.1", - "@babel/plugin-transform-arrow-functions": "^7.10.1", - "@babel/plugin-transform-async-to-generator": "^7.10.1", - "@babel/plugin-transform-block-scoped-functions": "^7.10.1", - "@babel/plugin-transform-block-scoping": "^7.10.1", - "@babel/plugin-transform-classes": "^7.10.3", - "@babel/plugin-transform-computed-properties": "^7.10.3", - "@babel/plugin-transform-destructuring": "^7.10.1", - "@babel/plugin-transform-dotall-regex": "^7.10.1", - "@babel/plugin-transform-duplicate-keys": "^7.10.1", - "@babel/plugin-transform-exponentiation-operator": "^7.10.1", - "@babel/plugin-transform-for-of": "^7.10.1", - "@babel/plugin-transform-function-name": "^7.10.1", - "@babel/plugin-transform-literals": "^7.10.1", - "@babel/plugin-transform-member-expression-literals": "^7.10.1", - "@babel/plugin-transform-modules-amd": "^7.10.1", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-modules-systemjs": "^7.10.3", - "@babel/plugin-transform-modules-umd": "^7.10.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.3", - "@babel/plugin-transform-new-target": "^7.10.1", - "@babel/plugin-transform-object-super": "^7.10.1", - "@babel/plugin-transform-parameters": "^7.10.1", - "@babel/plugin-transform-property-literals": "^7.10.1", - "@babel/plugin-transform-regenerator": "^7.10.3", - "@babel/plugin-transform-reserved-words": "^7.10.1", - "@babel/plugin-transform-shorthand-properties": "^7.10.1", - "@babel/plugin-transform-spread": "^7.10.1", - "@babel/plugin-transform-sticky-regex": "^7.10.1", - "@babel/plugin-transform-template-literals": "^7.10.3", - "@babel/plugin-transform-typeof-symbol": "^7.10.1", - "@babel/plugin-transform-unicode-escapes": "^7.10.1", - "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.10.4", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.3", + "@babel/types": "^7.10.4", "browserslist": "^4.12.0", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", @@ -1070,26 +1070,26 @@ }, "dependencies": { "@babel/plugin-proposal-object-rest-spread": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.3.tgz", - "integrity": "sha512-ZZh5leCIlH9lni5bU/wB/UcjtcVLgR8gc+FAgW2OOY+m9h1II3ItTO1/cewNUcsIDZSYcSaz/rYVls+Fb0ExVQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", + "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.1" + "@babel/plugin-transform-parameters": "^7.10.4" } } } }, "@babel/preset-flow": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.10.1.tgz", - "integrity": "sha512-FuQsibb5PaX07fF1XUO5gjjxdEZbcJv8+ugPDaeFEsBIvUTib8hCtEJow/c2F0jq9ZUjpHCQ8IQKNHRvKE1kJQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.10.4.tgz", + "integrity": "sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-transform-flow-strip-types": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-flow-strip-types": "^7.10.4" } }, "@babel/preset-modules": { @@ -1106,34 +1106,34 @@ } }, "@babel/preset-react": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.1.tgz", - "integrity": "sha512-Rw0SxQ7VKhObmFjD/cUcKhPTtzpeviEFX1E6PgP+cYOhQ98icNqtINNFANlsdbQHrmeWnqdxA4Tmnl1jy5tp3Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.4.tgz", + "integrity": "sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-transform-react-display-name": "^7.10.1", - "@babel/plugin-transform-react-jsx": "^7.10.1", - "@babel/plugin-transform-react-jsx-development": "^7.10.1", - "@babel/plugin-transform-react-jsx-self": "^7.10.1", - "@babel/plugin-transform-react-jsx-source": "^7.10.1", - "@babel/plugin-transform-react-pure-annotations": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.10.4", + "@babel/plugin-transform-react-jsx": "^7.10.4", + "@babel/plugin-transform-react-jsx-development": "^7.10.4", + "@babel/plugin-transform-react-jsx-self": "^7.10.4", + "@babel/plugin-transform-react-jsx-source": "^7.10.4", + "@babel/plugin-transform-react-pure-annotations": "^7.10.4" } }, "@babel/preset-typescript": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.1.tgz", - "integrity": "sha512-m6GV3y1ShiqxnyQj10600ZVOFrSSAa8HQ3qIUk2r+gcGtHTIRw0dJnFLt1WNXpKjtVw7yw1DAPU/6ma2ZvgJuA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz", + "integrity": "sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-transform-typescript": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.10.4" } }, "@babel/register": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.10.3.tgz", - "integrity": "sha512-s1il0vdd02HCGwV1iocGJEzcbTNouZqMolSXKXFAiTNJSudPas9jdLQwyPPyAJxdNL6KGJ8pwWIOpKmgO/JWqg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.10.4.tgz", + "integrity": "sha512-whHmgGiWNVyTVnYTSawtDWhaeYsc+noeU8Rmi+MPnbGhDYmr5QpEDMrQcIA07D2RUv0BlThPcN89XcHCqq/O4g==", "dev": true, "requires": { "find-cache-dir": "^2.0.0", @@ -1157,18 +1157,18 @@ } }, "@babel/runtime": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.3.tgz", - "integrity": "sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.4.tgz", + "integrity": "sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.3.tgz", - "integrity": "sha512-HA7RPj5xvJxQl429r5Cxr2trJwOfPjKiqhCXcdQPSqO2G0RHPZpXu4fkYmBaTKCp2c/jRaMK9GB/lN+7zvvFPw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz", + "integrity": "sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==", "dev": true, "requires": { "core-js-pure": "^3.0.0", @@ -1176,40 +1176,40 @@ } }, "@babel/template": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.3.tgz", - "integrity": "sha512-5BjI4gdtD+9fHZUsaxPHPNpwa+xRkDO7c7JbhYn2afvrkDu5SfAAbi9AIMXw2xEhO/BR35TqiW97IqNvCo/GqA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.3", - "@babel/parser": "^7.10.3", - "@babel/types": "^7.10.3" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.3.tgz", - "integrity": "sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", + "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.3", - "@babel/generator": "^7.10.3", - "@babel/helper-function-name": "^7.10.3", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.3", - "@babel/types": "^7.10.3", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.3.tgz", - "integrity": "sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.3", + "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } @@ -4066,6 +4066,12 @@ "restore-cursor": "^2.0.0" } }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -4589,18 +4595,9 @@ }, "dependencies": { "is-plain-object": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", - "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", - "dev": true, - "requires": { - "isobject": "^4.0.0" - } - }, - "isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", "dev": true }, "universal-user-agent": { @@ -4695,18 +4692,9 @@ } }, "is-plain-object": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", - "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", - "dev": true, - "requires": { - "isobject": "^4.0.0" - } - }, - "isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", "dev": true }, "universal-user-agent": { @@ -4743,9 +4731,9 @@ } }, "@octokit/rest": { - "version": "16.43.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz", - "integrity": "sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==", + "version": "16.43.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", + "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", "dev": true, "requires": { "@octokit/auth-token": "^2.4.0", @@ -4776,9 +4764,9 @@ } }, "@reach/router": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.3.tgz", - "integrity": "sha512-gOIAiFhWdiVGSVjukKeNKkCRBLmnORoTPyBihI/jLunICPgxdP30DroAvPQuf1eVfQbfGJQDJkwhJXsNPMnVWw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.4.tgz", + "integrity": "sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==", "dev": true, "requires": { "create-react-context": "0.3.0", @@ -4787,6 +4775,76 @@ "react-lifecycles-compat": "^3.0.4" } }, + "@react-financial-charts/annotations": { + "version": "file:packages/annotations", + "requires": { + "@react-financial-charts/core": "file:packages/core", + "prop-types": "^15.7.2" + } + }, + "@react-financial-charts/axes": { + "version": "file:packages/axes", + "requires": { + "@react-financial-charts/core": "file:packages/core", + "d3-array": "^2.4.0", + "d3-force": "^2.0.1", + "d3-selection": "1.4.1" + } + }, + "@react-financial-charts/coordinates": { + "version": "file:packages/coordinates", + "requires": { + "@react-financial-charts/core": "file:packages/core", + "d3-format": "1.4.4", + "prop-types": "15.7.2" + } + }, + "@react-financial-charts/core": { + "version": "file:packages/core", + "requires": { + "d3-array": "^2.4.0", + "d3-selection": "^1.4.1", + "lodash.flattendeep": "^4.4.0", + "prop-types": "^15.7.2" + } + }, + "@react-financial-charts/indicators": { + "version": "file:packages/indicators", + "requires": { + "@react-financial-charts/core": "file:packages/core", + "d3-array": "2.4.0", + "d3-scale": "3.2.1" + } + }, + "@react-financial-charts/interactive": { + "version": "file:packages/interactive", + "requires": { + "@react-financial-charts/core": "file:packages/core", + "d3-array": "2.4.0", + "d3-format": "1.4.4", + "d3-interpolate": "1.4.0", + "d3-path": "1.0.9", + "prop-types": "15.7.2" + } + }, + "@react-financial-charts/scales": { + "version": "file:packages/scales", + "requires": { + "@react-financial-charts/core": "file:packages/core", + "d3-array": "2.4.0", + "d3-scale": "3.2.1", + "d3-time-format": "2.2.3" + } + }, + "@react-financial-charts/series": { + "version": "file:packages/series", + "requires": { + "@react-financial-charts/core": "file:packages/core", + "d3-array": "2.4.0", + "d3-scale": "3.2.1", + "d3-shape": "1.3.7" + } + }, "@react-financial-charts/stories": { "version": "file:packages/stories", "requires": { @@ -4799,6 +4857,22 @@ "react-virtualized-auto-sizer": "^1.0.2" } }, + "@react-financial-charts/tooltip": { + "version": "file:packages/tooltip", + "requires": { + "@react-financial-charts/core": "file:packages/core", + "d3-array": "2.4.0", + "d3-format": "^1.4.4", + "d3-time-format": "2.2.3", + "prop-types": "15.7.2" + } + }, + "@react-financial-charts/utils": { + "version": "file:packages/utils", + "requires": { + "react-virtualized-auto-sizer": "^1.0.2" + } + }, "@sinonjs/commons": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.0.tgz", @@ -4949,18 +5023,9 @@ }, "dependencies": { "is-plain-object": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", - "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", - "dev": true, - "requires": { - "isobject": "^4.0.0" - } - }, - "isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", "dev": true } } @@ -5700,9 +5765,9 @@ "dev": true }, "@types/babel-types": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", - "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.8.tgz", + "integrity": "sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw==", "dev": true }, "@types/babel__core": { @@ -5738,9 +5803,9 @@ } }, "@types/babel__traverse": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.12.tgz", - "integrity": "sha512-t4CoEokHTfcyfb4hUaF9oOHu9RmmNWnm1CP0YmMqOOfClKascOmvlEM736vlqeScuGvBDsHkf8R2INd4DWreQA==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.13.tgz", + "integrity": "sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -5849,9 +5914,9 @@ "dev": true }, "@types/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "requires": { "@types/minimatch": "*", @@ -5911,9 +5976,9 @@ } }, "@types/jest": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.0.tgz", - "integrity": "sha512-/yeMsH9HQ1RLORlXAwoLXe8S98xxvhNtUz3yrgrwbaxYjT+6SFPZZRksmRKRA6L5vsUtSHeN71viDOTTyYAD+g==", + "version": "26.0.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.4.tgz", + "integrity": "sha512-4fQNItvelbNA9+sFgU+fhJo8ZFF+AS4Egk3GWwCW2jFtViukXbnztccafAdLhzE/0EiCogljtQQXP8aQ9J7sFg==", "dev": true, "requires": { "jest-diff": "^25.2.1", @@ -5948,9 +6013,9 @@ "dev": true }, "@types/node": { - "version": "14.0.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz", - "integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==", + "version": "14.0.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.18.tgz", + "integrity": "sha512-0Z3nS5acM0cIV4JPzrj9g/GH0Et5vmADWtip3YOXOp1NpOLU8V3KoZDc8ny9c1pe/YSYYzQkAWob6dyV/EWg4g==", "dev": true }, "@types/normalize-package-data": { @@ -6000,9 +6065,9 @@ } }, "@types/react": { - "version": "16.9.38", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.38.tgz", - "integrity": "sha512-pHAeZbjjNRa/hxyNuLrvbxhhnKyKNiLC6I5fRF2Zr/t/S6zS41MiyzH4+c+1I9vVfvuRt1VS2Lodjr4ZWnxrdA==", + "version": "16.9.41", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.41.tgz", + "integrity": "sha512-6cFei7F7L4wwuM+IND/Q2cV1koQUvJ8iSV+Gwn0c3kvABZ691g7sp3hfEQHOUBJtccl1gPi+EyNjMIl9nGA0ug==", "dev": true, "requires": { "@types/prop-types": "*", @@ -6064,9 +6129,9 @@ "dev": true }, "@types/uglify-js": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.9.2.tgz", - "integrity": "sha512-d6dIfpPbF+8B7WiCi2ELY7m0w1joD8cRW4ms88Emdb2w062NeEpbNCeWwVCgzLRpVG+5e74VFSg4rgJ2xXjEiQ==", + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.9.3.tgz", + "integrity": "sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w==", "dev": true, "requires": { "source-map": "^0.6.1" @@ -6087,9 +6152,9 @@ "dev": true }, "@types/webpack": { - "version": "4.41.17", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.17.tgz", - "integrity": "sha512-6FfeCidTSHozwKI67gIVQQ5Mp0g4X96c2IXxX75hYEQJwST/i6NyZexP//zzMOBb+wG9jJ7oO8fk9yObP2HWAw==", + "version": "4.41.20", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.20.tgz", + "integrity": "sha512-MBHtjttd1NTrrr3m+De5VAlnNHgkdK79Kd0zAjVpFPPOSXri+3oA9q8VvC7SDPITzaWiSS1whBrGLtN2HodM5w==", "dev": true, "requires": { "@types/anymatch": "*", @@ -6149,12 +6214,12 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.4.0.tgz", - "integrity": "sha512-wfkpiqaEVhZIuQRmudDszc01jC/YR7gMSxa6ulhggAe/Hs0KVIuo9wzvFiDbG3JD5pRFQoqnf4m7REDsUvBnMQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.6.0.tgz", + "integrity": "sha512-ubHlHVt1lsPQB/CZdEov9XuOFhNG9YRC//kuiS1cMQI6Bs1SsqKrEmZnpgRwthGR09/kEDtr9MywlqXyyYd8GA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "3.4.0", + "@typescript-eslint/experimental-utils": "3.6.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", @@ -6171,13 +6236,14 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.4.0.tgz", - "integrity": "sha512-rHPOjL43lOH1Opte4+dhC0a/+ks+8gOBwxXnyrZ/K4OTAChpSjP76fbI8Cglj7V5GouwVAGaK+xVwzqTyE/TPw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.6.0.tgz", + "integrity": "sha512-4Vdf2hvYMUnTdkCNZu+yYlFtL2v+N2R7JOynIOkFbPjf9o9wQvRwRkzUdWlFd2YiiUwJLbuuLnl5civNg5ykOQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "3.4.0", + "@typescript-eslint/types": "3.6.0", + "@typescript-eslint/typescript-estree": "3.6.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" }, @@ -6195,25 +6261,33 @@ } }, "@typescript-eslint/parser": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.4.0.tgz", - "integrity": "sha512-ZUGI/de44L5x87uX5zM14UYcbn79HSXUR+kzcqU42gH0AgpdB/TjuJy3m4ezI7Q/jk3wTQd755mxSDLhQP79KA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.6.0.tgz", + "integrity": "sha512-taghDxuLhbDAD1U5Fk8vF+MnR0yiFE9Z3v2/bYScFb0N1I9SK8eKHkdJl1DAD48OGFDMFTeOTX0z7g0W6SYUXw==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.4.0", - "@typescript-eslint/typescript-estree": "3.4.0", + "@typescript-eslint/experimental-utils": "3.6.0", + "@typescript-eslint/types": "3.6.0", + "@typescript-eslint/typescript-estree": "3.6.0", "eslint-visitor-keys": "^1.1.0" } }, + "@typescript-eslint/types": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.6.0.tgz", + "integrity": "sha512-JwVj74ohUSt0ZPG+LZ7hb95fW8DFOqBuR6gE7qzq55KDI3BepqsCtHfBIoa0+Xi1AI7fq5nCu2VQL8z4eYftqg==", + "dev": true + }, "@typescript-eslint/typescript-estree": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.4.0.tgz", - "integrity": "sha512-zKwLiybtt4uJb4mkG5q2t6+W7BuYx2IISiDNV+IY68VfoGwErDx/RfVI7SWL4gnZ2t1A1ytQQwZ+YOJbHHJ2rw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.6.0.tgz", + "integrity": "sha512-G57NDSABHjvob7zVV09ehWyD1K6/YUKjz5+AufObFyjNO4DVmKejj47MHjVHHlZZKgmpJD2yyH9lfCXHrPITFg==", "dev": true, "requires": { + "@typescript-eslint/types": "3.6.0", + "@typescript-eslint/visitor-keys": "3.6.0", "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", "glob": "^7.1.6", "is-glob": "^4.0.1", "lodash": "^4.17.15", @@ -6229,6 +6303,15 @@ } } }, + "@typescript-eslint/visitor-keys": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.6.0.tgz", + "integrity": "sha512-p1izllL2Ubwunite0ITjubuMQRBGgjdVYwyG7lXPX8GbrA6qF0uwSRz9MnXZaHMxID4948gX0Ez8v9tUDi/KfQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -6597,9 +6680,9 @@ } }, "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -7028,14 +7111,14 @@ "dev": true }, "autoprefixer": { - "version": "9.8.3", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.3.tgz", - "integrity": "sha512-Y3CkEPqPqGw0TNBcMoUAxeZT9WEOAh0BPYENOTrN/bEfNBqjlYWjHbR1PKduBrmAVn8WbEZtMA3gAZO5MgV7Pg==", + "version": "9.8.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.4.tgz", + "integrity": "sha512-84aYfXlpUe45lvmS+HoAWKCkirI/sw4JK0/bTeeqgHYco3dcsOn0NqdejISjptsYwNji/21dnkDri9PsYKk89A==", "dev": true, "requires": { "browserslist": "^4.12.0", "caniuse-lite": "^1.0.30001087", - "kleur": "^4.0.1", + "colorette": "^1.2.0", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.32", @@ -8071,9 +8154,9 @@ "dev": true }, "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true, "optional": true }, @@ -8427,15 +8510,15 @@ } }, "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", + "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" + "caniuse-lite": "^1.0.30001093", + "electron-to-chromium": "^1.3.488", + "escalade": "^3.0.1", + "node-releases": "^1.1.58" } }, "bs-logger": { @@ -8667,9 +8750,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001087", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001087.tgz", - "integrity": "sha512-KAQRGtt+eGCQBSp2iZTQibdCf9oe6cNTi5lmpsW38NnxP4WMYzfU6HCRmh4kJyh6LrTM9/uyElK4xcO93kafpg==", + "version": "1.0.30001094", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001094.tgz", + "integrity": "sha512-ufHZNtMaDEuRBpTbqD93tIQnngmJ+oBknjvr0IbFympSdtFpAUFmNv4mVKbb53qltxFx0nK3iy32S9AqkLzUNA==", "dev": true }, "capture-exit": { @@ -8977,9 +9060,9 @@ } }, "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, "clipboard": { @@ -9095,6 +9178,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -9322,11 +9411,12 @@ } }, "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", "dev": true, "requires": { + "inherits": "^2.0.4", "readable-stream": "2 || 3" } } @@ -9363,11 +9453,12 @@ "dev": true }, "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", "dev": true, "requires": { + "inherits": "^2.0.4", "readable-stream": "2 || 3" } } @@ -9399,11 +9490,12 @@ }, "dependencies": { "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", "dev": true, "requires": { + "inherits": "^2.0.4", "readable-stream": "2 || 3" } } @@ -9997,9 +10089,9 @@ } }, "csstype": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", - "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.11.tgz", + "integrity": "sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw==", "dev": true }, "currently-unhandled": { @@ -10173,6 +10265,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -10648,9 +10741,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.481", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.481.tgz", - "integrity": "sha512-q2PeCP2PQXSYadDo9uNY+uHXjdB9PcsUpCVoGlY8TZOPHGlXdevlqW9PkKeqCxn2QBkGB8b6AcMO++gh8X82bA==", + "version": "1.3.489", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.489.tgz", + "integrity": "sha512-1FfqjT+IXbs/H9bGJwRIyQQqOXIo7mOVUnv8s7nb2ff01fD0Z8dn1YjKovLDCFe4900Dal2uutR0YzXN5ldqEQ==", "dev": true }, "element-resize-detector": { @@ -10756,12 +10849,20 @@ } }, "enquirer": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz", - "integrity": "sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { - "ansi-colors": "^3.2.1" + "ansi-colors": "^4.1.1" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + } } }, "entities": { @@ -10924,6 +11025,12 @@ "ext": "^1.1.2" } }, + "escalade": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.1.tgz", + "integrity": "sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -10959,9 +11066,9 @@ } }, "eslint": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.3.1.tgz", - "integrity": "sha512-cQC/xj9bhWUcyi/RuMbRtC3I0eW8MH0jhRELSvpKYkWep3C6YZ2OkvcvJVUeO6gcunABmzptbXBuDoXsjHmfTA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.4.0.tgz", + "integrity": "sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -11187,20 +11294,12 @@ "dev": true, "requires": { "get-stdin": "^6.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - } } }, "eslint-plugin-jest": { - "version": "23.17.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.17.1.tgz", - "integrity": "sha512-/o36fw67qNbJGWbSBIBMfseMsNP/d88WUHAGHCi1xFwsNB3XXZGdvxbOw49j3iQz6MCW/yw8OeOsuQhi6mM5ZA==", + "version": "23.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.18.0.tgz", + "integrity": "sha512-wLPM/Rm1SGhxrFQ2TKM/BYsYPhn7ch6ZEK92S2o/vGkAAnDXM0I4nTIo745RIX+VlCRMFgBuJEax6XfTHMdeKg==", "dev": true, "requires": { "@typescript-eslint/experimental-utils": "^2.5.0" @@ -11261,22 +11360,22 @@ } }, "eslint-plugin-react": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz", - "integrity": "sha512-rqe1abd0vxMjmbPngo4NaYxTcR3Y4Hrmc/jg4T+sYz63yqlmJRknpEQfmWY+eDWPuMmix6iUIK+mv0zExjeLgA==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz", + "integrity": "sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg==", "dev": true, "requires": { "array-includes": "^3.1.1", + "array.prototype.flatmap": "^1.2.3", "doctrine": "^2.1.0", "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", + "jsx-ast-utils": "^2.4.1", + "object.entries": "^1.1.2", "object.fromentries": "^2.0.2", "object.values": "^1.1.1", "prop-types": "^15.7.2", - "resolve": "^1.15.1", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" + "resolve": "^1.17.0", + "string.prototype.matchall": "^4.0.2" }, "dependencies": { "doctrine": { @@ -12202,9 +12301,9 @@ "dev": true }, "flow-parser": { - "version": "0.127.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.127.0.tgz", - "integrity": "sha512-T4T92hVeVtrkYYvU01L2KFANsA0TJQrgy46efIU/JBxDhVjxIdS7KzaBEsPJu7RPOM44FCR7wcFQg6rWtGGrLQ==", + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.128.0.tgz", + "integrity": "sha512-BOqwccrxdGQjR09H9/YvmgrY6xCyhfRqqZ6HOiDuPBYkSVd5rKamCLs2S4D7Yd0ltwBtnP3rp7vzaBTIJK1+Iw==", "dev": true }, "flush-write-stream": { @@ -12557,6 +12656,12 @@ "pinkie-promise": "^2.0.0" } }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -12702,9 +12807,9 @@ "dev": true }, "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true }, "get-stream": { @@ -14041,21 +14146,21 @@ "dev": true }, "inquirer": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.2.0.tgz", - "integrity": "sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.0.tgz", + "integrity": "sha512-K+LZp6L/6eE5swqIcVXrxl21aGDU4S50gKH0/d96OMQnSBCyGyZl/oZhbkVmdp5sBoINHd4xZvFSARh2dk6DWA==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.15", "mute-stream": "0.0.8", "run-async": "^2.4.0", - "rxjs": "^6.5.3", + "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" @@ -14078,9 +14183,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -14835,6 +14940,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "decamelize": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-3.2.0.tgz", + "integrity": "sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==", + "dev": true, + "requires": { + "xregexp": "^4.2.4" + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -15029,13 +15143,13 @@ } }, "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.0.tgz", + "integrity": "sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==", "dev": true, "requires": { "cliui": "^6.0.0", - "decamelize": "^1.2.0", + "decamelize": "^3.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", @@ -15044,7 +15158,7 @@ "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^18.1.1" + "yargs-parser": "^18.1.2" } } } @@ -16355,9 +16469,9 @@ } }, "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "dev": true }, "jest-regex-util": { @@ -17124,6 +17238,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "decamelize": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-3.2.0.tgz", + "integrity": "sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==", + "dev": true, + "requires": { + "xregexp": "^4.2.4" + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -17426,13 +17549,13 @@ } }, "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.0.tgz", + "integrity": "sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==", "dev": true, "requires": { "cliui": "^6.0.0", - "decamelize": "^1.2.0", + "decamelize": "^3.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", @@ -17441,7 +17564,7 @@ "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^18.1.1" + "yargs-parser": "^18.1.2" } } } @@ -18240,9 +18363,9 @@ } }, "kleur": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.0.1.tgz", - "integrity": "sha512-Qs6SqCLm63rd0kNVh+wO4XsWLU6kgfwwaPYsLiClWf0Tewkzsa6MvB21bespb8cz+ANS+2t3So1ge3gintzhlw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, "lazy-cache": { @@ -18567,9 +18690,9 @@ } }, "macos-release": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", - "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.0.tgz", + "integrity": "sha512-ko6deozZYiAkqa/0gmcsz+p4jSy3gY7/ZsCEokPaYd8k+6/aXGkiTgr61+Owup7Sf+xjqW8u2ElhoM9SEcEfuA==", "dev": true }, "make-dir": { @@ -19300,7 +19423,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "multimatch": { "version": "3.0.0", @@ -20818,14 +20942,6 @@ "requires": { "kleur": "^3.0.3", "sisteransi": "^1.0.4" - }, - "dependencies": { - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - } } }, "promzard": { @@ -21317,6 +21433,12 @@ "restore-cursor": "^2.0.0" } }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -21608,23 +21730,7 @@ "dev": true }, "react-financial-charts": { - "version": "file:packages/charts", - "requires": { - "d3-array": "^2.4.0", - "d3-force": "^2.0.1", - "d3-format": "^1.4.4", - "d3-interpolate": "^1.4.0", - "d3-path": "^1.0.9", - "d3-scale": "^3.2.1", - "d3-selection": "^1.4.1", - "d3-shape": "^1.3.7", - "d3-time": "^1.1.0", - "d3-time-format": "^2.2.3", - "debug": "^4.1.1", - "lodash.flattendeep": "^4.4.0", - "prop-types": "^15.7.2", - "save-svg-as-png": "^1.4.17" - } + "version": "file:packages/charts" }, "react-focus-lock": { "version": "2.4.0", @@ -21953,13 +22059,12 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -22455,9 +22560,9 @@ "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz", + "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -22500,11 +22605,6 @@ "walker": "~1.0.5" } }, - "save-svg-as-png": { - "version": "1.4.17", - "resolved": "https://registry.npmjs.org/save-svg-as-png/-/save-svg-as-png-1.4.17.tgz", - "integrity": "sha512-7QDaqJsVhdFPwviCxkgHiGm9omeaMBe1VKbHySWU6oFB2LtnGCcYS13eVoslUgq6VZC6Tjq/HddBd1K6p2PGpA==" - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -23077,9 +23177,9 @@ "dev": true }, "source-map-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.0.0.tgz", - "integrity": "sha512-ZayyQCSCrQazN50aCvuS84lJT4xc1ZAcykH5blHaBdVveSwjiFK8UGMPvao0ho54DTb0Jf7m57uRRG/YYUZ2Fg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.0.1.tgz", + "integrity": "sha512-DE4CJyfCVoxFLsHyuVE9Sjcib8cs5qdmOq3wcev1Un/r6F2AfQJDhag4rzpPPA48A2QZyV3CTbc+NGoFMfKIOQ==", "dev": true, "requires": { "data-urls": "^2.0.0", @@ -24511,9 +24611,9 @@ } }, "typescript": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", - "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.6.tgz", + "integrity": "sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw==", "dev": true }, "uglify-js": { @@ -25105,9 +25205,9 @@ "dev": true }, "vue-docgen-api": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-4.25.0.tgz", - "integrity": "sha512-HlYQ7MK9AhkXfnTlJcNWMDvCnSo1q6M0lbO0U39OdEUoQpzYqzBXSMvPZjuvYe6Tmdhuhl2PD7L37J5RspkVnw==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-4.26.0.tgz", + "integrity": "sha512-uJbmLup5NHukMUecMJiKgjLPdPIFDjlCFwOGX107S5gdlb+c/rd4ihOvWRAuVEBiUXWFxHJ12DZxCX1/UJGPcQ==", "dev": true, "requires": { "@babel/parser": "^7.6.0", @@ -25882,9 +25982,9 @@ } }, "ws": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz", - "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", "dev": true }, "xml-name-validator": { diff --git a/package.json b/package.json index 53a211542..a9d38c6e9 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,17 @@ "postinstall": "npm run bootstrap", "bootstrap": "lerna bootstrap", "build": "lerna run build", + "build:annotations": "lerna run build --scope='*/annotations'", + "build:axes": "lerna run build --scope='*/axes'", + "build:charts": "lerna run build --scope='react-financial-charts'", + "build:coordinates": "lerna run build --scope='*/coordinates'", + "build:core": "lerna run build --scope='*/core'", + "build:indicators": "lerna run build --scope='*/indicators'", + "build:interactive": "lerna run build --scope='*/interactive'", + "build:scales": "lerna run build --scope='*/scales'", + "build:series": "lerna run build --scope='*/series'", + "build:tooltip": "lerna run build --scope='*/tooltip'", + "build:utils": "lerna run build --scope='*/utils'", "clean": "run-s clean:packages clean:modules", "clean:packages": "lerna run clean", "clean:modules": "lerna clean --yes", @@ -66,7 +77,17 @@ "typescript": "^3.8.3" }, "dependencies": { + "@react-financial-charts/annotations": "file:packages/annotations", + "@react-financial-charts/axes": "file:packages/axes", + "@react-financial-charts/coordinates": "file:packages/coordinates", + "@react-financial-charts/core": "file:packages/core", + "@react-financial-charts/indicators": "file:packages/indicators", + "@react-financial-charts/interactive": "file:packages/interactive", + "@react-financial-charts/scales": "file:packages/scales", + "@react-financial-charts/series": "file:packages/series", "@react-financial-charts/stories": "file:packages/stories", + "@react-financial-charts/tooltip": "file:packages/tooltip", + "@react-financial-charts/utils": "file:packages/utils", "react-financial-charts": "file:packages/charts" } } diff --git a/packages/annotations/LICENSE b/packages/annotations/LICENSE new file mode 100644 index 000000000..1ffc51b2f --- /dev/null +++ b/packages/annotations/LICENSE @@ -0,0 +1,24 @@ +The MIT License (MIT) +https://github.com/reactivemarkets/react-financial-charts + +Copyright (c) 2015-2018 Ragu Ramaswamy +Copyright (c) 2016 Julien Renaux +Copyright (c) 2019 Reactive Markets + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/annotations/README.md b/packages/annotations/README.md new file mode 100644 index 000000000..0f071b412 --- /dev/null +++ b/packages/annotations/README.md @@ -0,0 +1,5 @@ +# Annotations + +```bash +npm i @react-finanical-charts/annotations +``` diff --git a/packages/annotations/jest.config.js b/packages/annotations/jest.config.js new file mode 100644 index 000000000..cde0d62ab --- /dev/null +++ b/packages/annotations/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + preset: "ts-jest", + collectCoverage: true, + coverageReporters: ["text", "json"], + errorOnDeprecated: true, + testMatch: ["**/__tests__/**/*.+(ts|tsx)"], +}; diff --git a/packages/annotations/package.json b/packages/annotations/package.json new file mode 100644 index 000000000..450df02de --- /dev/null +++ b/packages/annotations/package.json @@ -0,0 +1,49 @@ +{ + "name": "@react-financial-charts/annotations", + "version": "0.5.1", + "description": "Annotations for react-financial-charts", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "typings": "./lib/index.d.ts", + "files": [ + "lib", + "src" + ], + "sideEffects": false, + "author": "Reactive Markets", + "keywords": [ + "charts", + "charting", + "stockcharts", + "finance", + "financial", + "finance-chart", + "react", + "d3" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/reactivemarkets/react-financial-charts.git" + }, + "bugs": { + "url": "https://github.com/reactivemarkets/react-financial-charts/issues" + }, + "scripts": { + "build": "npm run clean && npm run compile", + "clean": "rimraf lib", + "compile": "tsc -p tsconfig.json", + "test": "jest", + "watch": "tsc -p tsconfig.json --watch --preserveWatchOutput" + }, + "peerDependencies": { + "react": "^16.0.0", + "react-dom": "^16.0.0" + }, + "dependencies": { + "@react-financial-charts/core": "file:../core", + "prop-types": "^15.7.2" + } +} diff --git a/packages/charts/src/annotation/Annotate.tsx b/packages/annotations/src/Annotate.tsx similarity index 95% rename from packages/charts/src/annotation/Annotate.tsx rename to packages/annotations/src/Annotate.tsx index f7c11607c..3090c7b03 100644 --- a/packages/charts/src/annotation/Annotate.tsx +++ b/packages/annotations/src/Annotate.tsx @@ -1,6 +1,5 @@ import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; +import { GenericChartComponent } from "@react-financial-charts/core"; interface AnnotateProps { readonly className?: string; diff --git a/packages/charts/src/annotation/BackgroundText.tsx b/packages/annotations/src/BackgroundText.tsx similarity index 90% rename from packages/charts/src/annotation/BackgroundText.tsx rename to packages/annotations/src/BackgroundText.tsx index faf4d71d8..ba023ef8c 100644 --- a/packages/charts/src/annotation/BackgroundText.tsx +++ b/packages/annotations/src/BackgroundText.tsx @@ -1,8 +1,6 @@ import * as PropTypes from "prop-types"; import * as React from "react"; - -import { colorToRGBA, isDefined } from "../utils"; -import { PureComponent } from "../utils/PureComponent"; +import { colorToRGBA } from "@react-financial-charts/core"; interface BackgroundTextProps { readonly x: number; @@ -17,7 +15,7 @@ interface BackgroundTextProps { readonly children: (interval: number) => string; } -class BackgroundText extends PureComponent { +class BackgroundText extends React.PureComponent { public static defaultProps = { opacity: 0.3, fill: "#9E7523", @@ -35,7 +33,7 @@ class BackgroundText extends PureComponent { }; public componentDidMount() { - if (this.context.chartCanvasType !== "svg" && isDefined(this.context.getCanvasContexts)) { + if (this.context.chartCanvasType !== "svg" && this.context.getCanvasContexts !== undefined) { const contexts = this.context.getCanvasContexts(); if (contexts) { this.drawOnCanvas(contexts.bg, this.props, this.context, this.props.children); diff --git a/packages/charts/src/annotation/BarAnnotation.tsx b/packages/annotations/src/BarAnnotation.tsx similarity index 98% rename from packages/charts/src/annotation/BarAnnotation.tsx rename to packages/annotations/src/BarAnnotation.tsx index 014153847..cbd3f8835 100644 --- a/packages/charts/src/annotation/BarAnnotation.tsx +++ b/packages/annotations/src/BarAnnotation.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { functor } from "../utils"; +import { functor } from "@react-financial-charts/core"; interface BarAnnotationProps { readonly className?: string; diff --git a/packages/charts/src/annotation/Label.tsx b/packages/annotations/src/Label.tsx similarity index 95% rename from packages/charts/src/annotation/Label.tsx rename to packages/annotations/src/Label.tsx index da3cc3cc2..0720c3c40 100644 --- a/packages/charts/src/annotation/Label.tsx +++ b/packages/annotations/src/Label.tsx @@ -1,8 +1,6 @@ import * as PropTypes from "prop-types"; import * as React from "react"; -import GenericComponent from "../GenericComponent"; - -import { colorToRGBA, functor, isDefined } from "../utils"; +import { colorToRGBA, functor, GenericComponent } from "@react-financial-charts/core"; import { helper, LabelAnnotation } from "./LabelAnnotation"; interface LabelProps { @@ -80,7 +78,7 @@ function drawOnCanvas2(ctx: CanvasRenderingContext2D, props, context, moreProps) ctx.setTransform(1, 0, 0, 1, 0, 0); ctx.scale(ratio, ratio); - if (isDefined(canvasOriginX)) { + if (canvasOriginX !== undefined) { ctx.translate(canvasOriginX, canvasOriginY); } else { ctx.translate(margin.left + 0.5 * ratio, margin.top + 0.5 * ratio); diff --git a/packages/charts/src/annotation/LabelAnnotation.tsx b/packages/annotations/src/LabelAnnotation.tsx similarity index 97% rename from packages/charts/src/annotation/LabelAnnotation.tsx rename to packages/annotations/src/LabelAnnotation.tsx index a3928945e..f4e9a3ba3 100644 --- a/packages/charts/src/annotation/LabelAnnotation.tsx +++ b/packages/annotations/src/LabelAnnotation.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { functor } from "../utils"; +import { functor } from "@react-financial-charts/core"; interface LabelAnnotationProps { readonly className?: string; diff --git a/packages/charts/src/annotation/SvgPathAnnotation.tsx b/packages/annotations/src/SvgPathAnnotation.tsx similarity index 97% rename from packages/charts/src/annotation/SvgPathAnnotation.tsx rename to packages/annotations/src/SvgPathAnnotation.tsx index 579d62683..e0fbdeb33 100644 --- a/packages/charts/src/annotation/SvgPathAnnotation.tsx +++ b/packages/annotations/src/SvgPathAnnotation.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { functor } from "../utils"; +import { functor } from "@react-financial-charts/core"; interface SvgPathAnnotationProps { readonly className?: string; diff --git a/packages/charts/src/annotation/index.ts b/packages/annotations/src/index.ts similarity index 100% rename from packages/charts/src/annotation/index.ts rename to packages/annotations/src/index.ts diff --git a/packages/annotations/tsconfig.json b/packages/annotations/tsconfig.json new file mode 100644 index 000000000..364ec155b --- /dev/null +++ b/packages/annotations/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react", + "module": "esnext", + "moduleResolution": "node", + "noImplicitAny": false, + "noImplicitThis": true, + "noUnusedLocals": true, + "outDir": "lib", + "sourceMap": true, + "strict": true, + "target": "es2017" + }, + "include": [ + "src" + ], + "exclude": [ + "lib", + "**/__tests__/**" + ] +} diff --git a/packages/axes/LICENSE b/packages/axes/LICENSE new file mode 100644 index 000000000..1ffc51b2f --- /dev/null +++ b/packages/axes/LICENSE @@ -0,0 +1,24 @@ +The MIT License (MIT) +https://github.com/reactivemarkets/react-financial-charts + +Copyright (c) 2015-2018 Ragu Ramaswamy +Copyright (c) 2016 Julien Renaux +Copyright (c) 2019 Reactive Markets + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/axes/README.md b/packages/axes/README.md new file mode 100644 index 000000000..1b06c6d76 --- /dev/null +++ b/packages/axes/README.md @@ -0,0 +1,5 @@ +# Axes + +```bash +npm i @react-finanical-charts/axes +``` diff --git a/packages/axes/jest.config.js b/packages/axes/jest.config.js new file mode 100644 index 000000000..cde0d62ab --- /dev/null +++ b/packages/axes/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + preset: "ts-jest", + collectCoverage: true, + coverageReporters: ["text", "json"], + errorOnDeprecated: true, + testMatch: ["**/__tests__/**/*.+(ts|tsx)"], +}; diff --git a/packages/axes/package.json b/packages/axes/package.json new file mode 100644 index 000000000..0d5fcc1f4 --- /dev/null +++ b/packages/axes/package.json @@ -0,0 +1,51 @@ +{ + "name": "@react-financial-charts/axes", + "version": "0.5.1", + "description": "Axes for react-financial-charts", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "typings": "./lib/index.d.ts", + "files": [ + "lib", + "src" + ], + "sideEffects": false, + "author": "Reactive Markets", + "keywords": [ + "charts", + "charting", + "stockcharts", + "finance", + "financial", + "finance-chart", + "react", + "d3" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/reactivemarkets/react-financial-charts.git" + }, + "bugs": { + "url": "https://github.com/reactivemarkets/react-financial-charts/issues" + }, + "scripts": { + "build": "npm run clean && npm run compile", + "clean": "rimraf lib", + "compile": "tsc -p tsconfig.json", + "test": "jest", + "watch": "tsc -p tsconfig.json --watch --preserveWatchOutput" + }, + "dependencies": { + "@react-financial-charts/core": "file:../core", + "d3-array": "^2.4.0", + "d3-force": "^2.0.1", + "d3-selection": "1.4.1" + }, + "peerDependencies": { + "react": "^16.0.0", + "react-dom": "^16.0.0" + } +} diff --git a/packages/charts/src/axes/Axis.tsx b/packages/axes/src/Axis.tsx similarity index 71% rename from packages/charts/src/axes/Axis.tsx rename to packages/axes/src/Axis.tsx index 575e2bc00..a5a645185 100644 --- a/packages/charts/src/axes/Axis.tsx +++ b/packages/axes/src/Axis.tsx @@ -1,22 +1,19 @@ -import { range as d3Range, zip } from "d3-array"; -import { forceCollide, forceSimulation, forceX } from "d3-force"; -import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; -import { AxisZoomCapture } from "./AxisZoomCapture"; - import { colorToRGBA, first, - getStrokeDasharray, + getAxisCanvas, + GenericChartComponent, getStrokeDasharrayCanvas, identity, isDefined, isNotDefined, last, strokeDashTypes, -} from "../utils"; +} from "@react-financial-charts/core"; +import { range as d3Range, zip } from "d3-array"; +import { forceCollide, forceSimulation, forceX } from "d3-force"; +import * as React from "react"; +import { AxisZoomCapture } from "./AxisZoomCapture"; interface AxisProps { readonly axisZoomCallback?: any; // func @@ -113,7 +110,6 @@ class Axis extends React.Component { canvasToDraw={getAxisCanvas} clip={false} edgeClip={edgeClip} - svgDraw={this.renderSVG} canvasDraw={this.drawOnCanvas} drawOn={["pan"]} /> @@ -125,21 +121,6 @@ class Axis extends React.Component { return this.chartRef.current!.getMoreProps(); }; - private readonly renderSVG = moreProps => { - const { className, showDomain, showTicks, range, getScale } = this.props; - - const scale = getScale(moreProps); - const ticks = showTicks ? axisTicksSVG(this.props, scale) : null; - const domain = showDomain ? axisLineSVG(this.props, range) : null; - - return ( - - {ticks} - {domain} - - ); - }; - private readonly drawOnCanvas = (ctx: CanvasRenderingContext2D, moreProps) => { const { showDomain, showTicks, transform, range, getScale } = this.props; @@ -298,31 +279,6 @@ function tickHelper(props, scale) { }; } -function axisLineSVG(props: AxisProps, range) { - const { domainClassName, orient, outerTickSize, fill, stroke, strokeWidth, strokeOpacity } = props; - - const sign = orient === "top" || orient === "left" ? -1 : 1; - - let d; - - if (orient === "bottom" || orient === "top") { - d = "M" + range[0] + "," + sign * outerTickSize + "V0H" + range[1] + "V" + sign * outerTickSize; - } else { - d = "M" + sign * outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + sign * outerTickSize; - } - - return ( - - ); -} - function drawAxisLine(ctx: CanvasRenderingContext2D, props: AxisProps, range) { const { orient, outerTickSize, stroke, strokeWidth, strokeOpacity } = props; @@ -349,112 +305,6 @@ function drawAxisLine(ctx: CanvasRenderingContext2D, props: AxisProps, range) { ctx.stroke(); } -interface TickProps { - readonly children: string; - readonly dy: string; - readonly fontSize?: number; - readonly fontFamily?: string; - readonly fontWeight?: number | string; - readonly labelX: number; - readonly labelY: number; - readonly textAnchor?: string; - readonly tickStroke?: string; - readonly tickLabelFill?: string; - readonly tickStrokeWidth?: number; - readonly tickStrokeOpacity?: number; - readonly tickStrokeDasharray?: strokeDashTypes; - readonly x1: number; - readonly y1: number; - readonly x2: number; - readonly y2: number; -} - -function Tick(props: TickProps) { - const { - tickLabelFill, - tickStroke, - tickStrokeOpacity, - tickStrokeDasharray, - tickStrokeWidth, - textAnchor, - fontSize, - fontFamily, - fontWeight, - x1, - y1, - x2, - y2, - labelX, - labelY, - dy, - } = props; - - return ( - - - - {props.children} - - - ); -} - -function axisTicksSVG(props, scale) { - const result = tickHelper(props, scale); - - const { tickLabelFill, tickStroke, tickStrokeOpacity, tickStrokeWidth, tickStrokeDasharray, textAnchor } = result; - const { fontSize, fontFamily, fontWeight, ticks, format, dy } = result; - - return ( - - {ticks.map((tick, idx) => { - return ( - - {format(tick.value)} - - ); - })} - - ); -} - function drawTicks(ctx: CanvasRenderingContext2D, result, moreProps) { const { showGridLines, tickStroke, tickStrokeOpacity, tickLabelFill } = result; const { textAnchor, fontSize, fontFamily, fontWeight, ticks, showTickLabel } = result; diff --git a/packages/charts/src/axes/AxisZoomCapture.tsx b/packages/axes/src/AxisZoomCapture.tsx similarity index 99% rename from packages/charts/src/axes/AxisZoomCapture.tsx rename to packages/axes/src/AxisZoomCapture.tsx index cf39043d5..352cb483d 100644 --- a/packages/charts/src/axes/AxisZoomCapture.tsx +++ b/packages/axes/src/AxisZoomCapture.tsx @@ -16,7 +16,7 @@ import { TOUCHEND, TOUCHMOVE, touchPosition, -} from "../utils"; +} from "@react-financial-charts/core"; interface AxisZoomCaptureProps { readonly innerTickSize?: number; diff --git a/packages/charts/src/axes/XAxis.tsx b/packages/axes/src/XAxis.tsx similarity index 98% rename from packages/charts/src/axes/XAxis.tsx rename to packages/axes/src/XAxis.tsx index f9b2707c0..33b96b5ac 100644 --- a/packages/charts/src/axes/XAxis.tsx +++ b/packages/axes/src/XAxis.tsx @@ -1,6 +1,6 @@ +import { strokeDashTypes } from "@react-financial-charts/core"; import * as PropTypes from "prop-types"; import * as React from "react"; -import { strokeDashTypes } from "../utils"; import Axis from "./Axis"; interface XAxisProps { diff --git a/packages/charts/src/axes/YAxis.tsx b/packages/axes/src/YAxis.tsx similarity index 98% rename from packages/charts/src/axes/YAxis.tsx rename to packages/axes/src/YAxis.tsx index 44d71af40..3a9470ed9 100644 --- a/packages/charts/src/axes/YAxis.tsx +++ b/packages/axes/src/YAxis.tsx @@ -1,6 +1,6 @@ +import { strokeDashTypes } from "@react-financial-charts/core"; import * as PropTypes from "prop-types"; import * as React from "react"; -import { strokeDashTypes } from "../utils"; import Axis from "./Axis"; interface YAxisProps { diff --git a/packages/charts/src/axes/index.ts b/packages/axes/src/index.ts similarity index 54% rename from packages/charts/src/axes/index.ts rename to packages/axes/src/index.ts index d24baa079..90ade5f25 100644 --- a/packages/charts/src/axes/index.ts +++ b/packages/axes/src/index.ts @@ -1,2 +1,3 @@ +export { default as Axis } from "./Axis"; export * from "./XAxis"; export * from "./YAxis"; diff --git a/packages/axes/tsconfig.json b/packages/axes/tsconfig.json new file mode 100644 index 000000000..364ec155b --- /dev/null +++ b/packages/axes/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react", + "module": "esnext", + "moduleResolution": "node", + "noImplicitAny": false, + "noImplicitThis": true, + "noUnusedLocals": true, + "outDir": "lib", + "sourceMap": true, + "strict": true, + "target": "es2017" + }, + "include": [ + "src" + ], + "exclude": [ + "lib", + "**/__tests__/**" + ] +} diff --git a/packages/charts/package.json b/packages/charts/package.json index 7804641cb..c47400133 100644 --- a/packages/charts/package.json +++ b/packages/charts/package.json @@ -36,20 +36,16 @@ "watch": "tsc -p tsconfig.json --watch --preserveWatchOutput" }, "dependencies": { - "d3-array": "^2.4.0", - "d3-force": "^2.0.1", - "d3-format": "^1.4.4", - "d3-interpolate": "^1.4.0", - "d3-path": "^1.0.9", - "d3-scale": "^3.2.1", - "d3-selection": "^1.4.1", - "d3-shape": "^1.3.7", - "d3-time": "^1.1.0", - "d3-time-format": "^2.2.3", - "debug": "^4.1.1", - "lodash.flattendeep": "^4.4.0", - "prop-types": "^15.7.2", - "save-svg-as-png": "^1.4.17" + "@react-financial-charts/annotations": "file:../annotations", + "@react-financial-charts/axes": "file:../axes", + "@react-financial-charts/coordinates": "file:../coordinates", + "@react-financial-charts/core": "file:../core", + "@react-financial-charts/indicators": "file:../indicators", + "@react-financial-charts/interactive": "file:../interactive", + "@react-financial-charts/scales": "file:../scales", + "@react-financial-charts/series": "file:../series", + "@react-financial-charts/tooltip": "file:../tooltip", + "@react-financial-charts/utils": "file:../utils" }, "peerDependencies": { "react": "^16.0.0", diff --git a/packages/charts/src/algorithm/index.ts b/packages/charts/src/algorithm/index.ts deleted file mode 100644 index d73fd7926..000000000 --- a/packages/charts/src/algorithm/index.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { identity, merge, slidingWindow } from "../utils"; - -export interface Algorithm { - (data: any[]): any; - accumulator(): any; - accumulator(accumulator: any): Algorithm; - merge(): any; - merge(merge: any): Algorithm; - windowSize(): number; - windowSize(windowSize: number): Algorithm; -} - -export default function() { - let windowSize = 1; - let accumulator = identity; - let mergeAs = identity; - - const algorithm = (data: any[]) => { - const defaultAlgorithm = slidingWindow() - .windowSize(windowSize) - .accumulator(accumulator); - - const calculator = merge() - .algorithm(defaultAlgorithm) - .merge(mergeAs); - - const newData = calculator(data); - - return newData; - }; - - algorithm.accumulator = (newAccumulator?: any) => { - if (newAccumulator === undefined) { - return accumulator; - } - - accumulator = newAccumulator; - - return algorithm; - }; - - algorithm.merge = (newMerge?: any) => { - if (merge === undefined) { - return mergeAs; - } - - mergeAs = newMerge; - - return algorithm; - }; - - algorithm.windowSize = (newWindowSize?: number) => { - if (newWindowSize === undefined) { - return windowSize; - } - - windowSize = newWindowSize; - - return algorithm; - }; - - return algorithm as Algorithm; -} diff --git a/packages/charts/src/index.ts b/packages/charts/src/index.ts index 579ae713a..65a4d220f 100644 --- a/packages/charts/src/index.ts +++ b/packages/charts/src/index.ts @@ -1,2 +1,9 @@ -export { ChartCanvas } from "./ChartCanvas"; -export { Chart } from "./Chart"; +export * from "@react-financial-charts/annotations"; +export * from "@react-financial-charts/axes"; +export * from "@react-financial-charts/coordinates"; +export * from "@react-financial-charts/core"; +export * from "@react-financial-charts/indicators"; +export * from "@react-financial-charts/interactive"; +export * from "@react-financial-charts/scales"; +export * from "@react-financial-charts/series"; +export * from "@react-financial-charts/tooltip"; diff --git a/packages/coordinates/LICENSE b/packages/coordinates/LICENSE new file mode 100644 index 000000000..1ffc51b2f --- /dev/null +++ b/packages/coordinates/LICENSE @@ -0,0 +1,24 @@ +The MIT License (MIT) +https://github.com/reactivemarkets/react-financial-charts + +Copyright (c) 2015-2018 Ragu Ramaswamy +Copyright (c) 2016 Julien Renaux +Copyright (c) 2019 Reactive Markets + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/coordinates/README.md b/packages/coordinates/README.md new file mode 100644 index 000000000..a707d19f3 --- /dev/null +++ b/packages/coordinates/README.md @@ -0,0 +1,5 @@ +# Coordinates + +```bash +npm i @react-finanical-charts/coordinates +``` diff --git a/packages/coordinates/jest.config.js b/packages/coordinates/jest.config.js new file mode 100644 index 000000000..cde0d62ab --- /dev/null +++ b/packages/coordinates/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + preset: "ts-jest", + collectCoverage: true, + coverageReporters: ["text", "json"], + errorOnDeprecated: true, + testMatch: ["**/__tests__/**/*.+(ts|tsx)"], +}; diff --git a/packages/coordinates/package.json b/packages/coordinates/package.json new file mode 100644 index 000000000..9bf41b906 --- /dev/null +++ b/packages/coordinates/package.json @@ -0,0 +1,50 @@ +{ + "name": "@react-financial-charts/coordinates", + "version": "0.5.1", + "description": "Coordinates for react-financial-charts", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "typings": "./lib/index.d.ts", + "files": [ + "lib", + "src" + ], + "sideEffects": false, + "author": "Reactive Markets", + "keywords": [ + "charts", + "charting", + "stockcharts", + "finance", + "financial", + "finance-chart", + "react", + "d3" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/reactivemarkets/react-financial-charts.git" + }, + "bugs": { + "url": "https://github.com/reactivemarkets/react-financial-charts/issues" + }, + "scripts": { + "build": "npm run clean && npm run compile", + "clean": "rimraf lib", + "compile": "tsc -p tsconfig.json", + "test": "jest", + "watch": "tsc -p tsconfig.json --watch --preserveWatchOutput" + }, + "dependencies": { + "@react-financial-charts/core": "file:../core", + "d3-format": "1.4.4", + "prop-types": "15.7.2" + }, + "peerDependencies": { + "react": "^16.0.0", + "react-dom": "^16.0.0" + } +} diff --git a/packages/charts/src/coordinates/CrossHairCursor.tsx b/packages/coordinates/src/CrossHairCursor.tsx similarity index 94% rename from packages/charts/src/coordinates/CrossHairCursor.tsx rename to packages/coordinates/src/CrossHairCursor.tsx index 7b7399ae8..20b80cc87 100644 --- a/packages/charts/src/coordinates/CrossHairCursor.tsx +++ b/packages/coordinates/src/CrossHairCursor.tsx @@ -1,7 +1,13 @@ import * as PropTypes from "prop-types"; import * as React from "react"; -import GenericComponent, { getMouseCanvas } from "../GenericComponent"; -import { colorToRGBA, getStrokeDasharray, getStrokeDasharrayCanvas, isNotDefined, strokeDashTypes } from "../utils"; +import { GenericComponent, getMouseCanvas } from "@react-financial-charts/core"; +import { + colorToRGBA, + getStrokeDasharray, + getStrokeDasharrayCanvas, + isNotDefined, + strokeDashTypes, +} from "@react-financial-charts/core"; interface CrossHairCursorProps { readonly className?: string; diff --git a/packages/charts/src/coordinates/CurrentCoordinate.tsx b/packages/coordinates/src/CurrentCoordinate.tsx similarity index 90% rename from packages/charts/src/coordinates/CurrentCoordinate.tsx rename to packages/coordinates/src/CurrentCoordinate.tsx index b2fadc401..79896c833 100644 --- a/packages/charts/src/coordinates/CurrentCoordinate.tsx +++ b/packages/coordinates/src/CurrentCoordinate.tsx @@ -1,9 +1,6 @@ +import { getMouseCanvas, GenericChartComponent } from "@react-financial-charts/core"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { getMouseCanvas } from "../GenericComponent"; -import { isNotDefined } from "../utils"; - interface CurrentCoordinateProps { readonly className?: string; readonly fill?: string | ((dataItem: any) => string); @@ -67,14 +64,14 @@ export class CurrentCoordinate extends React.Component { xAccessor, } = moreProps; - if (!show || isNotDefined(currentItem)) { + if (!show || currentItem === undefined) { return undefined; } const xValue = xAccessor(currentItem); const yValue = yAccessor(currentItem); - if (isNotDefined(yValue)) { + if (yValue === undefined) { return undefined; } diff --git a/packages/charts/src/coordinates/Cursor.tsx b/packages/coordinates/src/Cursor.tsx similarity index 96% rename from packages/charts/src/coordinates/Cursor.tsx rename to packages/coordinates/src/Cursor.tsx index f9ffac5e8..2b0dd5c2a 100644 --- a/packages/charts/src/coordinates/Cursor.tsx +++ b/packages/coordinates/src/Cursor.tsx @@ -1,6 +1,6 @@ import * as PropTypes from "prop-types"; import * as React from "react"; -import GenericComponent, { getMouseCanvas } from "../GenericComponent"; +import { GenericComponent, getMouseCanvas } from "@react-financial-charts/core"; import { colorToRGBA, @@ -10,7 +10,7 @@ import { isNotDefined, last, strokeDashTypes, -} from "../utils"; +} from "@react-financial-charts/core"; interface CursorProps { readonly className?: string; @@ -49,8 +49,6 @@ class Cursor extends React.Component { public static contextTypes = { margin: PropTypes.object.isRequired, ratio: PropTypes.number.isRequired, - // xScale for getting update event upon pan end, this is needed to get past the PureComponent shouldComponentUpdate - // xScale: PropTypes.func.isRequired, }; public render() { diff --git a/packages/charts/src/coordinates/EdgeCoordinate.tsx b/packages/coordinates/src/EdgeCoordinate.tsx similarity index 99% rename from packages/charts/src/coordinates/EdgeCoordinate.tsx rename to packages/coordinates/src/EdgeCoordinate.tsx index 3fa78f5c8..6021894a0 100644 --- a/packages/charts/src/coordinates/EdgeCoordinate.tsx +++ b/packages/coordinates/src/EdgeCoordinate.tsx @@ -1,6 +1,5 @@ import * as React from "react"; - -import { colorToRGBA, isDefined } from "../utils"; +import { colorToRGBA, isDefined } from "@react-financial-charts/core"; const helper = props => { const { coordinate: displayCoordinate, show, type, orient, edgeAt, hideLine } = props; diff --git a/packages/charts/src/coordinates/EdgeCoordinateV2.tsx b/packages/coordinates/src/EdgeCoordinateV2.tsx similarity index 98% rename from packages/charts/src/coordinates/EdgeCoordinateV2.tsx rename to packages/coordinates/src/EdgeCoordinateV2.tsx index 94199d6ae..892fb9279 100644 --- a/packages/charts/src/coordinates/EdgeCoordinateV2.tsx +++ b/packages/coordinates/src/EdgeCoordinateV2.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { colorToRGBA, isDefined } from "../utils"; +import { colorToRGBA, isDefined } from "@react-financial-charts/core"; export function renderSVG(props) { const { className } = props; diff --git a/packages/charts/src/coordinates/EdgeCoordinateV3.tsx b/packages/coordinates/src/EdgeCoordinateV3.tsx similarity index 99% rename from packages/charts/src/coordinates/EdgeCoordinateV3.tsx rename to packages/coordinates/src/EdgeCoordinateV3.tsx index 107fd2841..0574418aa 100644 --- a/packages/charts/src/coordinates/EdgeCoordinateV3.tsx +++ b/packages/coordinates/src/EdgeCoordinateV3.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { colorToRGBA, getStrokeDasharray, getStrokeDasharrayCanvas, isDefined } from "../utils"; +import { colorToRGBA, getStrokeDasharray, getStrokeDasharrayCanvas, isDefined } from "@react-financial-charts/core"; export function renderSVG(props) { const { className } = props; diff --git a/packages/charts/src/coordinates/EdgeIndicator.tsx b/packages/coordinates/src/EdgeIndicator.tsx similarity index 96% rename from packages/charts/src/coordinates/EdgeIndicator.tsx rename to packages/coordinates/src/EdgeIndicator.tsx index c01f438bd..b4be145a4 100644 --- a/packages/charts/src/coordinates/EdgeIndicator.tsx +++ b/packages/coordinates/src/EdgeIndicator.tsx @@ -1,11 +1,11 @@ import { format } from "d3-format"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; +import { GenericChartComponent } from "@react-financial-charts/core"; +import { getAxisCanvas } from "@react-financial-charts/core"; import { drawOnCanvas, renderSVG } from "./EdgeCoordinateV3"; -import { first, functor, isDefined, last, noop, strokeDashTypes } from "../utils"; +import { first, functor, isDefined, last, noop, strokeDashTypes } from "@react-financial-charts/core"; interface EdgeIndicatorProps { readonly arrowWidth?: number; diff --git a/packages/charts/src/coordinates/MouseCoordinateX.tsx b/packages/coordinates/src/MouseCoordinateX.tsx similarity index 96% rename from packages/charts/src/coordinates/MouseCoordinateX.tsx rename to packages/coordinates/src/MouseCoordinateX.tsx index 26be3e0a1..0f77c092f 100644 --- a/packages/charts/src/coordinates/MouseCoordinateX.tsx +++ b/packages/coordinates/src/MouseCoordinateX.tsx @@ -1,10 +1,9 @@ import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { getMouseCanvas } from "../GenericComponent"; +import { getMouseCanvas, GenericChartComponent } from "@react-financial-charts/core"; import { drawOnCanvas, renderSVG } from "./EdgeCoordinateV3"; -import { isNotDefined } from "../utils"; +import { isNotDefined } from "@react-financial-charts/core"; interface MouseCoordinateXProps { readonly at?: "bottom" | "top"; diff --git a/packages/charts/src/coordinates/MouseCoordinateXV2.tsx b/packages/coordinates/src/MouseCoordinateXV2.tsx similarity index 97% rename from packages/charts/src/coordinates/MouseCoordinateXV2.tsx rename to packages/coordinates/src/MouseCoordinateXV2.tsx index 0fe1850d5..8393c9bd3 100644 --- a/packages/charts/src/coordinates/MouseCoordinateXV2.tsx +++ b/packages/coordinates/src/MouseCoordinateXV2.tsx @@ -1,7 +1,5 @@ import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getMouseCanvas } from "../GenericComponent"; +import { getMouseCanvas, GenericChartComponent } from "@react-financial-charts/core"; interface MouseCoordinateXV2Props { readonly xPosition?: any; // func diff --git a/packages/charts/src/coordinates/MouseCoordinateY.tsx b/packages/coordinates/src/MouseCoordinateY.tsx similarity index 95% rename from packages/charts/src/coordinates/MouseCoordinateY.tsx rename to packages/coordinates/src/MouseCoordinateY.tsx index d7bb7703c..7f2353e84 100644 --- a/packages/charts/src/coordinates/MouseCoordinateY.tsx +++ b/packages/coordinates/src/MouseCoordinateY.tsx @@ -1,11 +1,7 @@ import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getMouseCanvas } from "../GenericComponent"; +import { getMouseCanvas, GenericChartComponent, isNotDefined } from "@react-financial-charts/core"; import { drawOnCanvas, renderSVG } from "./EdgeCoordinateV3"; -import { isNotDefined } from "../utils"; - interface MouseCoordinateYProps { readonly arrowWidth?: number; readonly at?: "left" | "right"; diff --git a/packages/charts/src/coordinates/PriceCoordinate.tsx b/packages/coordinates/src/PriceCoordinate.tsx similarity index 95% rename from packages/charts/src/coordinates/PriceCoordinate.tsx rename to packages/coordinates/src/PriceCoordinate.tsx index c24758ada..cccb22361 100644 --- a/packages/charts/src/coordinates/PriceCoordinate.tsx +++ b/packages/coordinates/src/PriceCoordinate.tsx @@ -1,8 +1,5 @@ import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; -import { functor, strokeDashTypes } from "../utils"; +import { getAxisCanvas, GenericChartComponent, functor, strokeDashTypes } from "@react-financial-charts/core"; import { drawOnCanvas, renderSVG } from "./EdgeCoordinateV3"; interface PriceCoordinateProps { diff --git a/packages/charts/src/coordinates/index.ts b/packages/coordinates/src/index.ts similarity index 100% rename from packages/charts/src/coordinates/index.ts rename to packages/coordinates/src/index.ts diff --git a/packages/coordinates/tsconfig.json b/packages/coordinates/tsconfig.json new file mode 100644 index 000000000..364ec155b --- /dev/null +++ b/packages/coordinates/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react", + "module": "esnext", + "moduleResolution": "node", + "noImplicitAny": false, + "noImplicitThis": true, + "noUnusedLocals": true, + "outDir": "lib", + "sourceMap": true, + "strict": true, + "target": "es2017" + }, + "include": [ + "src" + ], + "exclude": [ + "lib", + "**/__tests__/**" + ] +} diff --git a/packages/core/LICENSE b/packages/core/LICENSE new file mode 100644 index 000000000..1ffc51b2f --- /dev/null +++ b/packages/core/LICENSE @@ -0,0 +1,24 @@ +The MIT License (MIT) +https://github.com/reactivemarkets/react-financial-charts + +Copyright (c) 2015-2018 Ragu Ramaswamy +Copyright (c) 2016 Julien Renaux +Copyright (c) 2019 Reactive Markets + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/core/README.md b/packages/core/README.md new file mode 100644 index 000000000..1b06c6d76 --- /dev/null +++ b/packages/core/README.md @@ -0,0 +1,5 @@ +# Axes + +```bash +npm i @react-finanical-charts/axes +``` diff --git a/packages/core/jest.config.js b/packages/core/jest.config.js new file mode 100644 index 000000000..cde0d62ab --- /dev/null +++ b/packages/core/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + preset: "ts-jest", + collectCoverage: true, + coverageReporters: ["text", "json"], + errorOnDeprecated: true, + testMatch: ["**/__tests__/**/*.+(ts|tsx)"], +}; diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 000000000..55dd276cb --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,51 @@ +{ + "name": "@react-financial-charts/core", + "version": "0.5.1", + "description": "Core code for react-financial-charts", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "typings": "./lib/index.d.ts", + "files": [ + "lib", + "src" + ], + "sideEffects": false, + "author": "Reactive Markets", + "keywords": [ + "charts", + "charting", + "stockcharts", + "finance", + "financial", + "finance-chart", + "react", + "d3" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/reactivemarkets/react-financial-charts.git" + }, + "bugs": { + "url": "https://github.com/reactivemarkets/react-financial-charts/issues" + }, + "scripts": { + "build": "npm run clean && npm run compile", + "clean": "rimraf lib", + "compile": "tsc -p tsconfig.json", + "test": "jest", + "watch": "tsc -p tsconfig.json --watch --preserveWatchOutput" + }, + "dependencies": { + "d3-array": "^2.4.0", + "d3-selection": "^1.4.1", + "lodash.flattendeep": "^4.4.0", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^16.0.0", + "react-dom": "^16.0.0" + } +} diff --git a/packages/charts/src/CanvasContainer.tsx b/packages/core/src/CanvasContainer.tsx similarity index 93% rename from packages/charts/src/CanvasContainer.tsx rename to packages/core/src/CanvasContainer.tsx index 171ce306c..b28eb46b1 100644 --- a/packages/charts/src/CanvasContainer.tsx +++ b/packages/core/src/CanvasContainer.tsx @@ -1,7 +1,5 @@ import * as React from "react"; -import { isDefined } from "./utils"; - interface CanvasContainerProps { readonly height: number; readonly ratio: number; @@ -14,7 +12,7 @@ export class CanvasContainer extends React.Component { private drawCanvas: any = {}; public getCanvasContexts() { - if (isDefined(this.drawCanvas.axes)) { + if (this.drawCanvas?.axes !== undefined) { return this.drawCanvas; } } @@ -53,7 +51,7 @@ export class CanvasContainer extends React.Component { } private readonly setDrawCanvas = (node: HTMLCanvasElement) => { - if (isDefined(node)) { + if (node !== null && node !== undefined) { this.drawCanvas[node.id] = node.getContext("2d"); } else { this.drawCanvas = {}; diff --git a/packages/charts/src/Chart.tsx b/packages/core/src/Chart.tsx similarity index 95% rename from packages/charts/src/Chart.tsx rename to packages/core/src/Chart.tsx index ca88daff7..16a3c7f83 100644 --- a/packages/charts/src/Chart.tsx +++ b/packages/core/src/Chart.tsx @@ -2,8 +2,7 @@ import { scaleLinear } from "d3-scale"; import * as PropTypes from "prop-types"; import * as React from "react"; -import { find, noop } from "./utils"; -import { PureComponent } from "./utils/PureComponent"; +import { find, PureComponent } from "./utils"; interface ChartProps { readonly height?: number; @@ -26,7 +25,6 @@ export class Chart extends PureComponent { flipYScale: false, yPan: true, yPanEnabled: false, - onContextMenu: noop, }; public static contextTypes = { diff --git a/packages/charts/src/ChartCanvas.tsx b/packages/core/src/ChartCanvas.tsx similarity index 99% rename from packages/charts/src/ChartCanvas.tsx rename to packages/core/src/ChartCanvas.tsx index f80576857..233f5e4a2 100644 --- a/packages/charts/src/ChartCanvas.tsx +++ b/packages/core/src/ChartCanvas.tsx @@ -3,26 +3,16 @@ import * as PropTypes from "prop-types"; import * as React from "react"; import { clearCanvas, functor, head, identity, isDefined, isNotDefined, last, noop, shallowEqual } from "./utils"; - -import { - // @ts-ignore - lastVisibleItemBasedZoomAnchor, - mouseBasedZoomAnchor, - // @ts-ignore - rightDomainBasedZoomAnchor, -} from "./utils/zoomBehavior"; - +import { mouseBasedZoomAnchor } from "./zoom/zoomBehavior"; import { getChartConfigWithUpdatedYScales, getCurrentCharts, getCurrentItem, getNewChartConfig, } from "./utils/ChartDataUtil"; - import { EventCapture } from "./EventCapture"; - import { CanvasContainer } from "./CanvasContainer"; -import evaluator from "./scale/evaluator"; +import evaluator from "./utils/evaluator"; const CANDIDATES_FOR_RESET = ["seriesName"]; diff --git a/packages/charts/src/EventCapture.tsx b/packages/core/src/EventCapture.tsx similarity index 100% rename from packages/charts/src/EventCapture.tsx rename to packages/core/src/EventCapture.tsx diff --git a/packages/charts/src/GenericChartComponent.tsx b/packages/core/src/GenericChartComponent.tsx similarity index 96% rename from packages/charts/src/GenericChartComponent.tsx rename to packages/core/src/GenericChartComponent.tsx index 8fca47567..5954df797 100644 --- a/packages/charts/src/GenericChartComponent.tsx +++ b/packages/core/src/GenericChartComponent.tsx @@ -1,11 +1,11 @@ import * as PropTypes from "prop-types"; -import GenericComponent from "./GenericComponent"; +import { GenericComponent } from "./GenericComponent"; import { find, isDefined } from "./utils"; const ALWAYS_TRUE_TYPES = ["drag", "dragend"]; -class GenericChartComponent extends GenericComponent { +export class GenericChartComponent extends GenericComponent { public static defaultProps = GenericComponent.defaultProps; public static contextTypes = { @@ -121,5 +121,3 @@ class GenericChartComponent extends GenericComponent { return true; } } - -export default GenericChartComponent; diff --git a/packages/charts/src/GenericComponent.tsx b/packages/core/src/GenericComponent.tsx similarity index 99% rename from packages/charts/src/GenericComponent.tsx rename to packages/core/src/GenericComponent.tsx index a7979e2ca..85c22d708 100644 --- a/packages/charts/src/GenericComponent.tsx +++ b/packages/core/src/GenericComponent.tsx @@ -51,7 +51,7 @@ interface GenericComponentState { updateCount: number; } -class GenericComponent extends React.Component { +export class GenericComponent extends React.Component { public static defaultProps = { svgDraw: functor(null), draw: [], @@ -468,8 +468,6 @@ class GenericComponent extends React.Component number); readonly canvasClip?: any; // func diff --git a/packages/charts/src/series/AreaSeries.tsx b/packages/series/src/AreaSeries.tsx similarity index 97% rename from packages/charts/src/series/AreaSeries.tsx rename to packages/series/src/AreaSeries.tsx index 77f95dd72..01a1b544d 100644 --- a/packages/charts/src/series/AreaSeries.tsx +++ b/packages/series/src/AreaSeries.tsx @@ -1,6 +1,5 @@ import React, { Component } from "react"; - -import { strokeDashTypes } from "../utils"; +import { strokeDashTypes } from "@react-financial-charts/core"; import { AreaOnlySeries } from "./AreaOnlySeries"; import { LineSeries } from "./LineSeries"; diff --git a/packages/charts/src/series/BarSeries.tsx b/packages/series/src/BarSeries.tsx similarity index 95% rename from packages/charts/src/series/BarSeries.tsx rename to packages/series/src/BarSeries.tsx index 4170ebf33..7e3e4491f 100644 --- a/packages/charts/src/series/BarSeries.tsx +++ b/packages/series/src/BarSeries.tsx @@ -1,7 +1,5 @@ import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; +import { functor, isDefined, getAxisCanvas, GenericChartComponent } from "@react-financial-charts/core"; import { drawOnCanvas2, @@ -12,8 +10,6 @@ import { svgHelper, } from "./StackedBarSeries"; -import { functor, isDefined } from "../utils"; - interface BarSeriesProps { readonly baseAt?: number | any; // func readonly className?: number | any; // func diff --git a/packages/charts/src/series/BollingerSeries.tsx b/packages/series/src/BollingerSeries.tsx similarity index 100% rename from packages/charts/src/series/BollingerSeries.tsx rename to packages/series/src/BollingerSeries.tsx diff --git a/packages/charts/src/series/CandlestickSeries.tsx b/packages/series/src/CandlestickSeries.tsx similarity index 97% rename from packages/charts/src/series/CandlestickSeries.tsx rename to packages/series/src/CandlestickSeries.tsx index cdcc82b75..743ccf346 100644 --- a/packages/charts/src/series/CandlestickSeries.tsx +++ b/packages/series/src/CandlestickSeries.tsx @@ -1,10 +1,15 @@ import { group } from "d3-array"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; - -import { colorToRGBA, functor, head, isDefined, plotDataLengthBarWidth } from "../utils"; +import { + colorToRGBA, + functor, + head, + isDefined, + getAxisCanvas, + GenericChartComponent, + plotDataLengthBarWidth, +} from "@react-financial-charts/core"; interface CandlestickSeriesProps { readonly candleClassName?: string; diff --git a/packages/charts/src/series/CircleMarker.tsx b/packages/series/src/CircleMarker.tsx similarity index 96% rename from packages/charts/src/series/CircleMarker.tsx rename to packages/series/src/CircleMarker.tsx index 9eef29ba9..170ae59ba 100644 --- a/packages/charts/src/series/CircleMarker.tsx +++ b/packages/series/src/CircleMarker.tsx @@ -1,6 +1,5 @@ import * as React from "react"; - -import { colorToRGBA, functor } from "../utils"; +import { colorToRGBA, functor } from "@react-financial-charts/core"; interface CircleProps { readonly className?: string; diff --git a/packages/charts/src/series/ElderRaySeries.tsx b/packages/series/src/ElderRaySeries.tsx similarity index 98% rename from packages/charts/src/series/ElderRaySeries.tsx rename to packages/series/src/ElderRaySeries.tsx index a2549e4f1..8f73f7420 100644 --- a/packages/charts/src/series/ElderRaySeries.tsx +++ b/packages/series/src/ElderRaySeries.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { strokeDashTypes } from "../utils"; +import { strokeDashTypes } from "@react-financial-charts/core"; import { OverlayBarSeries } from "./OverlayBarSeries"; import { StraightLine } from "./StraightLine"; diff --git a/packages/charts/src/series/GroupedBarSeries.tsx b/packages/series/src/GroupedBarSeries.tsx similarity index 94% rename from packages/charts/src/series/GroupedBarSeries.tsx rename to packages/series/src/GroupedBarSeries.tsx index 3f53e15e8..9562ec739 100644 --- a/packages/charts/src/series/GroupedBarSeries.tsx +++ b/packages/series/src/GroupedBarSeries.tsx @@ -1,7 +1,6 @@ import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; +import { getAxisCanvas, GenericChartComponent } from "@react-financial-charts/core"; import { drawOnCanvasHelper, identityStack, StackedBarSeries, svgHelper } from "./StackedBarSeries"; interface GroupedBarSeriesProps { diff --git a/packages/charts/src/series/KagiSeries.tsx b/packages/series/src/KagiSeries.tsx similarity index 96% rename from packages/charts/src/series/KagiSeries.tsx rename to packages/series/src/KagiSeries.tsx index ad0424813..f6c076926 100644 --- a/packages/charts/src/series/KagiSeries.tsx +++ b/packages/series/src/KagiSeries.tsx @@ -1,9 +1,6 @@ import { curveStepBefore, line } from "d3-shape"; import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; -import { isDefined, isNotDefined } from "../utils"; +import { isDefined, isNotDefined, getAxisCanvas, GenericChartComponent } from "@react-financial-charts/core"; interface KagiSeriesProps { readonly className?: string; diff --git a/packages/charts/src/series/LineSeries.tsx b/packages/series/src/LineSeries.tsx similarity index 97% rename from packages/charts/src/series/LineSeries.tsx rename to packages/series/src/LineSeries.tsx index 734de0f26..4df02f7fe 100644 --- a/packages/charts/src/series/LineSeries.tsx +++ b/packages/series/src/LineSeries.tsx @@ -1,8 +1,6 @@ import { line as d3Line } from "d3-shape"; import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas, getMouseCanvas } from "../GenericComponent"; +import { getAxisCanvas, getMouseCanvas, GenericChartComponent } from "@react-financial-charts/core"; import { colorToRGBA, @@ -11,7 +9,7 @@ import { getStrokeDasharrayCanvas, isDefined, strokeDashTypes, -} from "../utils"; +} from "@react-financial-charts/core"; interface LineSeriesProps { readonly canvasClip?: any; // func diff --git a/packages/charts/src/series/MACDSeries.tsx b/packages/series/src/MACDSeries.tsx similarity index 100% rename from packages/charts/src/series/MACDSeries.tsx rename to packages/series/src/MACDSeries.tsx diff --git a/packages/charts/src/series/OHLCSeries.tsx b/packages/series/src/OHLCSeries.tsx similarity index 96% rename from packages/charts/src/series/OHLCSeries.tsx rename to packages/series/src/OHLCSeries.tsx index c52160b51..11e6e21cf 100644 --- a/packages/charts/src/series/OHLCSeries.tsx +++ b/packages/series/src/OHLCSeries.tsx @@ -1,9 +1,6 @@ import { group } from "d3-array"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; - -import { functor, isDefined } from "../utils"; +import { functor, isDefined, getAxisCanvas, GenericChartComponent } from "@react-financial-charts/core"; interface OHLCSeriesProps { readonly className?: string; diff --git a/packages/charts/src/series/OverlayBarSeries.tsx b/packages/series/src/OverlayBarSeries.tsx similarity index 94% rename from packages/charts/src/series/OverlayBarSeries.tsx rename to packages/series/src/OverlayBarSeries.tsx index 486617885..f3481d6ef 100644 --- a/packages/charts/src/series/OverlayBarSeries.tsx +++ b/packages/series/src/OverlayBarSeries.tsx @@ -1,11 +1,14 @@ import { merge } from "d3-array"; - import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; - -import { first, functor, isDefined, isNotDefined, plotDataLengthBarWidth } from "../utils"; +import { + first, + functor, + isDefined, + isNotDefined, + getAxisCanvas, + GenericChartComponent, + plotDataLengthBarWidth, +} from "@react-financial-charts/core"; import { drawOnCanvas2, getBarsSVG2 } from "./StackedBarSeries"; interface OverlayBarSeriesProps { diff --git a/packages/charts/src/series/PointAndFigureSeries.tsx b/packages/series/src/PointAndFigureSeries.tsx similarity index 97% rename from packages/charts/src/series/PointAndFigureSeries.tsx rename to packages/series/src/PointAndFigureSeries.tsx index ef8d3cc4e..22f376c22 100644 --- a/packages/charts/src/series/PointAndFigureSeries.tsx +++ b/packages/series/src/PointAndFigureSeries.tsx @@ -1,8 +1,5 @@ import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; - -import { isDefined, isNotDefined } from "../utils"; +import { isDefined, isNotDefined, getAxisCanvas, GenericChartComponent } from "@react-financial-charts/core"; interface PointAndFigureSeriesProps { readonly className?: string; diff --git a/packages/charts/src/series/RSISeries.tsx b/packages/series/src/RSISeries.tsx similarity index 98% rename from packages/charts/src/series/RSISeries.tsx rename to packages/series/src/RSISeries.tsx index e7a229563..bea81ccc4 100644 --- a/packages/charts/src/series/RSISeries.tsx +++ b/packages/series/src/RSISeries.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { strokeDashTypes } from "../utils"; +import { strokeDashTypes } from "@react-financial-charts/core"; import { LineSeries } from "./LineSeries"; import { StraightLine } from "./StraightLine"; import { SVGComponent } from "./SVGComponent"; diff --git a/packages/charts/src/series/RenkoSeries.tsx b/packages/series/src/RenkoSeries.tsx similarity index 96% rename from packages/charts/src/series/RenkoSeries.tsx rename to packages/series/src/RenkoSeries.tsx index f390d9032..5fa50903b 100644 --- a/packages/charts/src/series/RenkoSeries.tsx +++ b/packages/series/src/RenkoSeries.tsx @@ -1,8 +1,5 @@ import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; - -import { isDefined } from "../utils"; +import { isDefined, getAxisCanvas, GenericChartComponent } from "@react-financial-charts/core"; interface RenkoSeriesProps { readonly classNames?: { diff --git a/packages/charts/src/series/SARSeries.tsx b/packages/series/src/SARSeries.tsx similarity index 95% rename from packages/charts/src/series/SARSeries.tsx rename to packages/series/src/SARSeries.tsx index bde154d71..dfabd1964 100644 --- a/packages/charts/src/series/SARSeries.tsx +++ b/packages/series/src/SARSeries.tsx @@ -1,9 +1,13 @@ import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas, getMouseCanvas } from "../GenericComponent"; - -import { colorToRGBA, first, isDefined, last } from "../utils"; +import { + colorToRGBA, + first, + isDefined, + getAxisCanvas, + getMouseCanvas, + GenericChartComponent, + last, +} from "@react-financial-charts/core"; interface SARSeriesProps { readonly className?: string; diff --git a/packages/charts/src/series/SVGComponent.tsx b/packages/series/src/SVGComponent.tsx similarity index 76% rename from packages/charts/src/series/SVGComponent.tsx rename to packages/series/src/SVGComponent.tsx index 8ae108a31..fe3af87ab 100644 --- a/packages/charts/src/series/SVGComponent.tsx +++ b/packages/series/src/SVGComponent.tsx @@ -1,6 +1,5 @@ import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; +import { GenericChartComponent } from "@react-financial-charts/core"; export class SVGComponent extends React.Component { public render() { diff --git a/packages/charts/src/series/ScatterSeries.tsx b/packages/series/src/ScatterSeries.tsx similarity index 95% rename from packages/charts/src/series/ScatterSeries.tsx rename to packages/series/src/ScatterSeries.tsx index cdfcb9cc8..2131ea724 100644 --- a/packages/charts/src/series/ScatterSeries.tsx +++ b/packages/series/src/ScatterSeries.tsx @@ -1,10 +1,6 @@ import { group } from "d3-array"; import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; - -import { colorToRGBA, functor } from "../utils"; +import { colorToRGBA, functor, getAxisCanvas, GenericChartComponent } from "@react-financial-charts/core"; interface ScatterSeriesProps { readonly className?: string; diff --git a/packages/charts/src/series/SquareMarker.tsx b/packages/series/src/SquareMarker.tsx similarity index 96% rename from packages/charts/src/series/SquareMarker.tsx rename to packages/series/src/SquareMarker.tsx index f52c21b1b..006d002ad 100644 --- a/packages/charts/src/series/SquareMarker.tsx +++ b/packages/series/src/SquareMarker.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { colorToRGBA, functor } from "../utils"; +import { colorToRGBA, functor } from "@react-financial-charts/core"; interface SquareProps { readonly stroke?: string; diff --git a/packages/charts/src/series/StackedBarSeries.tsx b/packages/series/src/StackedBarSeries.tsx similarity index 97% rename from packages/charts/src/series/StackedBarSeries.tsx rename to packages/series/src/StackedBarSeries.tsx index 56f8a3cb2..2a8bd19c7 100644 --- a/packages/charts/src/series/StackedBarSeries.tsx +++ b/packages/series/src/StackedBarSeries.tsx @@ -1,11 +1,15 @@ import { group, merge } from "d3-array"; import { stack as d3Stack } from "d3-shape"; import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; - -import { colorToRGBA, functor, head, identity, plotDataLengthBarWidth } from "../utils"; +import { + colorToRGBA, + functor, + head, + identity, + getAxisCanvas, + GenericChartComponent, + plotDataLengthBarWidth, +} from "@react-financial-charts/core"; interface StackedBarSeriesProps { readonly baseAt?: number | any; // func diff --git a/packages/charts/src/series/StochasticSeries.tsx b/packages/series/src/StochasticSeries.tsx similarity index 100% rename from packages/charts/src/series/StochasticSeries.tsx rename to packages/series/src/StochasticSeries.tsx diff --git a/packages/charts/src/series/StraightLine.tsx b/packages/series/src/StraightLine.tsx similarity index 93% rename from packages/charts/src/series/StraightLine.tsx rename to packages/series/src/StraightLine.tsx index 8fbad94f3..b4b966d79 100644 --- a/packages/charts/src/series/StraightLine.tsx +++ b/packages/series/src/StraightLine.tsx @@ -1,8 +1,12 @@ import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; -import { colorToRGBA, getStrokeDasharray, getStrokeDasharrayCanvas, strokeDashTypes } from "../utils"; +import { + colorToRGBA, + getAxisCanvas, + getStrokeDasharray, + getStrokeDasharrayCanvas, + GenericChartComponent, + strokeDashTypes, +} from "@react-financial-charts/core"; interface StraightLineProps { readonly className?: string; diff --git a/packages/charts/src/series/TriangleMarker.tsx b/packages/series/src/TriangleMarker.tsx similarity index 98% rename from packages/charts/src/series/TriangleMarker.tsx rename to packages/series/src/TriangleMarker.tsx index 48a9d7cc6..0e336fdd0 100644 --- a/packages/charts/src/series/TriangleMarker.tsx +++ b/packages/series/src/TriangleMarker.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { colorToRGBA, functor } from "../utils"; +import { colorToRGBA, functor } from "@react-financial-charts/core"; interface TriangleProps { direction?: "top" | "bottom" | "left" | "right" | "hide" | ((datum: any) => any); diff --git a/packages/charts/src/series/VolumeProfileSeries.tsx b/packages/series/src/VolumeProfileSeries.tsx similarity index 97% rename from packages/charts/src/series/VolumeProfileSeries.tsx rename to packages/series/src/VolumeProfileSeries.tsx index 4ddd741bd..e846053a7 100644 --- a/packages/charts/src/series/VolumeProfileSeries.tsx +++ b/packages/series/src/VolumeProfileSeries.tsx @@ -1,11 +1,16 @@ import { ascending, descending, histogram as d3Histogram, max, merge, rollup, sum, zip } from "d3-array"; import { scaleLinear } from "d3-scale"; import * as React from "react"; - -import GenericChartComponent from "../GenericChartComponent"; -import { getAxisCanvas } from "../GenericComponent"; - -import { accumulatingWindow, colorToRGBA, functor, head, identity, last } from "../utils"; +import { + accumulatingWindow, + colorToRGBA, + functor, + head, + identity, + getAxisCanvas, + GenericChartComponent, + last, +} from "@react-financial-charts/core"; interface VolumeProfileSeriesProps { readonly className?: string; diff --git a/packages/charts/src/series/index.ts b/packages/series/src/index.ts similarity index 100% rename from packages/charts/src/series/index.ts rename to packages/series/src/index.ts diff --git a/packages/series/tsconfig.json b/packages/series/tsconfig.json new file mode 100644 index 000000000..364ec155b --- /dev/null +++ b/packages/series/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react", + "module": "esnext", + "moduleResolution": "node", + "noImplicitAny": false, + "noImplicitThis": true, + "noUnusedLocals": true, + "outDir": "lib", + "sourceMap": true, + "strict": true, + "target": "es2017" + }, + "include": [ + "src" + ], + "exclude": [ + "lib", + "**/__tests__/**" + ] +} diff --git a/packages/stories/package.json b/packages/stories/package.json index f8188ab21..9f51c3e7b 100644 --- a/packages/stories/package.json +++ b/packages/stories/package.json @@ -3,7 +3,7 @@ "version": "0.5.1", "description": "Stories for react financial charts", "private": true, - "author": "reactivemarkets", + "author": "Reactive Markets", "license": "MIT", "scripts": { "clean": "rimraf ../docs lib", @@ -11,12 +11,20 @@ "start": "start-storybook -p 4444" }, "dependencies": { + "@react-financial-charts/annotations": "file:../annotations", + "@react-financial-charts/axes": "file:../axes", + "@react-financial-charts/coordinates": "file:../coordinates", + "@react-financial-charts/core": "file:../core", + "@react-financial-charts/indicators": "file:../indicators", + "@react-financial-charts/interactive": "file:../interactive", + "@react-financial-charts/scales": "file:../scales", + "@react-financial-charts/series": "file:../series", + "@react-financial-charts/tooltip": "file:../tooltip", + "@react-financial-charts/utils": "file:../utils", "d3-dsv": "^1.2.0", "d3-format": "^1.4.4", "d3-time-format": "^2.2.3", "react": "^16.13.1", - "react-dom": "^16.13.1", - "react-financial-charts": "file:../charts", - "react-virtualized-auto-sizer": "^1.0.2" + "react-dom": "^16.13.1" } } diff --git a/packages/stories/src/data/index.ts b/packages/stories/src/data/index.ts index 384191aec..91d954119 100644 --- a/packages/stories/src/data/index.ts +++ b/packages/stories/src/data/index.ts @@ -1,3 +1,2 @@ export * from "./iOHLCData"; export * from "./withOHLCData"; -export * from "./withSize"; diff --git a/packages/stories/src/features/FullCanvas.stories.tsx b/packages/stories/src/features/FullCanvas.stories.tsx index cfa8054cb..f6e42e2ac 100644 --- a/packages/stories/src/features/FullCanvas.stories.tsx +++ b/packages/stories/src/features/FullCanvas.stories.tsx @@ -3,7 +3,7 @@ import StockChart, { IntradayStockChart } from "./stockChart"; export default { component: StockChart, - title: "Features|Full Screen", + title: "Features/Full Screen", }; export const daily = () => ; diff --git a/packages/stories/src/features/Intro.stories.mdx b/packages/stories/src/features/Intro.stories.mdx index ff590e062..47dc467b2 100644 --- a/packages/stories/src/features/Intro.stories.mdx +++ b/packages/stories/src/features/Intro.stories.mdx @@ -1,7 +1,7 @@ import { Meta, Preview } from "@storybook/addon-docs/blocks"; import StockChart from "./stockChart"; - + # React Financial Charts diff --git a/packages/stories/src/features/axis/axis.tsx b/packages/stories/src/features/axis/axis.tsx index 16f0058e3..246c6d828 100644 --- a/packages/stories/src/features/axis/axis.tsx +++ b/packages/stories/src/features/axis/axis.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { CandlestickSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { CandlestickSeries } from "@react-financial-charts/series"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; +import { IOHLCData, withOHLCData } from "../../data"; interface ChartProps { readonly axisAt?: "left" | "right"; diff --git a/packages/stories/src/features/axis/index.stories.tsx b/packages/stories/src/features/axis/index.stories.tsx index bbb47249b..237a96e2d 100644 --- a/packages/stories/src/features/axis/index.stories.tsx +++ b/packages/stories/src/features/axis/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { default as Axis } from "react-financial-charts/lib/axes/Axis"; +import { Axis } from "@react-financial-charts/axes"; import AxisExample from "./axis"; export default { component: Axis, - title: "Features|Axis", + title: "Features/Axis", }; export const right = () => ; diff --git a/packages/stories/src/features/coordinates/coordinates.tsx b/packages/stories/src/features/coordinates/coordinates.tsx index daf06cfa8..7741ab89c 100644 --- a/packages/stories/src/features/coordinates/coordinates.tsx +++ b/packages/stories/src/features/coordinates/coordinates.tsx @@ -1,12 +1,12 @@ import { format } from "d3-format"; import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { MouseCoordinateY } from "react-financial-charts/lib/coordinates"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { CandlestickSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { MouseCoordinateY } from "@react-financial-charts/coordinates"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { CandlestickSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly arrowWidth?: number; diff --git a/packages/stories/src/features/coordinates/index.stories.tsx b/packages/stories/src/features/coordinates/index.stories.tsx index 0cbd57f8e..bdc76112b 100644 --- a/packages/stories/src/features/coordinates/index.stories.tsx +++ b/packages/stories/src/features/coordinates/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { MouseCoordinateY } from "react-financial-charts/lib/coordinates"; +import { MouseCoordinateY } from "@react-financial-charts/coordinates"; import Coordinates from "./coordinates"; export default { component: MouseCoordinateY, - title: "Features|Coordinates", + title: "Features/Coordinates", }; export const edge = () => ; diff --git a/packages/stories/src/features/interaction/index.stories.tsx b/packages/stories/src/features/interaction/index.stories.tsx index 359f02a96..5115c7b0a 100644 --- a/packages/stories/src/features/interaction/index.stories.tsx +++ b/packages/stories/src/features/interaction/index.stories.tsx @@ -1,15 +1,15 @@ import * as React from "react"; -import { ChartCanvas } from "react-financial-charts"; +import { ChartCanvas } from "@react-financial-charts/core"; import { lastVisibleItemBasedZoomAnchor, mouseBasedZoomAnchor, rightDomainBasedZoomAnchor, -} from "react-financial-charts/lib/utils/zoomBehavior"; +} from "@react-financial-charts/core"; import Interaction from "./interaction"; export default { component: ChartCanvas, - title: "Features|Interaction", + title: "Features/Interaction", }; export const clamp = () => ; diff --git a/packages/stories/src/features/interaction/interaction.tsx b/packages/stories/src/features/interaction/interaction.tsx index d3edb10c7..24995e3f4 100644 --- a/packages/stories/src/features/interaction/interaction.tsx +++ b/packages/stories/src/features/interaction/interaction.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { CandlestickSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { CandlestickSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly clamp?: boolean; diff --git a/packages/stories/src/features/stockChart.tsx b/packages/stories/src/features/stockChart.tsx index 7da4173a8..b5f366040 100644 --- a/packages/stories/src/features/stockChart.tsx +++ b/packages/stories/src/features/stockChart.tsx @@ -1,22 +1,21 @@ import { format } from "d3-format"; import { timeFormat } from "d3-time-format"; import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; +import { Chart, ChartCanvas, lastVisibleItemBasedZoomAnchor } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; import { CrossHairCursor, EdgeIndicator, MouseCoordinateX, MouseCoordinateY, -} from "react-financial-charts/lib/coordinates"; -import { elderRay, ema } from "react-financial-charts/lib/indicator"; -import { ZoomButtons } from "react-financial-charts/lib/interactive"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { BarSeries, CandlestickSeries, ElderRaySeries, LineSeries } from "react-financial-charts/lib/series"; -import { MovingAverageTooltip, OHLCTooltip, SingleValueTooltip } from "react-financial-charts/lib/tooltip"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { lastVisibleItemBasedZoomAnchor } from "react-financial-charts/lib/utils/zoomBehavior"; -import { IOHLCData, withOHLCData, withSize } from "../data"; +} from "@react-financial-charts/coordinates"; +import { elderRay, ema } from "@react-financial-charts/indicators"; +import { ZoomButtons } from "@react-financial-charts/interactive"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { BarSeries, CandlestickSeries, ElderRaySeries, LineSeries } from "@react-financial-charts/series"; +import { MovingAverageTooltip, OHLCTooltip, SingleValueTooltip } from "@react-financial-charts/tooltip"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; +import { IOHLCData, withOHLCData } from "../data"; interface StockChartProps { readonly data: IOHLCData[]; @@ -177,5 +176,7 @@ class StockChart extends React.Component { }; } -export default withOHLCData()(withSize(600)(withDeviceRatio()(StockChart))); -export const IntradayStockChart = withOHLCData("MSFT_INTRA_DAY")(withSize(600)(withDeviceRatio()(StockChart))); +export default withOHLCData()(withSize({ style: { minHeight: 600 } })(withDeviceRatio()(StockChart))); +export const IntradayStockChart = withOHLCData("MSFT_INTRA_DAY")( + withSize({ style: { minHeight: 600 } })(withDeviceRatio()(StockChart)), +); diff --git a/packages/stories/src/indicators/atr/atrIndicator.tsx b/packages/stories/src/indicators/atr/atrIndicator.tsx index c74e972c9..82f104f34 100644 --- a/packages/stories/src/indicators/atr/atrIndicator.tsx +++ b/packages/stories/src/indicators/atr/atrIndicator.tsx @@ -1,13 +1,13 @@ import { format } from "d3-format"; import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { atr } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { LineSeries } from "react-financial-charts/lib/series"; -import { SingleValueTooltip } from "react-financial-charts/lib/tooltip"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { atr } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { LineSeries } from "@react-financial-charts/series"; +import { SingleValueTooltip } from "@react-financial-charts/tooltip"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; +import { IOHLCData, withOHLCData } from "../../data"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/indicators/atr/index.stories.tsx b/packages/stories/src/indicators/atr/index.stories.tsx index 72f86b1c0..7f14efd43 100644 --- a/packages/stories/src/indicators/atr/index.stories.tsx +++ b/packages/stories/src/indicators/atr/index.stories.tsx @@ -1,9 +1,9 @@ import * as React from "react"; -import { atr } from "react-financial-charts/lib/indicator"; +import { atr } from "@react-financial-charts/indicators"; import ATRIndicator from "./atrIndicator"; export default { - title: "Visualization|Indicator/ATR", + title: "Visualization/Indicator/ATR", component: atr, parameters: { componentSubtitle: "Average True Range (ATR) is an indicator that measures volatility.", diff --git a/packages/stories/src/indicators/bollingerBand/bollingerIndicator.tsx b/packages/stories/src/indicators/bollingerBand/bollingerIndicator.tsx index 2d6b32dc8..040e15266 100644 --- a/packages/stories/src/indicators/bollingerBand/bollingerIndicator.tsx +++ b/packages/stories/src/indicators/bollingerBand/bollingerIndicator.tsx @@ -1,12 +1,12 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { bollingerBand } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { BollingerSeries, CandlestickSeries } from "react-financial-charts/lib/series"; -import { BollingerBandTooltip } from "react-financial-charts/lib/tooltip"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { bollingerBand } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { BollingerSeries, CandlestickSeries } from "@react-financial-charts/series"; +import { BollingerBandTooltip } from "@react-financial-charts/tooltip"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/indicators/bollingerBand/index.stories.tsx b/packages/stories/src/indicators/bollingerBand/index.stories.tsx index 8e7f0140a..acb2ae4f5 100644 --- a/packages/stories/src/indicators/bollingerBand/index.stories.tsx +++ b/packages/stories/src/indicators/bollingerBand/index.stories.tsx @@ -1,9 +1,9 @@ import * as React from "react"; -import { BollingerSeries } from "react-financial-charts/lib/series"; +import { BollingerSeries } from "@react-financial-charts/series"; import BollingerIndicator from "./bollingerIndicator"; export default { - title: "Visualization|Indicator/Bollinger Band", + title: "Visualization/Indicator/Bollinger Band", component: BollingerSeries, }; diff --git a/packages/stories/src/indicators/elderRay/elderRayIndicator.tsx b/packages/stories/src/indicators/elderRay/elderRayIndicator.tsx index c12e0b210..53204138f 100644 --- a/packages/stories/src/indicators/elderRay/elderRayIndicator.tsx +++ b/packages/stories/src/indicators/elderRay/elderRayIndicator.tsx @@ -1,13 +1,13 @@ import { format } from "d3-format"; import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { change, elderRay } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { ElderRaySeries } from "react-financial-charts/lib/series"; -import { SingleValueTooltip } from "react-financial-charts/lib/tooltip"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { change, elderRay } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { ElderRaySeries } from "@react-financial-charts/series"; +import { SingleValueTooltip } from "@react-financial-charts/tooltip"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/indicators/elderRay/index.stories.tsx b/packages/stories/src/indicators/elderRay/index.stories.tsx index 9ab33024a..b975cc221 100644 --- a/packages/stories/src/indicators/elderRay/index.stories.tsx +++ b/packages/stories/src/indicators/elderRay/index.stories.tsx @@ -1,9 +1,9 @@ import * as React from "react"; -import { forceIndex } from "react-financial-charts/lib/indicator"; +import { forceIndex } from "@react-financial-charts/indicators"; import ElderRayIndicator from "./elderRayIndicator"; export default { - title: "Visualization|Indicator/Elder Ray", + title: "Visualization/Indicator/Elder Ray", component: forceIndex, parameters: { componentSubtitle: `This indicator consists of three separate indicators diff --git a/packages/stories/src/indicators/ema/emaIndicator.tsx b/packages/stories/src/indicators/ema/emaIndicator.tsx index 49a498cea..1804e136d 100644 --- a/packages/stories/src/indicators/ema/emaIndicator.tsx +++ b/packages/stories/src/indicators/ema/emaIndicator.tsx @@ -1,12 +1,12 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { ema } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { LineSeries } from "react-financial-charts/lib/series"; -import { MovingAverageTooltip } from "react-financial-charts/lib/tooltip"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { ema } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { LineSeries } from "@react-financial-charts/series"; +import { MovingAverageTooltip } from "@react-financial-charts/tooltip"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/indicators/ema/index.stories.tsx b/packages/stories/src/indicators/ema/index.stories.tsx index 560013c8a..4fd502907 100644 --- a/packages/stories/src/indicators/ema/index.stories.tsx +++ b/packages/stories/src/indicators/ema/index.stories.tsx @@ -1,9 +1,9 @@ import * as React from "react"; -import { LineSeries } from "react-financial-charts/lib/series"; +import { LineSeries } from "@react-financial-charts/series"; import EMAIndicator from "./emaIndicator"; export default { - title: "Visualization|Indicator/EMA", + title: "Visualization/Indicator/EMA", component: LineSeries, parameters: { componentSubtitle: "Moving averages smooth the price data to form a trend following indicator.", diff --git a/packages/stories/src/indicators/forceIndex/forceIndicator.tsx b/packages/stories/src/indicators/forceIndex/forceIndicator.tsx index 2c271ebb7..7faeb5475 100644 --- a/packages/stories/src/indicators/forceIndex/forceIndicator.tsx +++ b/packages/stories/src/indicators/forceIndex/forceIndicator.tsx @@ -1,13 +1,13 @@ import { format } from "d3-format"; import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { ema, forceIndex } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { LineSeries, StraightLine } from "react-financial-charts/lib/series"; -import { SingleValueTooltip } from "react-financial-charts/lib/tooltip"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { ema, forceIndex } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { LineSeries, StraightLine } from "@react-financial-charts/series"; +import { SingleValueTooltip } from "@react-financial-charts/tooltip"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/indicators/forceIndex/index.stories.tsx b/packages/stories/src/indicators/forceIndex/index.stories.tsx index dfe29d4a6..bc462f59a 100644 --- a/packages/stories/src/indicators/forceIndex/index.stories.tsx +++ b/packages/stories/src/indicators/forceIndex/index.stories.tsx @@ -1,9 +1,9 @@ import * as React from "react"; -import { forceIndex } from "react-financial-charts/lib/indicator"; +import { forceIndex } from "@react-financial-charts/indicators"; import ForceIndicator from "./forceIndicator"; export default { - title: "Visualization|Indicator/Force Index", + title: "Visualization/Indicator/Force Index", component: forceIndex, parameters: { componentSubtitle: `The Force Index is an indicator that uses price diff --git a/packages/stories/src/indicators/macd/index.stories.tsx b/packages/stories/src/indicators/macd/index.stories.tsx index 37ce8681a..fffbc4068 100644 --- a/packages/stories/src/indicators/macd/index.stories.tsx +++ b/packages/stories/src/indicators/macd/index.stories.tsx @@ -1,9 +1,9 @@ import * as React from "react"; -import { MACDSeries } from "react-financial-charts/lib/series"; +import { MACDSeries } from "@react-financial-charts/series"; import MACDIndicator from "./macdIndicator"; export default { - title: "Visualization|Indicator/MACD", + title: "Visualization/Indicator/MACD", component: MACDSeries, parameters: { componentSubtitle: diff --git a/packages/stories/src/indicators/macd/macdIndicator.tsx b/packages/stories/src/indicators/macd/macdIndicator.tsx index 88947ec3b..e504aa6aa 100644 --- a/packages/stories/src/indicators/macd/macdIndicator.tsx +++ b/packages/stories/src/indicators/macd/macdIndicator.tsx @@ -1,12 +1,12 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { macd } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { MACDSeries } from "react-financial-charts/lib/series"; -import { MACDTooltip } from "react-financial-charts/lib/tooltip"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { macd } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { MACDSeries } from "@react-financial-charts/series"; +import { MACDTooltip } from "@react-financial-charts/tooltip"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/indicators/rsi/index.stories.tsx b/packages/stories/src/indicators/rsi/index.stories.tsx index 92b2a9cb3..a4ab734d8 100644 --- a/packages/stories/src/indicators/rsi/index.stories.tsx +++ b/packages/stories/src/indicators/rsi/index.stories.tsx @@ -1,9 +1,9 @@ import * as React from "react"; -import { RSISeries } from "react-financial-charts/lib/series"; +import { RSISeries } from "@react-financial-charts/series"; import RSIIndicator from "./rsiIndicator"; export default { - title: "Visualization|Indicator/RSI", + title: "Visualization/Indicator/RSI", component: RSISeries, parameters: { componentSubtitle: diff --git a/packages/stories/src/indicators/rsi/rsiIndicator.tsx b/packages/stories/src/indicators/rsi/rsiIndicator.tsx index a7896ecd1..b4e451085 100644 --- a/packages/stories/src/indicators/rsi/rsiIndicator.tsx +++ b/packages/stories/src/indicators/rsi/rsiIndicator.tsx @@ -1,12 +1,12 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { rsi } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { RSISeries } from "react-financial-charts/lib/series"; -import { RSITooltip } from "react-financial-charts/lib/tooltip"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { rsi } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { RSISeries } from "@react-financial-charts/series"; +import { RSITooltip } from "@react-financial-charts/tooltip"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/indicators/sar/index.stories.tsx b/packages/stories/src/indicators/sar/index.stories.tsx index 3ea820d5f..b2ce1891d 100644 --- a/packages/stories/src/indicators/sar/index.stories.tsx +++ b/packages/stories/src/indicators/sar/index.stories.tsx @@ -1,9 +1,9 @@ import * as React from "react"; -import { SARSeries } from "react-financial-charts/lib/series"; +import { SARSeries } from "@react-financial-charts/series"; import SARIndicator from "./sarIndicator"; export default { - title: "Visualization|Indicator/SAR", + title: "Visualization/Indicator/SAR", component: SARSeries, parameters: { componentSubtitle: `SAR stands for 'stop and reverse'. diff --git a/packages/stories/src/indicators/sar/sarIndicator.tsx b/packages/stories/src/indicators/sar/sarIndicator.tsx index 08d4e74ea..f8f9eb0fb 100644 --- a/packages/stories/src/indicators/sar/sarIndicator.tsx +++ b/packages/stories/src/indicators/sar/sarIndicator.tsx @@ -1,12 +1,12 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { sar } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { SARSeries } from "react-financial-charts/lib/series"; -import { SingleValueTooltip } from "react-financial-charts/lib/tooltip"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { sar } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { SARSeries } from "@react-financial-charts/series"; +import { SingleValueTooltip } from "@react-financial-charts/tooltip"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/area/basicAreaSeries.tsx b/packages/stories/src/series/area/basicAreaSeries.tsx index 45741fca3..04f7c02c2 100644 --- a/packages/stories/src/series/area/basicAreaSeries.tsx +++ b/packages/stories/src/series/area/basicAreaSeries.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { AreaSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { AreaSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/area/index.stories.tsx b/packages/stories/src/series/area/index.stories.tsx index 05a87c21b..126570395 100644 --- a/packages/stories/src/series/area/index.stories.tsx +++ b/packages/stories/src/series/area/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { AreaSeries } from "react-financial-charts/lib/series"; +import { AreaSeries } from "@react-financial-charts/series"; import { Daily, Intraday } from "./basicAreaSeries"; export default { component: AreaSeries, - title: "Visualization|Series/Area", + title: "Visualization/Series/Area", }; export const daily = () => ; diff --git a/packages/stories/src/series/bar/basicBarSeries.tsx b/packages/stories/src/series/bar/basicBarSeries.tsx index b0a92a4fd..e11e230d7 100644 --- a/packages/stories/src/series/bar/basicBarSeries.tsx +++ b/packages/stories/src/series/bar/basicBarSeries.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { BarSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { BarSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/bar/index.stories.tsx b/packages/stories/src/series/bar/index.stories.tsx index 0d2124a0f..4f3a9cbe3 100644 --- a/packages/stories/src/series/bar/index.stories.tsx +++ b/packages/stories/src/series/bar/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { BarSeries } from "react-financial-charts/lib/series"; +import { BarSeries } from "@react-financial-charts/series"; import { Daily, Intraday } from "./basicBarSeries"; export default { component: BarSeries, - title: "Visualization|Series/Bar", + title: "Visualization/Series/Bar", }; export const daily = () => ; diff --git a/packages/stories/src/series/baseline/basicBaselineSeries.tsx b/packages/stories/src/series/baseline/basicBaselineSeries.tsx index 91ee813d6..9496d0157 100644 --- a/packages/stories/src/series/baseline/basicBaselineSeries.tsx +++ b/packages/stories/src/series/baseline/basicBaselineSeries.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { AlternatingFillAreaSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { AlternatingFillAreaSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/baseline/index.stories.tsx b/packages/stories/src/series/baseline/index.stories.tsx index 301af2200..b085a392e 100644 --- a/packages/stories/src/series/baseline/index.stories.tsx +++ b/packages/stories/src/series/baseline/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { AlternatingFillAreaSeries } from "react-financial-charts/lib/series"; +import { AlternatingFillAreaSeries } from "@react-financial-charts/series"; import { Daily, Intraday } from "./basicBaselineSeries"; export default { component: AlternatingFillAreaSeries, - title: "Visualization|Series/Baseline", + title: "Visualization/Series/Baseline", }; export const daily = () => ; diff --git a/packages/stories/src/series/candlestick/basicCandlestick.tsx b/packages/stories/src/series/candlestick/basicCandlestick.tsx index de7d66439..fbc0bf92b 100644 --- a/packages/stories/src/series/candlestick/basicCandlestick.tsx +++ b/packages/stories/src/series/candlestick/basicCandlestick.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { CandlestickSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { CandlestickSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/candlestick/index.stories.tsx b/packages/stories/src/series/candlestick/index.stories.tsx index 66a6ac214..cc0c31b97 100644 --- a/packages/stories/src/series/candlestick/index.stories.tsx +++ b/packages/stories/src/series/candlestick/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { CandlestickSeries } from "react-financial-charts/lib/series"; +import { CandlestickSeries } from "@react-financial-charts/series"; import { Daily, Intraday } from "./basicCandlestick"; export default { component: CandlestickSeries, - title: "Visualization|Series/Candles", + title: "Visualization/Series/Candles", }; export const daily = () => ; diff --git a/packages/stories/src/series/heikinAshi/basicHeikinAshiSeries.tsx b/packages/stories/src/series/heikinAshi/basicHeikinAshiSeries.tsx index 0051233ae..6c6afa031 100644 --- a/packages/stories/src/series/heikinAshi/basicHeikinAshiSeries.tsx +++ b/packages/stories/src/series/heikinAshi/basicHeikinAshiSeries.tsx @@ -1,11 +1,11 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { heikinAshi } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { CandlestickSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { heikinAshi } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { CandlestickSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/heikinAshi/index.stories.tsx b/packages/stories/src/series/heikinAshi/index.stories.tsx index 1ba94bca9..33adb770d 100644 --- a/packages/stories/src/series/heikinAshi/index.stories.tsx +++ b/packages/stories/src/series/heikinAshi/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { CandlestickSeries } from "react-financial-charts/lib/series"; +import { CandlestickSeries } from "@react-financial-charts/series"; import { Daily, Intraday } from "./basicHeikinAshiSeries"; export default { component: CandlestickSeries, - title: "Visualization|Series/Heikin Ashi", + title: "Visualization/Series/Heikin Ashi", }; export const daily = () => ; diff --git a/packages/stories/src/series/kagi/basicKagiSeries.tsx b/packages/stories/src/series/kagi/basicKagiSeries.tsx index f649e25a3..11a83c714 100644 --- a/packages/stories/src/series/kagi/basicKagiSeries.tsx +++ b/packages/stories/src/series/kagi/basicKagiSeries.tsx @@ -1,11 +1,11 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { kagi } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { KagiSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { kagi } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { KagiSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/kagi/index.stories.tsx b/packages/stories/src/series/kagi/index.stories.tsx index ed7b6cf57..cc6abfc90 100644 --- a/packages/stories/src/series/kagi/index.stories.tsx +++ b/packages/stories/src/series/kagi/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { KagiSeries } from "react-financial-charts/lib/series"; +import { KagiSeries } from "@react-financial-charts/series"; import { Daily, Intraday } from "./basicKagiSeries"; export default { component: KagiSeries, - title: "Visualization|Series/Kagi", + title: "Visualization/Series/Kagi", }; export const daily = () => ; diff --git a/packages/stories/src/series/line/basicLineSeries.tsx b/packages/stories/src/series/line/basicLineSeries.tsx index 345e8651d..83bb6fa33 100644 --- a/packages/stories/src/series/line/basicLineSeries.tsx +++ b/packages/stories/src/series/line/basicLineSeries.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { LineSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { LineSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/line/index.stories.tsx b/packages/stories/src/series/line/index.stories.tsx index 7abd590e3..cfec38571 100644 --- a/packages/stories/src/series/line/index.stories.tsx +++ b/packages/stories/src/series/line/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { LineSeries } from "react-financial-charts/lib/series"; +import { LineSeries } from "@react-financial-charts/series"; import { Daily, Intraday } from "./basicLineSeries"; export default { component: LineSeries, - title: "Visualization|Series/Line", + title: "Visualization/Series/Line", }; export const daily = () => ; diff --git a/packages/stories/src/series/ohlc/basicOHLCSeries.tsx b/packages/stories/src/series/ohlc/basicOHLCSeries.tsx index fbef364c6..df97b1630 100644 --- a/packages/stories/src/series/ohlc/basicOHLCSeries.tsx +++ b/packages/stories/src/series/ohlc/basicOHLCSeries.tsx @@ -1,11 +1,11 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { change } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { OHLCSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { change } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { OHLCSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/ohlc/index.stories.tsx b/packages/stories/src/series/ohlc/index.stories.tsx index 8d1b4d916..68f73053f 100644 --- a/packages/stories/src/series/ohlc/index.stories.tsx +++ b/packages/stories/src/series/ohlc/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { OHLCSeries } from "react-financial-charts/lib/series"; +import { OHLCSeries } from "@react-financial-charts/series"; import { Daily, Intraday } from "./basicOHLCSeries"; export default { component: OHLCSeries, - title: "Visualization|Series/OHLC", + title: "Visualization/Series/OHLC", }; export const daily = () => ; diff --git a/packages/stories/src/series/pointAndFigure/basicPointAndFigureSeries.tsx b/packages/stories/src/series/pointAndFigure/basicPointAndFigureSeries.tsx index d69c8a1bf..b8d6e058c 100644 --- a/packages/stories/src/series/pointAndFigure/basicPointAndFigureSeries.tsx +++ b/packages/stories/src/series/pointAndFigure/basicPointAndFigureSeries.tsx @@ -1,11 +1,11 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { pointAndFigure } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { PointAndFigureSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { pointAndFigure } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { PointAndFigureSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/pointAndFigure/index.stories.tsx b/packages/stories/src/series/pointAndFigure/index.stories.tsx index 0c6b2737d..7dba0181f 100644 --- a/packages/stories/src/series/pointAndFigure/index.stories.tsx +++ b/packages/stories/src/series/pointAndFigure/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { PointAndFigureSeries } from "react-financial-charts/lib/series"; +import { PointAndFigureSeries } from "@react-financial-charts/series"; import { Daily } from "./basicPointAndFigureSeries"; export default { component: PointAndFigureSeries, - title: "Visualization|Series/Point & Figure", + title: "Visualization/Series/Point & Figure", }; export const daily = () => ; diff --git a/packages/stories/src/series/renko/basicRenkoSeries.tsx b/packages/stories/src/series/renko/basicRenkoSeries.tsx index 1a317c087..9e126141b 100644 --- a/packages/stories/src/series/renko/basicRenkoSeries.tsx +++ b/packages/stories/src/series/renko/basicRenkoSeries.tsx @@ -1,11 +1,11 @@ import * as React from "react"; -import { Chart, ChartCanvas } from "react-financial-charts"; -import { XAxis, YAxis } from "react-financial-charts/lib/axes"; -import { renko } from "react-financial-charts/lib/indicator"; -import { discontinuousTimeScaleProviderBuilder } from "react-financial-charts/lib/scale"; -import { RenkoSeries } from "react-financial-charts/lib/series"; -import { withDeviceRatio } from "react-financial-charts/lib/utils"; -import { IOHLCData, withOHLCData, withSize } from "../../data"; +import { Chart, ChartCanvas } from "@react-financial-charts/core"; +import { XAxis, YAxis } from "@react-financial-charts/axes"; +import { renko } from "@react-financial-charts/indicators"; +import { discontinuousTimeScaleProviderBuilder } from "@react-financial-charts/scales"; +import { RenkoSeries } from "@react-financial-charts/series"; +import { IOHLCData, withOHLCData } from "../../data"; +import { withDeviceRatio, withSize } from "@react-financial-charts/utils"; interface ChartProps { readonly data: IOHLCData[]; diff --git a/packages/stories/src/series/renko/index.stories.tsx b/packages/stories/src/series/renko/index.stories.tsx index cfce6ec49..05874bd8f 100644 --- a/packages/stories/src/series/renko/index.stories.tsx +++ b/packages/stories/src/series/renko/index.stories.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import { RenkoSeries } from "react-financial-charts/lib/series"; +import { RenkoSeries } from "@react-financial-charts/series"; import { Daily, Intraday } from "./basicRenkoSeries"; export default { component: RenkoSeries, - title: "Visualization|Series/Renko", + title: "Visualization/Series/Renko", }; export const daily = () => ; diff --git a/packages/tooltip/LICENSE b/packages/tooltip/LICENSE new file mode 100644 index 000000000..1ffc51b2f --- /dev/null +++ b/packages/tooltip/LICENSE @@ -0,0 +1,24 @@ +The MIT License (MIT) +https://github.com/reactivemarkets/react-financial-charts + +Copyright (c) 2015-2018 Ragu Ramaswamy +Copyright (c) 2016 Julien Renaux +Copyright (c) 2019 Reactive Markets + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/tooltip/README.md b/packages/tooltip/README.md new file mode 100644 index 000000000..ea0b77fbf --- /dev/null +++ b/packages/tooltip/README.md @@ -0,0 +1,5 @@ +# Tooltip + +```bash +npm i @react-finanical-charts/tooltip +``` diff --git a/packages/tooltip/jest.config.js b/packages/tooltip/jest.config.js new file mode 100644 index 000000000..cde0d62ab --- /dev/null +++ b/packages/tooltip/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + preset: "ts-jest", + collectCoverage: true, + coverageReporters: ["text", "json"], + errorOnDeprecated: true, + testMatch: ["**/__tests__/**/*.+(ts|tsx)"], +}; diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json new file mode 100644 index 000000000..b369fc175 --- /dev/null +++ b/packages/tooltip/package.json @@ -0,0 +1,52 @@ +{ + "name": "@react-financial-charts/tooltip", + "version": "0.5.1", + "description": "Tooltips for react-financial-charts", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "typings": "./lib/index.d.ts", + "files": [ + "lib", + "src" + ], + "sideEffects": false, + "author": "Reactive Markets", + "keywords": [ + "charts", + "charting", + "stockcharts", + "finance", + "financial", + "finance-chart", + "react", + "d3" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/reactivemarkets/react-financial-charts.git" + }, + "bugs": { + "url": "https://github.com/reactivemarkets/react-financial-charts/issues" + }, + "scripts": { + "build": "npm run clean && npm run compile", + "clean": "rimraf lib", + "compile": "tsc -p tsconfig.json", + "test": "jest", + "watch": "tsc -p tsconfig.json --watch --preserveWatchOutput" + }, + "dependencies": { + "@react-financial-charts/core": "file:../core", + "d3-array": "2.4.0", + "d3-format": "^1.4.4", + "d3-time-format": "2.2.3", + "prop-types": "15.7.2" + }, + "peerDependencies": { + "react": "^16.0.0", + "react-dom": "^16.0.0" + } +} diff --git a/packages/charts/src/tooltip/BollingerBandTooltip.tsx b/packages/tooltip/src/BollingerBandTooltip.tsx similarity index 96% rename from packages/charts/src/tooltip/BollingerBandTooltip.tsx rename to packages/tooltip/src/BollingerBandTooltip.tsx index 7e1cdcffe..b1295fafc 100644 --- a/packages/charts/src/tooltip/BollingerBandTooltip.tsx +++ b/packages/tooltip/src/BollingerBandTooltip.tsx @@ -1,9 +1,7 @@ +import { functor, GenericChartComponent, isDefined } from "@react-financial-charts/core"; import { format } from "d3-format"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { functor, isDefined } from "../utils"; - import { default as defaultDisplayValuesFor } from "./displayValuesFor"; import { ToolTipText } from "./ToolTipText"; import { ToolTipTSpanLabel } from "./ToolTipTSpanLabel"; diff --git a/packages/charts/src/tooltip/GroupTooltip.tsx b/packages/tooltip/src/GroupTooltip.tsx similarity index 98% rename from packages/charts/src/tooltip/GroupTooltip.tsx rename to packages/tooltip/src/GroupTooltip.tsx index 48e220bb9..a3cbe6a21 100644 --- a/packages/charts/src/tooltip/GroupTooltip.tsx +++ b/packages/tooltip/src/GroupTooltip.tsx @@ -1,6 +1,6 @@ +import { GenericChartComponent } from "@react-financial-charts/core"; import { format } from "d3-format"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; import { default as defaultDisplayValuesFor } from "./displayValuesFor"; import { layouts, SingleTooltip } from "./SingleTooltip"; import { ToolTipText } from "./ToolTipText"; diff --git a/packages/charts/src/tooltip/HoverTooltip.tsx b/packages/tooltip/src/HoverTooltip.tsx similarity index 98% rename from packages/charts/src/tooltip/HoverTooltip.tsx rename to packages/tooltip/src/HoverTooltip.tsx index fa81e3502..a8bb37b22 100644 --- a/packages/charts/src/tooltip/HoverTooltip.tsx +++ b/packages/tooltip/src/HoverTooltip.tsx @@ -1,9 +1,7 @@ import { sum } from "d3-array"; import * as PropTypes from "prop-types"; import * as React from "react"; -import GenericComponent from "../GenericComponent"; - -import { colorToRGBA, first, isDefined, isNotDefined, last } from "../utils"; +import { colorToRGBA, first, isDefined, isNotDefined, GenericComponent, last } from "@react-financial-charts/core"; interface HoverTooltipProps { readonly chartId?: number | string; diff --git a/packages/charts/src/tooltip/MACDTooltip.tsx b/packages/tooltip/src/MACDTooltip.tsx similarity index 97% rename from packages/charts/src/tooltip/MACDTooltip.tsx rename to packages/tooltip/src/MACDTooltip.tsx index 388044993..b30d2e646 100644 --- a/packages/charts/src/tooltip/MACDTooltip.tsx +++ b/packages/tooltip/src/MACDTooltip.tsx @@ -1,10 +1,8 @@ +import { functor, GenericChartComponent } from "@react-financial-charts/core"; import { format } from "d3-format"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; import { default as defaultDisplayValuesFor } from "./displayValuesFor"; - -import { functor } from "../utils"; import { ToolTipText } from "./ToolTipText"; import { ToolTipTSpanLabel } from "./ToolTipTSpanLabel"; diff --git a/packages/charts/src/tooltip/MovingAverageTooltip.tsx b/packages/tooltip/src/MovingAverageTooltip.tsx similarity index 98% rename from packages/charts/src/tooltip/MovingAverageTooltip.tsx rename to packages/tooltip/src/MovingAverageTooltip.tsx index 04766d1bc..5027f208d 100644 --- a/packages/charts/src/tooltip/MovingAverageTooltip.tsx +++ b/packages/tooltip/src/MovingAverageTooltip.tsx @@ -1,13 +1,11 @@ +import { functor, GenericChartComponent } from "@react-financial-charts/core"; import { format } from "d3-format"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; import { default as defaultDisplayValuesFor } from "./displayValuesFor"; import { ToolTipText } from "./ToolTipText"; import { ToolTipTSpanLabel } from "./ToolTipTSpanLabel"; -import { functor } from "../utils"; - interface SingleMAToolTipProps { readonly color: string; readonly displayName: string; diff --git a/packages/charts/src/tooltip/OHLCTooltip.tsx b/packages/tooltip/src/OHLCTooltip.tsx similarity index 97% rename from packages/charts/src/tooltip/OHLCTooltip.tsx rename to packages/tooltip/src/OHLCTooltip.tsx index 46c68c346..17f139d57 100644 --- a/packages/charts/src/tooltip/OHLCTooltip.tsx +++ b/packages/tooltip/src/OHLCTooltip.tsx @@ -1,10 +1,9 @@ +import { functor, isDefined, GenericChartComponent, last } from "@react-financial-charts/core"; import { format } from "d3-format"; import { timeFormat } from "d3-time-format"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { default as defaultDisplayValuesFor } from "./displayValuesFor"; -import { functor, isDefined, last } from "../utils"; +import { default as defaultDisplayValuesFor } from "./displayValuesFor"; import { ToolTipText } from "./ToolTipText"; import { ToolTipTSpanLabel } from "./ToolTipTSpanLabel"; diff --git a/packages/charts/src/tooltip/RSITooltip.tsx b/packages/tooltip/src/RSITooltip.tsx similarity index 95% rename from packages/charts/src/tooltip/RSITooltip.tsx rename to packages/tooltip/src/RSITooltip.tsx index 757766787..5762791b5 100644 --- a/packages/charts/src/tooltip/RSITooltip.tsx +++ b/packages/tooltip/src/RSITooltip.tsx @@ -1,9 +1,8 @@ +import { functor, isDefined, GenericChartComponent } from "@react-financial-charts/core"; import { format } from "d3-format"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { default as defaultDisplayValuesFor } from "./displayValuesFor"; -import { functor, isDefined } from "../utils"; +import { default as defaultDisplayValuesFor } from "./displayValuesFor"; import { ToolTipText } from "./ToolTipText"; import { ToolTipTSpanLabel } from "./ToolTipTSpanLabel"; diff --git a/packages/charts/src/tooltip/SingleTooltip.tsx b/packages/tooltip/src/SingleTooltip.tsx similarity index 100% rename from packages/charts/src/tooltip/SingleTooltip.tsx rename to packages/tooltip/src/SingleTooltip.tsx diff --git a/packages/charts/src/tooltip/SingleValueTooltip.tsx b/packages/tooltip/src/SingleValueTooltip.tsx similarity index 96% rename from packages/charts/src/tooltip/SingleValueTooltip.tsx rename to packages/tooltip/src/SingleValueTooltip.tsx index 0db886784..7a5c3660f 100644 --- a/packages/charts/src/tooltip/SingleValueTooltip.tsx +++ b/packages/tooltip/src/SingleValueTooltip.tsx @@ -1,9 +1,8 @@ +import { functor, identity, isDefined, GenericChartComponent, noop } from "@react-financial-charts/core"; import { format } from "d3-format"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { default as defaultDisplayValuesFor } from "./displayValuesFor"; -import { functor, identity, isDefined, noop } from "../utils"; +import { default as defaultDisplayValuesFor } from "./displayValuesFor"; import { ToolTipText } from "./ToolTipText"; import { ToolTipTSpanLabel } from "./ToolTipTSpanLabel"; diff --git a/packages/charts/src/tooltip/StochasticTooltip.tsx b/packages/tooltip/src/StochasticTooltip.tsx similarity index 96% rename from packages/charts/src/tooltip/StochasticTooltip.tsx rename to packages/tooltip/src/StochasticTooltip.tsx index d8165655a..0c74209af 100644 --- a/packages/charts/src/tooltip/StochasticTooltip.tsx +++ b/packages/tooltip/src/StochasticTooltip.tsx @@ -1,10 +1,8 @@ +import { functor, GenericChartComponent } from "@react-financial-charts/core"; import { format } from "d3-format"; import * as React from "react"; -import GenericChartComponent from "../GenericChartComponent"; -import { default as defaultDisplayValuesFor } from "./displayValuesFor"; - -import { functor } from "../utils"; +import { default as defaultDisplayValuesFor } from "./displayValuesFor"; import { ToolTipText } from "./ToolTipText"; import { ToolTipTSpanLabel } from "./ToolTipTSpanLabel"; diff --git a/packages/charts/src/tooltip/ToolTipTSpanLabel.tsx b/packages/tooltip/src/ToolTipTSpanLabel.tsx similarity index 100% rename from packages/charts/src/tooltip/ToolTipTSpanLabel.tsx rename to packages/tooltip/src/ToolTipTSpanLabel.tsx diff --git a/packages/charts/src/tooltip/ToolTipText.tsx b/packages/tooltip/src/ToolTipText.tsx similarity index 100% rename from packages/charts/src/tooltip/ToolTipText.tsx rename to packages/tooltip/src/ToolTipText.tsx diff --git a/packages/charts/src/tooltip/displayValuesFor.ts b/packages/tooltip/src/displayValuesFor.ts similarity index 100% rename from packages/charts/src/tooltip/displayValuesFor.ts rename to packages/tooltip/src/displayValuesFor.ts diff --git a/packages/charts/src/tooltip/index.ts b/packages/tooltip/src/index.ts similarity index 100% rename from packages/charts/src/tooltip/index.ts rename to packages/tooltip/src/index.ts diff --git a/packages/tooltip/tsconfig.json b/packages/tooltip/tsconfig.json new file mode 100644 index 000000000..364ec155b --- /dev/null +++ b/packages/tooltip/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react", + "module": "esnext", + "moduleResolution": "node", + "noImplicitAny": false, + "noImplicitThis": true, + "noUnusedLocals": true, + "outDir": "lib", + "sourceMap": true, + "strict": true, + "target": "es2017" + }, + "include": [ + "src" + ], + "exclude": [ + "lib", + "**/__tests__/**" + ] +} diff --git a/packages/utils/LICENSE b/packages/utils/LICENSE new file mode 100644 index 000000000..1ffc51b2f --- /dev/null +++ b/packages/utils/LICENSE @@ -0,0 +1,24 @@ +The MIT License (MIT) +https://github.com/reactivemarkets/react-financial-charts + +Copyright (c) 2015-2018 Ragu Ramaswamy +Copyright (c) 2016 Julien Renaux +Copyright (c) 2019 Reactive Markets + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/utils/README.md b/packages/utils/README.md new file mode 100644 index 000000000..35a035ac1 --- /dev/null +++ b/packages/utils/README.md @@ -0,0 +1,5 @@ +# Utils + +```bash +npm i @react-finanical-charts/utils +``` diff --git a/packages/utils/package.json b/packages/utils/package.json new file mode 100644 index 000000000..38dca76b4 --- /dev/null +++ b/packages/utils/package.json @@ -0,0 +1,47 @@ +{ + "name": "@react-financial-charts/utils", + "version": "0.5.1", + "description": "Utils for react-financial-charts", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "typings": "./lib/index.d.ts", + "files": [ + "lib", + "src" + ], + "sideEffects": false, + "author": "Reactive Markets", + "keywords": [ + "charts", + "charting", + "stockcharts", + "finance", + "financial", + "finance-chart", + "react", + "d3" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/reactivemarkets/react-financial-charts.git" + }, + "bugs": { + "url": "https://github.com/reactivemarkets/react-financial-charts/issues" + }, + "scripts": { + "build": "npm run clean && npm run compile", + "clean": "rimraf lib", + "compile": "tsc -p tsconfig.json", + "watch": "tsc -p tsconfig.json --watch --preserveWatchOutput" + }, + "dependencies": { + "react-virtualized-auto-sizer": "^1.0.2" + }, + "peerDependencies": { + "react": "^16.0.0", + "react-dom": "^16.0.0" + } +} diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts new file mode 100644 index 000000000..7bd6316b8 --- /dev/null +++ b/packages/utils/src/index.ts @@ -0,0 +1,2 @@ +export * from "./withDeviceRatio"; +export * from "./withSize"; diff --git a/packages/charts/src/utils/withDeviceRatio.tsx b/packages/utils/src/withDeviceRatio.tsx similarity index 50% rename from packages/charts/src/utils/withDeviceRatio.tsx rename to packages/utils/src/withDeviceRatio.tsx index cb74d5683..b67a81591 100644 --- a/packages/charts/src/utils/withDeviceRatio.tsx +++ b/packages/utils/src/withDeviceRatio.tsx @@ -11,31 +11,33 @@ export interface WithRatioState { export function withDeviceRatio() { return (OriginalComponent: React.ComponentClass) => { return class WithRatio extends React.Component, WithRatioState> { - public canvasRef = React.createRef(); + public ref = React.createRef(); public componentDidMount() { - const { current } = this.canvasRef; + const { current } = this.ref; if (current === null) { this.setState({ ratio: 1, }); - } else { - const context: any = current.getContext("2d"); - const { devicePixelRatio } = window; + return; + } - const backingStoreRatio = - context.webkitBackingStorePixelRatio || - context.mozBackingStorePixelRatio || - context.msBackingStorePixelRatio || - context.oBackingStorePixelRatio || - context.backingStorePixelRatio || - 1; + const context: any = current.getContext("2d"); - this.setState({ - ratio: devicePixelRatio / backingStoreRatio, - }); - } + const { devicePixelRatio } = window; + + const backingStoreRatio = + context.webkitBackingStorePixelRatio ?? + context.mozBackingStorePixelRatio ?? + context.msBackingStorePixelRatio ?? + context.oBackingStorePixelRatio ?? + context.backingStorePixelRatio ?? + 1; + + this.setState({ + ratio: devicePixelRatio / backingStoreRatio, + }); } public render() { @@ -44,7 +46,7 @@ export function withDeviceRatio() { return ; } - return ; + return ; } }; }; diff --git a/packages/stories/src/data/withSize.tsx b/packages/utils/src/withSize.tsx similarity index 77% rename from packages/stories/src/data/withSize.tsx rename to packages/utils/src/withSize.tsx index 74b4042ab..50b95a3b2 100644 --- a/packages/stories/src/data/withSize.tsx +++ b/packages/utils/src/withSize.tsx @@ -1,17 +1,17 @@ import * as React from "react"; -import AutoSizer from "react-virtualized-auto-sizer"; +import AutoSizer, { AutoSizerProps } from "react-virtualized-auto-sizer"; interface WithSizeProps { readonly width: number; readonly height: number; } -export function withSize(minHeight = 300) { +export function withSize(props?: Omit) { return (OriginalComponent: React.ComponentClass) => { return class WithSize extends React.Component> { public render() { return ( - + {({ height, width }) => { return ; }} diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json new file mode 100644 index 000000000..364ec155b --- /dev/null +++ b/packages/utils/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react", + "module": "esnext", + "moduleResolution": "node", + "noImplicitAny": false, + "noImplicitThis": true, + "noUnusedLocals": true, + "outDir": "lib", + "sourceMap": true, + "strict": true, + "target": "es2017" + }, + "include": [ + "src" + ], + "exclude": [ + "lib", + "**/__tests__/**" + ] +}