💚 Répare les tests unitaire, les erreurs flow et les erreurs eslint
parent
14b4db355d
commit
de2f41ecd4
|
@ -1,8 +1,8 @@
|
|||
- nom: forme juridique
|
||||
formule:
|
||||
une possibilité parmi:
|
||||
- micro entreprise
|
||||
- micro entreprise option EIRL
|
||||
formule:
|
||||
une possibilité parmi:
|
||||
- auto-entrepreneur
|
||||
- auto-entrepreneur option EIRL
|
||||
- EI
|
||||
- EURL
|
||||
- EIRL
|
||||
|
@ -14,60 +14,60 @@
|
|||
|
||||
- nom: EI
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés = 1
|
||||
non applicable si:
|
||||
une de ces conditions:
|
||||
- responsabilité limitée
|
||||
|
||||
- nom: EIRL
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés = 1
|
||||
|
||||
- nom: EIRL
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés = 1
|
||||
|
||||
- nom: micro entreprise
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés = 1
|
||||
non applicable si:
|
||||
une de ces conditions:
|
||||
une de ces conditions:
|
||||
- responsabilité limitée
|
||||
|
||||
- nom: micro entreprise option EIRL
|
||||
- nom: EIRL
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés = 1
|
||||
|
||||
- nom: EIRL
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés = 1
|
||||
|
||||
- nom: auto-entrepreneur
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés = 1
|
||||
non applicable si:
|
||||
une de ces conditions:
|
||||
- responsabilité limitée
|
||||
|
||||
- nom: auto-entrepreneur option EIRL
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés = 1
|
||||
|
||||
- nom: SARL
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés > 1
|
||||
|
||||
- nom: SARL
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés > 1
|
||||
|
@ -77,8 +77,8 @@
|
|||
|
||||
- nom: SARL
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés > 1
|
||||
|
@ -86,24 +86,24 @@
|
|||
|
||||
- nom: SAS
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'assimilé salarié'
|
||||
- nombre d'associés > 1
|
||||
|
||||
- nom: SASU
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'assimilé salarié'
|
||||
- nombre d'associés = 1
|
||||
|
||||
- nom: SA
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- responsabilité limitée
|
||||
- régime du directeur = 'assimilé salarié'
|
||||
- nombre d'associés > 1
|
||||
|
@ -112,11 +112,11 @@
|
|||
|
||||
- nom: SNC
|
||||
espace: forme juridique
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- régime du directeur = 'indépendant'
|
||||
- nombre d'associés > 1
|
||||
non applicable si:
|
||||
non applicable si:
|
||||
une de ces conditions:
|
||||
- responsabilité limitée
|
||||
|
||||
|
@ -125,14 +125,14 @@
|
|||
|
||||
|
||||
- nom: régime du directeur
|
||||
formule:
|
||||
une possibilité parmi:
|
||||
formule:
|
||||
une possibilité parmi:
|
||||
- assimilé salarié
|
||||
- indépendant
|
||||
|
||||
- nom: assimilé salarié
|
||||
espace: régime du directeur
|
||||
non applicable si:
|
||||
non applicable si:
|
||||
toutes ces conditions:
|
||||
- forme juridique = 'SARL'
|
||||
- directeur majoritaire
|
||||
|
|
|
@ -112,7 +112,7 @@
|
|||
"eslint-plugin-react": "^7.11.1",
|
||||
"express": "^4.16.3",
|
||||
"file-loader": "^1.1.11",
|
||||
"flow-bin": "^0.81.0",
|
||||
"flow-bin": "^0.92.0",
|
||||
"flow-typed": "^2.4.0",
|
||||
"google-translate-api": "^2.3.0",
|
||||
"html-loader": "^0.5.5",
|
||||
|
|
|
@ -7,6 +7,7 @@ import type {
|
|||
SetSimulationConfigAction,
|
||||
SetSituationBranchAction
|
||||
} from 'Types/ActionsTypes'
|
||||
// $FlowFixMe
|
||||
import { reset } from 'redux-form';
|
||||
import { deletePersistedSimulation } from '../storage/persistSimulation';
|
||||
|
||||
|
@ -50,7 +51,6 @@ export const deletePreviousSimulation = () => (
|
|||
|
||||
export const startConversation = (priorityNamespace: ?string) => (
|
||||
dispatch: StartConversationAction => void,
|
||||
_: any
|
||||
) => {
|
||||
dispatch({
|
||||
type: 'START_CONVERSATION',
|
||||
|
|
|
@ -18,9 +18,9 @@ let Banner = ({ hidden = false, children }: PropTypes) =>
|
|||
</div>
|
||||
) : null
|
||||
|
||||
export default connect(
|
||||
export default (connect(
|
||||
(state: State, { hidden }: PropTypes) => ({
|
||||
hidden: hidden || state.conversationStarted
|
||||
}),
|
||||
{}
|
||||
)(Banner)
|
||||
)(Banner): React$ComponentType<PropTypes>)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* @flow */
|
||||
import { setSituationBranch } from 'Actions/actions'
|
||||
import {
|
||||
isAutoentrepreneur,
|
||||
defineDirectorStatus
|
||||
defineDirectorStatus,
|
||||
isAutoentrepreneur
|
||||
} from 'Actions/companyStatusActions'
|
||||
import PeriodSwitch from 'Components/PeriodSwitch'
|
||||
import RuleLink from 'Components/RuleLink'
|
||||
|
@ -21,11 +21,17 @@ import Montant from 'Ui/Montant'
|
|||
import { validInputEnteredSelector } from '../selectors/analyseSelectors'
|
||||
import './ComparativeTargets.css'
|
||||
import SchemeCard from './ui/SchemeCard'
|
||||
import type {
|
||||
Règle,
|
||||
RègleAvecMontant,
|
||||
RègleValeur,
|
||||
RègleAvecValeur
|
||||
} from 'Types/RegleTypes'
|
||||
|
||||
const connectRègles = (situationBranchName: string) =>
|
||||
connect(
|
||||
state => {
|
||||
return {
|
||||
return ({
|
||||
revenuDisponible:
|
||||
validInputEnteredSelector(state) &&
|
||||
règleAvecMontantSelector(state, {
|
||||
|
@ -36,7 +42,10 @@ const connectRègles = (situationBranchName: string) =>
|
|||
règleAvecValeurSelector(state, {
|
||||
situationBranchName
|
||||
})('ratio de prélèvements')
|
||||
}
|
||||
}: {
|
||||
revenuDisponible: RègleAvecMontant,
|
||||
prélèvements: RègleAvecValeur
|
||||
})
|
||||
},
|
||||
{
|
||||
setSituationBranch,
|
||||
|
@ -45,7 +54,10 @@ const connectRègles = (situationBranchName: string) =>
|
|||
}
|
||||
)
|
||||
|
||||
const ComparativeTargets = connect(state => {
|
||||
type ComparativeTargetsProps = {
|
||||
plafondAutoEntrepreneurDépassé: ?{ message: string }
|
||||
}
|
||||
const ComparativeTargets: React$ComponentType<{}> = connect(state => {
|
||||
const analyse = branchAnalyseSelector(state, {
|
||||
situationBranchName: 'Auto-entrepreneur'
|
||||
})
|
||||
|
@ -56,7 +68,7 @@ const ComparativeTargets = connect(state => {
|
|||
test.includes('base des cotisations > plafond')
|
||||
)
|
||||
}
|
||||
})(({ plafondAutoEntrepreneurDépassé }) => (
|
||||
})(({ plafondAutoEntrepreneurDépassé }: ComparativeTargetsProps) => (
|
||||
<Animate.fromBottom config={config.gentle}>
|
||||
<div
|
||||
className="ui__ full-width"
|
||||
|
@ -69,7 +81,8 @@ const ComparativeTargets = connect(state => {
|
|||
<AutoEntrepreneur
|
||||
branchIndex={0}
|
||||
plafondDépassé={
|
||||
plafondAutoEntrepreneurDépassé && plafondAutoEntrepreneurDépassé.message
|
||||
plafondAutoEntrepreneurDépassé &&
|
||||
plafondAutoEntrepreneurDépassé.message
|
||||
}
|
||||
/>
|
||||
<AssimiléSalarié branchIndex={2} />
|
||||
|
@ -184,9 +197,13 @@ const AutoEntrepreneur = connectRègles('Auto-entrepreneur')(
|
|||
}
|
||||
)
|
||||
|
||||
type PrélèvementNoticeProps = {
|
||||
prélèvements: ?RègleAvecValeur,
|
||||
sitePaths: Object
|
||||
}
|
||||
const PrélèvementNotice = withSitePaths(
|
||||
({ prélèvements, sitePaths }) =>
|
||||
prélèvements && (
|
||||
({ prélèvements, sitePaths }: PrélèvementNoticeProps) =>
|
||||
!!prélèvements && (
|
||||
<>
|
||||
soit{' '}
|
||||
<Montant
|
||||
|
|
|
@ -14,10 +14,11 @@ import { isIE } from '../utils'
|
|||
import './Distribution.css'
|
||||
import './PaySlip'
|
||||
import RuleLink from './RuleLink'
|
||||
import type { ThemeColours } from 'Components/utils/withColours'
|
||||
import type { Répartition } from 'Types/ResultViewTypes.js'
|
||||
|
||||
type Props = ?Répartition & {
|
||||
colours: { colour: string }
|
||||
colours: ThemeColours
|
||||
}
|
||||
type State = {
|
||||
branchesInViewport: Array<string>
|
||||
|
@ -42,6 +43,7 @@ class Distribution extends Component<Props, State> {
|
|||
render() {
|
||||
const {
|
||||
colours: { colour },
|
||||
// $FlowFixMe
|
||||
...distribution
|
||||
} = this.props
|
||||
if (!Object.values(distribution).length) {
|
||||
|
|
|
@ -4,7 +4,6 @@ import { ScrollToElement } from 'Components/utils/Scroll'
|
|||
import withTracker from 'Components/utils/withTracker'
|
||||
import React, { Component } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { compose } from 'redux'
|
||||
import type { Tracker } from 'Components/utils/withTracker'
|
||||
|
||||
type Props = { onEnd: () => void, tracker: Tracker }
|
||||
|
@ -19,7 +18,6 @@ class FeedbackForm extends Component<Props> {
|
|||
'written feedback submitted'
|
||||
])
|
||||
e.preventDefault()
|
||||
// $FlowFixMe
|
||||
fetch('/', {
|
||||
method: 'POST',
|
||||
// $FlowFixMe
|
||||
|
@ -88,4 +86,4 @@ class FeedbackForm extends Component<Props> {
|
|||
}
|
||||
}
|
||||
|
||||
export default compose(withTracker)(FeedbackForm)
|
||||
export default withTracker(FeedbackForm)
|
||||
|
|
|
@ -7,11 +7,13 @@ import { Link } from 'react-router-dom'
|
|||
import { capitalise0 } from '../utils'
|
||||
import './RuleLink.css'
|
||||
import type { Règle } from 'Types/RegleTypes'
|
||||
import type { ThemeColours } from 'Components/utils/withColours'
|
||||
|
||||
|
||||
type Props = Règle & {
|
||||
sitePaths: Object,
|
||||
style: CSSStyleDeclaration,
|
||||
colours: { colour: string }
|
||||
colours: ThemeColours
|
||||
}
|
||||
const RuleLink = ({
|
||||
lien,
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
/* @flow */
|
||||
|
||||
import Distribution from 'Components/Distribution'
|
||||
import PaySlip from 'Components/PaySlip'
|
||||
import SearchButton from 'Components/SearchButton'
|
||||
import React, { Component } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import './SalaryCompactExplanation.css'
|
||||
import Distribution from 'Components/Distribution';
|
||||
import PaySlip from 'Components/PaySlip';
|
||||
import SearchButton from 'Components/SearchButton';
|
||||
import React, { Component } from 'react';
|
||||
import { Trans } from 'react-i18next';
|
||||
import './SalaryCompactExplanation.css';
|
||||
|
||||
import type { Tracker } from 'Components/utils/withTracker'
|
||||
|
||||
type ResultView = 'distribution' | 'payslip';
|
||||
type State = {
|
||||
resultView: 'distribution' | 'payslip'
|
||||
resultView: ResultView
|
||||
}
|
||||
type Props = {
|
||||
conversationStarted: boolean,
|
||||
|
@ -27,7 +28,7 @@ export default class SalaryCompactExplanation extends Component<Props, State> {
|
|||
state = {
|
||||
resultView: this.props.conversationStarted ? 'payslip' : 'distribution'
|
||||
}
|
||||
handleClickOnTab = resultView => () => {
|
||||
handleClickOnTab = (resultView: ResultView) => () => {
|
||||
this.setState({ resultView })
|
||||
this.props.tracker.push(['trackEvent', 'results', 'selectView', resultView])
|
||||
}
|
||||
|
|
|
@ -1,11 +1,17 @@
|
|||
/* @flow */
|
||||
|
||||
import Distribution from 'Components/Distribution'
|
||||
import PaySlip from 'Components/PaySlip'
|
||||
import React, { Component } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import Distribution from 'Components/Distribution';
|
||||
import PaySlip from 'Components/PaySlip';
|
||||
import React, { Component } from 'react';
|
||||
import { Trans } from 'react-i18next';
|
||||
|
||||
export default class SalaryFirstExplanation extends Component {
|
||||
type Props = {
|
||||
arePreviousAnswers: boolean,
|
||||
conversationStarted: boolean,
|
||||
startConversation: () => void,
|
||||
period: 'mois' | 'année'
|
||||
}
|
||||
export default class SalaryFirstExplanation extends Component<Props> {
|
||||
render() {
|
||||
return (
|
||||
<>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { compose } from 'ramda'
|
||||
import React, { Component } from 'react'
|
||||
import { Trans, withNamespaces } from 'react-i18next'
|
||||
import { FormDecorator } from './FormDecorator'
|
||||
import { compose } from 'ramda';
|
||||
import React, { Component } from 'react';
|
||||
import { Trans, withNamespaces } from 'react-i18next';
|
||||
import { FormDecorator } from './FormDecorator';
|
||||
|
||||
export default compose(
|
||||
FormDecorator('text-area'),
|
||||
|
|
|
@ -9,7 +9,7 @@ questions à l'affiche:
|
|||
Charges: entreprise . charges
|
||||
|
||||
situation:
|
||||
micro entreprise: non
|
||||
auto-entrepreneur: non
|
||||
indépendant: non
|
||||
contrat salarié: oui
|
||||
contrat salarié . assimilé salarié: oui
|
||||
|
|
|
@ -11,7 +11,7 @@ questions à l'affiche:
|
|||
Commerçant, artisan, ou libéral ?: entreprise . catégorie d'activité
|
||||
|
||||
situation:
|
||||
micro entreprise: oui
|
||||
auto-entrepreneur: oui
|
||||
indépendant: non
|
||||
contrat salarié: non
|
||||
période: année
|
||||
|
|
|
@ -12,6 +12,6 @@ questions à l'affiche:
|
|||
|
||||
situation:
|
||||
indépendant: oui
|
||||
micro entreprise: non
|
||||
auto-entrepreneur: non
|
||||
contrat salarié: non
|
||||
période: année
|
||||
|
|
|
@ -16,17 +16,17 @@ situation:
|
|||
branches:
|
||||
- nom: Auto-entrepreneur
|
||||
situation:
|
||||
micro entreprise: oui
|
||||
auto-entrepreneur: oui
|
||||
indépendant: non
|
||||
contrat salarié: non
|
||||
- nom: Indépendant
|
||||
situation:
|
||||
indépendant: oui
|
||||
micro entreprise: non
|
||||
auto-entrepreneur: non
|
||||
contrat salarié: non
|
||||
- nom: Assimilé salarié
|
||||
situation:
|
||||
micro entreprise: non
|
||||
auto-entrepreneur: non
|
||||
indépendant: non
|
||||
contrat salarié: oui
|
||||
contrat salarié . assimilé salarié: oui
|
||||
|
|
|
@ -14,5 +14,5 @@ situation:
|
|||
contrat salarié: oui
|
||||
contrat salarié . assimilé salarié: non
|
||||
indépendant: non
|
||||
micro entreprise: non
|
||||
auto-entrepreneur: non
|
||||
période: mois
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* @flow */
|
||||
|
||||
import convert from 'color-convert';
|
||||
import React, { Component, createContext } from 'react';
|
||||
import convert from 'color-convert'
|
||||
import React, { Component, createContext } from 'react'
|
||||
import type { ComponentType } from 'react'
|
||||
|
||||
export type ThemeColours = {
|
||||
|
@ -16,9 +16,8 @@ export type ThemeColours = {
|
|||
lightColour: string,
|
||||
lighterColour: string,
|
||||
lightestColour: string,
|
||||
darkestColour: string,
|
||||
};
|
||||
|
||||
darkestColour: string
|
||||
}
|
||||
|
||||
/*
|
||||
Hex to RGB conversion:
|
||||
|
@ -29,12 +28,11 @@ let cutHex = h => (h.charAt(0) == '#' ? h.substring(1, 7) : h),
|
|||
hexToG = h => parseInt(cutHex(h).substring(2, 4), 16),
|
||||
hexToB = h => parseInt(cutHex(h).substring(4, 6), 16)
|
||||
|
||||
|
||||
/*
|
||||
Given a background color, should you write on it in black or white ?
|
||||
Taken from http://stackoverflow.com/questions/3942878/how-to-decide-font-color-in-white-or-black-depending-on-background-color#comment61936401_3943023
|
||||
*/
|
||||
function findContrastedTextColour(color, simple) {
|
||||
function findContrastedTextColour(color, simple) {
|
||||
let r = hexToR(color),
|
||||
g = hexToG(color),
|
||||
b = hexToB(color)
|
||||
|
@ -44,8 +42,8 @@ let cutHex = h => (h.charAt(0) == '#' ? h.substring(1, 7) : h),
|
|||
return r * 0.299 + g * 0.587 + b * 0.114 > 128 ? '#000000' : '#ffffff'
|
||||
} // else complex formula
|
||||
let uicolors = [r / 255, g / 255, b / 255],
|
||||
c = uicolors.map(
|
||||
c => (c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4))
|
||||
c = uicolors.map(c =>
|
||||
c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)
|
||||
),
|
||||
L = 0.2126 * c[0] + 0.7152 * c[1] + 0.0722 * c[2]
|
||||
|
||||
|
@ -56,8 +54,7 @@ const lightenColour = (hex, x) => {
|
|||
const [h, s, l] = convert.hex.hsl(hex.split('#')[1])
|
||||
return '#' + convert.hsl.hex([h, s, Math.max(2, Math.min(l + x, 98))])
|
||||
}
|
||||
const generateTheme = (themeColour?: ?string) : ThemeColours => {
|
||||
|
||||
const generateTheme = (themeColour?: ?string): ThemeColours => {
|
||||
let // Use the default theme colour if the host page hasn't made a choice
|
||||
colour = themeColour || '#2975D1',
|
||||
lightColour = lightenColour(colour, 10),
|
||||
|
@ -90,15 +87,19 @@ const generateTheme = (themeColour?: ?string) : ThemeColours => {
|
|||
}
|
||||
}
|
||||
|
||||
const ThemeColoursContext = createContext(generateTheme())
|
||||
const ThemeColoursContext: React$Context<ThemeColours> = createContext(
|
||||
generateTheme()
|
||||
)
|
||||
|
||||
type ProviderProps = {
|
||||
colour: string,
|
||||
colour: string
|
||||
}
|
||||
export const ThemeColoursProvider = ({ colour, ...props}: ProviderProps) => <ThemeColoursContext.Provider value={generateTheme(colour)} {...props}/>
|
||||
export const ThemeColoursProvider = ({ colour, ...props }: ProviderProps) => (
|
||||
<ThemeColoursContext.Provider value={generateTheme(colour)} {...props} />
|
||||
)
|
||||
export default function withThemeColours<Props: { colours: ThemeColours }>(
|
||||
WrappedComponent: ComponentType<Props>
|
||||
) {
|
||||
WrappedComponent: React$ComponentType<Props>
|
||||
): React$ComponentType<$Diff<Props, { colours: ThemeColours }>> {
|
||||
class WithThemeColours extends Component<
|
||||
$Diff<Props, { colours: ThemeColours }>
|
||||
> {
|
||||
|
@ -106,9 +107,7 @@ export default function withThemeColours<Props: { colours: ThemeColours }>(
|
|||
render() {
|
||||
return (
|
||||
<ThemeColoursContext.Consumer>
|
||||
{colours => (
|
||||
<WrappedComponent {...this.props} colours={colours} />
|
||||
)}
|
||||
{colours => <WrappedComponent {...this.props} colours={colours} />}
|
||||
</ThemeColoursContext.Consumer>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
/* @flow */
|
||||
|
||||
import React, { Component, createContext } from 'react'
|
||||
import type { ComponentType } from 'react'
|
||||
|
||||
export type SitePaths = Object
|
||||
|
||||
const SitePathsContext = createContext({})
|
||||
const SitePathsContext: React$Context<SitePaths> = createContext({})
|
||||
|
||||
export const SitePathProvider = SitePathsContext.Provider
|
||||
export default function withSitePaths<Props: { sitePaths: SitePaths }>(
|
||||
WrappedComponent: ComponentType<Props>
|
||||
) {
|
||||
WrappedComponent: React$ComponentType<Props>
|
||||
): React$ComponentType<$Diff<Props, {sitePaths: SitePaths}>> {
|
||||
class WithSitePaths extends Component<
|
||||
$Diff<Props, { sitePaths: SitePaths }>
|
||||
> {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/* @flow */
|
||||
|
||||
import React, { Component, createContext } from 'react'
|
||||
import type { ComponentType } from 'react'
|
||||
import React, { createContext } from 'react'
|
||||
|
||||
export type Tracker = {
|
||||
push: (
|
||||
|
@ -15,21 +14,17 @@ export const defaultTracker: Tracker = {
|
|||
push: (console && console.log && console.log.bind(console)) || (() => {}), // eslint-disable-line no-console
|
||||
connectToHistory: history => history
|
||||
}
|
||||
const TrackerContext = createContext(defaultTracker)
|
||||
|
||||
const TrackerContext: React$Context<Tracker> = createContext(defaultTracker)
|
||||
export const TrackerProvider = TrackerContext.Provider
|
||||
export default function withTracker<Props: { tracker: Tracker }>(
|
||||
WrappedComponent: ComponentType<Props>
|
||||
) {
|
||||
class WithTracker extends Component<$Diff<Props, { tracker: Tracker }>> {
|
||||
displayName = `withTracker(${WrappedComponent.displayName || ''})`
|
||||
render() {
|
||||
return (
|
||||
<TrackerContext.Consumer>
|
||||
{tracker => <WrappedComponent {...this.props} tracker={tracker} />}
|
||||
</TrackerContext.Consumer>
|
||||
)
|
||||
}
|
||||
|
||||
export default function withTracker<Config: { tracker: Tracker }>(
|
||||
Component: React$ComponentType<Config>
|
||||
): React$ComponentType<$Diff<Config, { tracker: Tracker }>> {
|
||||
return function ConnectTracker(props: $Diff<Config, { tracker: Tracker }>) {
|
||||
return (
|
||||
<TrackerContext.Consumer>
|
||||
{(tracker: Tracker) => <Component {...props} tracker={tracker} />}
|
||||
</TrackerContext.Consumer>
|
||||
)
|
||||
}
|
||||
return WithTracker
|
||||
}
|
||||
|
|
|
@ -1,31 +1,11 @@
|
|||
import formValueTypes from 'Components/conversation/formValueTypes'
|
||||
import Input from 'Components/conversation/Input'
|
||||
import Question from 'Components/conversation/Question'
|
||||
import SelectGéo from 'Components/conversation/select/SelectGéo'
|
||||
import SelectAtmp from 'Components/conversation/select/SelectTauxRisque'
|
||||
import {
|
||||
add,
|
||||
countBy,
|
||||
descend,
|
||||
flatten,
|
||||
fromPairs,
|
||||
head,
|
||||
identity,
|
||||
is,
|
||||
keys,
|
||||
map,
|
||||
mergeWith,
|
||||
pair,
|
||||
pick,
|
||||
prop,
|
||||
reduce,
|
||||
sortWith,
|
||||
toPairs,
|
||||
unless,
|
||||
values
|
||||
} from 'ramda'
|
||||
import React from 'react'
|
||||
import { findRuleByDottedName, queryRule } from './rules'
|
||||
import formValueTypes from 'Components/conversation/formValueTypes';
|
||||
import Input from 'Components/conversation/Input';
|
||||
import Question from 'Components/conversation/Question';
|
||||
import SelectGéo from 'Components/conversation/select/SelectGéo';
|
||||
import SelectAtmp from 'Components/conversation/select/SelectTauxRisque';
|
||||
import { add, countBy, descend, flatten, fromPairs, head, identity, is, keys, map, mergeWith, pair, pick, prop, reduce, sortWith, toPairs, unless, values } from 'ramda';
|
||||
import React from 'react';
|
||||
import { findRuleByDottedName, queryRule } from './rules';
|
||||
|
||||
/*
|
||||
COLLECTE DES VARIABLES MANQUANTES
|
||||
|
@ -65,7 +45,6 @@ export let getNextSteps = missingVariablesByTarget => {
|
|||
),
|
||||
pairs = toPairs(missingByCompound),
|
||||
sortedPairs = sortWith([descend(byCount), descend(byScore)], pairs)
|
||||
|
||||
return map(head, sortedPairs)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,7 @@
|
|||
// This file exports the functions of the public computing library
|
||||
import { analyseMany, parseAll } from './traverse.js'
|
||||
import {
|
||||
rulesFr,
|
||||
collectDefaults,
|
||||
nestedSituationToPathMap,
|
||||
enrichRule
|
||||
} from './rules'
|
||||
import { safeLoad } from 'js-yaml'
|
||||
import { safeLoad } from 'js-yaml';
|
||||
import { collectDefaults, enrichRule, nestedSituationToPathMap, rulesFr } from './rules';
|
||||
import { analyseMany, parseAll } from './traverse.js';
|
||||
|
||||
// The public evaluation function takes a nested object of input values
|
||||
let nestedSituationToStateSelector = rules => nestedSituation => dottedName =>
|
||||
|
@ -34,7 +29,6 @@ export default {
|
|||
parseAll(rules),
|
||||
Array.isArray(targetInput) ? targetInput : [targetInput]
|
||||
)(nestedSituationToStateSelector(rules)(nestedSituation))
|
||||
|
||||
if (config?.debug) return evaluation
|
||||
|
||||
let values = evaluation.targets.map(t => t.nodeValue)
|
||||
|
|
|
@ -256,7 +256,7 @@ export let treatRuleRoot = (rules, rule) => {
|
|||
|
||||
if (level === 'bloquant' && !isInputControl) {
|
||||
throw new Error(
|
||||
`Un contrôle ne peut être bloquant et invoquer des calculs de variables :
|
||||
`Un contrôle ne peut être bloquant et invoquer des calculs de variables :
|
||||
${control['si']}
|
||||
${level}
|
||||
`
|
||||
|
@ -367,7 +367,6 @@ export let analyseMany = (parsedRules, targetNames) => situationGate => {
|
|||
// TODO: we should really make use of namespaces at this level, in particular
|
||||
// setRule in Rule.js needs to get smarter and pass dottedName
|
||||
let cache = { parseLevel: 0 }
|
||||
|
||||
// These controls do not trigger the evaluation of variables of the system : they are input controls
|
||||
// This is necessary because our evaluation implementation is not yet fast enough to not freeze slow mobile devices
|
||||
// They could be implemented directly at the redux-form level, but they should also be triggered by the engine used as a library
|
||||
|
|
|
@ -41,6 +41,7 @@ export let treatVariable = (rules, rule, filter) => parseResult => {
|
|||
)
|
||||
return cache[cacheName]
|
||||
}
|
||||
const variableScore = variable.defaultValue ? 1 : 2;
|
||||
|
||||
// SITUATION 1 : La variable est directement renseignée
|
||||
if (situationValue != null) return cacheAndNode(situationValue, {})
|
||||
|
@ -51,14 +52,14 @@ export let treatVariable = (rules, rule, filter) => parseResult => {
|
|||
|
||||
// SITUATION 3 : La variable est une question sans condition dont la valeur n'a pas été renseignée
|
||||
if (situationValue == null && !variableHasFormula && !variableHasCond)
|
||||
return cacheAndNode(null, { [dottedName]: 1 })
|
||||
return cacheAndNode(null, { [dottedName]: variableScore })
|
||||
|
||||
// SITUATION 4 : La variable est une question avec conditions
|
||||
if (situationValue == null && !variableHasFormula && variableHasCond) {
|
||||
// SITUATION 4.1 : La condition est connue et vrai
|
||||
if (explanation.isApplicable)
|
||||
return variable.question
|
||||
? cacheAndNode(null, { [dottedName]: 1 })
|
||||
? cacheAndNode(null, { [dottedName]: variableScore })
|
||||
: cacheAndNode(true, {})
|
||||
|
||||
// SITUATION 4.2 : La condition est connue et fausse
|
||||
|
@ -67,7 +68,7 @@ export let treatVariable = (rules, rule, filter) => parseResult => {
|
|||
if (explanation.isApplicable == null)
|
||||
return cacheAndNode(null, {
|
||||
...explanation.missingVariables,
|
||||
...(variable.question ? { [dottedName]: 1 } : {})
|
||||
...(variable.question ? { [dottedName]: variableScore } : {})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/* @flow */
|
||||
|
||||
import { compose, defaultTo, isNil, lensPath, over, set, uniq, without } from 'ramda';
|
||||
// $FlowFixMe
|
||||
import reduceReducers from 'reduce-reducers';
|
||||
import { combineReducers } from 'redux';
|
||||
// $FlowFixMe
|
||||
|
|
|
@ -660,6 +660,7 @@
|
|||
- nom: contrat salarié
|
||||
icônes: 📄
|
||||
question: Activité salariée ?
|
||||
par défaut: oui
|
||||
description: |
|
||||
Le contrat qui lie une entreprise (via son établissement) à un individu, qui est alors son salarié.
|
||||
|
||||
|
@ -2494,7 +2495,7 @@
|
|||
formule:
|
||||
somme:
|
||||
- revenu abattu par défaut
|
||||
- micro entreprise . impôt . revenu abattu
|
||||
- autoentrepreneur . impôt . revenu abattu
|
||||
|
||||
- espace: impôt
|
||||
nom: revenu abattu par défaut
|
||||
|
@ -2550,7 +2551,7 @@
|
|||
somme:
|
||||
- contrat salarié . salaire . net
|
||||
- indépendant . revenu net de cotisations
|
||||
- micro entreprise . revenu net de cotisations
|
||||
- autoentrepreneur . revenu net de cotisations
|
||||
|
||||
- nom: revenu net d'impôt
|
||||
titre: Revenu net de cotisations et d'impôt
|
||||
|
@ -2576,7 +2577,7 @@
|
|||
format: euros
|
||||
formule:
|
||||
variations:
|
||||
- si: micro entreprise
|
||||
- si: autoentrepreneur
|
||||
alors:
|
||||
inversion numérique:
|
||||
avec:
|
||||
|
@ -2591,7 +2592,7 @@
|
|||
somme:
|
||||
- contrat salarié . rémunération . total
|
||||
- indépendant . revenu brut
|
||||
- micro entreprise . base des cotisations
|
||||
- autoentrepreneur . base des cotisations
|
||||
|
||||
- espace: entreprise
|
||||
nom: charges
|
||||
|
@ -2622,7 +2623,7 @@
|
|||
|
||||
- espace: entreprise
|
||||
nom: charges non déductibles
|
||||
applicable si: micro entreprise
|
||||
applicable si: autoentrepreneur
|
||||
formule: charges
|
||||
période: flexible
|
||||
|
||||
|
@ -2681,6 +2682,7 @@
|
|||
nom: restauration ou hébergement
|
||||
|
||||
- nom: indépendant
|
||||
par défaut: non
|
||||
question: Activité à la sécurité sociale des indépendants ?
|
||||
|
||||
- espace: indépendant
|
||||
|
@ -2904,11 +2906,12 @@
|
|||
période: flexible
|
||||
formule: revenu net de cotisations + prélèvements . CSG et CRDS (non déductible)
|
||||
|
||||
- nom: micro entreprise
|
||||
icônes: μ
|
||||
- nom: autoentrepreneur
|
||||
icônes: 🚶
|
||||
par défaut: non
|
||||
question: Activité en auto-entrepreneur ?
|
||||
|
||||
- espace: micro entreprise
|
||||
- espace: autoentrepreneur
|
||||
nom: base des cotisations
|
||||
formule: entreprise . chiffre d'affaires
|
||||
période: flexible
|
||||
|
@ -2917,7 +2920,7 @@
|
|||
message: Seuil de chiffre d'affaires dépassé
|
||||
niveau: avertissement
|
||||
|
||||
- espace: micro entreprise
|
||||
- espace: autoentrepreneur
|
||||
nom: plafond
|
||||
période: année
|
||||
formule:
|
||||
|
@ -2928,13 +2931,13 @@
|
|||
alors: 70000
|
||||
- sinon: 170000
|
||||
|
||||
- espace: micro entreprise
|
||||
- espace: autoentrepreneur
|
||||
nom: revenu net de cotisations
|
||||
titre: Revenu net d'une auto-entrepreneur
|
||||
formule: base des cotisations - cotisations
|
||||
période: flexible
|
||||
|
||||
- espace: micro entreprise
|
||||
- espace: autoentrepreneur
|
||||
nom: cotisations
|
||||
période: flexible
|
||||
formule:
|
||||
|
@ -2948,7 +2951,7 @@
|
|||
alors: 22%
|
||||
- sinon: 12.8%
|
||||
|
||||
- espace: micro entreprise . impôt
|
||||
- espace: autoentrepreneur . impôt
|
||||
nom: abattement
|
||||
période: flexible
|
||||
formule:
|
||||
|
@ -2962,7 +2965,7 @@
|
|||
alors: 50%
|
||||
- sinon: 71%
|
||||
|
||||
- espace: micro entreprise . impôt
|
||||
- espace: autoentrepreneur . impôt
|
||||
nom: revenu abattu
|
||||
période: flexible
|
||||
formule: base des cotisations - abattement
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# espace de nom implicite : douche
|
||||
# non bloquant :
|
||||
# espace de nom implicite : douche
|
||||
# non bloquant :
|
||||
# - période: semaine
|
||||
# bloquant :
|
||||
# bloquant :
|
||||
# - ?
|
||||
|
||||
- nom: douche
|
||||
|
@ -12,7 +12,7 @@
|
|||
icônes: 🍃
|
||||
période: flexible
|
||||
unité: kgCO2eq
|
||||
formule: impact par douche * douche . nombre
|
||||
formule: impact par douche * douche . nombre
|
||||
|
||||
- espace: douche
|
||||
nom: nombre
|
||||
|
@ -31,49 +31,43 @@
|
|||
nom: impact par litre
|
||||
formule: eau . impact par litre froid + chauffage . impact par litre
|
||||
|
||||
|
||||
- espace: douche
|
||||
icônes: 🇱
|
||||
nom: litres d'eau
|
||||
formule:
|
||||
durée de la douche * litres par minute
|
||||
formule: durée de la douche * litres par minute
|
||||
|
||||
- espace: douche
|
||||
nom: litres par minute
|
||||
formule:
|
||||
variations:
|
||||
formule:
|
||||
variations:
|
||||
- si: pomme de douche économe
|
||||
alors: 9
|
||||
- sinon: 18
|
||||
références:
|
||||
économise l'eau: https://www.jeconomiseleau.org/index.php/particuliers/economies-par-usage/la-douche-et-le-bain
|
||||
|
||||
références:
|
||||
économise l'eau: https://www.jeconomiseleau.org/index.php/particuliers/economies-par-usage/la-douche-et-le-bain
|
||||
|
||||
- espace: douche
|
||||
nom: pomme de douche économe
|
||||
question: Utilisez-vous une pomme de douche économe ?
|
||||
par défaut: non
|
||||
|
||||
|
||||
- nom: eau
|
||||
icônes: 💧
|
||||
|
||||
- espace: eau
|
||||
nom: impact par litre froid
|
||||
unité: kgCO2eq/l
|
||||
unité: kgCO2eq/l
|
||||
formule: 0.000132
|
||||
|
||||
|
||||
- nom: chauffage
|
||||
icônes: 🔥
|
||||
|
||||
|
||||
- espace: chauffage
|
||||
nom: type
|
||||
question: Comment est chauffée votre eau ?
|
||||
formule:
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
formule:
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
possibilités:
|
||||
- gaz
|
||||
- fioul
|
||||
|
@ -95,21 +89,21 @@
|
|||
- espace: chauffage
|
||||
nom: impact par kWh
|
||||
unité: kgCO2eq/kWh PCI
|
||||
formule:
|
||||
variations:
|
||||
formule:
|
||||
variations:
|
||||
- si: type = 'gaz'
|
||||
alors: 0.227
|
||||
- si: type = 'fioul'
|
||||
alors: 0.324
|
||||
- si: type = 'électricité'
|
||||
alors: 0.059
|
||||
alors: 0.059
|
||||
|
||||
notes: |
|
||||
La base carbone de l'ADEME ne permet malheureusement pas de faire des liens profonds vers les chiffres utilisés.
|
||||
notes: |
|
||||
La base carbone de l'ADEME ne permet malheureusement pas de faire des liens profonds vers les chiffres utilisés.
|
||||
Pour l'électricité, nous retenons le chiffre de l'ADEME "Electricité - 2016 - usage : Eau Chaude Sanitaire - consommation".
|
||||
|
||||
références:
|
||||
base carbone ADEME: http://www.bilans-ges.ademe.fr/fr/accueil
|
||||
références:
|
||||
base carbone ADEME: http://www.bilans-ges.ademe.fr/fr/accueil
|
||||
électricité: https://www.electricitymap.org/?page=country&solar=false&remote=true&wind=false&countryCode=FR
|
||||
électricité sur Décrypter l'Energie: https://decrypterlenergie.org/decryptage-quel-est-le-contenu-en-co2-du-kwh-electrique
|
||||
|
||||
|
@ -117,29 +111,27 @@
|
|||
nom: énergie consommée par litre
|
||||
formule: 0.0325
|
||||
unité: kWh
|
||||
références:
|
||||
références:
|
||||
analyse du prix d'une douche: https://www.econologie.com/forums/plomberie-et-sanitaire/prix-reel-d-un-bain-ou-d-une-douche-pour-l-eau-et-chauffage-t12727.html
|
||||
|
||||
|
||||
- espace: chauffage
|
||||
nom: impact par litre
|
||||
formule: impact par kWh * énergie consommée par litre
|
||||
formule: impact par kWh * énergie consommée par litre
|
||||
|
||||
# Meilleure syntaxe : nouveau mécanisme correspondance
|
||||
# mais où désigne-t-on ce sur quoi la correspondance se fait ? Est-ce implicite ? Ici le chauffage.
|
||||
# formule:
|
||||
# correspondance:
|
||||
# gaz: 30
|
||||
# fioul: 50
|
||||
# électricité: 2
|
||||
|
||||
# formule:
|
||||
# correspondance:
|
||||
# gaz: 30
|
||||
# fioul: 50
|
||||
# électricité: 2
|
||||
|
||||
- espace: douche
|
||||
nom: durée de la douche
|
||||
question: Combien de temps dure votre douche en général ?
|
||||
format: nombre
|
||||
par défaut: 5
|
||||
suggestions:
|
||||
suggestions:
|
||||
expresse: 5
|
||||
moyenne: 10
|
||||
lente: 20
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
import { collectMissingVariablesByTarget, getNextSteps } from 'Engine/generateQuestions';
|
||||
import { collectDefaults, disambiguateExampleSituation, findRuleByDottedName, formatInputs, nestedSituationToPathMap, rules as baseRulesEn, rulesFr as baseRulesFr } from 'Engine/rules';
|
||||
import { analyse, analyseMany, parseAll } from 'Engine/traverse';
|
||||
|
@ -5,7 +6,6 @@ import { add, contains, difference, equals, head, intersection, isNil, mergeDeep
|
|||
import { getFormValues } from 'redux-form';
|
||||
import { createSelector, createSelectorCreator, defaultMemoize } from 'reselect';
|
||||
import { mapOrApply, softCatch } from '../utils';
|
||||
|
||||
// create a "selector creator" that uses deep equal instead of ===
|
||||
const createDeepEqualSelector = createSelectorCreator(defaultMemoize, equals)
|
||||
|
||||
|
@ -17,7 +17,8 @@ const createDeepEqualSelector = createSelectorCreator(defaultMemoize, equals)
|
|||
* */
|
||||
|
||||
|
||||
export let flatRulesSelector = createSelector(
|
||||
export let flatRulesSelector
|
||||
= createSelector(
|
||||
state => state.lang,
|
||||
(state, props) => props && props.rules,
|
||||
(lang, rules) => rules || (lang === 'en' ? baseRulesEn : baseRulesFr)
|
||||
|
@ -89,7 +90,7 @@ const createSituationBrancheSelector = situationSelector =>
|
|||
if (configSituation) {
|
||||
return { ...configSituation, ...situation }
|
||||
}
|
||||
return situation
|
||||
return situation || {}
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -113,14 +113,11 @@ const isCompatibleStatusWith = (answers: LegalStatusRequirements) => (
|
|||
statusRequirements: LegalStatusRequirements
|
||||
): boolean => {
|
||||
const stringify = map(x => (!isNil(x) ? JSON.stringify(x) : x))
|
||||
// $FlowFixMe
|
||||
const answerCompatibility = Object.values(
|
||||
mergeWith(
|
||||
(answer, statusValue) =>
|
||||
isNil(answer) || isNil(statusValue) || answer === statusValue,
|
||||
// $FlowFixMe
|
||||
stringify(statusRequirements),
|
||||
// $FlowFixMe
|
||||
stringify(answers)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -115,7 +115,7 @@ const groupByBranche = (règleLocaliséeSelector: string => Règle) => (
|
|||
return COTISATION_BRANCHE_ORDER.map(branche => [
|
||||
règleLocaliséeSelector(branche),
|
||||
// $FlowFixMe
|
||||
cotisationsMap[branche]
|
||||
cotisathe]
|
||||
])
|
||||
}
|
||||
const analysisToCotisations = (
|
||||
|
|
|
@ -68,6 +68,7 @@ const hiringProgressSelector = state => {
|
|||
return (100 * hiringChecklist.filter(Boolean).length) / hiringChecklist.length
|
||||
}
|
||||
|
||||
// $FlowFixMe
|
||||
export default createStructuredSelector({
|
||||
companyProgress: companyProgressSelector,
|
||||
estimationProgress: estimationProgressSelector,
|
||||
|
|
|
@ -17,10 +17,15 @@ import type {
|
|||
RègleAvecValeur
|
||||
} from 'Types/RegleTypes'
|
||||
import type { Analysis } from 'Types/Analysis'
|
||||
import type { InputSelector } from 'reselect'
|
||||
|
||||
export const règleLocaliséeSelector = createSelector(
|
||||
export const règleLocaliséeSelector: InputSelector<
|
||||
{ lang: string },
|
||||
{ rules?: FlatRules },
|
||||
(dottedName: string) => Règle
|
||||
> = createSelector(
|
||||
flatRulesSelector,
|
||||
(localizedFlatRules: FlatRules) => (dottedName: string): Règle => {
|
||||
(localizedFlatRules: ?FlatRules) => (dottedName: string): Règle => {
|
||||
if (!localizedFlatRules) {
|
||||
throw new Error(
|
||||
`[LocalizedRègleSelector] Les localizedFlatRules ne doivent pas être 'undefined' ou 'null'`
|
||||
|
@ -46,7 +51,11 @@ export const règleLocaliséeSelector = createSelector(
|
|||
}
|
||||
)
|
||||
|
||||
export const règleValeurSelector = createSelector(
|
||||
export const règleValeurSelector: InputSelector<
|
||||
{ lang: string },
|
||||
{ rules?: FlatRules },
|
||||
(dottedName: string) => RègleValeur
|
||||
> = createSelector(
|
||||
branchAnalyseSelector,
|
||||
validatedSituationBranchesSelector,
|
||||
règleLocaliséeSelector,
|
||||
|
@ -84,7 +93,7 @@ export const règleValeurSelector = createSelector(
|
|||
if (typeof valeur === 'boolean') {
|
||||
return { type: 'boolean', valeur }
|
||||
}
|
||||
if (rule?.API || rule?.explanation?.API) {
|
||||
if (rule && (rule.API || rule.explanation?.API)) {
|
||||
//TODO This code is specific to the géo API
|
||||
return { type: 'string', valeur: valeur.nom }
|
||||
}
|
||||
|
@ -94,7 +103,6 @@ export const règleValeurSelector = createSelector(
|
|||
(!Number.isNaN(valeur) && Number.isNaN(Number.parseFloat(valeur))
|
||||
? 'string'
|
||||
: 'number')
|
||||
// $FlowFixMe
|
||||
return {
|
||||
type,
|
||||
valeur:
|
||||
|
@ -105,7 +113,11 @@ export const règleValeurSelector = createSelector(
|
|||
}
|
||||
)
|
||||
|
||||
export const règleAvecMontantSelector = createSelector(
|
||||
export const règleAvecMontantSelector: InputSelector<
|
||||
{ lang: string },
|
||||
{ rules?: FlatRules },
|
||||
(dottedName: string) => RègleAvecMontant
|
||||
> = createSelector(
|
||||
règleValeurSelector,
|
||||
règleLocaliséeSelector,
|
||||
(règleValeur, règleLocalisée) => (dottedName: string): RègleAvecMontant => {
|
||||
|
@ -121,13 +133,17 @@ export const règleAvecMontantSelector = createSelector(
|
|||
}
|
||||
}
|
||||
)
|
||||
export const règleAvecValeurSelector = createSelector(
|
||||
export const règleAvecValeurSelector: InputSelector<
|
||||
{ lang: string },
|
||||
{ rules?: FlatRules },
|
||||
(dottedName: string) => RègleAvecValeur
|
||||
> = createSelector(
|
||||
règleValeurSelector,
|
||||
règleLocaliséeSelector,
|
||||
(règleValeur, règleLocalisée) => (dottedName: string): RègleAvecValeur =>
|
||||
// $FlowFixMe
|
||||
({
|
||||
...règleValeur(dottedName),
|
||||
...règleLocalisée(dottedName)
|
||||
...règleLocalisée(dottedName),
|
||||
...règleValeur(dottedName)
|
||||
})
|
||||
)
|
||||
|
|
|
@ -118,8 +118,7 @@ const répartition = (
|
|||
)
|
||||
const { salaireNet, salaireChargé, réductionsDeCotisations } = ficheDePaie
|
||||
let CSG
|
||||
const autresCotisations =
|
||||
cotisations['protection sociale . autres']
|
||||
const autresCotisations = cotisations['protection sociale . autres']
|
||||
if (autresCotisations) {
|
||||
CSG = autresCotisations.find(({ id }) => id === 'contrat salarié . CSG')
|
||||
if (!CSG)
|
||||
|
@ -130,6 +129,7 @@ const répartition = (
|
|||
)
|
||||
}
|
||||
|
||||
// $FlowFixMe
|
||||
let répartitionMap: { [Branche]: MontantPartagé } = map(
|
||||
totalCotisations,
|
||||
cotisations
|
||||
|
@ -166,6 +166,7 @@ const répartition = (
|
|||
}
|
||||
}
|
||||
|
||||
// $FlowFixMe
|
||||
export default createSelector(
|
||||
FicheDePaieSelectors,
|
||||
règleLocaliséeSelector,
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
/* @flow */
|
||||
import { React, T } from 'Components';
|
||||
import { ScrollToTop } from 'Components/utils/Scroll';
|
||||
import withSitePaths from 'Components/utils/withSitePaths';
|
||||
import { compose } from 'ramda';
|
||||
import { withNamespaces } from 'react-i18next';
|
||||
import { connect } from 'react-redux';
|
||||
import { Link } from 'react-router-dom';
|
||||
import Animate from 'Ui/animate';
|
||||
import siret from './siret.jpg';
|
||||
import { React, T } from 'Components'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import withSitePaths from 'Components/utils/withSitePaths'
|
||||
import { compose } from 'ramda'
|
||||
import { withNamespaces } from 'react-i18next'
|
||||
import { connect } from 'react-redux'
|
||||
import { Link } from 'react-router-dom'
|
||||
import Animate from 'Ui/animate'
|
||||
import siret from './siret.jpg'
|
||||
import type { TFunction } from 'react-i18next'
|
||||
|
||||
type OwnProps = {}
|
||||
type Props = {
|
||||
companyStatusChoice: string,
|
||||
sitePaths: Object,
|
||||
t: TFunction
|
||||
}
|
||||
} & OwnProps
|
||||
|
||||
const AfterRegistration = ({ t, companyStatusChoice, sitePaths }: Props) => (
|
||||
<Animate.fromBottom>
|
||||
|
@ -59,7 +60,8 @@ const AfterRegistration = ({ t, companyStatusChoice, sitePaths }: Props) => (
|
|||
la nomenclature nationale d'activités françaises (code « NAF »).{' '}
|
||||
<span
|
||||
style={
|
||||
companyStatusChoice && companyStatusChoice.match(/auto-entrepreneur|EI/)
|
||||
companyStatusChoice &&
|
||||
companyStatusChoice.match(/auto-entrepreneur|EI/)
|
||||
? { display: 'none' }
|
||||
: {}
|
||||
}>
|
||||
|
@ -106,10 +108,10 @@ const AfterRegistration = ({ t, companyStatusChoice, sitePaths }: Props) => (
|
|||
</Animate.fromBottom>
|
||||
)
|
||||
|
||||
export default compose(
|
||||
export default (compose(
|
||||
connect(state => ({
|
||||
companyStatusChoice: state.inFranceApp.companyStatusChoice
|
||||
})),
|
||||
withNamespaces(),
|
||||
withSitePaths
|
||||
)(AfterRegistration)
|
||||
)(AfterRegistration): React$ComponentType<OwnProps>)
|
||||
|
|
|
@ -12,7 +12,7 @@ type ownProps = {
|
|||
type Props = ownProps & {
|
||||
goBackToPreviousQuestion: () => void
|
||||
}
|
||||
export default connect(
|
||||
export default (connect(
|
||||
null,
|
||||
{ goBackToPreviousQuestion }
|
||||
)(({ goBackToPreviousQuestion, onSkip }: Props) => (
|
||||
|
@ -24,4 +24,4 @@ export default connect(
|
|||
</button>
|
||||
{onSkip && <SkipButton onClick={onSkip} />}
|
||||
</div>
|
||||
))
|
||||
)): React$ComponentType<ownProps>)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/* @flow */
|
||||
import { saveExistingCompanyDetails } from 'Actions/existingCompanyActions'
|
||||
import { React, T } from 'Components'
|
||||
// $FlowFixMe
|
||||
import withSitePaths from 'Components/utils/withSitePaths'
|
||||
import { compose } from 'ramda'
|
||||
import Helmet from 'react-helmet'
|
||||
|
@ -25,8 +24,7 @@ type State = {
|
|||
}
|
||||
|
||||
type Props = {
|
||||
// $FlowFixMe
|
||||
onCompanyDetailsConfirmation: ({ [string]: string }) => void,
|
||||
//onCompanyDetailsConfirmation: ({ [string]: string }) => void,
|
||||
history: RouterHistory
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import type { TFunction } from 'react-i18next'
|
|||
|
||||
import type { Match, Location } from 'react-router'
|
||||
|
||||
type OwnProps = {}
|
||||
type Props = {
|
||||
match: Match,
|
||||
nextQuestionUrl: string,
|
||||
|
@ -22,7 +23,7 @@ type Props = {
|
|||
t: TFunction,
|
||||
location: Location,
|
||||
sitePaths: Object
|
||||
}
|
||||
} & OwnProps
|
||||
const CreateMyCompany = ({
|
||||
match,
|
||||
sitePaths,
|
||||
|
@ -90,7 +91,7 @@ const CreateMyCompany = ({
|
|||
)
|
||||
}
|
||||
|
||||
export default compose(
|
||||
export default (compose(
|
||||
connect(
|
||||
state => ({
|
||||
nextQuestionUrl: nextQuestionUrlSelector(state),
|
||||
|
@ -101,4 +102,4 @@ export default compose(
|
|||
),
|
||||
withSitePaths,
|
||||
withNamespaces()
|
||||
)(CreateMyCompany)
|
||||
)(CreateMyCompany): React$ComponentType<OwnProps>)
|
||||
|
|
|
@ -30,7 +30,7 @@ const requirementToText = (key, value) => {
|
|||
return value ? <T>Gérant minoritaire</T> : <T>Gérant majoritaire</T>
|
||||
}
|
||||
}
|
||||
|
||||
type OwnProps = {}
|
||||
type Props = LegalStatusRequirements & {
|
||||
goToCompanyStatusChoice: () => void,
|
||||
sitePaths: Object
|
||||
|
@ -72,10 +72,10 @@ const PreviousAnswers = ({
|
|||
)
|
||||
}
|
||||
|
||||
export default compose(
|
||||
export default (compose(
|
||||
connect(
|
||||
state => state.inFranceApp.companyLegalStatus,
|
||||
{ goToCompanyStatusChoice }
|
||||
),
|
||||
withSitePaths
|
||||
)(PreviousAnswers)
|
||||
)(PreviousAnswers): React$ComponentType<OwnProps>)
|
||||
|
|
|
@ -136,14 +136,16 @@ export const generateSiteMap = (sitePaths: Object) =>
|
|||
sitePaths
|
||||
)
|
||||
|
||||
const enSiteMap = generateSiteMap(constructLocalizedSitePath('en')).map(path =>
|
||||
type LangLink = Array<{ href: string, hrefLang: 'fr' | 'en'}>
|
||||
type SiteMap = Array<string>
|
||||
const enSiteMap:SiteMap = generateSiteMap(constructLocalizedSitePath('en')).map(path =>
|
||||
(process.env.EN_SITE || '').replace('${path}', path)
|
||||
)
|
||||
const frSiteMap = generateSiteMap(constructLocalizedSitePath('fr')).map(path =>
|
||||
const frSiteMap:SiteMap = generateSiteMap(constructLocalizedSitePath('fr')).map(path =>
|
||||
(process.env.FR_SITE || '').replace('${path}', path)
|
||||
)
|
||||
|
||||
export const hrefLangLink = {
|
||||
en: zipObj(enSiteMap, frSiteMap.map(href => [{ href, hrefLang: 'fr' }])),
|
||||
fr: zipObj(frSiteMap, enSiteMap.map(href => [{ href, hrefLang: 'en' }]))
|
||||
en: zipObj<string, LangLink>(enSiteMap, frSiteMap.map(href => [{ href, hrefLang: 'fr' }])),
|
||||
fr: zipObj<string, LangLink>(frSiteMap, enSiteMap.map(href => [{ href, hrefLang: 'en' }]))
|
||||
}
|
||||
|
|
|
@ -13,12 +13,9 @@ export type RègleAvecMontant = Règle & {
|
|||
montant: number
|
||||
}
|
||||
|
||||
export type RègleValeur =
|
||||
| {
|
||||
valeur: boolean,
|
||||
type: 'boolean'
|
||||
}
|
||||
| { valeur: number, type: 'euros' }
|
||||
| { valeur: number, type: 'number' }
|
||||
| { valeur: string, type: 'string' }
|
||||
export type RègleAvecValeur = Règle & RègleValeur
|
||||
export type RègleValeur = {
|
||||
valeur: boolean | number | string,
|
||||
type: 'boolean' | 'number' | 'string'
|
||||
}
|
||||
|
||||
export type RègleAvecValeur = RègleValeur & Règle
|
||||
|
|
|
@ -82,7 +82,9 @@ export function softCatch<ArgType: any, ReturnType: any>(
|
|||
}
|
||||
}
|
||||
}
|
||||
export const mapOrApply = (fn, x) => (Array.isArray(x) ? x.map(fn) : fn(x))
|
||||
export function mapOrApply<A, B>(fn: A=>B, x: Array<A> | A): Array<B> | B {
|
||||
return Array.isArray(x) ? x.map(fn) : fn(x)
|
||||
}
|
||||
|
||||
|
||||
export const constructSitePaths = (
|
||||
|
|
|
@ -6,6 +6,7 @@ const state = companyLegalStatus => ({
|
|||
inFranceApp: {
|
||||
companyLegalStatus,
|
||||
existingCompanyDetails: null,
|
||||
companyStatusChoice: null,
|
||||
}
|
||||
})
|
||||
describe('company status selectors', function() {
|
||||
|
@ -15,7 +16,7 @@ describe('company status selectors', function() {
|
|||
state({
|
||||
liability: 'UNLIMITED_LIABILITY',
|
||||
directorStatus: 'SELF_EMPLOYED',
|
||||
multipleAssociates: true
|
||||
multipleAssociates: true,
|
||||
})
|
||||
)
|
||||
expect(nextQuestion).to.be.equal(null)
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
import { expect } from 'chai'
|
||||
import dedent from 'dedent-js'
|
||||
import { enrichRule, rulesFr as rules } from 'Engine/rules'
|
||||
import { safeLoad } from 'js-yaml'
|
||||
import { assocPath, merge } from 'ramda'
|
||||
import reducers from 'Reducers/rootReducer'
|
||||
import {
|
||||
currentQuestionSelector,
|
||||
nextStepsSelector
|
||||
} from '../source/selectors/analyseSelectors'
|
||||
|
||||
import { expect } from 'chai';
|
||||
import { enrichRule, rulesFr as rules } from 'Engine/rules';
|
||||
import { assocPath, merge } from 'ramda';
|
||||
import reducers from 'Reducers/rootReducer';
|
||||
import salariéConfig from '../source/components/simulationConfigs/salarié.yaml';
|
||||
import { currentQuestionSelector, nextStepsSelector } from '../source/selectors/analyseSelectors';
|
||||
let baseState = {
|
||||
conversationSteps: { foldedSteps: [] },
|
||||
form: { conversation: { values: {} } }
|
||||
|
@ -26,7 +21,7 @@ describe('conversation', function() {
|
|||
],
|
||||
rules = rawRules.map(enrichRule),
|
||||
state = merge(baseState, {
|
||||
targetNames: ['startHere']
|
||||
simulation: { config: { objectifs: ['startHere']}}
|
||||
}),
|
||||
currentQuestion = currentQuestionSelector(state, { rules })
|
||||
|
||||
|
@ -50,7 +45,7 @@ describe('conversation', function() {
|
|||
rules = rawRules.map(enrichRule)
|
||||
|
||||
let step1 = merge(baseState, {
|
||||
targetNames: ['startHere']
|
||||
simulation: { config: { objectifs: ['startHere']}}
|
||||
})
|
||||
let step2 = reducers(
|
||||
assocPath(
|
||||
|
@ -95,32 +90,49 @@ describe('conversation', function() {
|
|||
})
|
||||
|
||||
it('should first ask for questions without defaults, then those with defaults', function() {
|
||||
let rawRules = dedent`
|
||||
- nom: net
|
||||
formule: brut - cotisation
|
||||
let rawRules = [
|
||||
{ nom: 'net',
|
||||
formule: 'brut - cotisation'
|
||||
},
|
||||
{
|
||||
nom: 'brut',
|
||||
question: 'Quel est le salaire brut ?',
|
||||
format: 'euro'
|
||||
},
|
||||
{
|
||||
nom: 'cotisation',
|
||||
formule: {
|
||||
multiplication: {
|
||||
assiette: 'brut',
|
||||
variations: [
|
||||
{
|
||||
si: 'cadre',
|
||||
alors: {
|
||||
taux: '77%'
|
||||
}
|
||||
}, {
|
||||
sinon: {
|
||||
taux: '80%'
|
||||
}
|
||||
|
||||
- nom: brut
|
||||
format: euro
|
||||
}
|
||||
]
|
||||
|
||||
- nom: cotisation
|
||||
formule:
|
||||
multiplication:
|
||||
assiette: brut
|
||||
variations:
|
||||
- si: cadre
|
||||
alors:
|
||||
taux: 77%
|
||||
- sinon:
|
||||
taux: 80%
|
||||
- nom: cadre
|
||||
par défaut: non
|
||||
`,
|
||||
rules = safeLoad(rawRules).map(enrichRule)
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
nom: 'cadre',
|
||||
question: 'Est-ce un cadre ?',
|
||||
'par défaut': 'non'
|
||||
}
|
||||
]
|
||||
,
|
||||
rules = rawRules.map(enrichRule)
|
||||
|
||||
let step1 = merge(baseState, {
|
||||
targetNames: ['net']
|
||||
simulation: { config: { objectifs: ['net']}}
|
||||
})
|
||||
|
||||
expect(currentQuestionSelector(step1, { rules })).to.equal('brut')
|
||||
|
||||
let step2 = reducers(
|
||||
|
@ -141,6 +153,7 @@ describe('conversation', function() {
|
|||
describe('real conversation', function() {
|
||||
it('should not have more than X questions', function() {
|
||||
let state = merge(baseState, {
|
||||
simulation: { config: salariéConfig }
|
||||
}),
|
||||
nextSteps = nextStepsSelector(state, { rules })
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/* @flow */
|
||||
|
||||
import { expect } from 'chai'
|
||||
import FicheDePaieSelectors, {
|
||||
COTISATION_BRANCHE_ORDER
|
||||
} from 'Selectors/ficheDePaieSelectors'
|
||||
import { expect } from 'chai';
|
||||
import FicheDePaieSelectors, { COTISATION_BRANCHE_ORDER } from 'Selectors/ficheDePaieSelectors';
|
||||
// $FlowFixMe
|
||||
import salariéConfig from 'Components/simulationConfigs/salarié.yaml';
|
||||
|
||||
let state = {
|
||||
form: {
|
||||
|
@ -14,6 +14,9 @@ let state = {
|
|||
}
|
||||
}
|
||||
},
|
||||
simulation: {
|
||||
config: salariéConfig,
|
||||
},
|
||||
conversationStarted: true,
|
||||
conversationSteps: {
|
||||
foldedSteps: []
|
||||
|
@ -25,6 +28,7 @@ let paySlip = null
|
|||
describe('pay slip selector', function() {
|
||||
beforeEach(() => {
|
||||
paySlip = FicheDePaieSelectors(state)
|
||||
|
||||
expect(paySlip).not.to.eq(null)
|
||||
})
|
||||
it('should have cotisations grouped by branches in the proper ordering', function() {
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
import { expect } from 'chai'
|
||||
import {
|
||||
collectMissingVariables,
|
||||
getNextSteps
|
||||
} from '../source/engine/generateQuestions'
|
||||
import { enrichRule, rules as realRules } from '../source/engine/rules'
|
||||
import { analyse, parseAll } from '../source/engine/traverse'
|
||||
import { expect } from 'chai';
|
||||
import { collectMissingVariables, getNextSteps } from '../source/engine/generateQuestions';
|
||||
import { enrichRule, rules as realRules } from '../source/engine/rules';
|
||||
import { analyse, parseAll } from '../source/engine/traverse';
|
||||
|
||||
let stateSelector = () => null
|
||||
|
||||
|
@ -380,6 +377,7 @@ describe('nextSteps', function() {
|
|||
it('should ask "motif CDD" if "CDD" applies', function() {
|
||||
let stateSelector = name =>
|
||||
({
|
||||
'contrat salarié': 'oui',
|
||||
'contrat salarié . CDD': 'oui',
|
||||
'contrat salarié . salaire . brut de base': '2300'
|
||||
}[name])
|
||||
|
|
|
@ -1,17 +1,19 @@
|
|||
import { expect } from 'chai'
|
||||
import Syso from '../source/engine/index'
|
||||
import indeps from '../source/règles/base.yaml'
|
||||
import { expect } from 'chai';
|
||||
import Syso from '../source/engine/index';
|
||||
|
||||
describe('indeps', function() {
|
||||
it('allez là', function() {
|
||||
it.only('should compute income for indépendant', function() {
|
||||
let values = Syso.evaluate(
|
||||
['indépendants . revenu net de cotisations'],
|
||||
{ "chiffre d'affaires": 100000 },
|
||||
{
|
||||
base: indeps
|
||||
}
|
||||
['revenu disponible'],
|
||||
{ "entreprise . chiffre d'affaires": 70000,
|
||||
'entreprise . charges' : 2000,
|
||||
indépendant: 'oui',
|
||||
'auto-entrepreneur': 'non',
|
||||
'contrat salarié': 'non',
|
||||
période: 'année'
|
||||
}
|
||||
)
|
||||
|
||||
expect(values[0]).to.equal(201)
|
||||
expect(values[0]).to.equal(42166)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { expect } from 'chai'
|
||||
import Syso from '../source/engine/index'
|
||||
import sasuRules from '../source/règles/sasu.yaml'
|
||||
import co2 from '../source/règles/co2.yaml'
|
||||
import { expect } from 'chai';
|
||||
import Syso from '../source/engine/index';
|
||||
import co2 from '../source/règles/co2.yaml';
|
||||
import sasuRules from '../source/règles/sasu.yaml';
|
||||
|
||||
describe('library', function() {
|
||||
it('should evaluate one target with no input data', function() {
|
||||
|
@ -141,6 +141,6 @@ describe('library', function() {
|
|||
{ base: co2, debug: false }
|
||||
)
|
||||
//console.log(JSON.stringify(value.targets[0], null, 4))
|
||||
expect(value).to.be.within(40, 41)
|
||||
expect(value).to.be.within(20, 21)
|
||||
})
|
||||
})
|
||||
|
|
176
yarn.lock
176
yarn.lock
|
@ -729,9 +729,9 @@
|
|||
lodash.once "^4.1.1"
|
||||
|
||||
"@octokit/rest@^15.2.6":
|
||||
version "15.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.18.0.tgz#e6de702b57dec94c71e806f1cff0ecb9725b3054"
|
||||
integrity sha512-D1dDJMbvT4dok9++vc8uwCr92ndadwfz6vHK+IklzBHKSsuLlhpv2/dzx97Y4aRlm0t74LeXKDp4j0b4M2vmQw==
|
||||
version "15.18.1"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.18.1.tgz#ec7fb0f8775ef64dc095fae6635411d3fbff9b62"
|
||||
integrity sha512-g2tecjp2TEtYV8bKAFvfQtu+W29HM7ektmWmw8zrMy9/XCKDEYRErR2YvvhN9+IxkLC4O3lDqYP4b6WgsL6Utw==
|
||||
dependencies:
|
||||
before-after-hook "^1.1.0"
|
||||
btoa-lite "^1.0.0"
|
||||
|
@ -1036,6 +1036,7 @@ acorn@^6.0.1, acorn@^6.0.2:
|
|||
agent-base@4, agent-base@^4.1.0:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
|
||||
integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
|
||||
dependencies:
|
||||
es6-promisify "^5.0.0"
|
||||
|
||||
|
@ -1043,7 +1044,12 @@ ajv-errors@^1.0.0:
|
|||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59"
|
||||
|
||||
ajv-keywords@^3.0.0, ajv-keywords@^3.1.0:
|
||||
ajv-keywords@^3.0.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.3.0.tgz#cb6499da9b83177af8bc1732b2f0a1a1a3aacf8c"
|
||||
integrity sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==
|
||||
|
||||
ajv-keywords@^3.1.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
|
||||
|
||||
|
@ -1066,9 +1072,9 @@ ajv@^5.1.0, ajv@^5.3.0:
|
|||
json-schema-traverse "^0.3.0"
|
||||
|
||||
ajv@^6.0.1:
|
||||
version "6.6.1"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.1.tgz#6360f5ed0d80f232cc2b294c362d5dc2e538dd61"
|
||||
integrity sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==
|
||||
version "6.7.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96"
|
||||
integrity sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==
|
||||
dependencies:
|
||||
fast-deep-equal "^2.0.1"
|
||||
fast-json-stable-stringify "^2.0.0"
|
||||
|
@ -1247,10 +1253,12 @@ ansi-html@0.0.7:
|
|||
ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
|
||||
|
||||
ansi-regex@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
|
||||
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
|
||||
|
||||
ansi-styles@^2.2.1:
|
||||
version "2.2.1"
|
||||
|
@ -1259,6 +1267,7 @@ ansi-styles@^2.2.1:
|
|||
ansi-styles@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
||||
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
|
||||
dependencies:
|
||||
color-convert "^1.9.0"
|
||||
|
||||
|
@ -1548,6 +1557,7 @@ balanced-match@^0.4.2:
|
|||
balanced-match@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||
|
||||
base64-js@^1.0.2:
|
||||
version "1.3.0"
|
||||
|
@ -1572,14 +1582,14 @@ bcrypt-pbkdf@^1.0.0:
|
|||
tweetnacl "^0.14.3"
|
||||
|
||||
before-after-hook@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.2.0.tgz#1079c10312cd4d4ad0d1676d37951ef8bfc3a563"
|
||||
integrity sha512-wI3QtdLppHNkmM1VgRVLCrlWCKk/YexlPicYbXPs4eYdd1InrUCTFsx5bX1iUQzzMsoRXXPpM1r+p7JEJJydag==
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.3.2.tgz#7bfbf844ad670aa7a96b5a4e4e15bd74b08ed66b"
|
||||
integrity sha512-zyPgY5dgbf99c0uGUjhY4w+mxqEGxPKg9RQDl34VvrVh2bM31lFN+mwR1ZHepq/KA3VCPk1gwJZL6IIJqjLy2w==
|
||||
|
||||
big-integer@^1.6.17:
|
||||
version "1.6.40"
|
||||
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.40.tgz#02e4cd4d6e266c4d9ece2469c05cb6439149fc78"
|
||||
integrity sha512-CjhtJp0BViLzP1ZkEnoywjgtFQXS2pomKjAJtIISTCnuHILkLcAXLdFLG/nxsHc4s9kJfc+82Xpg8WNyhfACzQ==
|
||||
version "1.6.41"
|
||||
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.41.tgz#6fb0e51bc8661129ef3832d46c939170b81ca794"
|
||||
integrity sha512-d5AT9lMTYJ/ZE/4gzxb+5ttPcRWljVsvv7lF1w9KzkPhVUhBtHrjDo1J8swfZKepfLsliDhYa31zRYwcD0Yg9w==
|
||||
|
||||
big.js@^3.1.3:
|
||||
version "3.2.0"
|
||||
|
@ -1656,6 +1666,7 @@ boxen@1.3.0:
|
|||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
@ -1954,7 +1965,7 @@ chainsaw@~0.1.0:
|
|||
dependencies:
|
||||
traverse ">=0.3.0 <0.4"
|
||||
|
||||
chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1:
|
||||
chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
|
||||
dependencies:
|
||||
|
@ -1972,6 +1983,15 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
|
|||
strip-ansi "^3.0.0"
|
||||
supports-color "^2.0.0"
|
||||
|
||||
chalk@^2.1.0:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
||||
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
||||
dependencies:
|
||||
ansi-styles "^3.2.1"
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^5.3.0"
|
||||
|
||||
character-entities-legacy@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz#7c6defb81648498222c9855309953d05f4d63a9c"
|
||||
|
@ -2167,6 +2187,7 @@ coa@~1.0.1:
|
|||
code-point-at@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
||||
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
|
||||
|
||||
collection-visit@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -2184,6 +2205,7 @@ color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.2:
|
|||
color-name@1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
||||
|
||||
color-name@^1.0.0:
|
||||
version "1.1.4"
|
||||
|
@ -2220,9 +2242,9 @@ colors@1.0.3:
|
|||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
|
||||
|
||||
colors@^1.1.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b"
|
||||
integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
|
||||
integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
|
||||
|
||||
colors@~1.1.2:
|
||||
version "1.1.2"
|
||||
|
@ -2273,6 +2295,7 @@ component-emitter@^1.2.1:
|
|||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
||||
|
||||
concat-stream@1.6.0:
|
||||
version "1.6.0"
|
||||
|
@ -2381,15 +2404,15 @@ core-js@^1.0.0:
|
|||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
||||
|
||||
core-js@^2.4.0, core-js@^2.5.7:
|
||||
core-js@^2.4.0, core-js@^2.5.0:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49"
|
||||
integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ==
|
||||
|
||||
core-js@^2.5.7:
|
||||
version "2.5.7"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
|
||||
|
||||
core-js@^2.5.0:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.0.tgz#1e30793e9ee5782b307e37ffa22da0eacddd84d4"
|
||||
integrity sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw==
|
||||
|
||||
core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
|
@ -2689,6 +2712,7 @@ debug@3.1.0, debug@=3.1.0:
|
|||
debug@^3.1.0:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
|
@ -2939,6 +2963,7 @@ duplexer2@~0.1.4:
|
|||
duplexer3@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
|
||||
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
|
||||
|
||||
duplexify@^3.4.2, duplexify@^3.6.0:
|
||||
version "3.6.1"
|
||||
|
@ -3116,10 +3141,12 @@ es6-promise@^3.0.2:
|
|||
es6-promise@^4.0.3:
|
||||
version "4.2.5"
|
||||
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054"
|
||||
integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==
|
||||
|
||||
es6-promisify@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
|
||||
integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
|
||||
dependencies:
|
||||
es6-promise "^4.0.3"
|
||||
|
||||
|
@ -3137,6 +3164,7 @@ escape-html@~1.0.3:
|
|||
escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
escodegen@^1.11.0:
|
||||
version "1.11.0"
|
||||
|
@ -3298,6 +3326,7 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
|
|||
execa@0.10.0, execa@^0.10.0:
|
||||
version "0.10.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50"
|
||||
integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==
|
||||
dependencies:
|
||||
cross-spawn "^6.0.0"
|
||||
get-stream "^3.0.0"
|
||||
|
@ -3467,10 +3496,12 @@ fast-deep-equal@^1.0.0:
|
|||
fast-deep-equal@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
||||
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
|
||||
|
||||
fast-json-stable-stringify@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
||||
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
|
||||
|
||||
fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4:
|
||||
version "2.0.6"
|
||||
|
@ -3615,10 +3646,10 @@ flatten@^1.0.2:
|
|||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
|
||||
|
||||
flow-bin@^0.81.0:
|
||||
version "0.81.0"
|
||||
resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.81.0.tgz#7f0a733dce1dad3cb1447c692639292dc3d60bf5"
|
||||
integrity sha512-5e8oL3/5rm3G0Eet3yDCne2R/TLo5Fkn+Z5MtHd4wtz+1miLC35Sgo8XvnbTmiZ9epdTZ1q6GLmJWYh7tUlfGg==
|
||||
flow-bin@^0.92.0:
|
||||
version "0.92.0"
|
||||
resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.92.0.tgz#f5bf3e808b17b480e067ac673829ca715a168bea"
|
||||
integrity sha512-3ErXSAXZZlLV5/QPlaUDCWlDUXop1SiH32ifXL3SEiBwsmGbudCLim+HFVZfkegrn1nB4TcNSkMWtW8SnMPyAQ==
|
||||
|
||||
flow-typed@^2.4.0:
|
||||
version "2.5.1"
|
||||
|
@ -3756,6 +3787,7 @@ fs-write-stream-atomic@^1.0.8:
|
|||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
||||
|
||||
fsevents@^1.2.2:
|
||||
version "1.2.4"
|
||||
|
@ -3810,6 +3842,7 @@ gauge@~2.7.3:
|
|||
get-caller-file@^1.0.1:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
|
||||
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
|
||||
|
||||
get-func-name@^2.0.0:
|
||||
version "2.0.0"
|
||||
|
@ -3826,6 +3859,7 @@ get-stdin@^6.0.0:
|
|||
get-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
||||
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
|
||||
|
||||
get-value@^2.0.3, get-value@^2.0.6:
|
||||
version "2.0.6"
|
||||
|
@ -3865,9 +3899,10 @@ glob@7.1.2:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.0.3, glob@^7.0.5, glob@^7.1.2:
|
||||
glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3:
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
|
||||
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
|
@ -4024,6 +4059,7 @@ has-flag@^2.0.0:
|
|||
has-flag@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
|
||||
|
||||
has-symbol-support-x@^1.4.1:
|
||||
version "1.4.2"
|
||||
|
@ -4402,6 +4438,7 @@ indexof@0.0.1:
|
|||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
|
||||
dependencies:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
@ -4457,6 +4494,7 @@ invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4:
|
|||
invert-kv@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
||||
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
|
||||
|
||||
invert-kv@^2.0.0:
|
||||
version "2.0.0"
|
||||
|
@ -4500,6 +4538,7 @@ is-alphanumerical@^1.0.0:
|
|||
is-arrayish@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
||||
|
||||
is-binary-path@^1.0.0:
|
||||
version "1.0.1"
|
||||
|
@ -4596,12 +4635,14 @@ is-finite@^1.0.0:
|
|||
is-fullwidth-code-point@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
|
||||
integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
|
||||
dependencies:
|
||||
number-is-nan "^1.0.0"
|
||||
|
||||
is-fullwidth-code-point@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
|
||||
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
|
||||
|
||||
is-function@^1.0.1:
|
||||
version "1.0.1"
|
||||
|
@ -4700,6 +4741,7 @@ is-resolvable@^1.1.0:
|
|||
is-retry-allowed@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
|
||||
integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=
|
||||
|
||||
is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
|
||||
version "1.1.0"
|
||||
|
@ -4745,6 +4787,7 @@ isarray@0.0.1:
|
|||
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
|
||||
version "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"
|
||||
|
@ -4755,6 +4798,7 @@ isemail@3.x.x:
|
|||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
|
||||
|
||||
isobject@^2.0.0:
|
||||
version "2.1.0"
|
||||
|
@ -4919,6 +4963,7 @@ json-schema-traverse@^0.3.0:
|
|||
json-schema-traverse@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
|
||||
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
|
||||
|
||||
json-schema@0.2.3:
|
||||
version "0.2.3"
|
||||
|
@ -4951,6 +4996,7 @@ jsonfile@^3.0.0:
|
|||
jsonfile@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
|
||||
integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
|
@ -5008,6 +5054,7 @@ lazy-ass@1.6.0:
|
|||
lcid@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
|
||||
integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
|
||||
dependencies:
|
||||
invert-kv "^1.0.0"
|
||||
|
||||
|
@ -5262,6 +5309,7 @@ lower-case@^1.1.1:
|
|||
lowercase-keys@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
|
||||
integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
|
||||
|
||||
lowlight@~1.9.1:
|
||||
version "1.9.2"
|
||||
|
@ -5457,12 +5505,14 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
|
|||
minimatch@3.0.4, minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimist@0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
|
||||
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
|
||||
|
||||
minimist@1.2.0, minimist@^1.1.0, minimist@^1.2.0:
|
||||
version "1.2.0"
|
||||
|
@ -5531,6 +5581,7 @@ mkdirp@0.5.0:
|
|||
mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
||||
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
|
||||
dependencies:
|
||||
minimist "0.0.8"
|
||||
|
||||
|
@ -5597,10 +5648,12 @@ move-concurrently@^1.0.1:
|
|||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
|
||||
|
||||
ms@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
||||
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
|
||||
|
||||
mute-stream@0.0.7:
|
||||
version "0.0.7"
|
||||
|
@ -5663,6 +5716,7 @@ neo-async@^2.5.0:
|
|||
nice-try@^1.0.4:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
||||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||
|
||||
nise@^1.2.0:
|
||||
version "1.4.5"
|
||||
|
@ -5766,9 +5820,9 @@ nopt@^4.0.1:
|
|||
osenv "^0.1.4"
|
||||
|
||||
normalize-package-data@^2.3.2:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
|
||||
integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.2.tgz#6b2abd85774e51f7936f1395e45acb905dc849b2"
|
||||
integrity sha512-YcMnjqeoUckXTPKZSAsPjUPLxH85XotbpqK3w4RyCwdFQSU5FxxBys8buehkSfg0j9fKvV1hn7O0+8reEgkAiw==
|
||||
dependencies:
|
||||
hosted-git-info "^2.1.4"
|
||||
is-builtin-module "^1.0.0"
|
||||
|
@ -5808,6 +5862,7 @@ npm-packlist@^1.1.6:
|
|||
npm-run-path@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
||||
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
|
||||
dependencies:
|
||||
path-key "^2.0.0"
|
||||
|
||||
|
@ -5837,6 +5892,7 @@ num2fraction@^1.2.2:
|
|||
number-is-nan@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
||||
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
|
||||
|
||||
nwsapi@^2.0.9:
|
||||
version "2.0.9"
|
||||
|
@ -6036,6 +6092,7 @@ p-defer@^1.0.0:
|
|||
p-finally@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
||||
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
|
||||
|
||||
p-is-promise@^1.1.0:
|
||||
version "1.1.0"
|
||||
|
@ -6203,6 +6260,7 @@ path-exists@^3.0.0:
|
|||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
||||
|
||||
path-is-inside@1.0.2, path-is-inside@^1.0.1, path-is-inside@^1.0.2:
|
||||
version "1.0.2"
|
||||
|
@ -6211,6 +6269,7 @@ path-is-inside@1.0.2, path-is-inside@^1.0.1, path-is-inside@^1.0.2:
|
|||
path-key@^2.0.0, path-key@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
||||
|
||||
path-parse@^1.0.5:
|
||||
version "1.0.6"
|
||||
|
@ -6274,6 +6333,7 @@ phin@^2.9.1:
|
|||
pify@^2.0.0, pify@^2.2.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
|
||||
|
||||
pify@^3.0.0:
|
||||
version "3.0.0"
|
||||
|
@ -6282,12 +6342,14 @@ pify@^3.0.0:
|
|||
pinkie-promise@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
|
||||
integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
|
||||
dependencies:
|
||||
pinkie "^2.0.0"
|
||||
|
||||
pinkie@^2.0.0:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
|
||||
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
|
||||
|
||||
pixelmatch@^4.0.0:
|
||||
version "4.0.2"
|
||||
|
@ -6654,6 +6716,7 @@ process-nextick-args@~1.0.6:
|
|||
process-nextick-args@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
|
||||
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
|
||||
|
||||
process@^0.11.10:
|
||||
version "0.11.10"
|
||||
|
@ -6761,6 +6824,7 @@ punycode@1.3.2:
|
|||
punycode@2.x.x, punycode@^2.1.0:
|
||||
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"
|
||||
|
@ -7279,6 +7343,7 @@ regenerator-runtime@^0.10.5:
|
|||
regenerator-runtime@^0.11.0, regenerator-runtime@^0.11.1:
|
||||
version "0.11.1"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
|
||||
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
|
||||
|
||||
regenerator-runtime@^0.12.0:
|
||||
version "0.12.1"
|
||||
|
@ -7459,6 +7524,7 @@ request@2.87.0:
|
|||
require-directory@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
|
||||
|
||||
require-from-string@^2.0.1:
|
||||
version "2.0.2"
|
||||
|
@ -7467,6 +7533,7 @@ require-from-string@^2.0.1:
|
|||
require-main-filename@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
|
||||
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
|
||||
|
||||
require-uncached@^1.0.3:
|
||||
version "1.0.3"
|
||||
|
@ -7529,7 +7596,14 @@ ret@~0.1.10:
|
|||
version "0.1.15"
|
||||
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
|
||||
|
||||
rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
|
||||
rimraf@2, rimraf@^2.6.2:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
|
||||
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
|
||||
dependencies:
|
||||
|
@ -7576,6 +7650,7 @@ rxjs@^6.1.0:
|
|||
safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
||||
|
||||
safe-eval@^0.3.0:
|
||||
version "0.3.0"
|
||||
|
@ -7772,12 +7847,14 @@ shallowequal@^1.0.1, shallowequal@^1.0.2:
|
|||
shebang-command@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
|
||||
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
|
||||
dependencies:
|
||||
shebang-regex "^1.0.0"
|
||||
|
||||
shebang-regex@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
||||
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
|
||||
|
||||
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||
version "3.0.2"
|
||||
|
@ -7810,6 +7887,7 @@ slice-ansi@0.0.4:
|
|||
slice-ansi@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
|
||||
integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
|
||||
dependencies:
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
|
||||
|
@ -7895,9 +7973,9 @@ space-separated-tokens@^1.0.0:
|
|||
trim "0.0.1"
|
||||
|
||||
spdx-correct@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e"
|
||||
integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
|
||||
integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
|
||||
dependencies:
|
||||
spdx-expression-parse "^3.0.0"
|
||||
spdx-license-ids "^3.0.0"
|
||||
|
@ -7916,9 +7994,9 @@ spdx-expression-parse@^3.0.0:
|
|||
spdx-license-ids "^3.0.0"
|
||||
|
||||
spdx-license-ids@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2"
|
||||
integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e"
|
||||
integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==
|
||||
|
||||
split-string@^3.0.1, split-string@^3.0.2:
|
||||
version "3.1.0"
|
||||
|
@ -8032,6 +8110,7 @@ string-replace-to-array@^1.0.1:
|
|||
string-width@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
||||
integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
|
||||
dependencies:
|
||||
code-point-at "^1.0.0"
|
||||
is-fullwidth-code-point "^1.0.0"
|
||||
|
@ -8055,12 +8134,14 @@ string.prototype.trim@^1.1.2:
|
|||
string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
|
||||
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
|
||||
dependencies:
|
||||
safe-buffer "~5.1.0"
|
||||
|
||||
string_decoder@~0.10.x:
|
||||
version "0.10.31"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
|
||||
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
|
||||
|
||||
stringify-object@^3.2.2:
|
||||
version "3.3.0"
|
||||
|
@ -8073,12 +8154,14 @@ stringify-object@^3.2.2:
|
|||
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
|
||||
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
strip-ansi@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
|
||||
integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
|
||||
dependencies:
|
||||
ansi-regex "^3.0.0"
|
||||
|
||||
|
@ -8099,6 +8182,7 @@ strip-comments@^1.0.2:
|
|||
strip-eof@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
|
||||
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
|
||||
|
||||
strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
|
@ -8136,6 +8220,7 @@ supports-color@^3.2.3:
|
|||
supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
|
||||
dependencies:
|
||||
has-flag "^3.0.0"
|
||||
|
||||
|
@ -8257,6 +8342,7 @@ through@^2.3.6, through@^2.3.8, through@~2.3.6:
|
|||
timed-out@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
|
||||
integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
|
||||
|
||||
timers-browserify@^2.0.4:
|
||||
version "2.0.10"
|
||||
|
@ -8469,15 +8555,16 @@ unique-slug@^2.0.0:
|
|||
imurmurhash "^0.1.4"
|
||||
|
||||
universal-user-agent@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.2.tgz#b0322da546100c658adcf4965110a56ed238aee6"
|
||||
integrity sha512-nOwvHWLH3dBazyuzbECPA5uVFNd7AlgviXRHgR4yf48QqitIvpdncRrxMbZNMpPPEfgz30I9ubd1XmiJiqsTrg==
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.3.tgz#9f6f09f9cc33de867bb720d84c08069b14937c6c"
|
||||
integrity sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g==
|
||||
dependencies:
|
||||
os-name "^3.0.0"
|
||||
|
||||
universalify@^0.1.0:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
|
||||
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
|
||||
|
||||
unpipe@1.0.0, unpipe@~1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -8527,6 +8614,7 @@ upper-case@^1.1.1:
|
|||
uri-js@^4.2.2:
|
||||
version "4.2.2"
|
||||
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
|
||||
integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
|
||||
dependencies:
|
||||
punycode "^2.1.0"
|
||||
|
||||
|
@ -8549,6 +8637,7 @@ url-loader@^1.0.1:
|
|||
url-parse-lax@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
|
||||
integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
|
||||
dependencies:
|
||||
prepend-http "^1.0.1"
|
||||
|
||||
|
@ -8582,6 +8671,7 @@ use@^3.1.0:
|
|||
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
|
||||
|
||||
util.promisify@1.0.0, util.promisify@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -8816,6 +8906,7 @@ which-module@^2.0.0:
|
|||
which@^1.2.9, which@^1.3.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
|
@ -8972,6 +9063,7 @@ worker-farm@^1.5.2:
|
|||
wrap-ansi@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
|
||||
integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
|
||||
dependencies:
|
||||
string-width "^1.0.1"
|
||||
strip-ansi "^3.0.1"
|
||||
|
@ -8979,6 +9071,7 @@ wrap-ansi@^2.0.0:
|
|||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
||||
|
||||
write-file-atomic@^1.1.2:
|
||||
version "1.3.4"
|
||||
|
@ -9055,6 +9148,7 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
|
|||
y18n@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
|
||||
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
|
||||
|
||||
"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
|
||||
version "4.0.0"
|
||||
|
|
Loading…
Reference in New Issue