From aa2525d7dfd66eba5f18cadde276bc9c42273d94 Mon Sep 17 00:00:00 2001 From: Johan Girod Date: Tue, 19 May 2020 12:01:42 +0200 Subject: [PATCH] =?UTF-8?q?:art:=20Am=C3=A9liore=20le=20style=20des=20r?= =?UTF-8?q?=C3=A8gles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Et abandonne l'import de feuille de style dans le moteur pour lui préférer les styled-components --- .../source/components/TargetSelection.css | 10 - publicodes/docs/api.md | 2 +- publicodes/package.json | 1 + .../source/components/mecanisms/Allègement.js | 21 +- .../source/components/mecanisms/Barème.css | 32 -- .../source/components/mecanisms/Barème.tsx | 77 ++- .../components/mecanisms/Composantes.css | 12 - .../components/mecanisms/Composantes.js | 44 +- .../source/components/mecanisms/Grille.tsx | 25 +- .../mecanisms/InversionNumérique.css | 4 - .../mecanisms/InversionNumérique.js | 11 +- .../source/components/mecanisms/Product.js | 43 +- .../source/components/mecanisms/Recalcul.tsx | 11 +- .../source/components/mecanisms/Somme.css | 127 ----- .../source/components/mecanisms/Somme.js | 100 +++- .../components/mecanisms/TauxProgressif.tsx | 46 +- .../components/mecanisms/Variations.css | 14 - .../source/components/mecanisms/Variations.js | 203 ++++--- .../source/components/mecanisms/colors.js | 14 - .../source/components/mecanisms/colors.ts | 8 +- .../source/components/mecanisms/common.tsx | 214 +++++--- .../source/components/rule/Algorithm.css | 203 ------- .../source/components/rule/Algorithm.tsx | 12 +- publicodes/source/components/rule/Header.css | 16 - publicodes/source/components/rule/Header.tsx | 23 +- .../source/components/rule/References.css | 47 -- .../source/components/rule/References.tsx | 37 +- publicodes/source/mecanisms.tsx | 41 +- publicodes/source/mecanisms/arrondi.tsx | 52 +- publicodes/source/mecanisms/durée.tsx | 6 +- publicodes/source/mecanisms/encadrement.tsx | 32 +- publicodes/source/mecanisms/operation.js | 22 +- publicodes/source/parseRule.tsx | 11 +- publicodes/source/types/css-prop.d.ts | 1 + publicodes/webpack.config.js | 20 +- yarn.lock | 517 ++++++------------ 36 files changed, 799 insertions(+), 1260 deletions(-) delete mode 100644 publicodes/source/components/mecanisms/Barème.css delete mode 100644 publicodes/source/components/mecanisms/Composantes.css delete mode 100644 publicodes/source/components/mecanisms/InversionNumérique.css delete mode 100644 publicodes/source/components/mecanisms/Somme.css delete mode 100644 publicodes/source/components/mecanisms/Variations.css delete mode 100644 publicodes/source/components/mecanisms/colors.js delete mode 100644 publicodes/source/components/rule/Algorithm.css delete mode 100644 publicodes/source/components/rule/Header.css delete mode 100644 publicodes/source/components/rule/References.css create mode 100644 publicodes/source/types/css-prop.d.ts diff --git a/mon-entreprise/source/components/TargetSelection.css b/mon-entreprise/source/components/TargetSelection.css index d9ff00859..bbcdbbda5 100644 --- a/mon-entreprise/source/components/TargetSelection.css +++ b/mon-entreprise/source/components/TargetSelection.css @@ -160,14 +160,4 @@ vertical-align: middle; } -.input-error { - padding: 0 0.6em; - margin-right: 0.6em; - font-size: 90%; - font-style: italic; - color: #c0392b; - background: yellow; - font-weight: 600; -} - /* Autre idée pour styler les checkboxes https://codepen.io/KenanYusuf/pen/PZKEKd */ diff --git a/publicodes/docs/api.md b/publicodes/docs/api.md index c0f1962da..a79e841eb 100644 --- a/publicodes/docs/api.md +++ b/publicodes/docs/api.md @@ -216,7 +216,7 @@ Un objet javascript de type `EvaluatedNode` contenant la valeur calculée. - `isApplicable`: si l'expression évaluée est une référence à une règle, alors ce booléen indique si la règle est applicable ou non -#### _function_ formatValue(evaluatedNode, \[options]) +#### _function_ formatValue(evaluatedNode, \[options\]) Formate la valeur evaluée. diff --git a/publicodes/package.json b/publicodes/package.json index 50a0c4506..d6ca1ee26 100644 --- a/publicodes/package.json +++ b/publicodes/package.json @@ -26,6 +26,7 @@ "react-easy-emoji": "^1.4.0", "react-i18next": "^11.4.0", "react-markdown": "^4.3.1", + "styled-components": "^5.1.0", "yaml": "^1.9.2" }, "peerDependencies": { diff --git a/publicodes/source/components/mecanisms/Allègement.js b/publicodes/source/components/mecanisms/Allègement.js index 6caeee0cd..3319a9344 100644 --- a/publicodes/source/components/mecanisms/Allègement.js +++ b/publicodes/source/components/mecanisms/Allègement.js @@ -1,33 +1,28 @@ import { map, mapObjIndexed, values } from 'ramda' import React from 'react' import { makeJsx } from '../../evaluation' -import { Node } from './common' +import { Mecanism } from './common' export default function Allègement({ nodeValue, explanation: rawExplanation }) { // Don't display attributes with default values let explanation = map(k => (k && !k.isDefault ? k : null), rawExplanation) return (
- +
  • - assiette: + Assiette : {makeJsx(explanation.assiette)}
  • {explanation.franchise && (
  • - franchise: + Franchise : {makeJsx(explanation.franchise)}
  • )} {explanation.décote && (
  • - décote: + Décote : @@ -35,18 +30,18 @@ export default function Allègement({ nodeValue, explanation: rawExplanation }) )} {explanation.abattement && (
  • - abattement: + Abattement : {makeJsx(explanation.abattement)}
  • )} {explanation.plafond && (
  • - plafond: + Plafond : {makeJsx(explanation.plafond)}
  • )}
