diff --git a/.github/prlint.json b/.github/prlint.json deleted file mode 100644 index a7ea9b70..00000000 --- a/.github/prlint.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "title": [ - { - "pattern": "^(feat|fix|docs|style|refactor|perf|test|chore):\\s", - "flags": ["i"], - "message": "PR title doesn't match conventional commit message specs. See https://conventionalcommits.org/" - } - ] -} diff --git a/.github/workflows/semantic-pr.yml b/.github/workflows/semantic-pr.yml new file mode 100644 index 00000000..c08a7015 --- /dev/null +++ b/.github/workflows/semantic-pr.yml @@ -0,0 +1,21 @@ +name: Semantic Pull Request + +on: + pull_request_target: + types: + - opened + - edited + - synchronize + +jobs: + prlint: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: semantic-pull-request + uses: amannn/action-semantic-pull-request@v1.2.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 78d58382..6a01f51f 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ A lightweight and fast control to render a select component that can display hie - [id](#id) - [searchPredicate](#searchpredicate) - [inlineSearchInput](#inlinesearchinput) + - [tabIndex](#tabIndex) - [Styling and Customization](#styling-and-customization) - [Using default styles](#default-styles) - [Customizing with Bootstrap, Material Design styles](#customizing-styles) @@ -299,10 +300,11 @@ The `texts` object requires the following structure: ```js { - placeholder, // optional: The text to display as placeholder on the search box. Defaults to `Choose...` - noMatches, // optional: The text to display when the search does not find results in the content list. Defaults to `No matches found` - label, // optional: Adds `aria-labelledby` to search input when input starts with `#`, adds `aria-label` to search input when label has value (not containing '#') - labelRemove, // optional: The text to display for `aria-label` on tag delete buttons which is combined with `aria-labelledby` pointing to the node label. Defaults to `Remove` + placeholder, // optional: The text to display as placeholder on the search box. Defaults to `Choose...` + inlineSearchPlaceholder, // optional: The text to display as placeholder on the inline search box. Only applicable with the `inlineSearchInput` setting. Defaults to `Search...` + noMatches, // optional: The text to display when the search does not find results in the content list. Defaults to `No matches found` + label, // optional: Adds `aria-labelledby` to search input when input starts with `#`, adds `aria-label` to search input when label has value (not containing '#') + labelRemove, // optional: The text to display for `aria-label` on tag delete buttons which is combined with `aria-labelledby` pointing to the node label. Defaults to `Remove` } ``` @@ -413,6 +415,12 @@ Type: `bool` (default: `false`) `inlineSearchInput=true` makes the search input renders **inside** the dropdown-content. This can be useful when your UX looks something like [this comment](https://github.com/dowjones/react-dropdown-tree-select/issues/308#issue-526467109). +### tabIndex + +Type: `number` (default: `0`) + +`tabIndex=0` attribute indicates that its element can be focused, and where it participates in sequential keyboard navigation. + ## Styling and Customization ### Default styles @@ -592,6 +600,7 @@ Released 2017 by [Hrusikesh Panda](https://github.com/mrchief) @ [Dow Jones](htt Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)): + | [toofff
toofff](http://www.yanoucrea.fr)
[πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3Atoofff "Bug reports") [πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=toofff "Code") [πŸ“–](https://github.com/dowjones/react-dropdown-tree-select/commits?author=toofff "Documentation") [πŸ€”](#ideas-toofff "Ideas, Planning, & Feedback") | [GrΓ©gory Copin
GrΓ©gory Copin](http://www.les-tilleuls.coop)
[πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3AGregcop1 "Bug reports") [πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=Gregcop1 "Code") | [PRIYANSHU AGRAWAL
PRIYANSHU AGRAWAL](https://github.com/priyanshu92)
[πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3Apriyanshu92 "Bug reports") [πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=priyanshu92 "Code") [πŸ€”](#ideas-priyanshu92 "Ideas, Planning, & Feedback") | [James Greenaway
James Greenaway](http://james.greenaway.io)
[πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3Ajvgreenaway "Bug reports") [πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=jvgreenaway "Code") [πŸ€”](#ideas-jvgreenaway "Ideas, Planning, & Feedback") | [itrombitas
itrombitas](https://github.com/itrombitas)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=itrombitas "Code") | [Dave Henton
Dave Henton](https://github.com/davehenton)
[πŸš‡](#infra-davehenton "Infrastructure (Hosting, Build-Tools, etc)") | [Swetha Kolli
Swetha Kolli](https://github.com/nagaskolli)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=nagaskolli "Code") | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | @@ -600,6 +609,7 @@ Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds | [Lutz Lengemann
Lutz Lengemann](http://www.dealzeit.de)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=mobilutz "Code") | [Akshay Dipta
Akshay Dipta](https://github.com/Eainde)
[πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3AEainde "Bug reports") | [Ian Langworth ☠
Ian Langworth ☠](https://langworth.com/)
[πŸ€”](#ideas-statico "Ideas, Planning, & Feedback") | [Stoyan Berov
Stoyan Berov](https://github.com/stoberov)
[πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3Astoberov "Bug reports") | [ellinge
ellinge](https://github.com/ellinge)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=ellinge "Code") [πŸ€”](#ideas-ellinge "Ideas, Planning, & Feedback") [🚧](#maintenance-ellinge "Maintenance") | [Sandy M
Sandy M](https://github.com/moonjy1993)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=moonjy1993 "Code") [πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3Amoonjy1993 "Bug reports") | [Gustav TonΓ©r
Gustav TonΓ©r](https://www.gazab.se)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=gazab "Code") | | [Kestutis Kasiulynas
Kestutis Kasiulynas](http://kYem.net)
[πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3AkYem "Bug reports") [πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=kYem "Code") | [Jesus Cabrera Gonzalez
Jesus Cabrera Gonzalez](https://github.com/isuscbrmid)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=isuscbrmid "Code") | [MJRuskin
MJRuskin](https://github.com/MJRuskin)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=MJRuskin "Code") | [akarshjairaj
akarshjairaj](https://github.com/akarshjairaj)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=akarshjairaj "Code") | [Artem Berdyshev
Artem Berdyshev](https://github.com/berdyshev)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=berdyshev "Code") [πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3Aberdyshev "Bug reports") | [Matheus Wichman
Matheus Wichman](https://matheushw.com/)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=m4theushw "Code") | [aarce-uncharted
aarce-uncharted](https://github.com/aarce-uncharted)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=aarce-uncharted "Code") | | [Mohamad Othman
Mohamad Othman](http://osmancode.me)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=osmancode "Code") [πŸ€”](#ideas-osmancode "Ideas, Planning, & Feedback") | [kathleenlu
kathleenlu](https://github.com/smurfs2549)
[πŸ’»](https://github.com/dowjones/react-dropdown-tree-select/commits?author=smurfs2549 "Code") [πŸ›](https://github.com/dowjones/react-dropdown-tree-select/issues?q=author%3Asmurfs2549 "Bug reports") | + This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome! diff --git a/__snapshots__/src/index.test.js.md b/__snapshots__/src/index.test.js.md index afb2307b..b286f7f3 100644 --- a/__snapshots__/src/index.test.js.md +++ b/__snapshots__/src/index.test.js.md @@ -15,157 +15,38 @@ Generated by [AVA](https://ava.li).
- - - +
{ - _children: [ - 'rdts-0-0', - 'rdts-0-1', - ], - _depth: 0, - _id: 'rdts-0', - actions: [ - { - className: 'fa fa-ban', - id: 'NOT', - title: 'NOT', - }, - ], - children: undefined, - label: 'item1', - value: 'value1', - }, - 'rdts-0-0' => { - _children: [ - 'rdts-0-0-0', - 'rdts-0-0-1', - ], - _depth: 1, - _id: 'rdts-0-0', - _parent: 'rdts-0', - children: undefined, - label: 'item1-1', - value: 'value1-1', - }, - 'rdts-0-0-0' => { - _depth: 2, - _id: 'rdts-0-0-0', - _parent: 'rdts-0-0', - label: 'item1-1-1', - value: 'value1-1-1', - }, - 'rdts-0-0-1' => { - _depth: 2, - _id: 'rdts-0-0-1', - _parent: 'rdts-0-0', - label: 'item1-1-2', - value: 'value1-1-2', - }, - 'rdts-0-1' => { - _depth: 1, - _id: 'rdts-0-1', - _parent: 'rdts-0', - label: 'item1-2', - value: 'value1-2', - }, - 'rdts-1' => { - _children: [ - 'rdts-1-0', - 'rdts-1-1', - ], - _depth: 0, - _id: 'rdts-1', - children: undefined, - label: 'item2', - value: 'value2', - }, - 'rdts-1-0' => { - _children: [ - 'rdts-1-0-0', - 'rdts-1-0-1', - 'rdts-1-0-2', - ], - _depth: 1, - _id: 'rdts-1-0', - _parent: 'rdts-1', - children: undefined, - label: 'item2-1', - value: 'value2-1', - }, - 'rdts-1-0-0' => { - _depth: 2, - _id: 'rdts-1-0-0', - _parent: 'rdts-1-0', - label: 'item2-1-1', - value: 'value2-1-1', - }, - 'rdts-1-0-1' => { - _depth: 2, - _id: 'rdts-1-0-1', - _parent: 'rdts-1-0', - label: 'item2-1-2', - value: 'value2-1-2', - }, - 'rdts-1-0-2' => { - _children: [ - 'rdts-1-0-2-0', - ], - _depth: 2, - _id: 'rdts-1-0-2', - _parent: 'rdts-1-0', - children: undefined, - label: 'item2-1-3', - value: 'value2-1-3', - }, - 'rdts-1-0-2-0' => { - _depth: 3, - _id: 'rdts-1-0-2-0', - _parent: 'rdts-1-0-2', - label: 'item2-1-3-1', - value: 'value2-1-3-1', - }, - 'rdts-1-1' => { - _depth: 1, - _id: 'rdts-1-1', - _parent: 'rdts-1', - label: 'item2-2', - value: 'value2-2', - }, - } - } - onAction={Function {}} - onCheckboxChange={Function {}} - onNodeToggle={Function {}} - pageSize={100} + data={Map {}} + onAction={Function onAction {}} + onCheckboxChange={Function onCheckboxChange {}} + onNodeToggle={Function onNodeToggle {}} searchModeOn={false} texts={{}} /> @@ -184,156 +65,37 @@ Generated by [AVA](https://ava.li).
- - +
- { - _children: [ - 'rdts-0-0', - 'rdts-0-1', - ], - _depth: 0, - _id: 'rdts-0', - actions: [ - { - className: 'fa fa-ban', - id: 'NOT', - title: 'NOT', - }, - ], - children: undefined, - label: 'item1', - value: 'value1', - }, - 'rdts-0-0' => { - _children: [ - 'rdts-0-0-0', - 'rdts-0-0-1', - ], - _depth: 1, - _id: 'rdts-0-0', - _parent: 'rdts-0', - children: undefined, - label: 'item1-1', - value: 'value1-1', - }, - 'rdts-0-0-0' => { - _depth: 2, - _id: 'rdts-0-0-0', - _parent: 'rdts-0-0', - label: 'item1-1-1', - value: 'value1-1-1', - }, - 'rdts-0-0-1' => { - _depth: 2, - _id: 'rdts-0-0-1', - _parent: 'rdts-0-0', - label: 'item1-1-2', - value: 'value1-1-2', - }, - 'rdts-0-1' => { - _depth: 1, - _id: 'rdts-0-1', - _parent: 'rdts-0', - label: 'item1-2', - value: 'value1-2', - }, - 'rdts-1' => { - _children: [ - 'rdts-1-0', - 'rdts-1-1', - ], - _depth: 0, - _id: 'rdts-1', - children: undefined, - label: 'item2', - value: 'value2', - }, - 'rdts-1-0' => { - _children: [ - 'rdts-1-0-0', - 'rdts-1-0-1', - 'rdts-1-0-2', - ], - _depth: 1, - _id: 'rdts-1-0', - _parent: 'rdts-1', - children: undefined, - label: 'item2-1', - value: 'value2-1', - }, - 'rdts-1-0-0' => { - _depth: 2, - _id: 'rdts-1-0-0', - _parent: 'rdts-1-0', - label: 'item2-1-1', - value: 'value2-1-1', - }, - 'rdts-1-0-1' => { - _depth: 2, - _id: 'rdts-1-0-1', - _parent: 'rdts-1-0', - label: 'item2-1-2', - value: 'value2-1-2', - }, - 'rdts-1-0-2' => { - _children: [ - 'rdts-1-0-2-0', - ], - _depth: 2, - _id: 'rdts-1-0-2', - _parent: 'rdts-1-0', - children: undefined, - label: 'item2-1-3', - value: 'value2-1-3', - }, - 'rdts-1-0-2-0' => { - _depth: 3, - _id: 'rdts-1-0-2-0', - _parent: 'rdts-1-0-2', - label: 'item2-1-3-1', - value: 'value2-1-3-1', - }, - 'rdts-1-1' => { - _depth: 1, - _id: 'rdts-1-1', - _parent: 'rdts-1', - label: 'item2-2', - value: 'value2-2', - }, - } - } - onAction={Function {}} - onCheckboxChange={Function {}} - onNodeToggle={Function {}} - pageSize={100} + data={Map {}} + onAction={Function onAction {}} + onCheckboxChange={Function onCheckboxChange {}} + onNodeToggle={Function onNodeToggle {}} searchModeOn={false} texts={{}} /> @@ -352,33 +114,32 @@ Generated by [AVA](https://ava.li).
- - - +
@@ -464,6 +225,7 @@ Generated by [AVA](https://ava.li). onChange={Function onChange {}} onFocus={Function onFocus {}} showDropdown="default" + tabIndex={0} texts={{}} >
- @@ -494,7 +257,7 @@ Generated by [AVA](https://ava.li). @@ -504,32 +267,32 @@ Generated by [AVA](https://ava.li).
  • - - +
  • -
    +
    @@ -615,6 +378,7 @@ Generated by [AVA](https://ava.li). onChange={Function onChange {}} onFocus={Function onFocus {}} showDropdown="default" + tabIndex={0} texts={{}} >
    - @@ -643,7 +408,7 @@ Generated by [AVA](https://ava.li). > @@ -653,31 +418,31 @@ Generated by [AVA](https://ava.li).
  • - - +
  • -
    +
    @@ -693,157 +458,38 @@ Generated by [AVA](https://ava.li).
    - - - +
    { - _children: [ - 'rdts-0-0', - 'rdts-0-1', - ], - _depth: 0, - _id: 'rdts-0', - actions: [ - { - className: 'fa fa-ban', - id: 'NOT', - title: 'NOT', - }, - ], - children: undefined, - label: 'item1', - value: 'value1', - }, - 'rdts-0-0' => { - _children: [ - 'rdts-0-0-0', - 'rdts-0-0-1', - ], - _depth: 1, - _id: 'rdts-0-0', - _parent: 'rdts-0', - children: undefined, - label: 'item1-1', - value: 'value1-1', - }, - 'rdts-0-0-0' => { - _depth: 2, - _id: 'rdts-0-0-0', - _parent: 'rdts-0-0', - label: 'item1-1-1', - value: 'value1-1-1', - }, - 'rdts-0-0-1' => { - _depth: 2, - _id: 'rdts-0-0-1', - _parent: 'rdts-0-0', - label: 'item1-1-2', - value: 'value1-1-2', - }, - 'rdts-0-1' => { - _depth: 1, - _id: 'rdts-0-1', - _parent: 'rdts-0', - label: 'item1-2', - value: 'value1-2', - }, - 'rdts-1' => { - _children: [ - 'rdts-1-0', - 'rdts-1-1', - ], - _depth: 0, - _id: 'rdts-1', - children: undefined, - label: 'item2', - value: 'value2', - }, - 'rdts-1-0' => { - _children: [ - 'rdts-1-0-0', - 'rdts-1-0-1', - 'rdts-1-0-2', - ], - _depth: 1, - _id: 'rdts-1-0', - _parent: 'rdts-1', - children: undefined, - label: 'item2-1', - value: 'value2-1', - }, - 'rdts-1-0-0' => { - _depth: 2, - _id: 'rdts-1-0-0', - _parent: 'rdts-1-0', - label: 'item2-1-1', - value: 'value2-1-1', - }, - 'rdts-1-0-1' => { - _depth: 2, - _id: 'rdts-1-0-1', - _parent: 'rdts-1-0', - label: 'item2-1-2', - value: 'value2-1-2', - }, - 'rdts-1-0-2' => { - _children: [ - 'rdts-1-0-2-0', - ], - _depth: 2, - _id: 'rdts-1-0-2', - _parent: 'rdts-1-0', - children: undefined, - label: 'item2-1-3', - value: 'value2-1-3', - }, - 'rdts-1-0-2-0' => { - _depth: 3, - _id: 'rdts-1-0-2-0', - _parent: 'rdts-1-0-2', - label: 'item2-1-3-1', - value: 'value2-1-3-1', - }, - 'rdts-1-1' => { - _depth: 1, - _id: 'rdts-1-1', - _parent: 'rdts-1', - label: 'item2-2', - value: 'value2-2', - }, - } - } - onAction={Function {}} - onCheckboxChange={Function {}} - onNodeToggle={Function {}} - pageSize={100} + data={Map {}} + onAction={Function onAction {}} + onCheckboxChange={Function onCheckboxChange {}} + onNodeToggle={Function onNodeToggle {}} searchModeOn={false} texts={{}} /> diff --git a/__snapshots__/src/index.test.js.snap b/__snapshots__/src/index.test.js.snap index a3a9127b..6fd87aa8 100644 Binary files a/__snapshots__/src/index.test.js.snap and b/__snapshots__/src/index.test.js.snap differ diff --git a/__snapshots__/src/input/index.test.js.md b/__snapshots__/src/input/index.test.js.md index 0262134b..97565574 100644 --- a/__snapshots__/src/input/index.test.js.md +++ b/__snapshots__/src/input/index.test.js.md @@ -4,6 +4,17 @@ The actual snapshot is saved in `index.test.js.snap`. Generated by [AVA](https://ava.li). +## renders inline search placeholder + +> Snapshot 1 + + + ## renders input > Snapshot 1 diff --git a/__snapshots__/src/input/index.test.js.snap b/__snapshots__/src/input/index.test.js.snap index 81941268..236e815e 100644 Binary files a/__snapshots__/src/input/index.test.js.snap and b/__snapshots__/src/input/index.test.js.snap differ diff --git a/__snapshots__/src/tags/index.test.js.md b/__snapshots__/src/tags/index.test.js.md index 77b87d7e..8047b355 100644 --- a/__snapshots__/src/tags/index.test.js.md +++ b/__snapshots__/src/tags/index.test.js.md @@ -15,7 +15,7 @@ Generated by [AVA](https://ava.li). className="tag-item" key="tag-item-i1" > - @@ -24,7 +24,7 @@ Generated by [AVA](https://ava.li). className="tag-item" key="tag-item-i2" > - @@ -32,7 +32,7 @@ Generated by [AVA](https://ava.li).
  • - +
  • @@ -46,7 +46,7 @@ Generated by [AVA](https://ava.li).
  • - +
  • @@ -81,7 +81,7 @@ Generated by [AVA](https://ava.li). "data-last"="smith" key="tag-item-i1" > - @@ -89,7 +89,7 @@ Generated by [AVA](https://ava.li).
  • - +
  • @@ -104,7 +104,7 @@ Generated by [AVA](https://ava.li). className="tag-item" key="tag-item-i1" > - @@ -113,7 +113,7 @@ Generated by [AVA](https://ava.li). className="tag-item" key="tag-item-i2" > - @@ -121,6 +121,6 @@ Generated by [AVA](https://ava.li).
  • - +
  • diff --git a/__snapshots__/src/tags/index.test.js.snap b/__snapshots__/src/tags/index.test.js.snap index 35a79b1f..d9417b3e 100644 Binary files a/__snapshots__/src/tags/index.test.js.snap and b/__snapshots__/src/tags/index.test.js.snap differ diff --git a/__snapshots__/src/tree-node/index.test.js.md b/__snapshots__/src/tree-node/index.test.js.md index efb55652..c75ddfce 100644 --- a/__snapshots__/src/tree-node/index.test.js.md +++ b/__snapshots__/src/tree-node/index.test.js.md @@ -23,7 +23,7 @@ Generated by [AVA](https://ava.li). id="0-0-0" isLeaf={true} /> - - - - - - - - Always
    +
    + + this.setState({ placeholder: e.target.value })} + /> +
    +
    + + this.setState({ inlineSearchPlaceholder: e.target.value })} + /> +
    diff --git a/package.json b/package.json index 211a0fa5..fc42ef63 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "dependencies": { "array.partial": "^1.0.5", "prop-types": "^15.7.2", - "react-infinite-scroll-component": "^4.0.2" + "react-infinite-scroll-component": "^5.1.0" }, "devDependencies": { "@babel/plugin-syntax-jsx": "7.0.0-beta.46", @@ -74,7 +74,7 @@ "cz-conventional-changelog-emoji": "^0.1.0", "enzyme": "^3.9.0", "enzyme-adapter-react-16": "^1.11.2", - "enzyme-to-json": "^3.3.5", + "enzyme-to-json": "^3.6.1", "eslint": "^6.5.1", "eslint-config-airbnb": "^18.0.1", "eslint-config-prettier": "^6.4.0", diff --git a/src/index.js b/src/index.js index 491a6191..82e1eb02 100644 --- a/src/index.js +++ b/src/index.js @@ -7,7 +7,7 @@ * see https://github.com/dowjones/react-dropdown-tree-select */ import PropTypes from 'prop-types' -import React, { Component } from 'react' +import React, { useState, useRef, useEffect, useMemo, useCallback } from 'react' import { isOutsideClick, clientIdGenerator } from './utils' import Input from './input' @@ -20,175 +20,135 @@ import keyboardNavigation from './tree-manager/keyboardNavigation' import './index.css' import { getAriaLabel } from './a11y' -class DropdownTreeSelect extends Component { - static propTypes = { - data: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired, - clearSearchOnChange: PropTypes.bool, - keepTreeOnSearch: PropTypes.bool, - keepChildrenOnSearch: PropTypes.bool, - keepOpenOnSelect: PropTypes.bool, - texts: PropTypes.shape({ - placeholder: PropTypes.string, - noMatches: PropTypes.string, - label: PropTypes.string, - labelRemove: PropTypes.string, - }), - showDropdown: PropTypes.oneOf(['default', 'initial', 'always']), - className: PropTypes.string, - onChange: PropTypes.func, - onAction: PropTypes.func, - onNodeToggle: PropTypes.func, - onFocus: PropTypes.func, - onBlur: PropTypes.func, - mode: PropTypes.oneOf(['multiSelect', 'simpleSelect', 'radioSelect', 'hierarchical']), - showPartiallySelected: PropTypes.bool, - disabled: PropTypes.bool, - readOnly: PropTypes.bool, - id: PropTypes.string, - searchPredicate: PropTypes.func, - inlineSearchInput: PropTypes.bool, - } - - static defaultProps = { - onAction: () => {}, - onFocus: () => {}, - onBlur: () => {}, - onChange: () => {}, - texts: {}, - showDropdown: 'default', - inlineSearchInput: false, - } - - constructor(props) { - super(props) - this.state = { - searchModeOn: false, - currentFocus: undefined, +const DropdownTreeSelect = ({ + id: idProp, + data, + mode, + showDropdown: showDropdownProp, + showPartiallySelected, + searchPredicate, + className, + disabled, + readOnly, + texts, + inlineSearchInput, + tabIndex, + keepTreeOnSearch, + keepChildrenOnSearch, + onAction: onActionProp, + onChange, + onFocus, + onBlur, + onNodeToggle: onNodeToggleProp, + keepOpenOnSelect, + clearSearchOnChange, +}) => { + const [state, setState] = useState({ + searchModeOn: false, + showDropdown: /initial|always/.test(showDropdownProp), + tree: new Map(), + }) + const clientId = useMemo(() => idProp || clientIdGenerator.get(), [idProp]) + const treeManager = useRef() + const searchInputRef = useRef() + const nodeRef = useRef() + const keepDropdownActive = useRef(false) + const callbackRef = useRef() + + const setStateWithCallback = (newState, callback) => { + // don't overwrite if there's a pending callback + if (!callbackRef.current) { + callbackRef.current = callback } - this.clientId = props.id || clientIdGenerator.get(this) + setState(newState) } - initNewProps = ({ data, mode, showDropdown, showPartiallySelected, searchPredicate }) => { - this.treeManager = new TreeManager({ - data, - mode, - showPartiallySelected, - rootPrefixId: this.clientId, - searchPredicate, - }) - this.setState(prevState => { - const currentFocusNode = prevState.currentFocus && this.treeManager.getNodeById(prevState.currentFocus) - if (currentFocusNode) { - currentFocusNode._focused = true - } - return { - showDropdown: /initial|always/.test(showDropdown) || prevState.showDropdown === true, - ...this.treeManager.getTreeAndTags(), - } - }) - } + useEffect(() => { + if (callbackRef.current) { + callbackRef.current() + callbackRef.current = null + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(state)]) - resetSearchState = () => { + const resetSearchState = () => { // clear the search criteria and avoid react controlled/uncontrolled warning - if (this.searchInput) { - this.searchInput.value = '' + if (searchInputRef.current) { + searchInputRef.current.value = '' } return { - tree: this.treeManager.restoreNodes(), // restore the tree to its pre-search state + tree: treeManager.current.restoreNodes(), // restore the tree to its pre-search state searchModeOn: false, allNodesHidden: false, } } - UNSAFE_componentWillMount() { - this.initNewProps(this.props) - } - - componentWillUnmount() { - document.removeEventListener('click', this.handleOutsideClick, false) - } + const handleClick = useCallback( + (e, callback) => { + setStateWithCallback(prevState => { + // keep dropdown active when typing in search box + const showDropdown = showDropdownProp === 'always' || keepDropdownActive.current || !prevState.showDropdown - UNSAFE_componentWillReceiveProps(nextProps) { - this.initNewProps(nextProps) - } - - handleClick = (e, callback) => { - this.setState(prevState => { - // keep dropdown active when typing in search box - const showDropdown = this.props.showDropdown === 'always' || this.keepDropdownActive || !prevState.showDropdown - - // register event listeners only if there is a state change - if (showDropdown !== prevState.showDropdown) { if (showDropdown) { - document.addEventListener('click', this.handleOutsideClick, false) + onFocus() } else { - document.removeEventListener('click', this.handleOutsideClick, false) + onBlur() } - } - - if (showDropdown) this.props.onFocus() - else this.props.onBlur() - return !showDropdown ? { showDropdown, ...this.resetSearchState() } : { showDropdown } - }, callback) - } + return !showDropdown ? { ...prevState, showDropdown, ...resetSearchState() } : { ...prevState, showDropdown } + }, callback) + }, + [onBlur, onFocus, showDropdownProp] + ) - handleOutsideClick = e => { - if (this.props.showDropdown === 'always' || !isOutsideClick(e, this.node)) { - return - } + const handleOutsideClick = useCallback( + e => { + if (showDropdownProp === 'always' || !isOutsideClick(e, nodeRef.current)) { + return + } - this.handleClick() - } + handleClick() + }, + [handleClick, showDropdownProp] + ) - onInputChange = value => { - const { allNodesHidden, tree } = this.treeManager.filterTree( - value, - this.props.keepTreeOnSearch, - this.props.keepChildrenOnSearch - ) + const onInputChange = value => { + const { allNodesHidden, tree } = treeManager.current.filterTree(value, keepTreeOnSearch, keepChildrenOnSearch) const searchModeOn = value.length > 0 - this.setState({ + setState(prevState => ({ + ...prevState, tree, searchModeOn, allNodesHidden, - }) - } - - onTagRemove = (id, isKeyboardEvent) => { - const { tags: prevTags } = this.state - this.onCheckboxChange(id, false, tags => { - if (!isKeyboardEvent) return - - keyboardNavigation.getNextFocusAfterTagDelete(id, prevTags, tags, this.searchInput).focus() - }) + })) } - onNodeToggle = id => { - this.treeManager.toggleNodeExpandState(id) - const tree = this.state.searchModeOn ? this.treeManager.matchTree : this.treeManager.tree - this.setState({ tree }) - typeof this.props.onNodeToggle === 'function' && this.props.onNodeToggle(this.treeManager.getNodeById(id)) + const onNodeToggle = id => { + treeManager.current.toggleNodeExpandState(id) + const tree = state.searchModeOn ? treeManager.current.matchTree : treeManager.current.tree + setState(prevState => ({ ...prevState, tree })) + if (typeof onNodeToggleProp === 'function') { + onNodeToggleProp(treeManager.current.getNodeById(id)) + } } - onCheckboxChange = (id, checked, callback) => { - const { mode, keepOpenOnSelect, clearSearchOnChange } = this.props - const { currentFocus, searchModeOn } = this.state - this.treeManager.setNodeCheckedState(id, checked) - let { tags } = this.treeManager + const onCheckboxChange = (id, checked, callback) => { + const { currentFocus, searchModeOn } = state + treeManager.current.setNodeCheckedState(id, checked) + let { tags } = treeManager.current const isSingleSelect = ['simpleSelect', 'radioSelect'].indexOf(mode) > -1 - const showDropdown = isSingleSelect && !keepOpenOnSelect ? false : this.state.showDropdown - const currentFocusNode = currentFocus && this.treeManager.getNodeById(currentFocus) - const node = this.treeManager.getNodeById(id) + const showDropdown = isSingleSelect && !keepOpenOnSelect ? false : state.showDropdown + const currentFocusNode = currentFocus && treeManager.current.getNodeById(currentFocus) + const node = treeManager.current.getNodeById(id) if (!tags.length) { - this.treeManager.restoreDefaultValues() - tags = this.treeManager.tags + treeManager.current.restoreDefaultValues() + tags = treeManager.current.tags } - const tree = searchModeOn ? this.treeManager.matchTree : this.treeManager.tree + const tree = searchModeOn ? treeManager.current.matchTree : treeManager.current.tree const nextState = { tree, tags, @@ -197,89 +157,110 @@ class DropdownTreeSelect extends Component { } if ((isSingleSelect && !showDropdown) || clearSearchOnChange) { - Object.assign(nextState, this.resetSearchState()) + Object.assign(nextState, resetSearchState()) } if (isSingleSelect && !showDropdown) { - document.removeEventListener('click', this.handleOutsideClick, false) + document.removeEventListener('click', handleOutsideClick, false) } keyboardNavigation.adjustFocusedProps(currentFocusNode, node) - this.setState(nextState, () => { - callback && callback(tags) + setStateWithCallback(nextState, () => { + if (callback) { + callback(tags) + } + }) + onChange(node, tags) + } + + const onTagRemove = (id, isKeyboardEvent) => { + const { tags: prevTags } = state + onCheckboxChange(id, false, tags => { + if (!isKeyboardEvent) return + + keyboardNavigation.getNextFocusAfterTagDelete(id, prevTags, tags, nodeRef.current).focus() }) - this.props.onChange(node, tags) } - onAction = (nodeId, action) => { - this.props.onAction(this.treeManager.getNodeById(nodeId), action) + const onAction = (nodeId, action) => { + onActionProp(treeManager.current.getNodeById(nodeId), action) } - onInputFocus = () => { - this.keepDropdownActive = true + const onInputFocus = () => { + keepDropdownActive.current = true } - onInputBlur = () => { - this.keepDropdownActive = false + const onInputBlur = () => { + keepDropdownActive.current = false } - onTrigger = e => { - this.handleClick(e, () => { + const onTrigger = e => { + handleClick(e, () => { // If the dropdown is shown after key press, focus the input - if (this.state.showDropdown) { - this.searchInput.focus() + if (state.showDropdown) { + searchInputRef.current.focus() } }) } - onKeyboardKeyDown = e => { - const { readOnly, mode } = this.props - const { showDropdown, tags, searchModeOn, currentFocus } = this.state - const tm = this.treeManager + const adjustFocusedElement = (e, tree) => { + const { currentFocus, searchModeOn } = state + const { current: tm } = treeManager + + const newFocus = tm.handleNavigationKey( + currentFocus, + tree, + e.key, + readOnly, + !searchModeOn, + onCheckboxChange, + onNodeToggle + ) + + if (newFocus !== currentFocus) { + setStateWithCallback( + prevState => ({ ...prevState, currentFocus: newFocus }), + () => { + const ele = document && document.getElementById(`${newFocus}_li`) + if (ele) { + ele.scrollIntoView() + } + } + ) + } + } + + const onKeyboardKeyDown = e => { + const { showDropdown, tags, searchModeOn, currentFocus } = state + const { current: tm } = treeManager const tree = searchModeOn ? tm.matchTree : tm.tree if (!showDropdown && (keyboardNavigation.isValidKey(e.key, false) || /^\w$/i.test(e.key))) { // Triggers open of dropdown and retriggers event e.persist() - this.handleClick(null, () => this.onKeyboardKeyDown(e)) + handleClick(null, () => adjustFocusedElement(e, tree)) if (/\w/i.test(e.key)) return } else if (showDropdown && keyboardNavigation.isValidKey(e.key, true)) { - const newFocus = tm.handleNavigationKey( - currentFocus, - tree, - e.key, - readOnly, - !searchModeOn, - this.onCheckboxChange, - this.onNodeToggle - ) - if (newFocus !== currentFocus) { - this.setState({ currentFocus: newFocus }, () => { - const ele = document && document.getElementById(`${newFocus}_li`) - ele && ele.scrollIntoView() - }) - } + adjustFocusedElement(e, tree) } else if (showDropdown && ['Escape', 'Tab'].indexOf(e.key) > -1) { if (mode === 'simpleSelect' && tree.has(currentFocus)) { - this.onCheckboxChange(currentFocus, true) + onCheckboxChange(currentFocus, true) } else { // Triggers close - this.keepDropdownActive = false - this.handleClick() + keepDropdownActive.current = false + handleClick() } return - } else if (e.key === 'Backspace' && tags.length && this.searchInput.value.length === 0) { + } else if (e.key === 'Backspace' && tags.length && searchInputRef.current.value.length === 0) { const lastTag = tags.pop() - this.onCheckboxChange(lastTag._id, false) + onCheckboxChange(lastTag._id, false) } else { return } e.preventDefault() } - getAriaAttributes = () => { - const { mode, texts } = this.props - + const getAriaAttributes = () => { if (mode !== 'radioSelect') return {} return { @@ -288,71 +269,138 @@ class DropdownTreeSelect extends Component { } } - render() { - const { disabled, readOnly, mode, texts, inlineSearchInput } = this.props - const { showDropdown, currentFocus, tags } = this.state - - const activeDescendant = currentFocus ? `${currentFocus}_li` : undefined - - const commonProps = { disabled, readOnly, activeDescendant, texts, mode, clientId: this.clientId } - - const searchInput = ( - { - this.searchInput = el - }} - onInputChange={this.onInputChange} - onFocus={this.onInputFocus} - onBlur={this.onInputBlur} - onKeyDown={this.onKeyboardKeyDown} - {...commonProps} - /> - ) - return ( + useEffect(() => { + treeManager.current = new TreeManager({ + data, + mode, + showPartiallySelected, + rootPrefixId: clientId, + searchPredicate, + }) + + setState(prevState => { + const currentFocusNode = prevState.currentFocus && treeManager.current.getNodeById(prevState.currentFocus) + if (currentFocusNode) { + currentFocusNode._focused = true + } + return { + showDropdown: /initial|always/.test(showDropdownProp) || prevState.showDropdown === true, + ...treeManager.current.getTreeAndTags(), + } + }) + + return () => document.removeEventListener('click', handleOutsideClick, false) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(data), mode, showDropdownProp, showPartiallySelected, searchPredicate]) + + useEffect(() => { + // register event listeners only if there is a state change + if (state.showDropdown) { + document.addEventListener('click', handleOutsideClick, false) + } else { + document.removeEventListener('click', handleOutsideClick, false) + } + }, [handleOutsideClick, state.showDropdown]) + + const { showDropdown, currentFocus, tags } = state + + const activeDescendant = currentFocus ? `${currentFocus}_li` : undefined + + const commonProps = { disabled, readOnly, activeDescendant, texts, mode, clientId } + + const searchInput = ( + + ) + + return ( +
    { - this.node = node - }} > -
    - - - {!inlineSearchInput && searchInput} - - - {showDropdown && ( -
    - {inlineSearchInput && searchInput} - {this.state.allNodesHidden ? ( - {texts.noMatches || 'No matches found'} - ) : ( - - )} -
    - )} -
    + + + {!inlineSearchInput && searchInput} + + + {showDropdown && ( +
    + {inlineSearchInput && searchInput} + {state.allNodesHidden ? ( + {texts.noMatches || 'No matches found'} + ) : ( + + )} +
    + )}
    - ) - } +
    + ) +} + +DropdownTreeSelect.propTypes = { + data: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired, + clearSearchOnChange: PropTypes.bool, + keepTreeOnSearch: PropTypes.bool, + keepChildrenOnSearch: PropTypes.bool, + keepOpenOnSelect: PropTypes.bool, + texts: PropTypes.shape({ + placeholder: PropTypes.string, + inlineSearchPlaceholder: PropTypes.string, + noMatches: PropTypes.string, + label: PropTypes.string, + labelRemove: PropTypes.string, + }), + showDropdown: PropTypes.oneOf(['default', 'initial', 'always']), + className: PropTypes.string, + onChange: PropTypes.func, + onAction: PropTypes.func, + onNodeToggle: PropTypes.func, + onFocus: PropTypes.func, + onBlur: PropTypes.func, + mode: PropTypes.oneOf(['multiSelect', 'simpleSelect', 'radioSelect', 'hierarchical']), + showPartiallySelected: PropTypes.bool, + disabled: PropTypes.bool, + readOnly: PropTypes.bool, + id: PropTypes.string, + searchPredicate: PropTypes.func, + inlineSearchInput: PropTypes.bool, + tabIndex: PropTypes.number, +} + +DropdownTreeSelect.defaultProps = { + onAction: () => {}, + onFocus: () => {}, + onBlur: () => {}, + onChange: () => {}, + texts: {}, + showDropdown: 'default', + inlineSearchInput: false, + tabIndex: 0, } export default DropdownTreeSelect diff --git a/src/index.keyboardNav.test.js b/src/index.keyboardNav.test.js index 53f7245c..5cc506d7 100644 --- a/src/index.keyboardNav.test.js +++ b/src/index.keyboardNav.test.js @@ -29,7 +29,7 @@ test('some key presses opens dropdown on keyboardNavigation', t => { ;['ArrowUp', 'ArrowDown', 'Home', 'PageUp', 'End', 'PageDown', 'a', 'B'].forEach(key => { const wrapper = mount() triggerOnKeyboardKeyDown(wrapper, key) - t.true(wrapper.state().showDropdown) + t.true(wrapper.exists('.dropdown-content')) }) }) @@ -38,7 +38,7 @@ test('esc closes dropdown on keyboardNavigation', async t => { triggerOnKeyboardKeyDown(wrapper, ['ArrowDown', 'Escape']) const showDropdown = await new Promise(resolve => setTimeout(() => { - resolve(wrapper.state().showDropdown) + resolve(wrapper.exists('.dropdown-content')) }, 1) ) t.false(showDropdown) @@ -48,7 +48,7 @@ test('other key presses does not open dropdown on keyboardNavigation', t => { ;['Enter', 'ArrowLeft', 'ArrowRight'].forEach(key => { const wrapper = mount() triggerOnKeyboardKeyDown(wrapper, key) - t.false(wrapper.state().showDropdown) + t.false(wrapper.exists('.dropdown-content')) }) }) @@ -99,14 +99,15 @@ test('can collapse on keyboardNavigation', t => { test('can navigate searchresult on keyboardNavigation', t => { const wrapper = mount() - wrapper.instance().onInputChange('bb') + wrapper.find('.search').simulate('change', { target: { value: 'bb' } }) triggerOnKeyboardKeyDown(wrapper, ['b', 'ArrowDown', 'ArrowDown', 'ArrowDown']) t.deepEqual(wrapper.find('li.focused').text(), 'bbb 1') }) -test('can navigate with keepTreOnSearch on keyboardNavigation', t => { +test('can navigate with keepTreeOnSearch on keyboardNavigation', t => { const wrapper = mount() - wrapper.instance().onInputChange('bb') + wrapper.find('.search').simulate('focus') + wrapper.find('.search').simulate('change', { target: { value: 'bb' } }) triggerOnKeyboardKeyDown(wrapper, ['b', 'ArrowDown', 'ArrowDown', 'ArrowDown']) t.deepEqual(wrapper.find('li.focused').text(), 'bbb 1') t.true(wrapper.find('#c1').exists()) @@ -115,21 +116,21 @@ test('can navigate with keepTreOnSearch on keyboardNavigation', t => { test('can delete tags on empty search input with backspace on keyboardNavigation', t => { const data = [{ ...node('a', 'a'), checked: true }, { ...node('b', 'b'), checked: true }] const wrapper = mount() - wrapper.instance().searchInput.value = 'x' + wrapper.find('.search').getDOMNode().value = 'x' triggerOnKeyboardKeyDown(wrapper, 'Backspace') - t.deepEqual(wrapper.state().tags.length, 2) + t.deepEqual(wrapper.find('.tag').length, 2) - wrapper.instance().searchInput.value = '' + wrapper.find('.search').getDOMNode().value = '' triggerOnKeyboardKeyDown(wrapper, 'Backspace') - t.deepEqual(wrapper.state().tags.length, 1) + t.deepEqual(wrapper.find('.tag').length, 1) triggerOnKeyboardKeyDown(wrapper, 'Backspace') - t.deepEqual(wrapper.state().tags.length, 0) + t.deepEqual(wrapper.find('.tag').length, 0) }) test('can select with enter on keyboardNavigation', t => { const wrapper = mount() triggerOnKeyboardKeyDown(wrapper, ['ArrowDown', 'ArrowDown', 'Enter']) - t.deepEqual(wrapper.state().tags.length, 1) + t.deepEqual(wrapper.find('.tag').length, 1) }) test('can delete tags with backspace/delete on keyboardNavigation', t => { @@ -141,9 +142,9 @@ test('can delete tags with backspace/delete on keyboardNavigation', t => { nativeEvent: { stopImmediatePropagation: spy() }, } wrapper.find('#a_tag > .tag-remove').simulate('keyDown', { ...event, key: 'Backspace' }) - t.deepEqual(wrapper.state().tags.length, 1) + t.deepEqual(wrapper.find('.tag').length, 1) wrapper.find('#b_tag > .tag-remove').simulate('keyUp', { ...event, key: 'Delete' }) - t.deepEqual(wrapper.state().tags.length, 0) + t.deepEqual(wrapper.find('.tag').length, 0) }) test('remembers current focus between prop updates', t => { @@ -152,14 +153,22 @@ test('remembers current focus between prop updates', t => { triggerOnKeyboardKeyDown(wrapper, ['ArrowDown']) t.deepEqual(wrapper.find('li.focused').text(), 'ccc 1') wrapper.setProps({ data: tree }) - wrapper.instance().handleClick() + wrapper.update() + wrapper.find('.search').simulate('focus') t.deepEqual(wrapper.find('li.focused').text(), 'ccc 1') }) test('should set current focus as selected on tab out for simpleSelect', t => { const wrapper = mount() + wrapper.find('.search').simulate('focus') triggerOnKeyboardKeyDown(wrapper, ['ArrowDown', 'ArrowRight', 'ArrowRight', 'Tab']) - t.deepEqual(wrapper.state().tags[0].label, 'ccc 1') + t.deepEqual( + wrapper + .find('.tag') + .first() + .prop('aria-label'), + 'ccc 1' + ) }) test('should scroll on keyboard navigation', t => { @@ -227,17 +236,16 @@ keyDownTests.forEach(testArgs => { test(`Key code ${testArgs.keyCode} ${testArgs.expected ? 'can' : "can't"} open dropdown on keyDown`, t => { const wrapper = mount() const trigger = wrapper.find('.dropdown-trigger') - trigger.instance().focus() + trigger.getDOMNode().focus() trigger.simulate('keyDown', { key: 'mock', keyCode: testArgs.keyCode }) - t.is(wrapper.state().showDropdown, testArgs.expected) + t.is(wrapper.exists('.dropdown-content'), testArgs.expected) }) }) test(`Key event should not trigger if not focused/active element`, t => { const wrapper = mount() const trigger = wrapper.find('.dropdown-trigger') - const input = wrapper.find('.search') - input.instance().focus() + wrapper.find('.search').simulate('focus') trigger.simulate('keyDown', { key: 'mock', keyCode: 13 }) - t.is(wrapper.state().showDropdown, false) + t.is(wrapper.exists('.dropdown-content'), false) }) diff --git a/src/index.test.js b/src/index.test.js index 30185ed3..c2e70a86 100644 --- a/src/index.test.js +++ b/src/index.test.js @@ -24,6 +24,8 @@ const node0 = { actions: [action], } +const nativeEvent = { stopImmediatePropagation: spy() } + test.beforeEach(t => { t.context.tree = [ { @@ -95,8 +97,12 @@ test('always shows dropdown with inline search Input', t => { test('keeps dropdown open for showDropdown: always', t => { const { tree } = t.context const wrapper = mount() - wrapper.instance().handleClick() - t.true(wrapper.state().showDropdown) + wrapper.find('.search').simulate('click') + t.true(wrapper.exists('.dropdown-content')) + const event = new MouseEvent('click', { bubbles: true, cancelable: true }) + global.document.dispatchEvent(event) + wrapper.update() + t.true(wrapper.exists('.dropdown-content')) }) test('notifies on action', t => { @@ -119,16 +125,18 @@ test('notifies on action without onAction handler', t => { test('notifies on node toggle', t => { const handler = spy() const { tree } = t.context - const wrapper = shallow() - wrapper.instance().onNodeToggle(node0._id) + const wrapper = mount( + + ) + wrapper.find(`#${node0._id}_li .toggle`).simulate('click', { nativeEvent }) t.true(handler.calledWithExactly({ ...node0, expanded: true })) }) test('notifies on checkbox change', t => { const handler = spy() const { tree } = t.context - const wrapper = shallow() - wrapper.instance().onCheckboxChange(node0._id, true) + const wrapper = mount() + wrapper.find(`input#${node0._id}`).simulate('change', { target: { checked: true }, nativeEvent }) t.true( handler.calledWithExactly({ ...node0, _focused: true, checked: true }, [ { ...node0, _focused: true, checked: true }, @@ -139,25 +147,26 @@ test('notifies on checkbox change', t => { test('notifies on tag removal', t => { const handler = spy() const { tree } = t.context - const wrapper = shallow() - wrapper.instance().onTagRemove(node0._id) + const wrapper = mount() + wrapper.find(`input#${node0._id}`).simulate('change', { target: { checked: true }, nativeEvent }) + wrapper.find(`#${node0._id}_button`).simulate('click', { nativeEvent }) t.true(handler.calledWithExactly({ ...node0, _focused: true, checked: false }, [])) }) test('sets search mode on input change', t => { const { tree } = t.context - const wrapper = shallow() - wrapper.instance().onInputChange('it') - t.true(wrapper.state().searchModeOn) + const wrapper = mount() + wrapper.find('.search').simulate('click') + wrapper.find('.search').simulate('change', { target: { value: 'item1-1-1' } }) + t.is(wrapper.find('.node').length, 1) }) test('hides dropdown onChange for simpleSelect', t => { const { tree } = t.context const wrapper = mount() - wrapper.instance().onCheckboxChange(node0._id, true) - t.false(wrapper.state().searchModeOn) - t.false(wrapper.state().allNodesHidden) - t.false(wrapper.state().showDropdown) + t.true(wrapper.exists('.dropdown-content')) + wrapper.find(`input#${node0._id}`).simulate('change', { target: { checked: true }, nativeEvent }) + t.false(wrapper.exists('.dropdown-content')) }) test('keeps dropdown open onChange for simpleSelect and keepOpenOnSelect', t => { @@ -165,48 +174,49 @@ test('keeps dropdown open onChange for simpleSelect and keepOpenOnSelect', t => const wrapper = mount( ) - wrapper.instance().onCheckboxChange(node0._id, true) - t.true(wrapper.state().showDropdown) + t.true(wrapper.exists('.dropdown-content')) + wrapper.find(`input#${node0._id}`).simulate('change', { target: { checked: true }, nativeEvent }) + t.true(wrapper.exists('.dropdown-content')) }) test('clears input onChange for clearSearchOnChange', t => { const { tree } = t.context - const wrapper = mount() - wrapper.instance().onInputChange('it') - wrapper.instance().onCheckboxChange(node0._id, true) - t.false(wrapper.state().searchModeOn) - t.false(wrapper.state().allNodesHidden) + const wrapper = mount() + wrapper.find('.search').getDOMNode().value = 'it' + wrapper.find(`input#${node0._id}`).simulate('change', { target: { checked: true }, nativeEvent }) + t.is(wrapper.find('.search').getDOMNode().value, '') }) test('toggles dropdown', t => { const { tree } = t.context const wrapper = mount() - wrapper.instance().handleClick() - t.true(wrapper.state().showDropdown) - wrapper.instance().handleClick() - t.false(wrapper.state().showDropdown) + wrapper.find('.search').simulate('click') + t.true(wrapper.exists('.dropdown-content')) + wrapper.find('.search').simulate('click') + t.false(wrapper.exists('.dropdown-content')) }) test('keeps dropdown open on props update', t => { const { tree } = t.context const wrapper = mount() - wrapper.instance().handleClick() - t.true(wrapper.state().showDropdown) + wrapper.find('.search').simulate('click') + t.true(wrapper.exists('.dropdown-content')) wrapper.setProps({ data: tree }) - t.true(wrapper.state().showDropdown) + t.true(wrapper.exists('.dropdown-content')) }) test('opens dropdown on props update with show intention', t => { const { tree } = t.context const wrapper = mount() - t.false(wrapper.state().showDropdown) + t.false(wrapper.exists('.dropdown-content')) wrapper.setProps({ data: tree, showDropdown: 'initial' }) - t.true(wrapper.state().showDropdown) - wrapper.instance().handleClick() - t.false(wrapper.state().showDropdown) + wrapper.update() + t.true(wrapper.exists('.dropdown-content')) + wrapper.find('.search').simulate('click') + t.false(wrapper.exists('.dropdown-content')) wrapper.setProps({ data: tree, showDropdown: 'always' }) - wrapper.instance().handleClick() - t.true(wrapper.state().showDropdown) + wrapper.find('.search').simulate('click') + t.true(wrapper.exists('.dropdown-content')) }) test('sets unique ids on dropdowns', t => { @@ -228,39 +238,48 @@ test("doesn't toggle dropdown if it's disabled", t => { test('keeps dropdown active on focus', t => { const { tree } = t.context - const wrapper = shallow() - wrapper.instance().onInputFocus() - t.true(wrapper.instance().keepDropdownActive) + const wrapper = mount() + wrapper.find('.search').simulate('click') + t.true(wrapper.exists('.dropdown-content')) + wrapper.find(`input#${node0._id}`).simulate('change', { target: { checked: true }, nativeEvent }) + wrapper.find('.search').simulate('focus') + wrapper.find('.search').simulate('click') + t.true(wrapper.exists('.dropdown-content')) }) test('deactivates dropdown active on blur', t => { const { tree } = t.context - const wrapper = shallow() - wrapper.instance().onInputBlur() - t.false(wrapper.instance().keepDropdownActive) + const wrapper = mount() + wrapper.find('.search').simulate('click') + t.true(wrapper.exists('.dropdown-content')) + wrapper.find(`input#${node0._id}`).simulate('change', { target: { checked: true }, nativeEvent }) + wrapper.find('.search').simulate('focus') + wrapper.find('.search').simulate('click') + wrapper.find('.search').simulate('blur') + wrapper.find('.search').simulate('keydown', { key: 'Tab' }) + t.false(wrapper.exists('.dropdown-content')) }) test('detects click outside', t => { const { tree } = t.context const wrapper = mount() - const handleOutsideClick = spy(wrapper.instance(), 'handleOutsideClick') - wrapper.instance().handleClick() - t.true(wrapper.state().showDropdown) + wrapper.find('.search').simulate('click') + t.true(wrapper.exists('.dropdown-content')) const event = new MouseEvent('click', { bubbles: true, cancelable: true }) global.document.dispatchEvent(event) - t.true(handleOutsideClick.calledOnce) - t.false(wrapper.state().showDropdown) + wrapper.update() + t.false(wrapper.exists('.dropdown-content')) }) test('detects click inside', t => { const { tree } = t.context const wrapper = mount() - wrapper.instance().handleClick() - t.true(wrapper.state().showDropdown) + wrapper.find('.search').simulate('click') + t.true(wrapper.exists('.dropdown-content')) const checkboxItem = wrapper.getDOMNode().getElementsByClassName('checkbox-item')[0] const event = new MouseEvent('click', { @@ -270,9 +289,10 @@ test('detects click inside', t => { target: checkboxItem, }) Object.defineProperty(event, 'target', { value: checkboxItem, enumerable: true }) - wrapper.instance().handleOutsideClick(event) + global.document.dispatchEvent(event) - t.true(wrapper.state().showDropdown) + wrapper.update() + t.true(wrapper.exists('.dropdown-content')) }) test('detects click outside when other dropdown instance', t => { @@ -280,8 +300,8 @@ test('detects click outside when other dropdown instance', t => { const wrapper1 = mount() const wrapper2 = mount() - wrapper1.instance().handleClick() - t.true(wrapper1.state().showDropdown) + wrapper1.find('.search').simulate('click') + t.true(wrapper1.exists('.dropdown-content')) const searchInput = wrapper2.getDOMNode().getElementsByClassName('search')[0] const event = new MouseEvent('click', { @@ -291,9 +311,10 @@ test('detects click outside when other dropdown instance', t => { target: searchInput, }) Object.defineProperty(event, 'target', { value: searchInput, enumerable: true }) - wrapper1.instance().handleOutsideClick(event) + global.document.dispatchEvent(event) - t.false(wrapper1.state().showDropdown) + wrapper1.update() + t.false(wrapper1.exists('.dropdown-content')) }) test('adds aria-labelledby when label contains # to search input', t => { @@ -326,8 +347,22 @@ test('appends selected tags to aria-labelledby with text label', t => { t.deepEqual(wrapper.find('.dropdown-trigger').prop('aria-label'), 'hello world') }) +test('default tabIndex value is 0', t => { + const { tree } = t.context + tree[0].checked = true + const wrapper = mount() + t.deepEqual(wrapper.find('.dropdown-trigger').prop('tabIndex'), 0) +}) + +test('set tabIndex value', t => { + const { tree } = t.context + tree[0].checked = true + const wrapper = mount() + t.deepEqual(wrapper.find('.dropdown-trigger').prop('tabIndex'), 5) +}) + test('select correct focused node when using external state data container', t => { - let data = [ + const data = [ { label: 'All data', value: '0', @@ -339,7 +374,7 @@ test('select correct focused node when using external state data container', t = checked: false, }, ] - const wrapper = mount() + const wrapper = mount() const nodeAllData = { _id: `${dropdownId}-0`, _depth: 0, @@ -348,8 +383,8 @@ test('select correct focused node when using external state data container', t = children: undefined, actions: [action], } - wrapper.instance().onCheckboxChange(nodeAllData._id, true) - //simulate external change to the data props. + wrapper.find(`input#${nodeAllData._id}`).simulate('change', { target: { checked: true }, nativeEvent }) + // simulate external change to the data props. wrapper.setProps({ data: [ { @@ -364,7 +399,7 @@ test('select correct focused node when using external state data container', t = }, ], }) - t.deepEqual(wrapper.state().currentFocus, nodeAllData._id) + t.deepEqual(wrapper.find('.focused').prop('id'), `${nodeAllData._id}_li`) }) test('should not scroll on select', t => { diff --git a/src/input/index.js b/src/input/index.js index 5b560861..7856d684 100644 --- a/src/input/index.js +++ b/src/input/index.js @@ -1,5 +1,5 @@ import PropTypes from 'prop-types' -import React, { memo } from 'react' +import React, { memo, forwardRef } from 'react' import { getAriaLabel } from '../a11y' import { debounce } from '../utils' @@ -14,9 +14,8 @@ function handleChange(onInputChange) { } } -const Input = props => { +const Input = forwardRef((props, ref) => { const { - inputRef, texts = {}, onFocus, onBlur, @@ -25,14 +24,15 @@ const Input = props => { onKeyDown, activeDescendant, onInputChange, + inlineSearchInput, } = props return ( { {...getAriaLabel(texts.label)} /> ) -} +}) Input.propTypes = { texts: PropTypes.shape({ @@ -56,10 +56,11 @@ Input.propTypes = { onBlur: PropTypes.func, onTagRemove: PropTypes.func, onKeyDown: PropTypes.func, - inputRef: PropTypes.func, + inputRef: PropTypes.shape({ current: PropTypes.elementType }), disabled: PropTypes.bool, readOnly: PropTypes.bool, activeDescendant: PropTypes.string, + inlineSearchInput: PropTypes.bool, } export default memo(Input) diff --git a/src/input/index.test.js b/src/input/index.test.js index 66c56c05..47dfae58 100644 --- a/src/input/index.test.js +++ b/src/input/index.test.js @@ -17,6 +17,12 @@ test('renders placeholder', t => { t.snapshot(wrapper) }) +test('renders inline search placeholder', t => { + const placeholderText = 'Search something' + const wrapper = toJson(shallow()) + t.snapshot(wrapper) +}) + test('raises onchange', t => { const onChange = spy() const wrapper = shallow() diff --git a/src/tags/index.js b/src/tags/index.js index 2a04d096..0a0c70a9 100644 --- a/src/tags/index.js +++ b/src/tags/index.js @@ -1,4 +1,4 @@ -import React, { PureComponent } from 'react' +import React from 'react' import PropTypes from 'prop-types' import Tag from '../tag' import { getDataset } from '../utils' @@ -26,34 +26,31 @@ const getTags = (tags = [], onDelete, readOnly, disabled, labelRemove) => ) }) -class Tags extends PureComponent { - static propTypes = { - tags: PropTypes.array, - onTagRemove: PropTypes.func, - readOnly: PropTypes.bool, - disabled: PropTypes.bool, - texts: PropTypes.object, - children: PropTypes.node, - } +const Tags = ({ tags, onTagRemove, texts = {}, disabled, readOnly, children }) => { + const lastItem = children || {texts.placeholder || 'Choose...'} - render() { - const { tags, onTagRemove, texts = {}, disabled, readOnly, children } = this.props - const lastItem = children || {texts.placeholder || 'Choose...'} - - return ( -
      - {getTags(tags, onTagRemove, readOnly, disabled, texts.labelRemove)} -
    • {lastItem}
    • -
    - ) - } + return ( +
      + {getTags(tags, onTagRemove, readOnly, disabled, texts.labelRemove)} +
    • {lastItem}
    • +
    + ) } export const tagType = { _id: PropTypes.string, label: PropTypes.string, tagClassName: PropTypes.string, - dataset: PropTypes.arrayOf(PropTypes.objectOf(PropTypes.any)), + dataset: PropTypes.objectOf(PropTypes.string), +} + +Tags.propTypes = { + tags: PropTypes.arrayOf(PropTypes.shape(tagType)), + onTagRemove: PropTypes.func, + readOnly: PropTypes.bool, + disabled: PropTypes.bool, + texts: PropTypes.objectOf(PropTypes.string), + children: PropTypes.node, } export default Tags diff --git a/src/tree-manager/tests/radioSelect.test.js b/src/tree-manager/tests/radioSelect.test.js index e9fe8e4d..5acf0bbd 100644 --- a/src/tree-manager/tests/radioSelect.test.js +++ b/src/tree-manager/tests/radioSelect.test.js @@ -1,5 +1,6 @@ import test from 'ava' import React from 'react' +import { spy } from 'sinon' import { mount } from 'enzyme' import TreeManager from '..' import DropdownTreeSelect from '../..' @@ -16,18 +17,21 @@ test('should render radio inputs with shared name', t => { test('hides dropdown onChange for radioSelect', t => { const wrapper = mount() - wrapper.instance().onCheckboxChange('nodeA', true) - t.false(wrapper.state().searchModeOn) - t.false(wrapper.state().allNodesHidden) - t.false(wrapper.state().showDropdown) + t.true(wrapper.exists('.dropdown-content')) + wrapper + .find('input#nodeA') + .simulate('change', { target: { checked: true }, nativeEvent: { stopImmediatePropagation: spy() } }) + t.false(wrapper.exists('.dropdown-content')) }) test('keeps dropdown open onChange for radioSelect and keepOpenOnSelect', t => { const wrapper = mount( ) - wrapper.instance().onCheckboxChange('nodeA', true) - t.true(wrapper.state().showDropdown) + wrapper + .find('input#nodeA') + .simulate('change', { target: { checked: true }, nativeEvent: { stopImmediatePropagation: spy() } }) + t.true(wrapper.exists('.dropdown-content')) }) test('should deselect previous node', t => { diff --git a/src/tree-node/toggle.js b/src/tree-node/toggle.js index 767ce1ec..6832287e 100644 --- a/src/tree-node/toggle.js +++ b/src/tree-node/toggle.js @@ -1,46 +1,36 @@ import PropTypes from 'prop-types' -import React, { PureComponent } from 'react' - -class Toggle extends PureComponent { - static propTypes = { - expanded: PropTypes.bool, - isLeaf: PropTypes.bool, - onNodeToggle: PropTypes.func, - id: PropTypes.string, - } +import React from 'react' + +const Toggle = props => { + const { expanded, isLeaf, onNodeToggle, id } = props - onToggle = e => { + const onToggle = e => { e.stopPropagation() e.nativeEvent.stopImmediatePropagation() - this.props.onNodeToggle(this.props.id) + onNodeToggle(id) } - onKeyDown = e => { + const onKeyDown = e => { if (e.key === 'Enter' || e.keyCode === 32) { - this.props.onNodeToggle(this.props.id) + onNodeToggle(id) e.preventDefault() } } - render() { - const { expanded, isLeaf } = this.props - const toggleCx = ['toggle', expanded && 'expanded', !expanded && 'collapsed'].filter(Boolean).join(' ') - - if (isLeaf) { - return - } + const toggleCx = ['toggle', expanded && 'expanded', !expanded && 'collapsed'].filter(Boolean).join(' ') - return ( - - ) + if (isLeaf) { + return } + + return +} + +Toggle.propTypes = { + expanded: PropTypes.bool, + isLeaf: PropTypes.bool, + onNodeToggle: PropTypes.func, + id: PropTypes.string, } export default Toggle diff --git a/src/tree/index.js b/src/tree/index.js index 504bb05f..6d4bf5ce 100644 --- a/src/tree/index.js +++ b/src/tree/index.js @@ -1,6 +1,6 @@ import InfiniteScroll from 'react-infinite-scroll-component' import PropTypes from 'prop-types' -import React, { Component } from 'react' +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import TreeNode from '../tree-node' import { findIndex } from '../utils' @@ -14,63 +14,50 @@ const shouldRenderNode = (node, searchModeOn, data) => { return !parent || parent.expanded } -class Tree extends Component { - static defaultProps = { - pageSize: 100, - } - - constructor(props) { - super(props) - - this.currentPage = 1 - this.computeInstanceProps(props, true) - - this.state = { - items: this.allVisibleNodes.slice(0, this.props.pageSize), - } - } - - UNSAFE_componentWillReceiveProps(nextProps) { - const { activeDescendant } = nextProps - const hasSameActiveDescendant = activeDescendant === this.props.activeDescendant - this.computeInstanceProps(nextProps, !hasSameActiveDescendant) - this.setState({ items: this.allVisibleNodes.slice(0, this.currentPage * this.props.pageSize) }) - } - - componentDidMount = () => { - this.setState({ scrollableTarget: this.node.parentNode }) - } - - computeInstanceProps = (props, checkActiveDescendant) => { - this.allVisibleNodes = this.getNodes(props) - this.totalPages = Math.ceil(this.allVisibleNodes.length / this.props.pageSize) - if (checkActiveDescendant && props.activeDescendant) { - const currentId = props.activeDescendant.replace(/_li$/, '') - let focusIndex = findIndex(this.allVisibleNodes, n => n.key === currentId) + 1 - this.currentPage = focusIndex > 0 ? Math.ceil(focusIndex / this.props.pageSize) : 1 - } - } - - getNodes = props => { - const { - data, - keepTreeOnSearch, - keepChildrenOnSearch, - searchModeOn, - mode, - showPartiallySelected, - readOnly, - onAction, - onChange, - onCheckboxChange, - onNodeToggle, - activeDescendant, - clientId, - } = props - const items = [] - data.forEach(node => { - if (shouldRenderNode(node, searchModeOn, data)) { - items.push( +const Tree = ({ + data, + keepTreeOnSearch, + keepChildrenOnSearch, + searchModeOn, + mode, + showPartiallySelected, + readOnly, + onAction, + onChange, + onCheckboxChange, + onNodeToggle, + activeDescendant, + clientId, + pageSize = 100, +}) => { + const [items, setItems] = useState([]) + const currentPage = useRef(1) + const totalPages = useRef(0) + const prevActiveDescendant = useRef() + const firstRender = useRef(true) + const [scrollableTarget, setScrollableTarget] = useState() + + const dependencies = [ + activeDescendant, + clientId, + keepChildrenOnSearch, + keepTreeOnSearch, + mode, + onAction, + onChange, + onCheckboxChange, + onNodeToggle, + readOnly, + searchModeOn, + showPartiallySelected, + JSON.stringify([...data.values()]), + ] + + const allVisibleNodes = useMemo( + () => + [...data.values()] + .filter(node => shouldRenderNode(node, searchModeOn, data)) + .map(node => ( - ) + )), + // eslint-disable-next-line react-hooks/exhaustive-deps + dependencies + ) + + const computeInstanceProps = useCallback( + checkActiveDescendant => { + totalPages.current = Math.ceil(allVisibleNodes.length / pageSize) + if (checkActiveDescendant && activeDescendant) { + const currentId = activeDescendant.replace(/_li$/, '') + const focusIndex = findIndex(allVisibleNodes, n => n.key === currentId) + 1 + currentPage.current = focusIndex > 0 ? Math.ceil(focusIndex / pageSize) : 1 } - }) - return items - } - - hasMore = () => this.currentPage < this.totalPages - - loadMore = () => { - this.currentPage = this.currentPage + 1 - const nextItems = this.allVisibleNodes.slice(0, this.currentPage * this.props.pageSize) - this.setState({ items: nextItems }) - } - - setNodeRef = node => { - this.node = node - } - - getAriaAttributes = () => { - const { mode } = this.props - - const attributes = { - /* https://www.w3.org/TR/wai-aria-1.1/#select - * https://www.w3.org/TR/wai-aria-1.1/#tree */ - role: mode === 'simpleSelect' ? 'listbox' : 'tree', - 'aria-multiselectable': /multiSelect|hierarchical/.test(mode), + }, + [activeDescendant, allVisibleNodes, pageSize] + ) + + useEffect(() => { + const hasSameActiveDescendant = activeDescendant === prevActiveDescendant.current + computeInstanceProps(!hasSameActiveDescendant || firstRender.current) + firstRender.current = false + prevActiveDescendant.current = activeDescendant + setItems(allVisibleNodes.slice(0, currentPage.current * pageSize)) + }, [activeDescendant, allVisibleNodes, computeInstanceProps, pageSize]) + + const getAriaAttributes = () => ({ + /* https://www.w3.org/TR/wai-aria-1.1/#select + * https://www.w3.org/TR/wai-aria-1.1/#tree */ + role: mode === 'simpleSelect' ? 'listbox' : 'tree', + 'aria-multiselectable': /multiSelect|hierarchical/.test(mode), + }) + + const loadMore = useCallback(() => { + currentPage.current += 1 + const nextItems = allVisibleNodes.slice(0, currentPage.current * pageSize) + setItems(nextItems) + }, [allVisibleNodes, pageSize]) + + const setNodeRef = node => { + if (node) { + setScrollableTarget(node.parentNode) } - - return attributes } - render() { - const { searchModeOn } = this.props - - return ( -
      - {this.state.scrollableTarget && ( - Loading...} - scrollableTarget={this.state.scrollableTarget} - > - {this.state.items} - - )} -
    - ) - } + return ( +
      + {scrollableTarget && ( + Loading...} + scrollableTarget={scrollableTarget} + > + {items} + + )} +
    + ) } Tree.propTypes = { - data: PropTypes.object, + data: PropTypes.instanceOf(Map), keepTreeOnSearch: PropTypes.bool, keepChildrenOnSearch: PropTypes.bool, searchModeOn: PropTypes.bool, diff --git a/src/tree/index.test.js b/src/tree/index.test.js index 7aace795..249f3fdf 100644 --- a/src/tree/index.test.js +++ b/src/tree/index.test.js @@ -1,11 +1,10 @@ import test from 'ava' import React from 'react' -import { shallow, mount } from 'enzyme' -import toJson from 'enzyme-to-json' +import { mount } from 'enzyme' import TreeManager from '../tree-manager' import Tree from './index' -test.skip('renders tree nodes when search mode is on', t => { +test('renders tree nodes when search mode is on', t => { const tree = [ { label: 'item1', @@ -40,12 +39,16 @@ test.skip('renders tree nodes when search mode is on', t => { ], }, ] - const treeManager = new TreeManager(tree) - const wrapper = shallow() - t.snapshot(toJson(wrapper)) + + const treeManager = new TreeManager({ data: tree }) + const wrapper = mount() + + treeManager.tree.forEach(node => { + t.true(wrapper.exists(`input[value="${node.value}"]`)) + }) }) -test.skip('renders only expanded tree nodes when search mode is off', t => { +test('renders only expanded tree nodes when search mode is off', t => { const tree = [ { label: 'item1', @@ -120,8 +123,31 @@ test.skip('renders only expanded tree nodes when search mode is off', t => { }, ] - const treeManager = new TreeManager(tree) - const wrapper = mount() + const treeManager = new TreeManager({ data: tree }) + const wrapper = mount() + + treeManager.tree.forEach(node => { + t.deepEqual(wrapper.exists(`input[value="${node.value}"]`), node.className === 'should-be-rendered') + }) +}) + +test('updates correctly the list when the activeDescendant is on another page', t => { + const tree = [ + { + label: 'item1', + value: 'value1', + }, + { + label: 'item2', + value: 'value2', + }, + ] + + const treeManager = new TreeManager({ data: tree }) + const wrapper = mount() - t.snapshot(toJson(wrapper)) + t.deepEqual(wrapper.find('li').length, 1) + wrapper.setProps({ activeDescendant: '1_li' }) + wrapper.simulate('scroll', { target: { scrollTop: -20 } }) + t.deepEqual(wrapper.find('li').length, 2) }) diff --git a/src/trigger/index.js b/src/trigger/index.js index 8c50780d..31805577 100644 --- a/src/trigger/index.js +++ b/src/trigger/index.js @@ -1,11 +1,11 @@ import PropTypes from 'prop-types' -import React, { memo, useCallback } from 'react' +import React, { memo, useCallback, useRef } from 'react' import { getAriaLabel } from '../a11y' import { getTagId } from '../tag' import { tagType } from '../tags' -const getAriaAttributes = ({ mode, texts, showDropdown, clientId, tags }) => { +const getAriaAttributes = ({ mode, texts, showDropdown, clientId, tags, tabIndex }) => { const triggerId = `${clientId}_trigger` const labelledBy = [] let labelAttributes = getAriaLabel(texts.label) @@ -23,7 +23,7 @@ const getAriaAttributes = ({ mode, texts, showDropdown, clientId, tags }) => { const attributes = { id: triggerId, role: 'button', - tabIndex: 0, + tabIndex, 'aria-haspopup': mode === 'simpleSelect' ? 'listbox' : 'tree', 'aria-expanded': showDropdown ? 'true' : 'false', ...labelAttributes, @@ -33,12 +33,13 @@ const getAriaAttributes = ({ mode, texts, showDropdown, clientId, tags }) => { } const Trigger = props => { - let triggerNode + const triggerNode = useRef() + const ref = useCallback(node => { - triggerNode = node + triggerNode.current = node }, []) - const { disabled, readOnly, mode, texts = {}, showDropdown, clientId, tags, onTrigger, children } = props + const { disabled, readOnly, mode, texts = {}, showDropdown, clientId, tags, onTrigger, children, tabIndex } = props const dropdownTriggerClassname = [ 'dropdown-trigger', 'arrow', @@ -56,7 +57,7 @@ const Trigger = props => { return } - if (e.key && triggerNode && triggerNode !== document.activeElement) { + if (e.key && triggerNode.current && triggerNode.current !== document.activeElement) { // Do not trigger if not activeElement return } @@ -82,6 +83,7 @@ const Trigger = props => { showDropdown, clientId, tags, + tabIndex, })} > {children} @@ -99,6 +101,7 @@ Trigger.propTypes = { clientId: PropTypes.string, tags: PropTypes.arrayOf(PropTypes.shape(tagType)), children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]), + tabIndex: PropTypes.number, } export default memo(Trigger) diff --git a/src/trigger/index.test.js b/src/trigger/index.test.js index 7f61c07f..342d3692 100644 --- a/src/trigger/index.test.js +++ b/src/trigger/index.test.js @@ -6,6 +6,6 @@ import toJson from 'enzyme-to-json' import Trigger from './index' test('Trigger component', t => { - const input = toJson(shallow()) + const input = toJson(shallow()) t.snapshot(input) }) diff --git a/src/utils/generateUID.js b/src/utils/generateUID.js index 7b197c47..2a9d3839 100644 --- a/src/utils/generateUID.js +++ b/src/utils/generateUID.js @@ -1,19 +1,13 @@ const generateUID = prefix => { - let counter = 1 + let counter = 0 - let map = new WeakMap() - - const get = item => { - if (!map.has(item)) { - // eslint-disable-next-line no-plusplus - map.set(item, counter++) - } - return `${prefix}${map.get(item)}` + const get = () => { + counter += 1 + return `${prefix}${counter}` } const reset = () => { - map = new WeakMap() - counter = 1 + counter = 0 } return { get, reset } diff --git a/types/react-dropdown-tree-select.d.ts b/types/react-dropdown-tree-select.d.ts index 844f579d..55f9239f 100644 --- a/types/react-dropdown-tree-select.d.ts +++ b/types/react-dropdown-tree-select.d.ts @@ -154,6 +154,8 @@ declare module 'react-dropdown-tree-select' { export interface TextProps { /** The text to display as placeholder on the search box. Defaults to Choose... */ placeholder?: string + /** The text to display as placeholder on the inline search box. Only applicable with the `inlineSearchInput` setting. Defaults to `Search...` */ + inlineSearchPlaceholder?: string /** The text to display when the search does not find results in the content list. Defaults to No matches found */ noMatches?: string /** Adds `aria-labelledby` to search input when input starts with `#`, adds `aria-label` to search input when label has value (not containing '#') */ diff --git a/yarn.lock b/yarn.lock index deadd884..f7bbe2fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -46,10 +46,11 @@ "@babel/highlight" "7.0.0-beta.51" "@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: - "@babel/highlight" "^7.0.0" + "@babel/highlight" "^7.10.4" "@babel/core@>=7.1.0", "@babel/core@^7.4.0": version "7.4.4" @@ -271,6 +272,11 @@ dependencies: "@babel/types" "^7.4.4" +"@babel/helper-validator-identifier@^7.10.4": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + "@babel/helper-wrap-function@7.0.0-beta.46": version "7.0.0-beta.46" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.46.tgz#d0fb836516d8a38ab80df1b434e4b76015be9035" @@ -313,12 +319,13 @@ esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" "@babel/parser@7.0.0-beta.51": @@ -494,6 +501,14 @@ "@babel/plugin-syntax-dynamic-import" "7.0.0-beta.46" "@babel/plugin-syntax-import-meta" "7.0.0-beta.46" +"@babel/runtime-corejs3@^7.10.2": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz#ffee91da0eb4c6dae080774e94ba606368e414f4" + integrity sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + "@babel/runtime@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" @@ -506,12 +521,12 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.4.5": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" - integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.4" "@babel/template@7.0.0-beta.46": version "7.0.0-beta.46" @@ -801,6 +816,13 @@ version "0.7.1" resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" +"@types/cheerio@^0.22.22": + version "0.22.23" + resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.23.tgz#74bcfee9c5ee53f619711dca953a89fe5cfa4eb4" + integrity sha512-QfHLujVMlGqcS/ePSf3Oe5hK3H8wi/yN2JYuxSB1U10VvW1fO3K8C+mURQesFYS1Hn7lspOsTT75SKq/XtydQg== + dependencies: + "@types/node" "*" + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -813,13 +835,19 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" "@types/node@*": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.0.tgz#d11813b9c0ff8aaca29f04cbc12817f4c7d656e5" + version "14.14.24" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.24.tgz#541c00e4f7c41c8f108bd5b045248b5224c62946" + integrity sha512-6BAlkS4seVjszhrwN0W1WabqWwuJwcYF36Z1rPPyQm80LGRKsIeUPdzI51TezXenjetFNy1gRTpuDn1NBg33LA== "@types/unist@*", "@types/unist@^2.0.0": version "2.0.3" @@ -1040,10 +1068,10 @@ acorn-jsx@^3.0.0: dependencies: acorn "^3.0.4" -acorn-jsx@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" - integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== +acorn-jsx@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== acorn-node@^1.3.0: version "1.8.2" @@ -1075,29 +1103,29 @@ acorn@^6.0.1, acorn@^6.0.5, acorn@^6.0.7: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" -acorn@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +acorn@^7.0.0, acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" -airbnb-prop-types@^2.13.2: - version "2.13.2" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.13.2.tgz#43147a5062dd2a4a5600e748a47b64004cc5f7fc" +airbnb-prop-types@^2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" + integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== dependencies: - array.prototype.find "^2.0.4" - function.prototype.name "^1.1.0" - has "^1.0.3" - is-regex "^1.0.4" - object-is "^1.0.1" + array.prototype.find "^2.1.1" + function.prototype.name "^1.1.2" + is-regex "^1.1.0" + object-is "^1.1.2" object.assign "^4.1.0" - object.entries "^1.1.0" + object.entries "^1.1.2" prop-types "^15.7.2" prop-types-exact "^1.2.0" - react-is "^16.8.6" + react-is "^16.13.1" ajv-errors@^1.0.0: version "1.0.1" @@ -1130,11 +1158,11 @@ ajv@^6.0.1, ajv@^6.1.0, ajv@^6.5.5, ajv@^6.9.1: uri-js "^4.2.2" ajv@^6.10.0, ajv@^6.10.2: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" @@ -1173,6 +1201,14 @@ ansi-escapes@^1.1.0: ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" ansi-regex@^2.0.0: version "2.1.1" @@ -1181,10 +1217,17 @@ ansi-regex@^2.0.0: 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-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== ansi-styles@^2.2.1: version "2.2.1" @@ -1193,9 +1236,17 @@ ansi-styles@^2.2.1: ansi-styles@^3.1.0, ansi-styles@^3.2.0, 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" +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" @@ -1243,15 +1294,17 @@ are-we-there-yet@~1.1.2: argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" arr-diff@^2.0.0: version "2.0.0" @@ -1282,6 +1335,7 @@ array-equal@^1.0.0: array-filter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= array-find-index@^1.0.1: version "1.0.2" @@ -1299,12 +1353,16 @@ array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" +array-includes@^3.1.1, array-includes@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" + integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + get-intrinsic "^1.0.1" + is-string "^1.0.5" array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" @@ -1333,19 +1391,31 @@ array.partial@^1.0.5: resolved "https://registry.yarnpkg.com/array.partial/-/array.partial-1.0.5.tgz#f514595aacbf6a99ea20bbcffbcacc10316f0d56" integrity sha512-nkHH1dU6JXrwppCqdUD5M1R85vihgBqhk9miq+3WFwwRayNY1ggpOT6l99PppqYQ1Hcjv2amFfUzhe25eAcYfA== -array.prototype.find@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" +array.prototype.find@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" + integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" + define-properties "^1.1.3" + es-abstract "^1.17.4" -array.prototype.flat@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz#812db8f02cad24d3fab65dd67eabe3b8903494a4" +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +array.prototype.flatmap@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== dependencies: - define-properties "^1.1.2" - es-abstract "^1.10.0" + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" function-bind "^1.1.1" arrify@^1.0.0, arrify@^1.0.1: @@ -1385,9 +1455,10 @@ assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" -ast-types-flow@0.0.7, ast-types-flow@^0.0.7: +ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= astq@2.3.6: version "2.3.6" @@ -1403,6 +1474,7 @@ astq@2.3.6: astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== asty@1.7.16: version "1.7.16" @@ -1562,11 +1634,15 @@ axe-core@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.2.2.tgz#b06d6e9ae4636d706068843272bfaeed3fe97362" -axobject-query@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" - dependencies: - ast-types-flow "0.0.7" +axe-core@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.1.tgz#70a7855888e287f7add66002211a423937063eaf" + integrity sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ== + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" @@ -2353,6 +2429,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" @@ -2416,9 +2493,10 @@ body-parser@1.18.3: raw-body "2.3.3" type-is "~1.6.16" -boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= boolify@^1.0.0: version "1.0.1" @@ -2443,6 +2521,7 @@ boxen@^1.2.1: 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" @@ -2640,6 +2719,14 @@ caching-transform@^1.0.0: mkdirp "^0.5.1" write-file-atomic "^1.1.4" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + call-matcher@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.1.0.tgz#23b2c1bc7a8394c8be28609d77ddbd5786680432" @@ -2686,6 +2773,7 @@ callsites@^2.0.0: callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^3.0.0: version "3.0.0" @@ -2789,11 +2877,20 @@ chalk@2.3.1: chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + 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" +chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-entities-html4@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.3.tgz#5ce6e01618e47048ac22f34f7f39db5c6fd679ef" @@ -2817,21 +2914,35 @@ chardet@^0.4.0: chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== check-types@^7.3.0: version "7.4.0" resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" -cheerio@^1.0.0-rc.2: - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.1" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash "^4.15.0" - parse5 "^3.0.1" +cheerio-select-tmp@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz#55bbef02a4771710195ad736d5e346763ca4e646" + integrity sha512-YYs5JvbpU19VYJyj+F7oYrIE2BOll1/hRU7rEy/5+v9BzkSo3bK81iAeeQEMI92vRIxz677m72UmJUiVwwgjfQ== + dependencies: + css-select "^3.1.2" + css-what "^4.0.0" + domelementtype "^2.1.0" + domhandler "^4.0.0" + domutils "^2.4.4" + +cheerio@^1.0.0-rc.3: + version "1.0.0-rc.5" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.5.tgz#88907e1828674e8f9fee375188b27dadd4f0fa2f" + integrity sha512-yoqps/VCaZgN4pfXtenwHROTp8NG6/Hlt4Jpz2FEP0ZJQ+ZUkVDd0hAPDNKhj3nakpfPt/CNs57yEtxD1bXQiw== + dependencies: + cheerio-select-tmp "^0.1.0" + dom-serializer "~1.2.0" + domhandler "^4.0.0" + entities "~2.1.0" + htmlparser2 "^6.0.0" + parse5 "^6.0.0" + parse5-htmlparser2-tree-adapter "^6.0.0" chokidar@^2.0.2, chokidar@^2.1.5: version "2.1.5" @@ -2928,9 +3039,17 @@ cli-cursor@^1.0.1: cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-spinners@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.1.0.tgz#22c34b4d51f573240885b201efda4e4ec9fff3c7" @@ -2950,8 +3069,14 @@ cli-truncate@^1.1.0: string-width "^2.0.0" cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== clipboardy@^1.2.2: version "1.2.3" @@ -3021,14 +3146,23 @@ collection-visit@^1.0.0: color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + 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: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -3085,10 +3219,15 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.14.1, commander@^2.18.0, commander@^2.19.0, commander@^2.9.0, commander@~2.20.0: +commander@^2.14.1, commander@^2.18.0, commander@^2.9.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commitizen@^2.9.6: version "2.10.1" resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-2.10.1.tgz#8c395def34a895f4e94952c2efc3c9eb4c3683bd" @@ -3136,6 +3275,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.4.7, concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@~1.6.0: version "1.6.2" @@ -3173,10 +3313,10 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -confusing-browser-globals@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" - integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== console-browserify@^1.1.0: version "1.1.0" @@ -3195,6 +3335,7 @@ constants-browserify@^1.0.0: contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= content-disposition@0.5.2: version "0.5.2" @@ -3433,6 +3574,11 @@ copy-webpack-plugin@^5.0.1: serialize-javascript "^1.7.0" webpack-log "^2.0.0" +core-js-pure@^3.0.0: + version "3.8.3" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.3.tgz#10e9e3b2592ecaede4283e8f3ad7020811587c02" + integrity sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA== + core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" @@ -3608,14 +3754,16 @@ css-loader@^0.28.0: postcss-value-parser "^3.3.0" source-list-map "^2.0.0" -css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" +css-select@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-3.1.2.tgz#d52cbdc6fee379fba97fb0d3925abbd18af2d9d8" + integrity sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA== dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" + boolbase "^1.0.0" + css-what "^4.0.0" + domhandler "^4.0.0" + domutils "^2.4.3" + nth-check "^2.0.0" css-selector-tokenizer@^0.7.0: version "0.7.1" @@ -3629,9 +3777,10 @@ css-unit-converter@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" +css-what@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" + integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== cssesc@^0.1.0: version "0.1.0" @@ -3729,9 +3878,10 @@ d@1: dependencies: es5-ext "^0.10.9" -damerau-levenshtein@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" +damerau-levenshtein@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== dargs@^4.0.1: version "4.1.0" @@ -3787,12 +3937,19 @@ debug@^3.0.0, debug@^3.0.1, debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@^4.0.0, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" dependencies: ms "^2.1.1" +debug@^4.0.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -3833,6 +3990,7 @@ deep-extend@^0.6.0: deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= default-require-extensions@^1.0.0: version "1.0.0" @@ -3846,9 +4004,10 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-properties@^1.1.2, define-properties@^1.1.3: +define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" @@ -3962,6 +4121,7 @@ dir-glob@^2.0.0, dir-glob@^2.2.2: discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= dlv@^1.1.0: version "1.1.2" @@ -3970,6 +4130,7 @@ dlv@^1.1.0: doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= dependencies: esutils "^2.0.2" isarray "^1.0.0" @@ -3977,6 +4138,7 @@ doctrine@1.5.0: doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" @@ -3987,20 +4149,36 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-serializer@0, dom-serializer@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1, dom-serializer@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" + integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + entities "^2.0.0" domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: +domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== domexception@^1.0.1: version "1.0.1" @@ -4011,23 +4189,34 @@ domexception@^1.0.1: domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== dependencies: domelementtype "1" -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" +domhandler@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" + integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== dependencies: - dom-serializer "0" - domelementtype "1" + domelementtype "^2.1.0" domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: dom-serializer "0" domelementtype "1" +domutils@^2.4.3, domutils@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3" + integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.0.1" + domhandler "^4.0.0" + dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" @@ -4108,9 +4297,20 @@ emittery@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.4.1.tgz#abe9d3297389ba424ac87e53d1c701962ce7433d" -emoji-regex@^7.0.1, emoji-regex@^7.0.2: +emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.0.tgz#a26da8e832b16a9753309f25e35e3c0efb9a066a" + integrity sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug== emojis-list@^2.0.0: version "2.1.0" @@ -4147,64 +4347,93 @@ enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" -entities@^1.1.1, entities@~1.1.1: +entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== enzyme-adapter-react-16@^1.11.2: - version "1.12.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.12.1.tgz#6a2d74c80559d35ac0a91ca162fa45f4186290cf" + version "1.15.6" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" + integrity sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g== dependencies: - enzyme-adapter-utils "^1.11.0" - object.assign "^4.1.0" - object.values "^1.1.0" + enzyme-adapter-utils "^1.14.0" + enzyme-shallow-equal "^1.0.4" + has "^1.0.3" + object.assign "^4.1.2" + object.values "^1.1.2" prop-types "^15.7.2" - react-is "^16.8.6" + react-is "^16.13.1" react-test-renderer "^16.0.0-0" - semver "^5.6.0" + semver "^5.7.0" -enzyme-adapter-utils@^1.11.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.12.0.tgz#96e3730d76b872f593e54ce1c51fa3a451422d93" +enzyme-adapter-utils@^1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz#afbb0485e8033aa50c744efb5f5711e64fbf1ad0" + integrity sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg== dependencies: - airbnb-prop-types "^2.13.2" - function.prototype.name "^1.1.0" - object.assign "^4.1.0" - object.fromentries "^2.0.0" + airbnb-prop-types "^2.16.0" + function.prototype.name "^1.1.3" + has "^1.0.3" + object.assign "^4.1.2" + object.fromentries "^2.0.3" prop-types "^15.7.2" - semver "^5.6.0" + semver "^5.7.1" -enzyme-to-json@^3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/enzyme-to-json/-/enzyme-to-json-3.3.5.tgz#f8eb82bd3d5941c9d8bc6fd9140030777d17d0af" +enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" + integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== dependencies: - lodash "^4.17.4" + has "^1.0.3" + object-is "^1.1.2" -enzyme@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.9.0.tgz#2b491f06ca966eb56b6510068c7894a7e0be3909" +enzyme-to-json@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/enzyme-to-json/-/enzyme-to-json-3.6.1.tgz#d60740950bc7ca6384dfe6fe405494ec5df996bc" + integrity sha512-15tXuONeq5ORoZjV/bUo2gbtZrN2IH+Z6DvL35QmZyKHgbY1ahn6wcnLd9Xv9OjiwbAXiiP8MRZwbZrCv1wYNg== dependencies: - array.prototype.flat "^1.2.1" - cheerio "^1.0.0-rc.2" - function.prototype.name "^1.1.0" + "@types/cheerio" "^0.22.22" + lodash "^4.17.15" + react-is "^16.12.0" + +enzyme@^3.9.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.11.0.tgz#71d680c580fe9349f6f5ac6c775bc3e6b7a79c28" + integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== + dependencies: + array.prototype.flat "^1.2.3" + cheerio "^1.0.0-rc.3" + enzyme-shallow-equal "^1.0.1" + function.prototype.name "^1.1.2" has "^1.0.3" - html-element-map "^1.0.0" - is-boolean-object "^1.0.0" - is-callable "^1.1.4" - is-number-object "^1.0.3" - is-regex "^1.0.4" - is-string "^1.0.4" + html-element-map "^1.2.0" + is-boolean-object "^1.0.1" + is-callable "^1.1.5" + is-number-object "^1.0.4" + is-regex "^1.0.5" + is-string "^1.0.5" is-subset "^0.1.1" lodash.escape "^4.0.1" lodash.isequal "^4.5.0" - object-inspect "^1.6.0" - object-is "^1.0.1" + object-inspect "^1.7.0" + object-is "^1.0.2" object.assign "^4.1.0" - object.entries "^1.0.4" - object.values "^1.0.4" - raf "^3.4.0" + object.entries "^1.1.1" + object.values "^1.1.1" + raf "^3.4.1" rst-selector-parser "^2.2.3" - string.prototype.trim "^1.1.2" + string.prototype.trim "^1.2.1" equal-length@^1.0.0: version "1.0.1" @@ -4226,20 +4455,47 @@ error-inject@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" -es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" +es-abstract@^1.17.0-next.1, es-abstract@^1.17.4: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== dependencies: - es-to-primitive "^1.2.0" + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.1" + is-regex "^1.1.1" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" @@ -4302,6 +4558,7 @@ escape-html@^1.0.3, escape-html@~1.0.3: escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, 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.8.1: version "1.12.0" @@ -4338,23 +4595,23 @@ escodegen@~1.9.0: optionalDependencies: source-map "~0.6.1" -eslint-config-airbnb-base@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz#8a7bcb9643d13c55df4dd7444f138bf4efa61e17" - integrity sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA== +eslint-config-airbnb-base@^14.2.1: + version "14.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" + integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== dependencies: - confusing-browser-globals "^1.0.7" - object.assign "^4.1.0" - object.entries "^1.1.0" + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.2" eslint-config-airbnb@^18.0.1: - version "18.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.0.1.tgz#a3a74cc29b46413b6096965025381df8fb908559" - integrity sha512-hLb/ccvW4grVhvd6CT83bECacc+s4Z3/AEyWQdIT2KeTsG9dR7nx1gs7Iw4tDmGKozCNHFn4yZmRm3Tgy+XxyQ== + version "18.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz#b7fe2b42f9f8173e825b73c8014b592e449c98d9" + integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg== dependencies: - eslint-config-airbnb-base "^14.0.0" - object.assign "^4.1.0" - object.entries "^1.1.0" + eslint-config-airbnb-base "^14.2.1" + object.assign "^4.1.2" + object.entries "^1.1.2" eslint-config-prettier@^6.4.0: version "6.4.0" @@ -4363,79 +4620,86 @@ eslint-config-prettier@^6.4.0: dependencies: get-stdin "^6.0.0" -eslint-import-resolver-node@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== dependencies: debug "^2.6.9" - resolve "^1.5.0" + resolve "^1.13.1" -eslint-module-utils@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" - integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw== +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== dependencies: - debug "^2.6.8" + debug "^2.6.9" pkg-dir "^2.0.0" eslint-plugin-import@^2.18.2: - version "2.18.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" - integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" has "^1.0.3" minimatch "^3.0.4" - object.values "^1.1.0" + object.values "^1.1.1" read-pkg-up "^2.0.0" - resolve "^1.11.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" eslint-plugin-jsx-a11y@^6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" - integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== + version "6.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== dependencies: - "@babel/runtime" "^7.4.5" - aria-query "^3.0.0" - array-includes "^3.0.3" + "@babel/runtime" "^7.11.2" + aria-query "^4.2.2" + array-includes "^3.1.1" ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" has "^1.0.3" - jsx-ast-utils "^2.2.1" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" eslint-plugin-prettier@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz#507b8562410d02a03f0ddc949c616f877852f2ba" - integrity sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA== + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== dependencies: prettier-linter-helpers "^1.0.0" eslint-plugin-react-hooks@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.1.2.tgz#1358d2acb2c5e02b7e90c37e611ac258a488e3a7" - integrity sha512-ZR+AyesAUGxJAyTFlF3MbzeVHAcQTFQt1fFVe5o0dzY/HFoj1dgQDMoIkiM+ltN/HhlHBYX4JpJwYonjxsyQMA== + version "2.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0" + integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== eslint-plugin-react@^7.16.0: - version "7.16.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz#9928e4f3e2122ed3ba6a5b56d0303ba3e41d8c09" - integrity sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug== + version "7.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" + integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.2.1" - object.entries "^1.1.0" - object.fromentries "^2.0.0" - object.values "^1.1.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + object.entries "^1.1.2" + object.fromentries "^2.0.2" + object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.12.0" + resolve "^1.18.1" + string.prototype.matchall "^4.0.2" eslint-scope@^3.7.1: version "3.7.3" @@ -4452,28 +4716,24 @@ eslint-scope@^4.0.0: estraverse "^4.1.1" eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: - eslint-visitor-keys "^1.0.0" - -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint@^4.0.0, eslint@^4.5.0: version "4.19.1" @@ -4519,9 +4779,9 @@ eslint@^4.0.0, eslint@^4.5.0: text-table "~0.2.0" eslint@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.5.1.tgz#828e4c469697d43bb586144be152198b91e96ed6" - integrity sha512-32h99BoLYStT1iq1v2P9uwpyznQ4M2jRiFB6acitKz52Gqn+vPaMDUTB1bYi1WN4Nquj2w+t+bimYUG83DC55A== + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -4530,19 +4790,19 @@ eslint@^6.5.1: debug "^4.0.1" doctrine "^3.0.0" eslint-scope "^5.0.0" - eslint-utils "^1.4.2" + eslint-utils "^1.4.3" eslint-visitor-keys "^1.1.0" - espree "^6.1.1" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^11.7.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.4.1" + inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" @@ -4551,7 +4811,7 @@ eslint@^6.5.1: minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" semver "^6.1.2" @@ -4581,13 +4841,13 @@ espree@^3.5.2, espree@^3.5.4: acorn "^5.5.0" acorn-jsx "^3.0.0" -espree@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de" - integrity sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ== +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== dependencies: - acorn "^7.0.0" - acorn-jsx "^5.0.2" + acorn "^7.1.1" + acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" esprima@^2.6.0: @@ -4601,6 +4861,7 @@ esprima@^3.1.3: esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== espurify@^1.6.0: version "1.8.1" @@ -4608,30 +4869,49 @@ espurify@^1.6.0: dependencies: core-js "^2.0.0" -esquery@^1.0.0, esquery@^1.0.1: +esquery@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" dependencies: estraverse "^4.0.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" + +estraverse@^4.0.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + estree-is-function@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/estree-is-function/-/estree-is-function-1.0.0.tgz#c0adc29806d7f18a74db7df0f3b2666702e37ad2" integrity sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA== esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" @@ -4807,8 +5087,9 @@ external-editor@^2.0.1, external-editor@^2.0.4: tmp "^0.0.33" external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -4848,10 +5129,17 @@ 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-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@^2.2.6: version "2.2.6" @@ -4865,12 +5153,14 @@ fast-glob@^2.2.6: micromatch "^3.1.10" 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" + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.4, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fast-memoize@^2.2.7: version "2.5.1" @@ -4906,6 +5196,14 @@ figures@^1.3.5, figures@^1.7.0: figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" @@ -5017,6 +5315,7 @@ find-up@^1.0.0: find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" @@ -5056,14 +5355,16 @@ flat-cache@^1.2.1: flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== dependencies: flatted "^2.0.0" rimraf "2.6.3" write "1.0.3" flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== flatten@^1.0.2: version "1.0.2" @@ -5160,6 +5461,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.7: version "1.2.9" @@ -5168,21 +5470,30 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327" +function.prototype.name@^1.1.2, function.prototype.name@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.3.tgz#0bb034bb308e7682826f215eb6b2ae64918847fe" + integrity sha512-H51qkbNSp8mtkJt+nyW1gyStBiKZxfRqySNUR99ylq6BPXHKI4SEvIlTKp4odLfjRKJV04DFWMU3G/YRlQOsag== dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - is-callable "^1.1.3" + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + functions-have-names "^1.2.1" functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +functions-have-names@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" + integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== g-status@^2.0.2: version "2.0.2" @@ -5214,6 +5525,24 @@ 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" +get-intrinsic@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" + integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" @@ -5357,9 +5686,9 @@ glob-parent@^3.1.0: path-dirname "^1.0.0" glob-parent@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" @@ -5378,7 +5707,7 @@ glob@7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" dependencies: @@ -5389,6 +5718,18 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@~7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" @@ -5454,10 +5795,17 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.0.1, globals@^11.1.0, globals@^11.7.0: +globals@^11.0.1, globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -5522,10 +5870,15 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" +graceful-fs@^4.1.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + "growl@~> 1.10.0": version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -5575,10 +5928,17 @@ 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-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-unicode@^2.0.0: version "2.0.1" @@ -5614,6 +5974,7 @@ has-values@^1.0.0: has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" @@ -5678,8 +6039,9 @@ hoopy@^0.1.2: resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== html-comment-regex@^1.1.0: version "1.1.2" @@ -5689,11 +6051,13 @@ html-element-attributes@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/html-element-attributes/-/html-element-attributes-1.3.1.tgz#9fa6a2e37e6b61790a303e87ddbbb9746e8c035f" -html-element-map@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.0.1.tgz#3c4fcb4874ebddfe4283b51c8994e7713782b592" +html-element-map@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.3.0.tgz#fcf226985d7111e6c2b958169312ec750d02f0d3" + integrity sha512-AqCt/m9YaiMwaaAyOPdq4Ga0cM+jdDWWGueUMkdROZcTeClaGpN0AQeyGchZhTegQoABmc6+IqH7oCR/8vhQYg== dependencies: array-filter "^1.0.0" + call-bind "^1.0.2" html-encoding-sniffer@^1.0.2: version "1.0.2" @@ -5709,7 +6073,7 @@ html-tags@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" -htmlparser2@^3.10.0, htmlparser2@^3.9.1, htmlparser2@^3.9.2: +htmlparser2@^3.10.0, htmlparser2@^3.9.2: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" dependencies: @@ -5720,6 +6084,16 @@ htmlparser2@^3.10.0, htmlparser2@^3.9.1, htmlparser2@^3.9.2: inherits "^2.0.1" readable-stream "^3.1.1" +htmlparser2@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.0.0.tgz#c2da005030390908ca4c91e5629e418e0665ac01" + integrity sha512-numTQtDZMoh78zJpaNdJ9MXb2cv5G3jwUoe3dMQODubZvLoGvTE/Ofp6sHvH8OGKcN/8A47pGLi/k58xHP/Tfw== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.4.4" + entities "^2.0.0" + http-assert@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878" @@ -5786,6 +6160,7 @@ iconv-lite@0.4.23: iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" @@ -5847,8 +6222,9 @@ import-fresh@^2.0.0: resolve-from "^3.0.0" import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -5891,6 +6267,7 @@ import-local@^2.0.0: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indent-string@^2.1.0: version "2.1.0" @@ -5913,18 +6290,24 @@ 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" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +inherits@2, inherits@^2.0.1, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" +inherits@2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -6010,25 +6393,34 @@ inquirer@^6.2.1: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^6.4.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== +inquirer@^7.0.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" through "^2.3.6" +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + interpret@^1.0.0, interpret@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -6089,6 +6481,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-arrayish@^0.3.1: version "0.3.2" @@ -6100,9 +6493,12 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-boolean-object@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93" +is-boolean-object@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" is-buffer@^1.1.4, is-buffer@^1.1.5: version "1.1.6" @@ -6112,9 +6508,10 @@ is-buffer@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" -is-callable@^1.1.3, is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" +is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== is-ci@^1.0.10: version "1.2.1" @@ -6128,6 +6525,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6141,8 +6545,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-decimal@^1.0.0: version "1.0.2" @@ -6215,6 +6620,12 @@ is-fullwidth-code-point@^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-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-function@^1.0.7: version "1.0.7" @@ -6235,6 +6646,7 @@ is-glob@^3.1.0: is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" @@ -6249,13 +6661,19 @@ is-installed-globally@^0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" -is-number-object@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799" +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== is-number@^2.1.0: version "2.1.0" @@ -6340,18 +6758,21 @@ is-primitive@^2.0.0: resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" +is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== dependencies: - has "^1.0.1" + call-bind "^1.0.2" + has-symbols "^1.0.1" is-regexp@^1.0.0: version "1.0.0" @@ -6369,13 +6790,15 @@ is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" -is-string@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64" +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== is-subset@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= is-supported-regexp-flag@^1.0.0: version "1.0.1" @@ -6388,10 +6811,11 @@ is-svg@^2.0.0: html-comment-regex "^1.1.0" is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.1" is-text-path@^1.0.0: version "1.0.1" @@ -6442,6 +6866,7 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 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= isnumeric@^0.2.0: version "0.2.0" @@ -6550,14 +6975,23 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.13.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" @@ -6627,6 +7061,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" @@ -6635,6 +7070,7 @@ json-schema@0.2.3: json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" @@ -6675,13 +7111,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" - integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== dependencies: - array-includes "^3.0.3" - object.assign "^4.1.0" + array-includes "^3.1.2" + object.assign "^4.1.2" just-extend@^4.0.2: version "4.0.2" @@ -6789,6 +7225,18 @@ koa@^2.4.1: type-is "^1.6.16" vary "^1.1.2" +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -6822,6 +7270,7 @@ leven@^2.1.0: levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -6909,6 +7358,7 @@ load-json-file@^1.0.0: load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -6949,6 +7399,7 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -6991,6 +7442,7 @@ lodash.difference@^4.3.0: lodash.escape@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" + integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= lodash.every@^4.6.0: version "4.6.0" @@ -7007,6 +7459,7 @@ lodash.flatten@^4.2.0: lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= lodash.get@^4.4.2: version "4.4.2" @@ -7015,6 +7468,7 @@ lodash.get@^4.4.2: lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= lodash.isfunction@^3.0.8: version "3.0.9" @@ -7090,7 +7544,7 @@ lodash@4.17.10: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== -lodash@4.17.11, lodash@^4.11.2, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: +lodash@4.17.11, lodash@^4.11.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" @@ -7098,10 +7552,10 @@ lodash@4.17.5: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" -lodash@^4.17.12, lodash@^4.17.14: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== log-driver@^1.2.7: version "1.2.7" @@ -7160,6 +7614,7 @@ longest@^1.0.1: loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" @@ -7487,8 +7942,9 @@ mime@^2.0.3, mime@^2.3.1: mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -7511,6 +7967,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: minimatch@^3.0.2, 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" @@ -7524,6 +7981,7 @@ minimist-options@^3.0.1: 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.1.x: version "1.1.3" @@ -7533,6 +7991,11 @@ minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -7572,19 +8035,27 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@^0.5.0, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" -moo@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e" +moo@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" + integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== move-concurrently@^1.0.1: version "1.0.1" @@ -7600,10 +8071,17 @@ 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.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multimatch@^3.0.0: version "3.0.0" @@ -7621,6 +8099,12 @@ mute-stream@0.0.6: mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== mz@^2.6.0: version "2.7.0" @@ -7678,16 +8162,17 @@ nanotiming@^7.2.0: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= nearley@^2.7.10: - version "2.16.0" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.16.0.tgz#77c297d041941d268290ec84b739d0ee297e83a7" + version "2.20.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== dependencies: commander "^2.19.0" - moo "^0.4.3" + moo "^0.5.0" railroad-diagrams "^1.0.0" randexp "0.4.6" - semver "^5.4.1" needle@^2.2.1: version "2.3.1" @@ -7712,6 +8197,7 @@ next-tick@^1.0.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.3.3: version "1.4.10" @@ -7882,11 +8368,12 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== dependencies: - boolbase "~1.0.0" + boolbase "^1.0.0" num2fraction@^1.2.2: version "1.2.2" @@ -7939,6 +8426,7 @@ oauth-sign@~0.9.0: object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-copy@^0.1.0: version "0.1.0" @@ -7948,22 +8436,28 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" +object-inspect@^1.7.0, object-inspect@^1.8.0, object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== object-inspect@~1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw== -object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" +object-is@^1.0.2, object-is@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" + integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" -object-keys@^1.0.11, object-keys@^1.0.12: +object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" @@ -7971,32 +8465,35 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" -object.entries@^1.0.4, object.entries@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" +object.entries@^1.1.1, object.entries@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" has "^1.0.3" -object.fromentries@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" +object.fromentries@^2.0.2, object.fromentries@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072" + integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw== dependencies: - define-properties "^1.1.2" - es-abstract "^1.11.0" - function-bind "^1.1.1" - has "^1.0.1" + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" object.omit@^2.0.0: version "2.0.1" @@ -8011,13 +8508,14 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.0.4, object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" +object.values@^1.1.1, object.values@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" has "^1.0.3" observable-to-promise@^0.5.0: @@ -8036,6 +8534,7 @@ on-finished@^2.3.0, on-finished@~2.3.0: once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" @@ -8050,9 +8549,17 @@ onetime@^1.0.0: onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + only@~0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" @@ -8092,7 +8599,7 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1, optionator@^0.8.2: +optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" dependencies: @@ -8103,6 +8610,18 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" +optionator@^0.8.2, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + ora@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" @@ -8145,6 +8664,7 @@ os-shim@^0.1.2: os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= osenv@^0.1.4: version "0.1.5" @@ -8168,6 +8688,7 @@ p-is-promise@^2.0.0: p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" @@ -8180,6 +8701,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" @@ -8200,6 +8722,7 @@ p-map@^2.0.0: p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: version "2.2.0" @@ -8244,6 +8767,7 @@ parallel-transform@^1.1.0: parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" @@ -8285,6 +8809,7 @@ parse-glob@^3.0.4: parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" @@ -8309,15 +8834,21 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" -parse5@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" - dependencies: - "@types/node" "*" +parse5@^6.0.0, parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parseurl@^1.3.2, parseurl@~1.3.2: version "1.3.3" @@ -8352,10 +8883,12 @@ path-exists@2.1.0, path-exists@^2.0.0: path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-is-absolute@1.0.1, path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 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.1, path-is-inside@^1.0.2: version "1.0.2" @@ -8368,6 +8901,7 @@ path-key@^2.0.0, path-key@^2.0.1: path-parse@^1.0.5, path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-to-regexp@0.1.7: version "0.1.7" @@ -8390,6 +8924,7 @@ path-type@^1.0.0: path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: pify "^2.0.0" @@ -8434,10 +8969,12 @@ pegjs@0.10.0, pegjs@>=0.10.0: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= pify@^2.0.0, pify@^2.3.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" @@ -8481,6 +9018,7 @@ pkg-dir@^1.0.0: pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= dependencies: find-up "^2.1.0" @@ -9148,6 +9686,7 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.2 prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" @@ -9201,6 +9740,7 @@ prettier-eslint@^8.5.0: prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" @@ -9260,6 +9800,7 @@ process@^0.11.10: progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== promise-inflight@^1.0.1: version "1.0.1" @@ -9274,6 +9815,7 @@ promise@^7.1.1: prop-types-exact@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" + integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== dependencies: has "^1.0.3" object.assign "^4.1.0" @@ -9354,6 +9896,7 @@ punycode@^1.2.4, punycode@^1.4.1: punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== q@^1.1.2, q@^1.5.1: version "1.5.1" @@ -9382,7 +9925,7 @@ quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" -raf@^3.3.2, raf@^3.4.0: +raf@^3.3.2, raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" dependencies: @@ -9391,10 +9934,12 @@ raf@^3.3.2, raf@^3.4.0: railroad-diagrams@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= randexp@0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== dependencies: discontinuous-range "1.0.0" ret "~0.1.10" @@ -9466,13 +10011,17 @@ react-html-attributes@^1.3.0: dependencies: html-element-attributes "^1.0.0" -react-infinite-scroll-component@^4.0.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/react-infinite-scroll-component/-/react-infinite-scroll-component-4.5.2.tgz#ebd16195f34a5f191b259ed53d257378b1001c6d" +react-infinite-scroll-component@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/react-infinite-scroll-component/-/react-infinite-scroll-component-5.1.0.tgz#3c0043cd17c6857c25d3ca7aa4171e0c33ce8023" + integrity sha512-ZQ7lYlLByil1ZVdvt57UJeBIj/tSOwKyds+B0LIm/xGmxzJJZwW/hYGKKs74sHO3LoIDwcq2ci6YXqrkWSalLQ== + dependencies: + throttle-debounce "^2.1.0" -react-is@^16.8.1, react-is@^16.8.6: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.8.1, react-is@^16.8.6: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-router-dom@^4.1.1: version "4.3.1" @@ -9510,13 +10059,14 @@ react-story@^0.0.10: react-router-dom "^4.1.1" react-test-renderer@^16.0.0-0: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz#188d8029b8c39c786f998aa3efd3ffe7642d5ba1" + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" react-is "^16.8.6" - scheduler "^0.13.6" + scheduler "^0.19.1" react-to-typescript-definitions@^2.0.0: version "2.0.0" @@ -9558,6 +10108,7 @@ read-pkg-up@^1.0.1: read-pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= dependencies: find-up "^2.0.0" read-pkg "^2.0.0" @@ -9580,6 +10131,7 @@ read-pkg@^1.0.0: read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: load-json-file "^2.0.0" normalize-package-data "^2.3.2" @@ -9613,7 +10165,7 @@ read-pkg@^4.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@^3.1.1: +"readable-stream@2 || 3": version "3.3.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" dependencies: @@ -9621,6 +10173,15 @@ read-pkg@^4.0.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^3.1.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -9673,6 +10234,7 @@ reduce-function-call@^1.0.1, reduce-function-call@^1.0.2: reflect.ownkeys@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" + integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= regenerate-unicode-properties@^8.0.2: version "8.0.2" @@ -9696,9 +10258,10 @@ regenerator-runtime@^0.12.0: version "0.12.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== regenerator-transform@^0.10.0: version "0.10.1" @@ -9721,6 +10284,14 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + regexpp@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" @@ -10025,6 +10596,7 @@ resolve-from@^3.0.0: resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-global@1.0.0, resolve-global@^1.0.0: version "1.0.0" @@ -10047,17 +10619,18 @@ resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.6.0: version "1.10.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" dependencies: path-parse "^1.0.6" -resolve@^1.11.0, resolve@^1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: + is-core-module "^2.1.0" path-parse "^1.0.6" restore-cursor@^1.0.1: @@ -10070,13 +10643,23 @@ restore-cursor@^1.0.1: restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== rgb-hex@^2.1.0: version "2.1.0" @@ -10106,15 +10689,15 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: rst-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" + integrity sha1-gbIw6i/MYGbInjRy3nlChdmwPZE= dependencies: lodash.flattendeep "^4.4.0" nearley "^2.7.10" -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-node@^1.0.0: version "1.0.0" @@ -10146,16 +10729,28 @@ rxjs@^5.3.0: dependencies: symbol-observable "1.0.1" -rxjs@^6.3.3, rxjs@^6.4.0: +rxjs@^6.3.3: version "6.5.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.1.tgz#f7a005a9386361921b8524f38f54cbf80e5d08f4" dependencies: tslib "^1.9.0" +rxjs@^6.4.0, rxjs@^6.6.0: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== + dependencies: + tslib "^1.9.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" +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -10174,13 +10769,6 @@ sax@^1.2.4, sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" -scheduler@^0.13.6: - version "0.13.6" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler@^0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.16.2.tgz#f74cd9d33eff6fc554edfb79864868e4819132c1" @@ -10189,6 +10777,14 @@ scheduler@^0.16.2: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + schema-utils@^0.4.0, schema-utils@^0.4.5: version "0.4.7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" @@ -10226,9 +10822,10 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@5.5.0: version "5.5.0" @@ -10238,6 +10835,10 @@ semver@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" +semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.1: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + semver@^6.1.2: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -10327,12 +10928,14 @@ shallow-copy@~0.0.1: 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= shelljs@0.7.6: version "0.7.6" @@ -10342,10 +10945,24 @@ shelljs@0.7.6: interpret "^1.0.0" rechoir "^0.6.2" -signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: +side-channel@^1.0.2, side-channel@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + simple-git@^1.85.0: version "1.113.0" resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.113.0.tgz#668989728a1e9cf4ec6c72b69ea2eecc93489bea" @@ -10391,6 +11008,7 @@ slice-ansi@1.0.0, slice-ansi@^1.0.0: slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== dependencies: ansi-styles "^3.2.0" astral-regex "^1.0.0" @@ -10491,26 +11109,30 @@ spawn-wrap@^1.4.2: which "^1.3.0" spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== specificity@^0.3.1: version "0.3.2" @@ -10541,6 +11163,7 @@ split@^1.0.0: sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: version "1.16.1" @@ -10674,25 +11297,72 @@ string-width@^1.0.1: string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== dependencies: emoji-regex "^7.0.1" is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.trim@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a" + integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.3" + +string.prototype.trim@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz#d23a22fde01c1e6571a7fadcb9be11decd8061a7" + integrity sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.0" - function-bind "^1.0.2" + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string_decoder@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" dependencies: safe-buffer "~5.1.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -10719,6 +11389,7 @@ stringify-object@^3.2.2: strip-ansi@5.2.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" @@ -10731,9 +11402,17 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: 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" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom-buf@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" @@ -10749,6 +11428,7 @@ strip-bom@^2.0.0: strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-eof@^1.0.0: version "1.0.0" @@ -10769,9 +11449,9 @@ strip-json-comments@2.0.1, strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== style-loader@^0.20.1: version "0.20.3" @@ -10931,6 +11611,7 @@ supports-color@^4.0.0: supports-color@^5.2.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" @@ -10940,6 +11621,13 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + svg-tag-names@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/svg-tag-names/-/svg-tag-names-1.1.1.tgz#9641b29ef71025ee094c7043f7cdde7d99fbd50a" @@ -11123,6 +11811,11 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +throttle-debounce@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz#fd31865e66502071e411817e241465b3e9c372e2" + integrity sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ== + through2@^2.0.0, through2@^2.0.2, through2@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -11175,6 +11868,7 @@ tmp@^0.0.29: tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" @@ -11272,9 +11966,20 @@ tryer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tty-browserify@0.0.0: version "0.0.0" @@ -11293,6 +11998,7 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" @@ -11300,10 +12006,20 @@ type-detect@4.0.8, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@^1.6.16, type-is@~1.6.16: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -11520,8 +12236,9 @@ upper-case@^1.1.1: integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -11591,13 +12308,14 @@ v8-compile-cache@^2.0.0, v8-compile-cache@^2.0.2: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" @@ -11886,6 +12604,7 @@ which-module@^2.0.0: which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: 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" @@ -11915,7 +12634,7 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" -word-wrap@^1.0.3, word-wrap@^1.1.0: +word-wrap@^1.0.3, word-wrap@^1.1.0, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -11926,6 +12645,7 @@ wordwrap@~0.0.2: wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= worker-farm@^1.5.2: version "1.7.0" @@ -11950,6 +12670,7 @@ wrap-ansi@^3.0.1: 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.4: version "1.3.4" @@ -11970,6 +12691,7 @@ write-file-atomic@^2.0.0: write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== dependencies: mkdirp "^0.5.1"