-
+
) } diff --git a/publicodes/source/components/mecanisms/Barème.css b/publicodes/source/components/mecanisms/Barème.css deleted file mode 100644 index 1df8d11ca..000000000 --- a/publicodes/source/components/mecanisms/Barème.css +++ /dev/null @@ -1,32 +0,0 @@ -.barème > .nodeHead .name { - background: #1abc9c; -} - -.barème .key { - color: #1abc9c; -} -.mecanism.barème { - border-color: #1abc9c; -} - -.barème table { - margin: 1em 0; - width: 100%; - text-align: left; - font-weight: 400; -} -.barème table td { - padding: 0.1em 0.4em; -} -.barème table th { - font-weight: 600; -} -.barème table th:first-letter { - text-transform: uppercase; -} -.barème .tranche:nth-child(2n) { - background: #f1f1f1; -} -.barème .tranche.activated { - background: yellow !important ; -} diff --git a/publicodes/source/components/mecanisms/Barème.tsx b/publicodes/source/components/mecanisms/Barème.tsx index be857d451..f5cd5d09c 100644 --- a/publicodes/source/components/mecanisms/Barème.tsx +++ b/publicodes/source/components/mecanisms/Barème.tsx @@ -2,33 +2,35 @@ import classNames from 'classnames' import React from 'react' import { Trans } from 'react-i18next' import { makeJsx } from '../../evaluation' -import './Barème.css' -import { Node, NodeValuePointer } from './common' +import styled from 'styled-components' +import { Mecanism, NodeValuePointer } from './common' import { parseUnit } from '../../units' export default function Barème({ nodeValue, explanation, unit }) { return ( - - - + + +
    + + + {/* nous avons remarqué que la notion de taux moyen pour un barème à 2 tranches est moins pertinent pour les règles de calcul des indépendants. Règle empirique à faire évoluer ! */} + {nodeValue !== null && explanation.tranches.length > 2 && ( + <> + + Taux moyen :{' '} + + + + )} +
+
+
) } @@ -38,14 +40,14 @@ export const BarèmeAttributes = ({ explanation }) => { <>
  • - assiette:{' '} + Assiette :{' '} {makeJsx(explanation.assiette)}
  • {multiplicateur && !multiplicateur.isDefault && (
  • - multiplicateur:{' '} + Multiplicateur :{' '} {makeJsx(multiplicateur)}
  • @@ -116,3 +118,28 @@ const Tranche = ({ tranche, multiplicateur }) => { ) } + +export const StyledComponent = styled.div` + table { + margin: 1em 0; + width: 100%; + text-align: left; + font-weight: 400; + } + table td { + padding: 0.1em 0.4em; + } + table th { + font-weight: 600; + } + table th:first-letter { + text-transform: uppercase; + } + .tranche:nth-child(2n) { + background: var(--lightestColor); + } + .tranche.activated { + background: var(--lighterColor); + font-weight: bold; + } +` diff --git a/publicodes/source/components/mecanisms/Composantes.css b/publicodes/source/components/mecanisms/Composantes.css deleted file mode 100644 index 7bd637ecc..000000000 --- a/publicodes/source/components/mecanisms/Composantes.css +++ /dev/null @@ -1,12 +0,0 @@ -.composantes > ol { - list-style: none; - counter-reset: li; - padding-left: 1em; -} -.composantes > ol > li > ul > li { - list-style-type: none; -} - -.composantes .composanteAttributes { - display: inline-block; -} diff --git a/publicodes/source/components/mecanisms/Composantes.js b/publicodes/source/components/mecanisms/Composantes.js index 632a88229..31bbf80d2 100644 --- a/publicodes/source/components/mecanisms/Composantes.js +++ b/publicodes/source/components/mecanisms/Composantes.js @@ -1,33 +1,36 @@ import { toPairs } from 'ramda' import React from 'react' import { Trans, useTranslation } from 'react-i18next' +import styled from 'styled-components' import { makeJsx } from '../../evaluation' import writtenNumbers from '../../locales/writtenNumbers.yaml' import colors from './colors' -import { InlineMecanism, Node } from './common' -import './Composantes.css' +import { InlineMecanismName, Mecanism } from './common' export default function Composantes({ nodeValue, explanation, unit }) { const { i18n } = useTranslation() return ( - - <> -

    +

    La somme de{' '} {writtenNumbers[i18n.language][explanation.length]}{' '} - : -

    + : +
      {explanation.map((c, i) => [
    1. @@ -66,7 +69,22 @@ export default function Composantes({ nodeValue, explanation, unit }) {
    2. ])}
    - -
    + + ) } + +const StyledComponent = styled.div` + > ol { + list-style: none; + counter-reset: li; + padding-left: 1em; + } + > ol > li > ul > li { + list-style-type: none; + } + + .composanteAttributes { + display: inline-block; + } +` diff --git a/publicodes/source/components/mecanisms/Grille.tsx b/publicodes/source/components/mecanisms/Grille.tsx index 7bcf367f2..d9e3582cc 100644 --- a/publicodes/source/components/mecanisms/Grille.tsx +++ b/publicodes/source/components/mecanisms/Grille.tsx @@ -1,18 +1,19 @@ import React from 'react' -import { BarèmeAttributes, TrancheTable } from './Barème' -import './Barème.css' -import { Node } from './common' +import { BarèmeAttributes, TrancheTable, StyledComponent } from './Barème' +import { Mecanism } from './common' export default function Grille({ nodeValue, explanation, unit }) { return ( - - - + + +
      + + +
    +
    +
    ) } diff --git a/publicodes/source/components/mecanisms/InversionNumérique.css b/publicodes/source/components/mecanisms/InversionNumérique.css deleted file mode 100644 index f6f59cace..000000000 --- a/publicodes/source/components/mecanisms/InversionNumérique.css +++ /dev/null @@ -1,4 +0,0 @@ -.inversionNumérique #inversionsPossibles { - list-style-type: disc; - margin-left: 1rem; -} diff --git a/publicodes/source/components/mecanisms/InversionNumérique.js b/publicodes/source/components/mecanisms/InversionNumérique.js index 213c08ce3..0d9546010 100644 --- a/publicodes/source/components/mecanisms/InversionNumérique.js +++ b/publicodes/source/components/mecanisms/InversionNumérique.js @@ -1,15 +1,10 @@ import React from 'react' import { makeJsx } from '../../evaluation' -import { Node } from './common' -import './InversionNumérique.css' +import { Mecanism } from './common' export default function InversionNumérique({ nodeValue, explanation }) { return ( - + {explanation.inversionFailed ? ( <> {' '} @@ -47,6 +42,6 @@ export default function InversionNumérique({ nodeValue, explanation }) { )} - + ) } diff --git a/publicodes/source/components/mecanisms/Product.js b/publicodes/source/components/mecanisms/Product.js index 29f7e6f96..5bec94cc9 100644 --- a/publicodes/source/components/mecanisms/Product.js +++ b/publicodes/source/components/mecanisms/Product.js @@ -1,46 +1,35 @@ import React from 'react' import { Trans } from 'react-i18next' import { makeJsx } from '../../evaluation' -import { Node } from './common' -import './InversionNumérique.css' +import { Mecanism } from './common' export default function ProductView({ nodeValue, explanation, unit }) { return ( // The rate and factor and threshold are given defaut neutral values. If there is nothing to explain, don't display them at all - +
    {makeJsx(explanation.assiette)} {!explanation.plafond.isDefault && ( -
    - + Plafonnée à :  - {makeJsx(explanation.plafond)} -
    + {makeJsx(explanation.plafond)} + )}
    {!explanation.facteur.isDefault && ( @@ -52,7 +41,7 @@ export default function ProductView({ nodeValue, explanation, unit }) { justifyContent: 'center' }} > -
    ×
    +
    ×
    {makeJsx(explanation.facteur)}
    )} @@ -65,11 +54,11 @@ export default function ProductView({ nodeValue, explanation, unit }) { justifyContent: 'center' }} > -
    ×
    +
    ×
    {makeJsx(explanation.taux)} )} -
    + ) } diff --git a/publicodes/source/components/mecanisms/Recalcul.tsx b/publicodes/source/components/mecanisms/Recalcul.tsx index b18cfa362..fe4dc5df8 100644 --- a/publicodes/source/components/mecanisms/Recalcul.tsx +++ b/publicodes/source/components/mecanisms/Recalcul.tsx @@ -2,16 +2,11 @@ import { RuleLinkWithContext } from '../RuleLink' import { makeJsx } from '../../evaluation' import React from 'react' import { Trans } from 'react-i18next' -import { Node } from './common' +import { Mecanism } from './common' export default function Recalcul({ nodeValue, explanation }) { return ( - + <> {explanation.recalcul && ( @@ -29,6 +24,6 @@ export default function Recalcul({ nodeValue, explanation }) { ))} - + ) } diff --git a/publicodes/source/components/mecanisms/Somme.css b/publicodes/source/components/mecanisms/Somme.css deleted file mode 100644 index 9d438d097..000000000 --- a/publicodes/source/components/mecanisms/Somme.css +++ /dev/null @@ -1,127 +0,0 @@ -/* mécanisme somme */ -.somme table { - width: 100%; - border-collapse: collapse; -} -.somme td.blank { - background: white; - border: 1px solid white; - border-right: 1px solid rgba(51, 51, 80, 0.15); -} -.somme tr { - border: 1px solid rgba(51, 51, 80, 0.15); - text-align: right; -} -.somme tr:hover { - background: rgba(51, 51, 80, 0.02); -} -.somme tr .element { - text-align: left; - padding: 0.1em 0.6em; -} -.somme tr .value span { - text-align: right; -} -.somme .leaf .name { - border: none; -} -.somme .operator + .element { - border-left: none; -} - -.mecanism-somme__row > .element > * > .nodeContent + * { - display: none; -} -.mecanism-somme__row > .element > * > .nodeContent { - display: flex; - align-items: center; -} -.mecanism-somme__row > .element > * > .nodeContent > .operator:first-child { - margin-left: 0; -} - -#rule-rules .somme table .leaf .situationValue { - display: none; -} - -#rule-rules .somme table .situationValue { - padding: 0 1em; -} - -.somme .nested { - padding: 0; - border: none; -} -.somme .nested tr:first-child { - border-top: none; -} -.somme .noNest { - border-bottom: none; -} -.somme > table { - border-bottom: 1px solid rgba(51, 51, 80, 0.15); -} - -#sommeBase { - text-align: center; -} - -.detailsRow { - background: rgba(51, 51, 80, 0.02); -} - -.mecanism-somme__table { - display: flex; - max-width: 100%; - flex-direction: column; -} - -.mecanism-somme__row { - display: flex; - align-items: center; - flex-flow: row nowrap; - border-top: 1px solid rgba(51, 51, 80, 0.15); -} -.mecanism-somme__row:first-child { - border-top: none; -} - -.mecanism-somme__row .element { - flex: 1; - max-width: 100%; - display: flex; - align-items: baseline; - padding: 0.1em 0.4em; - padding-top: 0.2em; - overflow: hidden; -} -.mecanism-somme__row .element .unfoldIndication { - text-transform: capitalize; - flex: 1; - margin-left: 0.6rem; - text-align: left; -} - -.mecanism-somme__row .value { - padding: 0.1em 0.4em; -} -.mecanism-somme__row .operator { - align-self: center; -} - -.mecanism-somme__row .element .variable, -.mecanism-somme__row .element .nodeHead { - overflow: hidden; - text-overflow: ellipsis; - max-width: 100%; -} - -.mecanism-somme__row .element .situationValue { - display: none !important; -} - -/* Nested Mecanism */ -.mecanism-somme__row + .nested { - padding-left: 2em; - border-top: 1px dashed rgba(51, 51, 80, 0.15); -} diff --git a/publicodes/source/components/mecanisms/Somme.js b/publicodes/source/components/mecanisms/Somme.js index 4dccc11b1..c855208cc 100644 --- a/publicodes/source/components/mecanisms/Somme.js +++ b/publicodes/source/components/mecanisms/Somme.js @@ -1,18 +1,26 @@ import { path } from 'ramda' import React, { useState } from 'react' import { makeJsx } from '../../evaluation' -import { Node, NodeValuePointer } from './common' -import './Somme.css' +import { Mecanism, NodeValuePointer } from './common' +import styled from 'styled-components' const SommeNode = ({ explanation, nodeValue, unit }) => ( - - - + + +
    + + ) export default SommeNode let Table = ({ explanation, unit }) => ( -
    +
    {explanation.map((v, i) => ( @@ -28,8 +36,7 @@ function Row({ v, i, unit }) { isSomme = rowFormula && rowFormula.name == 'somme' return [ -
    setFolded(!folded)} @@ -42,10 +49,12 @@ function Row({ v, i, unit }) { )}
    -
    - -
    -
    , + {v.nodeValue != null && ( +
    + +
    + )} + , ...(isSomme && !folded ? [
    @@ -55,3 +64,70 @@ function Row({ v, i, unit }) { : []) ] } + +const StyledSomme = styled.div` + /* mécanisme somme */ + table { + width: 100%; + border-collapse: collapse; + } + tr .element { + text-align: left; + padding: 0.2rem 0.4rem; + } + tr .value span { + text-align: right; + } + .nested { + padding: 0; + } +` +const StyledRow = styled.div` + display: flex; + align-items: center; + flex-flow: row nowrap; + + :nth-child(2n) { + background-color: var(--lightestColor); + } + .element .result, + .element .nodeValue { + display: none; + } + :first-child { + border-top: none; + } + + .element { + flex: 1; + max-width: 100%; + display: flex; + align-items: baseline; + padding: 0.1em 0.4em; + padding-top: 0.2em; + overflow: hidden; + } + .element .unfoldIndication { + text-transform: capitalize; + flex: 1; + margin-left: 0.6rem; + text-align: left; + } + + .element .variable, + .element .nodeHead { + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; + } + + .element .situationValue { + display: none !important; + } + + /* Nested Mecanism */ + + .nested { + padding-left: 2em; + border-top: 1px dashed rgba(51, 51, 80, 0.15); + } +` diff --git a/publicodes/source/components/mecanisms/TauxProgressif.tsx b/publicodes/source/components/mecanisms/TauxProgressif.tsx index 2c5e0005e..a7bd9575d 100644 --- a/publicodes/source/components/mecanisms/TauxProgressif.tsx +++ b/publicodes/source/components/mecanisms/TauxProgressif.tsx @@ -1,32 +1,28 @@ import React from 'react' import { Trans } from 'react-i18next' -import { BarèmeAttributes, TrancheTable } from './Barème' -import './Barème.css' -import { Node, NodeValuePointer } from './common' +import { BarèmeAttributes, TrancheTable, StyledComponent } from './Barème' +import { Mecanism, NodeValuePointer } from './common' export default function TauxProgressif({ nodeValue, explanation, unit }) { return ( - -
      - - - {nodeValue != null && ( - <> - - Taux calculé :{' '} - {' '} - - - )} -
    -
    + + +
      + + + {nodeValue != null && ( + <> + + Taux calculé :{' '} + {' '} + + + )} +
    +
    +
    ) } diff --git a/publicodes/source/components/mecanisms/Variations.css b/publicodes/source/components/mecanisms/Variations.css deleted file mode 100644 index 23564bfb4..000000000 --- a/publicodes/source/components/mecanisms/Variations.css +++ /dev/null @@ -1,14 +0,0 @@ -.mecanism.variations > ol { - margin-left: 1rem; - margin-top: 1rem; -} -.variations > ol > li { - margin-bottom: 0.3em; -} -.variations > ol > li span.consequenceType { - margin: 0 0.6em 0.6em 0; -} - -.variations > ol > li span.consequenceType.satisfied { - background: yellow; -} diff --git a/publicodes/source/components/mecanisms/Variations.js b/publicodes/source/components/mecanisms/Variations.js index 7f67d0e68..c9246747b 100644 --- a/publicodes/source/components/mecanisms/Variations.js +++ b/publicodes/source/components/mecanisms/Variations.js @@ -4,106 +4,133 @@ import emoji from 'react-easy-emoji' import { Trans, useTranslation } from 'react-i18next' import writtenNumbers from '../../locales/writtenNumbers.yaml' import { makeJsx } from '../../evaluation' -import { InlineMecanism, Node } from './common' -import './Variations.css' +import { InlineMecanismName, Mecanism } from './common' +import styled from 'styled-components' export default function Variations({ nodeValue, explanation, unit }) { let [expandedVariation, toggleVariation] = useState(null) const { i18n } = useTranslation() return ( - - {' '} - <> -

    - {writtenNumbers[i18n.language][explanation.length]} - : -

    -
      - {explanation.map(({ condition, consequence, satisfied }, i) => ( -
    1. - {!satisfied && nodeValue != null && ( - <> - non applicable - {expandedVariation !== i ? ( - - ) : ( - - )} - - )} - {(expandedVariation === i || satisfied || nodeValue == null) && ( -
      - {!condition.isDefault && ( + + + {' '} + <> +
      + {writtenNumbers[i18n.language][explanation.length]}{' '} + possibles : +
      +
        + {explanation.map(({ condition, consequence, satisfied }, i) => ( +
      1. + {!satisfied && nodeValue != null && ( + <> + non applicable + {expandedVariation !== i ? ( + + ) : ( + + )} + + )} + {(expandedVariation === i || + satisfied || + nodeValue == null) && ( +
        + {!condition.isDefault && ( +
        + Si : {makeJsx(condition)} +
        + )}
        - Si : {makeJsx(condition)} + + {!condition.isDefault ? ( + Alors + ) : ( + Sinon + )}{' '} + :  + + + {consequence && makeJsx(consequence)} +
        - )} -
        - - {!condition.isDefault ? ( - Alors - ) : ( - Sinon - )}{' '} - :  - - - {consequence && makeJsx(consequence)} -
        -
        - )} -
      2. - ))} -
      - - + )} +
    2. + ))} +
    + + + ) } + +const StyledComponent = styled.div` + .mecanism > ol { + margin-left: 1rem; + margin-top: 1rem; + } + .mecanism > ol > li { + margin-bottom: 0.3em; + } + .mecanism > ol > li span.consequenceType { + margin: 0 0.6em 0.6em 0; + } + + .mecanism > ol > li span.consequenceType.satisfied { + background: yellow; + } +` diff --git a/publicodes/source/components/mecanisms/colors.js b/publicodes/source/components/mecanisms/colors.js deleted file mode 100644 index e39d8cc3e..000000000 --- a/publicodes/source/components/mecanisms/colors.js +++ /dev/null @@ -1,14 +0,0 @@ -const colors = { - ruleProp: '#9b59b6', - 'applicable si': '#9b59b6', - 'non applicable si': '#9b59b6', - produit: '#2ecc71', - 'une de ces conditions': '#3498db', - 'toutes ces conditions': '#3498db', - composantes: '#3498db', - variations: '#FF9800', - 'taux progressif': '#795548', - barème: '#607D8B', - grille: '#AD1457' -} -export default name => colors[name] || '#34495e' diff --git a/publicodes/source/components/mecanisms/colors.ts b/publicodes/source/components/mecanisms/colors.ts index 2448bc03e..6098541a4 100644 --- a/publicodes/source/components/mecanisms/colors.ts +++ b/publicodes/source/components/mecanisms/colors.ts @@ -1,15 +1,15 @@ const colors = { - ruleProp: '#9b59b6', 'applicable si': '#9b59b6', 'non applicable si': '#9b59b6', + somme: '#18457B', + allègement: '#B73731', produit: '#2ecc71', 'une de ces conditions': '#3498db', 'toutes ces conditions': '#3498db', composantes: '#3498db', variations: '#FF9800', 'taux progressif': '#795548', - barème: '#607D8B', + barème: '#9B296F', grille: '#AD1457' } - -export default (name: string) => colors[name] || '#34495e' +export default name => colors[name] || 'palevioletred' diff --git a/publicodes/source/components/mecanisms/common.tsx b/publicodes/source/components/mecanisms/common.tsx index 91dfa8e7c..8028b54fb 100644 --- a/publicodes/source/components/mecanisms/common.tsx +++ b/publicodes/source/components/mecanisms/common.tsx @@ -1,12 +1,13 @@ -import { default as classNames, default as classnames } from 'classnames' -import { contains, isNil } from 'ramda' +import classnames from 'classnames' import React from 'react' import { Trans } from 'react-i18next' +import styled from 'styled-components' import { formatValue } from '../../format' -import { Evaluation, ParsedRule, Types, Unit } from '../../types' +import { Evaluation, ParsedRule, Types, Unit, EvaluatedNode } from '../../types' import { capitalise0 } from '../../utils' import { RuleLinkWithContext } from '../RuleLink' import mecanismColors from './colors' +import { makeJsx } from '../../evaluation' type NodeValuePointerProps = { data: Evaluation @@ -14,94 +15,179 @@ type NodeValuePointerProps = { } export const NodeValuePointer = ({ data, unit }: NodeValuePointerProps) => ( - {formatValue({ nodeValue: data, unit, language: 'fr' })} - + ) // Un élément du graphe de calcul qui a une valeur interprétée (à afficher) type NodeProps = { - classes: string name: string - value: NodeValuePointerProps['data'] - unit: NodeValuePointerProps['unit'] - inline?: boolean + value: Evaluation + unit: Unit children: React.ReactNode + displayName?: boolean } -export function Node({ - classes, - name, - value, - children, - inline, - unit -}: NodeProps) { - const termDefinition = contains('mecanism', classes) && name - +export function Operation({ value, children, unit }: NodeProps) { return ( -
    - {name && !inline && ( - - )} - {children}{' '} - {name ? ( - !isNil(value) && ( -
    - = -
    - ) - ) : ( - - {(value as any) !== true && - (value as any) !== false && - !isNil(value) && } + + {children} + {value != null && ( + + )} -
    + ) } -export function InlineMecanism({ name }: { name: string }) { +export function Mecanism({ + name, + value, + children, + unit, + displayName = true +}: NodeProps) { return ( - - - {name} - - + + {displayName && ( + + {name} + + )} + <> + {children} + + {value != null && ( +
    + + +
    + )} + +
    ) } +export const InfixMecanism = ({ + value, + children +}: { + value: EvaluatedNode + children: React.ReactNode +}) => { + return ( +
    .infix-mecanism { + border: none; + padding: 0; + } + .value > :not(.infix-mecanism) { + margin-bottom: 1rem; + } + `} + > +
    {makeJsx(value)}
    + {children} +
    + ) +} +export const InlineMecanismName = ({ name }: { name: string }) => { + return ( + + {name} + + ) +} + +const StyledOperation = styled.span` + ::before { + content: '('; + } + > .operation ::before, + > .operation ::after { + content: ''; + } + ::after { + content: ')'; + } + .result { + margin-left: 0.2rem; + } + .operation .result { + display: none; + } +` + +const StyledMecanism = styled.div<{ name: string }>` + border: 1px solid; + max-width: 100%; + border-radius: 3px; + padding: 1rem; + position: relative; + flex: 1; + border-color: ${({ name }) => mecanismColors(name)}; + + .key { + font-weight: bold; + } +` + +const StyledMecanismName = styled.button<{ name: string; inline?: boolean }>` + background-color: ${({ name }) => mecanismColors(name)}; + font-size: inherit; + font-weight: inherit; + font-family: inherit; + padding: 0.4rem 0.6rem; + color: white; + transition: hover 0.2s; + ${props => + props.inline + ? ` + display: inline-block; + border-radius: 0.3rem; + ` + : ` + margin-bottom: 0.8rem; + display: block; + + margin-top: -1rem; + margin-left: -1rem; + border-bottom-right-radius: 0.3rem; + ::first-letter { + text-transform: capitalize; + } + `} + :hover { + opacity: 0.8; + } +` + type LeafProps = { className: string rule: ParsedRule @@ -114,7 +200,7 @@ type LeafProps = { export function Leaf({ className, rule, nodeValue, filter, unit }: LeafProps) { const title = rule.title || capitalise0(rule.name) return ( - + @@ -122,7 +208,7 @@ export function Leaf({ className, rule, nodeValue, filter, unit }: LeafProps) { {filter} - {!isNil(nodeValue) && } + {nodeValue != null && } ) diff --git a/publicodes/source/components/rule/Algorithm.css b/publicodes/source/components/rule/Algorithm.css deleted file mode 100644 index ff6ac7169..000000000 --- a/publicodes/source/components/rule/Algorithm.css +++ /dev/null @@ -1,203 +0,0 @@ -/* - Règles CSS d'affichage des algorithmes -*/ - -.situationValue { - text-decoration: underline white; - border-bottom-left-radius: 3px; - font-weight: 400; - color: black; - font-family: monospace; -} -.name { - display: flex; - align-items: baseline; -} - -.node.inlineExpression:not(.comparison) { - padding-left: 0; - display: flex; - align-items: baseline; - flex-direction: row; - flex-wrap: wrap; - justify-content: space-between; -} -.nodeContent { - margin-right: 0.3em; -} -#rule-rules .inlineExpression:not(.comparison) > .situationValue { - margin-left: 0.3em; - margin-bottom: 0.6em; - margin-top: 0.3em; - align-items: flex-end; - text-align: right; -} - -#declenchement > ul { - padding: 0; - list-style-type: none; -} -#declenchement > ul > li { - margin-bottom: 1em; -} - -.mecanism > .nodeHead { - border-color: inherit; - margin-top: -1rem; - margin-left: -1rem; - margin-bottom: 0.4rem; -} -.inlineMecanism .name, -.mecanism > .nodeHead .name { - padding: 0.2em 0.8em; - display: inline-block; - color: white !important; - font-weight: 600; - border-bottom-right-radius: 6px; -} -.inlineMecanism .name { - margin: 0 0.1em; - padding: 0.2em 0.4em; - border-radius: 6px; -} -.mecanism > .nodeHead .name::first-letter { - text-transform: capitalize; -} -.mecanism > .nodeHead > .situationValue { - bottom: 0; - right: 0; - position: absolute; - padding: 0.2rem 1rem; - border: 1px solid; - border-color: inherit; - font-weight: 600; - border-bottom: none; - border-right: none; - border-radius: 0; - border-top-left-radius: 3px; -} -[data-term-definition] { - cursor: pointer; -} -[data-term-definition]:hover { - opacity: 0.8; -} - -.mecanism .properties .key { - display: inline-block; - margin-bottom: 0.6em; - margin-right: 0.8em; -} - -.mecanism.produit .key { - color: #2ecc71; -} - -.produit li .key { - margin-right: 0.6em; -} - -.leaf .situationValue { - text-align: center; -} - -.variable a { - display: inline-block; - white-space: nowrap; -} - -.percentage .name { - font-weight: 600; -} - -.inlineExpression .operator { - margin: 0 0.6em; - vertical-align: middle; -} - -.json { - font-size: 60%; -} - -.mecanism.inversion li { - margin-top: 0.6em; -} - -.mecanism { - border: 1px solid; - max-width: 100%; - border-radius: 3px; - padding: 1rem; - position: relative; - flex: 1; -} -.mecanism-result { - position: relative; - bottom: calc(-1rem + 2px); - text-align: right; -} -.mecanism .mecanism { - flex: initial; -} -.mecanism + .mecanism { - margin-top: 1rem; -} - -.mecanism .key::first-letter { - text-transform: capitalize; -} - -.mecanism ul.properties > li { - display: flex; - align-items: baseline; - flex-wrap: wrap; -} -.mecanism ul > li > .value { - flex: 1; -} - -.variable, -.operator { - display: inline-block; -} - -.nodeHead .name .situationValue:not(.boolean)::before { - content: '('; -} - -.nodeHead .name .situationValue:not(.boolean)::after { - content: ')'; -} - -/* Remove style for conditions */ - -.mecanism.cond *:not(.nodeContent) > .variable .name, -.mecanism.variations *:not(.nodeContent) > .variable .name, -.inlineExpression.comparison { - display: flex; - align-items: baseline; -} -.mecanism.cond *:not(.nodeContent) > .variable .name .situationValue, -.mecanism.variations - > condition - > *:first-child - *:not(.nodeContent) - > .variable - .name - .situationValue, -.inlineExpression.comparison > .situationValue { - order: -1; -} - -.mecanism.cond *:not(.nodeContent) > .variable .name > .situationValue, -.mecanism.variations - > condition - > *:first-child - *:not(.nodeContent) - > .variable - .name - > .situationValue { - margin-bottom: -5px; - background-color: white; - margin-left: 0 !important; -} diff --git a/publicodes/source/components/rule/Algorithm.tsx b/publicodes/source/components/rule/Algorithm.tsx index a520f8017..62695c26b 100644 --- a/publicodes/source/components/rule/Algorithm.tsx +++ b/publicodes/source/components/rule/Algorithm.tsx @@ -3,7 +3,6 @@ import React from 'react' import { Trans } from 'react-i18next' import { EvaluatedRule } from '../../types' import { makeJsx } from '../../evaluation' -import './Algorithm.css' const Conditions = ({ 'rendu non applicable': disabledBy, @@ -36,7 +35,14 @@ const Conditions = ({

    Déclenchement

    -
      {listElements}
    +
      + {listElements} +
    ) : null } @@ -44,7 +50,7 @@ const Conditions = ({ function ShowIfDisabled({ dependency }: { dependency: EvaluatedRule }) { return (
  • - + Désactivée {' '} car dépend de {makeJsx(dependency)} diff --git a/publicodes/source/components/rule/Header.css b/publicodes/source/components/rule/Header.css deleted file mode 100644 index d073de922..000000000 --- a/publicodes/source/components/rule/Header.css +++ /dev/null @@ -1,16 +0,0 @@ -.rule-header { - padding: 1rem; -} -.rule-header__breadcrumb { - margin: 0; - padding: 0; -} - -.rule-header__breadcrumb > li { - display: inline; - padding: 0; -} - -.rule-header__title { - margin: 0.6rem 0; -} diff --git a/publicodes/source/components/rule/Header.tsx b/publicodes/source/components/rule/Header.tsx index 423c3e952..eee6ed488 100644 --- a/publicodes/source/components/rule/Header.tsx +++ b/publicodes/source/components/rule/Header.tsx @@ -1,11 +1,11 @@ import React from 'react' import { ruleParents } from '../../ruleUtils' -import './Header.css' import { RuleLinkWithContext } from '../RuleLink' +import styled from 'styled-components' export default function RuleHeader({ dottedName }) { return ( -
    +
      {ruleParents(dottedName) .reverse() @@ -23,6 +23,23 @@ export default function RuleHeader({ dottedName }) { style={{ textDecoration: 'none' }} /> -
    + ) } + +const StyledHeader = styled.header` + padding: 1rem; + .rule-header__breadcrumb { + margin: 0; + padding: 0; + } + + .rule-header__breadcrumb > li { + display: inline; + padding: 0; + } + + .rule-header__title { + margin: 0.6rem 0; + } +` diff --git a/publicodes/source/components/rule/References.css b/publicodes/source/components/rule/References.css deleted file mode 100644 index dcaaebc3d..000000000 --- a/publicodes/source/components/rule/References.css +++ /dev/null @@ -1,47 +0,0 @@ -.references { - list-style: none; - padding: 0; -} -.references a { - flex: 1; - min-width: 45%; - text-decoration: underline; -} - -.references li { - margin-bottom: 0.6em; - width: 100%; - display: flex; - align-items: center; -} -#noOfficialReferences { - text-align: left; - font-style: italic; -} -.references .imageWrapper { - width: 4.5rem; - height: 3rem; - display: flex; - align-items: center; - justify-content: center; - margin-right: 1rem; -} -.references img { - max-height: 3rem; - vertical-align: sub; - max-width: 100%; - border-radius: 0.3em; -} - -li#complementary { - margin-top: 1.2em; -} -li#complementary a { - font-style: italic; - text-decoration: none; - width: auto; -} - -#complementary i { - margin-right: 0.6em; -} diff --git a/publicodes/source/components/rule/References.tsx b/publicodes/source/components/rule/References.tsx index 294290adc..f7e7bda47 100644 --- a/publicodes/source/components/rule/References.tsx +++ b/publicodes/source/components/rule/References.tsx @@ -2,7 +2,7 @@ import references from './références/références.yaml' import { toPairs } from 'ramda' import React from 'react' import { capitalise0 } from '../../utils' -import './References.css' +import styled from 'styled-components' const findRefKey = (link: string) => Object.keys(references).find(r => link.includes(r)) @@ -56,10 +56,41 @@ type ReferencesProps = { export default function References({ refs }: ReferencesProps) { const references = toPairs(refs) return ( -
      + {references.map(([name, link]) => ( ))} -
    + ) } + +const StyledComponent = styled.ul` + list-style: none; + padding: 0; + a { + flex: 1; + min-width: 45%; + text-decoration: underline; + } + + li { + margin-bottom: 0.6em; + width: 100%; + display: flex; + align-items: center; + } + .imageWrapper { + width: 4.5rem; + height: 3rem; + display: flex; + align-items: center; + justify-content: center; + margin-right: 1rem; + } + img { + max-height: 3rem; + vertical-align: sub; + max-width: 100%; + border-radius: 0.3em; + } +` diff --git a/publicodes/source/mecanisms.tsx b/publicodes/source/mecanisms.tsx index 8a28bdb60..246f45ef4 100644 --- a/publicodes/source/mecanisms.tsx +++ b/publicodes/source/mecanisms.tsx @@ -12,11 +12,12 @@ import { } from 'ramda' import React from 'react' import Allègement from './components/mecanisms/Allègement' -import { Node } from './components/mecanisms/common' +import { Mecanism } from './components/mecanisms/common' import InversionNumérique from './components/mecanisms/InversionNumérique' import Product from './components/mecanisms/Product' import Recalcul from './components/mecanisms/Recalcul' import Somme from './components/mecanisms/Somme' +import { RuleLinkWithContext } from './components/RuleLink' import { typeWarning } from './error' import { collectNodeMissing, @@ -31,7 +32,6 @@ import { import { decompose } from './mecanisms/utils' import variations from './mecanisms/variations' import { convertNodeToUnit } from './nodeUnits' -import { EvaluatedRule } from './types' import uniroot from './uniroot' import { areUnitConvertible, @@ -40,7 +40,6 @@ import { parseUnit, serializeUnit } from './units' -import { RuleLinkWithContext } from './components/RuleLink' export const mecanismOneOf = (recurse, k, v) => { if (!is(Array, v)) throw new Error('should be array') @@ -48,18 +47,13 @@ export const mecanismOneOf = (recurse, k, v) => { const explanation = map(recurse, v) const jsx = ({ nodeValue, explanation, unit }) => ( - +
      {explanation.map((item, i) => (
    • {makeJsx(item)}
    • ))}
    -
    + ) const evaluate = (cache, situation, parsedRules, node) => { @@ -99,18 +93,13 @@ export const mecanismAllOf = (recurse, k, v) => { const explanation = map(recurse, v) const jsx = ({ nodeValue, explanation, unit }) => ( - +
      {explanation.map((item, i) => (
    • {makeJsx(item)}
    • ))}
    -
    + ) const evaluate = (cache, situation, parsedRules, node) => { @@ -512,12 +501,7 @@ export const mecanismMax = (recurse, k, v) => { const evaluate = evaluateArray(max, Number.NEGATIVE_INFINITY) const jsx = ({ nodeValue, explanation, unit }) => ( - +
      {explanation.map((item, i) => (
    • @@ -526,7 +510,7 @@ export const mecanismMax = (recurse, k, v) => {
    • ))}
    -
    + ) return { @@ -546,12 +530,7 @@ export const mecanismMin = (recurse, k, v) => { const evaluate = evaluateArray(min, Infinity) const jsx = ({ nodeValue, explanation, unit }) => ( - +
      {explanation.map((item, i) => (
    • @@ -560,7 +539,7 @@ export const mecanismMin = (recurse, k, v) => {
    • ))}
    -
    + ) return { diff --git a/publicodes/source/mecanisms/arrondi.tsx b/publicodes/source/mecanisms/arrondi.tsx index 26da808de..bb527f808 100644 --- a/publicodes/source/mecanisms/arrondi.tsx +++ b/publicodes/source/mecanisms/arrondi.tsx @@ -1,17 +1,12 @@ -import { - defaultNode, - evaluateNode, - makeJsx, - mergeAllMissing -} from '../evaluation' -import { Node } from '../components/mecanisms/common' -import { simplifyNodeUnit } from '../nodeUnits' -import { mapTemporal, pureTemporal, temporalAverage } from '../temporal' -import { serializeUnit } from '../units' -import { EvaluatedRule, Evaluation, EvaluatedNode } from '../types' import { has } from 'ramda' import React from 'react' import { Trans } from 'react-i18next' +import { InfixMecanism } from '../components/mecanisms/common' +import { defaultNode, evaluateNode, mergeAllMissing } from '../evaluation' +import { simplifyNodeUnit } from '../nodeUnits' +import { mapTemporal, pureTemporal, temporalAverage } from '../temporal' +import { EvaluatedNode, EvaluatedRule, Evaluation } from '../types' +import { serializeUnit } from '../units' type MecanismRoundProps = { nodeValue: Evaluation @@ -25,27 +20,20 @@ type ArrondiExplanation = { function MecanismRound({ nodeValue, explanation }: MecanismRoundProps) { return ( - - <> - {makeJsx(explanation.value)} - {explanation.decimals.nodeValue !== false && - explanation.decimals.isDefault != false && ( -

    - - Arrondi à {{ count: explanation.decimals.nodeValue }} décimales - -

    - )} - -
    + + {explanation.decimals.nodeValue !== false && + explanation.decimals.isDefault != false && ( +

    + + Arrondi à : + {{ count: explanation.decimals.nodeValue }} décimales + +

    + )} +
    ) } diff --git a/publicodes/source/mecanisms/durée.tsx b/publicodes/source/mecanisms/durée.tsx index 625fa4dd1..ca3e8fffa 100644 --- a/publicodes/source/mecanisms/durée.tsx +++ b/publicodes/source/mecanisms/durée.tsx @@ -6,13 +6,13 @@ import { mergeMissing, parseObject } from '../evaluation' -import { Node } from '../components/mecanisms/common' +import { Mecanism } from '../components/mecanisms/common' import { parseUnit } from '../units' import React from 'react' function MecanismDurée({ nodeValue, explanation, unit }) { return ( - + <>

    Depuis : @@ -23,7 +23,7 @@ function MecanismDurée({ nodeValue, explanation, unit }) { {makeJsx(explanation["jusqu'à"])}

    -
    + ) } const todayString = convertToString(new Date()) diff --git a/publicodes/source/mecanisms/encadrement.tsx b/publicodes/source/mecanisms/encadrement.tsx index 4f139eed0..0ad5ede13 100644 --- a/publicodes/source/mecanisms/encadrement.tsx +++ b/publicodes/source/mecanisms/encadrement.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { Node } from '../components/mecanisms/common' +import { InfixMecanism } from '../components/mecanisms/common' import { typeWarning } from '../error' import { defaultNode, @@ -9,42 +9,38 @@ import { } from '../evaluation' import { convertNodeToUnit } from '../nodeUnits' -function MecanismEncadrement({ nodeValue, explanation, unit }) { +function MecanismEncadrement({ nodeValue, explanation }) { return ( -
    - {makeJsx(explanation.valeur)} + {!explanation.plancher.isDefault && ( <> -
    - - - Minimum : - {makeJsx(explanation.plancher)} - + Minimum : + {makeJsx(explanation.plancher)} +

    )} {!explanation.plafond.isDefault && ( <> -
    - - Plafonné à : - {makeJsx(explanation.plafond)} - + Plafonné à : + {makeJsx(explanation.plafond)} +

    )} -
    + ) } diff --git a/publicodes/source/mecanisms/operation.js b/publicodes/source/mecanisms/operation.js index 582141527..bd658a1c0 100644 --- a/publicodes/source/mecanisms/operation.js +++ b/publicodes/source/mecanisms/operation.js @@ -1,7 +1,7 @@ import { convertToDate } from '../date' import { typeWarning } from '../error' import { evaluateNode, makeJsx, mergeMissing } from '../evaluation' -import { Node } from '../components/mecanisms/common' +import { Operation } from '../components/mecanisms/common' import { convertNodeToUnit } from '../nodeUnits' import { liftTemporal2, pureTemporal, temporalAverage } from '../temporal' import { inferUnit, serializeUnit } from '../units' @@ -87,20 +87,12 @@ export default (k, operatorFunction, symbol) => (recurse, k, v) => { let unit = inferUnit(k, [node1.unit, node2.unit]) let jsx = ({ nodeValue, explanation, unit }) => ( - - - {(explanation[0].nodeValue !== 0 || - symbol !== '−' || - !v.explanation[0].constant) && ( - <> - - {makeJsx(explanation[0])} - - )} - {symbol || k} - {makeJsx(explanation[1])} - - + + {(explanation[0].nodeValue !== 0 || + symbol !== '−' || + !v.explanation[0].constant) && <>{makeJsx(explanation[0])}}{' '} + {symbol || k} {makeJsx(explanation[1])} + ) return { diff --git a/publicodes/source/parseRule.tsx b/publicodes/source/parseRule.tsx index f2996254a..7c38cc080 100644 --- a/publicodes/source/parseRule.tsx +++ b/publicodes/source/parseRule.tsx @@ -1,7 +1,7 @@ import { evolve, map } from 'ramda' import React from 'react' import { Trans } from 'react-i18next' -import { Node } from './components/mecanisms/common' +import { Mecanism } from './components/mecanisms/common' import { RuleLinkWithContext } from './components/RuleLink' import { warning } from './error' import evaluate from './evaluateRule' @@ -249,18 +249,13 @@ const evolveCond = (dottedName, rule, rules, parsedRules) => value => { const child = parse(rules, rule, parsedRules)(value) const jsx = ({ nodeValue, explanation, unit }) => ( - + {explanation.category === 'variable' ? (
    {makeJsx(explanation)}
    ) : ( makeJsx(explanation) )} -
    + ) return { diff --git a/publicodes/source/types/css-prop.d.ts b/publicodes/source/types/css-prop.d.ts new file mode 100644 index 000000000..5d6296f94 --- /dev/null +++ b/publicodes/source/types/css-prop.d.ts @@ -0,0 +1 @@ +import 'styled-components/cssprop' diff --git a/publicodes/webpack.config.js b/publicodes/webpack.config.js index c33d36738..a07c44cc9 100644 --- a/publicodes/webpack.config.js +++ b/publicodes/webpack.config.js @@ -1,7 +1,7 @@ /* eslint-env node */ const path = require('path') -const { commonLoaders, styleLoader } = require('../webpack/common') +const { commonLoaders } = require('../webpack/common') const common = { resolve: { @@ -10,14 +10,14 @@ const common = { mode: 'development', entry: path.resolve(__dirname, 'source', 'index.ts'), module: { - rules: [...commonLoaders(), styleLoader('isomorphic-style-loader')] + rules: commonLoaders() }, externals: // Every non-relative module is external /^[a-z\-0-9]+$/ } -module.exports = [ +module.exports = // Config for UMD export (browser / node) { ...common, @@ -28,17 +28,3 @@ module.exports = [ globalObject: 'this' } } -] - -// Config for esmodule export, not used here, since it conflict with css import. -// Maybe we should use styled-component everywhere, to simplify things - -// const futurBuild = { -// ...common, -// output: { -// path: path.resolve(__dirname, 'dist', 'es') -// }, -// experiments: { -// outputModule: true -// } -// } diff --git a/yarn.lock b/yarn.lock index feb275627..425add821 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== @@ -18,7 +18,7 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.8.4", "@babel/core@^7.9.0": +"@babel/core@^7.1.0", "@babel/core@^7.9.0": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== @@ -728,7 +728,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/preset-env@^7.8.4", "@babel/preset-env@^7.9.5": +"@babel/preset-env@^7.9.5": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== @@ -983,38 +983,6 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.1.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - "@icons/material@^0.2.4": version "0.2.4" resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" @@ -1190,34 +1158,6 @@ resolved "https://registry.yarnpkg.com/@rehooks/local-storage/-/local-storage-2.4.0.tgz#fb884b2b657cad5f77aa6ab60bb3532f0e0725d2" integrity sha512-LoXDbEHsuIckVgBsFAv8SuU/M7memjyfWut9Zf36TQXqqCHBRFv8bweg9PymQCa1aWIMjNrZQflFdo55FDlXYg== -"@rollup/plugin-node-resolve@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" - integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== - dependencies: - "@rollup/pluginutils" "^3.0.8" - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.14.2" - -"@rollup/plugin-replace@^2.3.1": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.2.tgz#da4e0939047f793c2eb5eedfd6c271232d0a033f" - integrity sha512-KEEL7V2tMNOsbAoNMKg91l1sNXBDoiP31GFlqXVOuV5691VQKzKBh91+OKKOG4uQWYqcFskcjFyh1d5YnZd0Zw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - magic-string "^0.25.5" - -"@rollup/pluginutils@^3.0.8": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.10.tgz#a659b9025920378494cd8f8c59fbf9b3a50d5f12" - integrity sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - "@sentry/browser@5.15.5": version "5.15.5" resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.15.5.tgz#d9a51f1388581067b50d30ed9b1aed2cbb333a36" @@ -1306,14 +1246,6 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@surma/rollup-plugin-off-main-thread@^1.1.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.1.tgz#bf1343e5a926e5a1da55e3affd761dda4ce143ef" - integrity sha512-ZPBWYQDdO4JZiTmTP3DABsHhIPA7bEJk9Znk7tZsrbPGanoGo8YxMv//WLx5Cvb+lRgS42+6yiOIYYHCKDmkpQ== - dependencies: - ejs "^2.6.1" - magic-string "^0.25.0" - "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -1393,16 +1325,6 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== -"@types/estree@*": - version "0.0.44" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz#980cc5a29a3ef3bea6ff1f7d021047d7ea575e21" - integrity sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - "@types/history@*": version "4.7.5" resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.5.tgz#527d20ef68571a4af02ed74350164e7a67544860" @@ -1585,13 +1507,6 @@ "@types/react" "*" "@types/recharts-scale" "*" -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - "@types/sizzle@2.3.2": version "2.3.2" resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" @@ -1923,11 +1838,6 @@ acorn@^6.0.1, acorn@^6.0.2, acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" - integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== - acorn@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" @@ -2816,11 +2726,6 @@ buffer@^5.5.0: base64-js "^1.0.2" ieee754 "^1.1.4" -builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -3415,7 +3320,7 @@ commander@~2.9.0: dependencies: graceful-readlink ">= 1.0.0" -common-tags@1.8.0, common-tags@^1.8.0: +common-tags@1.8.0, common-tags@^1.4.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== @@ -3677,11 +3582,6 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - css-color-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" @@ -4693,16 +4593,6 @@ estraverse@^5.1.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4966,7 +4856,7 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -5249,6 +5139,15 @@ fs-extra@5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" @@ -5258,15 +5157,6 @@ fs-extra@^6.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" @@ -5551,7 +5441,7 @@ good-listener@^1.2.2: dependencies: delegate "^3.1.2" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== @@ -5755,6 +5645,11 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== + hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -6402,11 +6297,6 @@ is-installed-globally@0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" @@ -6553,6 +6443,13 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isemail@3.x.x: + version "3.2.0" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" + integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg== + dependencies: + punycode "2.x.x" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -6996,6 +6893,15 @@ jest@^24.9.0: import-local "^2.0.0" jest-cli "^24.9.0" +joi@^11.1.1: + version "11.4.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" + integrity sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA== + dependencies: + hoek "4.x.x" + isemail "3.x.x" + topo "2.x.x" + js-base64@^2.1.9: version "2.5.2" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" @@ -7130,6 +7036,13 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -7161,6 +7074,11 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -7449,7 +7367,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.3.0, lodash.template@^4.5.0: +lodash.template@^4.3.0, lodash.template@^4.4.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== @@ -7548,13 +7466,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -magic-string@^0.25.0, magic-string@^0.25.5: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -8683,11 +8594,6 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - pify@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -9106,10 +9012,10 @@ prettier@^1.19.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-bytes@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" - integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= pretty-error@^2.0.2: version "2.1.1" @@ -9290,16 +9196,16 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= +punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - puppeteer@^1.7.0: version "1.20.0" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.20.0.tgz#e3d267786f74e1d87cf2d15acc59177f471bbe38" @@ -10181,7 +10087,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.3.2: +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.15.1, resolve@^1.3.2: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -10238,41 +10144,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-babel@^4.3.3: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-terser@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e" - integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^2.1.2" - terser "^4.6.2" - -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^1.31.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" - rst-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" @@ -10707,11 +10578,6 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" @@ -10980,7 +10846,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.3.0: +stringify-object@^3.2.2: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== @@ -11197,20 +11063,6 @@ tar-stream@^2.0.0: inherits "^2.0.3" readable-stream "^3.1.1" -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - -tempy@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== - dependencies: - temp-dir "^1.0.0" - type-fest "^0.3.1" - unique-string "^1.0.0" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -11233,7 +11085,7 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.1.2, terser@^4.6.2: +terser@^4.1.2: version "4.6.13" resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.13.tgz#e879a7364a5e0db52ba4891ecde007422c56a916" integrity sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw== @@ -11406,6 +11258,13 @@ toml@^2.2.2: resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.6.tgz#25b0866483a9722474895559088b436fd11f861b" integrity sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ== +topo@2.x.x: + version "2.0.2" + resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" + integrity sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI= + dependencies: + hoek "4.x.x" + toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" @@ -11505,11 +11364,6 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== -type-fest@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -11651,13 +11505,6 @@ unique-stream@^2.0.2: json-stable-stringify-without-jsonify "^1.0.1" through2-filter "^3.0.0" -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - unist-util-is@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" @@ -11717,7 +11564,7 @@ untildify@3.0.3: resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== -upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: +upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -12072,7 +11919,7 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -12190,158 +12037,132 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -workbox-background-sync@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.3.tgz#121c5cf439b627f6320ff490be65fd2bd440c6ea" - integrity sha512-V/R95aPxYjbKCaVzUTihrZ9ObGOnzoA5n60r0DQ747p8Pj15/dDTYixonKhhlvavTiNezUrp+wTQBvZvcd/ETA== +workbox-background-sync@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94" + integrity sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q== dependencies: - workbox-core "^5.1.3" + workbox-core "^3.6.3" -workbox-broadcast-update@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.3.tgz#312e0f065f06a6fb04a050143c84aa6ba0ed8add" - integrity sha512-HJ7FDmgweRcYp8fMiFbkmhaTjMYhMByURe5+TempnCi7cT5NNbyaG4T+rg8NWYxAeumSAB3JQF6XD/z34vRRHA== +workbox-broadcast-cache-update@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz#3f5dff22ada8c93e397fb38c1dc100606a7b92da" + integrity sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg== dependencies: - workbox-core "^5.1.3" + workbox-core "^3.6.3" -workbox-build@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.3.tgz#ec0dbcb7e260ad792c49407d063f4bcc8a8f08b8" - integrity sha512-cssa2cKAi/FNp2P2m2DjF/UsXlVX6b1HgkXOjBTraFkIeyZEKxN1F1DnxOpGkdM/bPPRa7y5OmUvjOpgOd9apA== +workbox-build@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.6.3.tgz#77110f9f52dc5d82fa6c1c384c6f5e2225adcbd8" + integrity sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g== dependencies: - "@babel/core" "^7.8.4" - "@babel/preset-env" "^7.8.4" - "@babel/runtime" "^7.8.4" - "@hapi/joi" "^15.1.0" - "@rollup/plugin-node-resolve" "^7.1.1" - "@rollup/plugin-replace" "^2.3.1" - "@surma/rollup-plugin-off-main-thread" "^1.1.1" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^8.1.0" - glob "^7.1.6" - lodash.template "^4.5.0" - pretty-bytes "^5.3.0" - rollup "^1.31.1" - rollup-plugin-babel "^4.3.3" - rollup-plugin-terser "^5.2.0" - source-map "^0.7.3" - source-map-url "^0.4.0" - stringify-object "^3.3.0" + babel-runtime "^6.26.0" + common-tags "^1.4.0" + fs-extra "^4.0.2" + glob "^7.1.2" + joi "^11.1.1" + lodash.template "^4.4.0" + pretty-bytes "^4.0.2" + stringify-object "^3.2.2" strip-comments "^1.0.2" - tempy "^0.3.0" - upath "^1.2.0" - workbox-background-sync "^5.1.3" - workbox-broadcast-update "^5.1.3" - workbox-cacheable-response "^5.1.3" - workbox-core "^5.1.3" - workbox-expiration "^5.1.3" - workbox-google-analytics "^5.1.3" - workbox-navigation-preload "^5.1.3" - workbox-precaching "^5.1.3" - workbox-range-requests "^5.1.3" - workbox-routing "^5.1.3" - workbox-strategies "^5.1.3" - workbox-streams "^5.1.3" - workbox-sw "^5.1.3" - workbox-window "^5.1.3" + workbox-background-sync "^3.6.3" + workbox-broadcast-cache-update "^3.6.3" + workbox-cache-expiration "^3.6.3" + workbox-cacheable-response "^3.6.3" + workbox-core "^3.6.3" + workbox-google-analytics "^3.6.3" + workbox-navigation-preload "^3.6.3" + workbox-precaching "^3.6.3" + workbox-range-requests "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" + workbox-streams "^3.6.3" + workbox-sw "^3.6.3" -workbox-cacheable-response@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.3.tgz#79ec05c9f22796833d653e7cad43774a8f8bf7db" - integrity sha512-lOJEwK2T4KWFNdhRFUKxTPBIO5hIYm9E/nYgMq5h/IH3iHPHlBPuFwRMaQy+TTCGWWTA85NomQOjVw1bj65RLw== +workbox-cache-expiration@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz#4819697254a72098a13f94b594325a28a1e90372" + integrity sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA== dependencies: - workbox-core "^5.1.3" + workbox-core "^3.6.3" -workbox-core@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.3.tgz#0607acd0018c149162777fe4aae08553bd1559f5" - integrity sha512-TFSIPxxciX9sFaj0FDiohBeIKpwMcCyNduydi9i3LChItcndDS6TJpErxybv8aBWeCMraXt33TWtF6kKuIObNw== - -workbox-expiration@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.3.tgz#c793eef17513de86c9c1b8254eb2c9ba3ed17568" - integrity sha512-8YhpmIHqIx+xmtxONADc+di4a3zzCsvVHLiKq6T3vJZUPnqV2jzx+51+UHMUh3T5w5Z5SFC14l0V/jesRbuMKg== +workbox-cacheable-response@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz#869f1a68fce9063f6869ddbf7fa0a2e0a868b3aa" + integrity sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg== dependencies: - workbox-core "^5.1.3" + workbox-core "^3.6.3" -workbox-google-analytics@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.3.tgz#dba0cadcf438d14389f2f2da0fd9c8cb605d35e6" - integrity sha512-ouK6xIJa+raFcO29TgwKFU/Hv1ejqSYzCzH9lI2B/4z/Wdnb8maL6mMIojQ8j5SohwKswMZmLDl0Az2PCmX11w== +workbox-core@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.6.3.tgz#69abba70a4f3f2a5c059295a6f3b7c62bd00e15c" + integrity sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ== + +workbox-google-analytics@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz#99df2a3d70d6e91961e18a6752bac12e91fbf727" + integrity sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig== dependencies: - workbox-background-sync "^5.1.3" - workbox-core "^5.1.3" - workbox-routing "^5.1.3" - workbox-strategies "^5.1.3" + workbox-background-sync "^3.6.3" + workbox-core "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" -workbox-navigation-preload@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.3.tgz#8e49b935aaef16ac614d06db4a0677cbd59f9cae" - integrity sha512-29SPQMAccOgbq3BT9Gz7k+ydy0mcKKR0Rmkmd46tnujutiL4ooE57fBhwsA+c6OlLcYdisvilKlV2YWEtKWfgQ== +workbox-navigation-preload@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz#a2c34eb7c17e7485b795125091215f757b3c4964" + integrity sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw== dependencies: - workbox-core "^5.1.3" + workbox-core "^3.6.3" -workbox-precaching@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.3.tgz#08f0b48f4a390872a994c4a6ce8e43d08c6cba57" - integrity sha512-9jjBiB00AOI0NnI320ddnhvlL3bjMrDoI3211kEaxcRWh0N2fX25uVn0O8N8u1gWY4tIfwZAn/DgtAU13cFhYA== +workbox-precaching@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.6.3.tgz#5341515e9d5872c58ede026a31e19bafafa4e1c1" + integrity sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw== dependencies: - workbox-core "^5.1.3" + workbox-core "^3.6.3" -workbox-range-requests@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.3.tgz#f0fc6370ea549d002af1fe902b4ee94bfef6e006" - integrity sha512-uUvEoyEUx86LJc7mtmy/6U8xuK0guXU2FnPimt17zDbsC8FSOaPxc92rxtD6xmDSYrI4FqIebypBCjgIe+sfxA== +workbox-range-requests@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz#3cc21cba31f2dd8c43c52a196bcc8f6cdbcde803" + integrity sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A== dependencies: - workbox-core "^5.1.3" + workbox-core "^3.6.3" -workbox-routing@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.3.tgz#9946da0e9ace45af3db09cc0b4bdc4696723e1f7" - integrity sha512-F+sAp9Iy3lVl3BEG+pzXWVq4AftzjiFpHDaZ4Kf4vLoBoKQE0hIHet4zE5DpHqYdyw+Udhp4wrfHamX6PN6z1Q== +workbox-routing@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.6.3.tgz#659cd8f9274986cfa98fda0d050de6422075acf7" + integrity sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ== dependencies: - workbox-core "^5.1.3" + workbox-core "^3.6.3" -workbox-strategies@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.3.tgz#220cc9f5519ed76f2452ccb9407a5fd967c37110" - integrity sha512-wiXHfmOKnWABeIVW+/ye0e00+2CcS5y7SIj2f9zcdy2ZLEbcOf7B+yOl5OrWpBGlTUwRjIYhV++ZqiKm3Dc+8w== +workbox-strategies@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.6.3.tgz#11a0dc249a7bc23d3465ec1322d28fa6643d64a0" + integrity sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g== dependencies: - workbox-core "^5.1.3" - workbox-routing "^5.1.3" + workbox-core "^3.6.3" -workbox-streams@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.3.tgz#8f381d395ea2e57106b7b6542b9ffcd769a3047b" - integrity sha512-8kt70eBd1RXL0qenxEnch3Cd7VyW3O0CkeGBN4Bikt307nIV5Q0JciLA5o0CRteijawYOiTq0/px4GDBv1obgQ== +workbox-streams@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-3.6.3.tgz#beaea5d5b230239836cc327b07d471aa6101955a" + integrity sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w== dependencies: - workbox-core "^5.1.3" - workbox-routing "^5.1.3" + workbox-core "^3.6.3" -workbox-sw@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.3.tgz#7bffbf034f2f5b58e1734b5b86d240019a5332bb" - integrity sha512-Syk6RhYr/8VdFwXrxo5IpVz8Og2xapHTWJhqsZRF+TbxSvlaJs8hrvVPd7edn5ZiiVdPhE9NTeOTOg1+D+FGoA== +workbox-sw@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.6.3.tgz#278ea4c1831b92bbe2d420da8399176c4b2789ff" + integrity sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg== -workbox-webpack-plugin@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.3.tgz#a7070e3ea0eedb6f87e11fd916ec5d4430a6e348" - integrity sha512-gxSkZ9GFLrMNC/8DGNRjcMhrt8iu+MMXhH/Fpo3wo9rKaSMsI7esGq0klTH/UloP9pNvBizVydysrB52eRhI7w== +workbox-webpack-plugin@^3.6.0: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-3.6.3.tgz#a807bb891b4e4e3c808df07e58f17de2d5ba6182" + integrity sha512-RwmKjc7HFHUFHoOlKoZUq9349u0QN3F8W5tZZU0vc1qsBZDINWXRiIBCAKvo/Njgay5sWz7z4I2adnyTo97qIQ== dependencies: - "@babel/runtime" "^7.5.5" - fast-json-stable-stringify "^2.0.0" - source-map-url "^0.4.0" - upath "^1.1.2" - webpack-sources "^1.3.0" - workbox-build "^5.1.3" - -workbox-window@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.3.tgz#24a2acb2903b0ff2789a4ce32f355621e769eb23" - integrity sha512-oYvfVtPLET7FUrhOzbk0R+aATVmpdQBkmDqwyFH4W2dfVqJXTvTXzuGP5Pn9oZ8jMTB3AYW43yhYBlLYM3mYyg== - dependencies: - workbox-core "^5.1.3" + babel-runtime "^6.26.0" + json-stable-stringify "^1.0.1" + workbox-build "^3.6.3" worker-farm@^1.7.0: version "1.7.0"