From 4d4b17dfcc9ca834ca62e137aae17081949993c8 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Sun, 15 Jan 2023 04:58:31 +0530 Subject: [PATCH 001/281] Markdown tabs using the MDIT containers plugin. --- funnel/utils/markdown/base.py | 10 +- funnel/utils/markdown/tabs.py | 194 ++++++++++++++++++++++++++++++++++ 2 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 funnel/utils/markdown/tabs.py diff --git a/funnel/utils/markdown/base.py b/funnel/utils/markdown/base.py index a58e4d386..31bab98a7 100644 --- a/funnel/utils/markdown/base.py +++ b/funnel/utils/markdown/base.py @@ -18,7 +18,7 @@ from markdown_it import MarkdownIt from markupsafe import Markup -from mdit_py_plugins import anchors, deflist, footnote, tasklists +from mdit_py_plugins import anchors, container, deflist, footnote, tasklists from typing_extensions import Literal from coaster.utils import make_name @@ -34,6 +34,7 @@ sub_plugin, sup_plugin, ) +from .tabs import render_tab __all__ = ['MarkdownPlugin', 'MarkdownConfig'] @@ -171,6 +172,12 @@ def render(self, text: Optional[str]) -> Optional[Markup]: MarkdownPlugin('sub', sub_plugin) MarkdownPlugin('sup', sup_plugin) MarkdownPlugin('mark', mark_plugin) + +MarkdownPlugin( + 'tab_container', + container.container_plugin, + {'name': 'tab', 'marker': ':', 'render': render_tab}, +) MarkdownPlugin('markmap', embeds_plugin, {'name': 'markmap'}) MarkdownPlugin('vega-lite', embeds_plugin, {'name': 'vega-lite'}) MarkdownPlugin('mermaid', embeds_plugin, {'name': 'mermaid'}) @@ -195,6 +202,7 @@ def render(self, text: Optional[str]) -> Optional[Markup]: 'breaks': True, }, plugins=[ + 'tab_container', 'block_code_ext', 'deflists', 'footnote', diff --git a/funnel/utils/markdown/tabs.py b/funnel/utils/markdown/tabs.py new file mode 100644 index 000000000..119798b94 --- /dev/null +++ b/funnel/utils/markdown/tabs.py @@ -0,0 +1,194 @@ +"""MDIT renderer and helpers for tabs.""" +from __future__ import annotations + +from dataclasses import dataclass, field +from functools import reduce +from typing import ClassVar, Dict, List, Optional, Tuple + +__all__ = ['render_tab'] + + +def get_tab_tokens(tokens): + return [ + { + 'index': i, + 'nesting': token.nesting, + 'info': token.info, + 'key': '-'.join([token.markup, str(token.level)]), + } + for i, token in enumerate(tokens) + if token.type in ('container_tab_open', 'container_tab_close') + ] + + +def get_pair(tab_tokens, start=0) -> Optional[Tuple[int, int]]: + i = 1 + while i < len(tab_tokens): + if ( + tab_tokens[i]['nesting'] == -1 + and tab_tokens[0]['key'] == tab_tokens[i]['key'] + ): + break + i += 1 + if i >= len(tab_tokens): + return None + return (start, start + i) + + +def render_tab(self, tokens, idx, _options, env): + if 'manager' not in env: + env['manager'] = TabsManager(get_tab_tokens(tokens)) + + node = env['manager'].index(idx) + if node is None: + return '' + if tokens[idx].nesting == 1: + return node.html_open + return node.html_close + + +@dataclass +class TabsetNode: + start: int + parent: Optional[TabNode] = None + children: List[TabNode] = field(default_factory=list) + _html_tabs: ClassVar[str] = '' + html_close: ClassVar[str] = '' + + def flatten(self) -> List[TabNode]: + tabs = self.children + for tab in self.children: + for tabset in tab.children: + tabs = tabs + tabset.flatten() + return tabs + + @property + def html_open(self): + items_html = ''.join([item.html_tab_item for item in self.children]) + return '
' + self._html_tabs.format(items_html=items_html) + + +@dataclass +class TabNode: + start: int + end: int + info: str + key: str + parent: TabsetNode + _tab_id: str = '' + children: List[TabsetNode] = field(default_factory=list) + _opening: ClassVar[str] = ( + '
' + + '
' + ) + _closing: ClassVar[str] = '
' + _active_class_attr: ClassVar[str] = ' class="mui--is-active"' + _active_class: ClassVar[str] = 'mui--is-active' + _item_html: ClassVar[str] = ( + '
  • ' + + '{title}
  • ' + ) + + @property + def title(self): + return ' '.join(self.info.strip().split()[1:]) + + @property + def tab_id(self) -> str: + return 'md-tab-id-' + self._tab_id + + @tab_id.setter + def tab_id(self, value) -> None: + self._tab_id = value + + @property + def is_first(self) -> bool: + return self.start == self.parent.start + + @property + def is_last(self) -> bool: + return self == self.parent.children[-1] + + @property + def html_open(self) -> str: + opening = self._opening.format( + tab_id=self.tab_id, active_class=self._active_class if self.is_first else '' + ) + if self.is_first: + opening = self.parent.html_open + opening + return opening + + @property + def html_close(self) -> str: + return self._closing + (self.parent.html_close if self.is_last else '') + + @property + def html_tab_item(self): + return self._item_html.format( + active_class=self._active_class_attr if self.is_first else '', + tab_id=self.tab_id, + title=self.title, + ) + + +class TabsManager: + tabsets: List[TabsetNode] + _index: Dict[int, TabNode] + + def __init__(self, tab_tokens) -> None: + self.tabsets: List[TabsetNode] = self.make(tab_tokens) + self._index = {} + self.index() + + def make(self, tab_tokens, parent: Optional[TabNode] = None) -> List[TabsetNode]: + open_index, close_index = 0, len(tab_tokens) - 1 + nodes: List[TabNode] = [] + tabsets: List[TabsetNode] = [] + previous: Optional[TabNode] = None + while True: + pairs = get_pair(tab_tokens[open_index : close_index + 1], start=open_index) + if pairs is None: + break + open_index, close_index = pairs + if ( + previous is None + or previous.key != tab_tokens[open_index]['key'] + or previous.end + 1 != tab_tokens[open_index]['index'] + ): + tabset = TabsetNode(tab_tokens[open_index]['index'], parent) + tabsets.append(tabset) + node = TabNode( + start=tab_tokens[open_index]['index'], + end=tab_tokens[close_index]['index'], + key=tab_tokens[open_index]['key'], + info=tab_tokens[open_index]['info'], + parent=tabset, + ) + nodes.append(node) + tabset.children.append(node) + node.parent = tabset + node.children = self.make( + tab_tokens[open_index + 1 : close_index], parent=node + ) + if close_index + 1 == len(tab_tokens): + break + open_index, close_index = close_index + 1, len(tab_tokens) - 1 + previous = node + + return tabsets + + def index(self, start: Optional[int] = None) -> Optional[TabNode]: + if start is not None: + try: + return self._index[start] + except KeyError: + return None + tabs: List[TabNode] = reduce( + lambda tablist, tabset: tablist + tabset.flatten(), self.tabsets, [] + ) + for i, tab in enumerate(tabs): + self._index[tab.start] = tab + self._index[tab.end] = tab + tab.tab_id = str(i + 1) + return None From c5d555912fb8b61af8791173f40004a77d2f9eb6 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Mon, 16 Jan 2023 16:28:27 +0530 Subject: [PATCH 002/281] Tests for container tabs markdown plugin. --- tests/unit/utils/markdown/data/tabs.toml | 932 +++++++++++++++++++++++ 1 file changed, 932 insertions(+) create mode 100644 tests/unit/utils/markdown/data/tabs.toml diff --git a/tests/unit/utils/markdown/data/tabs.toml b/tests/unit/utils/markdown/data/tabs.toml new file mode 100644 index 000000000..62ded0b71 --- /dev/null +++ b/tests/unit/utils/markdown/data/tabs.toml @@ -0,0 +1,932 @@ +markdown = """ +## Tabs using containers plugin +Let us see if we can use the containers plugin to render tabs. + +:::: tab Code +**The next tab has a blank title. +Please click the blank space.** + +This tab contains code! +::: tab Javascript +```js +let x = 10000; +sleep(x); +``` +::: +::: tab Python +```python +def sum(a, b): + return a['quantity'] + b['quantity'] +print(sum({'quantity': 5}, {'quantity': 10})) +``` +::: +::: tab Markdown +``` markdown +**Here is bold markdown.** +### Heading +\\::: should render three `:` characters. +\\``` should render three \\` characters. +There's a list below: +- Item 1 +- Item 2 +``` +::: +:::: +:::: tab +What to do with tabs without titles? I presume, we should be ignoring them completely. +:::: +:::: tab Embeds +::: tab Markmap +```{markmap} + +# Digital Identifiers and Rights + +## Community and Outreach + +- Experts +- Grant organizations +- IT ministries +- Journalism schools +- Journalists and reporters +- Partnerships + - Patrons + - Sponsors +- Policymakers +- Rights activists +- Startups +- Thinktanks +- Venture capital +- Volunteers + +## Domains + +- Border controls +- Citizenship +- Digital data trusts +- FinTech +- Government +- Health services delivery +- Hospitality +- Law enforcement +- Online retail and commerce +- Smart automation +- Social media +- Travel and tourism + +## Location + +- International +- Local or domestic +- Transit + +## Output and Outcomes + +- Best practices guide for product/service development +- Conference +- Conversations (eg. Twitter Spaces) +- Masterclass webinars +- Proceedings (talk playlist) +- Reports +- Review of Policies + +## Themes + +### Digital Identity + +- Anonymity +- Architecture of digital trust +- Control and ownership +- Identity and identifier models +- Inclusion and exclusion +- Portability +- Principles +- Regulations +- Reputation +- Rights and agency +- Trust framework +- Verifiability +- Vulnerable communities + +### Digital Rights + +- Current state across region +- Harms +- Emerging regulatory requirements +- Web 3.0 and decentralization +- Naturalization + +## Streams + +- Banking and finance +- Data exchange and interoperability +- Data governance models +- Data markets +- Digital identifiers and identity systems +- Digital public goods +- Digital public services +- Humanitarian activity and aid +- Identity ecosystems +- Innovation incubation incentives + - Public investment + - Private capital +- Local regulations and laws +- National policies +- Public health services +- Records (birth, death, land etc) +``` +::: +::: tab Vega +```{vega-lite} +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": "A population pyramid for the US in 2000.", + "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"}, + "transform": [ + {"filter": "datum.year == 2000"}, + {"calculate": "datum.sex == 2 ? 'Female' : 'Male'", "as": "gender"} + ], + "spacing": 0, + "hconcat": [{ + "transform": [{ + "filter": {"field": "gender", "equal": "Female"} + }], + "title": "Female", + "mark": "bar", + "encoding": { + "y": { + "field": "age", "axis": null, "sort": "descending" + }, + "x": { + "aggregate": "sum", "field": "people", + "title": "population", + "axis": {"format": "s"}, + "sort": "descending" + }, + "color": { + "field": "gender", + "scale": {"range": ["#675193", "#ca8861"]}, + "legend": null + } + } + }, { + "width": 20, + "view": {"stroke": null}, + "mark": { + "type": "text", + "align": "center" + }, + "encoding": { + "y": {"field": "age", "type": "ordinal", "axis": null, "sort": "descending"}, + "text": {"field": "age", "type": "quantitative"} + } + }, { + "transform": [{ + "filter": {"field": "gender", "equal": "Male"} + }], + "title": "Male", + "mark": "bar", + "encoding": { + "y": { + "field": "age", "title": null, + "axis": null, "sort": "descending" + }, + "x": { + "aggregate": "sum", "field": "people", + "title": "population", + "axis": {"format": "s"} + }, + "color": { + "field": "gender", + "legend": null + } + } + }], + "config": { + "view": {"stroke": null}, + "axis": {"grid": false} + } +} + +``` +::: +::: tab Mermaid +``` {mermaid} +sequenceDiagram + Alice->>+John: Hello John, how are you? + Alice->>+John: John, can you hear me? + John-->>-Alice: Hi Alice, I can hear you! + John-->>-Alice: I feel great! +``` +::: +:::: +:::: tab Table Tab +This tab is going to have a table! +| Heading 1 | Heading 2 | +| --------- | --------- | +| Content 1 | Content 2 | + +> Well if you really want, you can also have some other content! Like a blockquote, maybe? + +Perhaps a list? + +1. One with some order in it! +1. With multiple items, that too within the tab! + 1. Which is also nested ;) + 2. It could have multiple sub items. + 3. That are more than 2! +3. Finally, the list ends at top level. +:::: +""" + +[config] +profiles = [ "basic", "document",] + +[config.custom_profiles.tabs] +preset = "default" +plugins = ["tab_container"] + +[expected_output] +basic = """

    Tabs using containers plugin

    +

    Let us see if we can use the containers plugin to render tabs.

    +

    :::: tab Code
    +The next tab has a blank title.
    +Please click the blank space.

    +

    This tab contains code!
    +::: tab Javascript

    +
    let x = 10000;
    +sleep(x);
    +
    +

    :::
    +::: tab Python

    +
    def sum(a, b):
    +    return a['quantity'] + b['quantity']
    +print(sum({'quantity': 5}, {'quantity': 10}))
    +
    +

    :::
    +::: tab Markdown

    +
    **Here is bold markdown.**
    +### Heading
    +\\::: should render three `:` characters.
    +\\``` should render three \\` characters.
    +There's a list below:
    +- Item 1
    +- Item 2
    +
    +

    :::
    +::::
    +:::: tab
    +What to do with tabs without titles? I presume, we should be ignoring them completely.
    +::::
    +:::: tab Embeds
    +::: tab Markmap

    +
    
    +# Digital Identifiers and Rights
    +
    +## Community and Outreach
    +
    +- Experts
    +- Grant organizations
    +- IT ministries
    +- Journalism schools
    +- Journalists and reporters
    +- Partnerships
    +  - Patrons
    +  - Sponsors
    +- Policymakers
    +- Rights activists
    +- Startups
    +- Thinktanks
    +- Venture capital
    +- Volunteers
    +
    +## Domains
    +
    +- Border controls
    +- Citizenship
    +- Digital data trusts
    +- FinTech
    +- Government
    +- Health services delivery
    +- Hospitality
    +- Law enforcement
    +- Online retail and commerce
    +- Smart automation
    +- Social media
    +- Travel and tourism
    +
    +## Location
    +
    +- International
    +- Local or domestic
    +- Transit
    +
    +## Output and Outcomes
    +
    +- Best practices guide for product/service development
    +- Conference
    +- Conversations (eg. Twitter Spaces)
    +- Masterclass webinars
    +- Proceedings (talk playlist)
    +- Reports
    +- Review of Policies
    +
    +## Themes
    +
    +### Digital Identity
    +
    +- Anonymity
    +- Architecture of digital trust
    +- Control and ownership
    +- Identity and identifier models
    +- Inclusion and exclusion
    +- Portability
    +- Principles
    +- Regulations
    +- Reputation
    +- Rights and agency
    +- Trust framework
    +- Verifiability
    +- Vulnerable communities
    +
    +### Digital Rights
    +
    +- Current state across region
    +- Harms
    +- Emerging regulatory requirements
    +- Web 3.0 and decentralization
    +- Naturalization
    +
    +## Streams
    +
    +- Banking and finance
    +- Data exchange and interoperability
    +- Data governance models
    +- Data markets
    +- Digital identifiers and identity systems
    +- Digital public goods
    +- Digital public services
    +- Humanitarian activity and aid
    +- Identity ecosystems
    +- Innovation incubation incentives
    +  - Public investment
    +  - Private capital
    +- Local regulations and laws
    +- National policies
    +- Public health services
    +- Records (birth, death, land etc)
    +
    +

    :::
    +::: tab Vega

    +
    {
    +  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
    +  "description": "A population pyramid for the US in 2000.",
    +  "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    +  "transform": [
    +    {"filter": "datum.year == 2000"},
    +    {"calculate": "datum.sex == 2 ? 'Female' : 'Male'", "as": "gender"}
    +  ],
    +  "spacing": 0,
    +  "hconcat": [{
    +    "transform": [{
    +      "filter": {"field": "gender", "equal": "Female"}
    +    }],
    +    "title": "Female",
    +    "mark": "bar",
    +    "encoding": {
    +      "y": {
    +        "field": "age", "axis": null, "sort": "descending"
    +      },
    +      "x": {
    +        "aggregate": "sum", "field": "people",
    +        "title": "population",
    +        "axis": {"format": "s"},
    +        "sort": "descending"
    +      },
    +      "color": {
    +        "field": "gender",
    +        "scale": {"range": ["#675193", "#ca8861"]},
    +        "legend": null
    +      }
    +    }
    +  }, {
    +    "width": 20,
    +    "view": {"stroke": null},
    +    "mark": {
    +      "type": "text",
    +      "align": "center"
    +    },
    +    "encoding": {
    +      "y": {"field": "age", "type": "ordinal", "axis": null, "sort": "descending"},
    +      "text": {"field": "age", "type": "quantitative"}
    +    }
    +  }, {
    +    "transform": [{
    +      "filter": {"field": "gender", "equal": "Male"}
    +    }],
    +    "title": "Male",
    +    "mark": "bar",
    +    "encoding": {
    +      "y": {
    +        "field": "age", "title": null,
    +        "axis": null, "sort": "descending"
    +      },
    +      "x": {
    +        "aggregate": "sum", "field": "people",
    +        "title": "population",
    +        "axis": {"format": "s"}
    +      },
    +      "color": {
    +        "field": "gender",
    +        "legend": null
    +      }
    +    }
    +  }],
    +  "config": {
    +    "view": {"stroke": null},
    +    "axis": {"grid": false}
    +  }
    +}
    +
    +
    +

    :::
    +::: tab Mermaid

    +
    sequenceDiagram
    +    Alice->>+John: Hello John, how are you?
    +    Alice->>+John: John, can you hear me?
    +    John-->>-Alice: Hi Alice, I can hear you!
    +    John-->>-Alice: I feel great!
    +
    +

    :::
    +::::
    +:::: tab Table Tab
    +This tab is going to have a table!
    +| Heading 1 | Heading 2 |
    +| --------- | --------- |
    +| Content 1 | Content 2 |

    +
    +

    Well if you really want, you can also have some other content! Like a blockquote, maybe?

    +
    +

    Perhaps a list?

    +
      +
    1. One with some order in it!
    2. +
    3. With multiple items, that too within the tab! +
        +
      1. Which is also nested ;)
      2. +
      3. It could have multiple sub items.
      4. +
      5. That are more than 2!
      6. +
      +
    4. +
    5. Finally, the list ends at top level.
      +::::
    6. +
    +""" +document = """

    Tabs using containers plugin #

    +

    Let us see if we can use the containers plugin to render tabs.

    +

    The next tab has a blank title.
    +Please click the blank space.

    +

    This tab contains code!

    +
    let x = 10000;
    +sleep(x);
    +
    +
    def sum(a, b):
    +    return a['quantity'] + b['quantity']
    +print(sum({'quantity': 5}, {'quantity': 10}))
    +
    +
    **Here is bold markdown.**
    +### Heading
    +\\::: should render three `:` characters.
    +\\``` should render three \\` characters.
    +There's a list below:
    +- Item 1
    +- Item 2
    +
    +

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    +
    Mindmap
    +# Digital Identifiers and Rights
    +
    +## Community and Outreach
    +
    +- Experts
    +- Grant organizations
    +- IT ministries
    +- Journalism schools
    +- Journalists and reporters
    +- Partnerships
    +- Patrons
    +- Sponsors
    +- Policymakers
    +- Rights activists
    +- Startups
    +- Thinktanks
    +- Venture capital
    +- Volunteers
    +
    +## Domains
    +
    +- Border controls
    +- Citizenship
    +- Digital data trusts
    +- FinTech
    +- Government
    +- Health services delivery
    +- Hospitality
    +- Law enforcement
    +- Online retail and commerce
    +- Smart automation
    +- Social media
    +- Travel and tourism
    +
    +## Location
    +
    +- International
    +- Local or domestic
    +- Transit
    +
    +## Output and Outcomes
    +
    +- Best practices guide for product/service development
    +- Conference
    +- Conversations (eg. Twitter Spaces)
    +- Masterclass webinars
    +- Proceedings (talk playlist)
    +- Reports
    +- Review of Policies
    +
    +## Themes
    +
    +### Digital Identity
    +
    +- Anonymity
    +- Architecture of digital trust
    +- Control and ownership
    +- Identity and identifier models
    +- Inclusion and exclusion
    +- Portability
    +- Principles
    +- Regulations
    +- Reputation
    +- Rights and agency
    +- Trust framework
    +- Verifiability
    +- Vulnerable communities
    +
    +### Digital Rights
    +
    +- Current state across region
    +- Harms
    +- Emerging regulatory requirements
    +- Web 3.0 and decentralization
    +- Naturalization
    +
    +## Streams
    +
    +- Banking and finance
    +- Data exchange and interoperability
    +- Data governance models
    +- Data markets
    +- Digital identifiers and identity systems
    +- Digital public goods
    +- Digital public services
    +- Humanitarian activity and aid
    +- Identity ecosystems
    +- Innovation incubation incentives
    +- Public investment
    +- Private capital
    +- Local regulations and laws
    +- National policies
    +- Public health services
    +- Records (birth, death, land etc)
    +
    +
    Visualization
    {
    +"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
    +"description": "A population pyramid for the US in 2000.",
    +"data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    +"transform": [
    + {"filter": "datum.year == 2000"},
    + {"calculate": "datum.sex == 2 ? 'Female' : 'Male'", "as": "gender"}
    +],
    +"spacing": 0,
    +"hconcat": [{
    + "transform": [{
    +   "filter": {"field": "gender", "equal": "Female"}
    + }],
    + "title": "Female",
    + "mark": "bar",
    + "encoding": {
    +   "y": {
    +     "field": "age", "axis": null, "sort": "descending"
    +   },
    +   "x": {
    +     "aggregate": "sum", "field": "people",
    +     "title": "population",
    +     "axis": {"format": "s"},
    +     "sort": "descending"
    +   },
    +   "color": {
    +     "field": "gender",
    +     "scale": {"range": ["#675193", "#ca8861"]},
    +     "legend": null
    +   }
    + }
    +}, {
    + "width": 20,
    + "view": {"stroke": null},
    + "mark": {
    +   "type": "text",
    +   "align": "center"
    + },
    + "encoding": {
    +   "y": {"field": "age", "type": "ordinal", "axis": null, "sort": "descending"},
    +   "text": {"field": "age", "type": "quantitative"}
    + }
    +}, {
    + "transform": [{
    +   "filter": {"field": "gender", "equal": "Male"}
    + }],
    + "title": "Male",
    + "mark": "bar",
    + "encoding": {
    +   "y": {
    +     "field": "age", "title": null,
    +     "axis": null, "sort": "descending"
    +   },
    +   "x": {
    +     "aggregate": "sum", "field": "people",
    +     "title": "population",
    +     "axis": {"format": "s"}
    +   },
    +   "color": {
    +     "field": "gender",
    +     "legend": null
    +   }
    + }
    +}],
    +"config": {
    + "view": {"stroke": null},
    + "axis": {"grid": false}
    +}
    +}
    +
    +
    +
    Visualization
    sequenceDiagram
    + Alice->>+John: Hello John, how are you?
    + Alice->>+John: John, can you hear me?
    + John-->>-Alice: Hi Alice, I can hear you!
    + John-->>-Alice: I feel great!
    +
    +

    This tab is going to have a table!

    + + + + + + + + + + + + + +
    Heading 1Heading 2
    Content 1Content 2
    +
    +

    Well if you really want, you can also have some other content! Like a blockquote, maybe?

    +
    +

    Perhaps a list?

    +
      +
    1. One with some order in it!
    2. +
    3. With multiple items, that too within the tab! +
        +
      1. Which is also nested ;)
      2. +
      3. It could have multiple sub items.
      4. +
      5. That are more than 2!
      6. +
      +
    4. +
    5. Finally, the list ends at top level.
    6. +
    +
    """ +tabs = """

    Tabs using containers plugin

    +

    Let us see if we can use the containers plugin to render tabs.

    +

    The next tab has a blank title. +Please click the blank space.

    +

    This tab contains code!

    +
    let x = 10000;
    +sleep(x);
    +
    +
    def sum(a, b):
    +    return a['quantity'] + b['quantity']
    +print(sum({'quantity': 5}, {'quantity': 10}))
    +
    +
    **Here is bold markdown.**
    +### Heading
    +\\::: should render three `:` characters.
    +\\``` should render three \\` characters.
    +There's a list below:
    +- Item 1
    +- Item 2
    +
    +

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    +
    
    +# Digital Identifiers and Rights
    +
    +## Community and Outreach
    +
    +- Experts
    +- Grant organizations
    +- IT ministries
    +- Journalism schools
    +- Journalists and reporters
    +- Partnerships
    +  - Patrons
    +  - Sponsors
    +- Policymakers
    +- Rights activists
    +- Startups
    +- Thinktanks
    +- Venture capital
    +- Volunteers
    +
    +## Domains
    +
    +- Border controls
    +- Citizenship
    +- Digital data trusts
    +- FinTech
    +- Government
    +- Health services delivery
    +- Hospitality
    +- Law enforcement
    +- Online retail and commerce
    +- Smart automation
    +- Social media
    +- Travel and tourism
    +
    +## Location
    +
    +- International
    +- Local or domestic
    +- Transit
    +
    +## Output and Outcomes
    +
    +- Best practices guide for product/service development
    +- Conference
    +- Conversations (eg. Twitter Spaces)
    +- Masterclass webinars
    +- Proceedings (talk playlist)
    +- Reports
    +- Review of Policies
    +
    +## Themes
    +
    +### Digital Identity
    +
    +- Anonymity
    +- Architecture of digital trust
    +- Control and ownership
    +- Identity and identifier models
    +- Inclusion and exclusion
    +- Portability
    +- Principles
    +- Regulations
    +- Reputation
    +- Rights and agency
    +- Trust framework
    +- Verifiability
    +- Vulnerable communities
    +
    +### Digital Rights
    +
    +- Current state across region
    +- Harms
    +- Emerging regulatory requirements
    +- Web 3.0 and decentralization
    +- Naturalization
    +
    +## Streams
    +
    +- Banking and finance
    +- Data exchange and interoperability
    +- Data governance models
    +- Data markets
    +- Digital identifiers and identity systems
    +- Digital public goods
    +- Digital public services
    +- Humanitarian activity and aid
    +- Identity ecosystems
    +- Innovation incubation incentives
    +  - Public investment
    +  - Private capital
    +- Local regulations and laws
    +- National policies
    +- Public health services
    +- Records (birth, death, land etc)
    +
    +
    {
    +  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
    +  "description": "A population pyramid for the US in 2000.",
    +  "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    +  "transform": [
    +    {"filter": "datum.year == 2000"},
    +    {"calculate": "datum.sex == 2 ? 'Female' : 'Male'", "as": "gender"}
    +  ],
    +  "spacing": 0,
    +  "hconcat": [{
    +    "transform": [{
    +      "filter": {"field": "gender", "equal": "Female"}
    +    }],
    +    "title": "Female",
    +    "mark": "bar",
    +    "encoding": {
    +      "y": {
    +        "field": "age", "axis": null, "sort": "descending"
    +      },
    +      "x": {
    +        "aggregate": "sum", "field": "people",
    +        "title": "population",
    +        "axis": {"format": "s"},
    +        "sort": "descending"
    +      },
    +      "color": {
    +        "field": "gender",
    +        "scale": {"range": ["#675193", "#ca8861"]},
    +        "legend": null
    +      }
    +    }
    +  }, {
    +    "width": 20,
    +    "view": {"stroke": null},
    +    "mark": {
    +      "type": "text",
    +      "align": "center"
    +    },
    +    "encoding": {
    +      "y": {"field": "age", "type": "ordinal", "axis": null, "sort": "descending"},
    +      "text": {"field": "age", "type": "quantitative"}
    +    }
    +  }, {
    +    "transform": [{
    +      "filter": {"field": "gender", "equal": "Male"}
    +    }],
    +    "title": "Male",
    +    "mark": "bar",
    +    "encoding": {
    +      "y": {
    +        "field": "age", "title": null,
    +        "axis": null, "sort": "descending"
    +      },
    +      "x": {
    +        "aggregate": "sum", "field": "people",
    +        "title": "population",
    +        "axis": {"format": "s"}
    +      },
    +      "color": {
    +        "field": "gender",
    +        "legend": null
    +      }
    +    }
    +  }],
    +  "config": {
    +    "view": {"stroke": null},
    +    "axis": {"grid": false}
    +  }
    +}
    +
    +
    +
    sequenceDiagram
    +    Alice->>+John: Hello John, how are you?
    +    Alice->>+John: John, can you hear me?
    +    John-->>-Alice: Hi Alice, I can hear you!
    +    John-->>-Alice: I feel great!
    +
    +

    This tab is going to have a table!

    + + + + + + + + + + + + + +
    Heading 1Heading 2
    Content 1Content 2
    +
    +

    Well if you really want, you can also have some other content! Like a blockquote, maybe?

    +
    +

    Perhaps a list?

    +
      +
    1. One with some order in it!
    2. +
    3. With multiple items, that too within the tab! +
        +
      1. Which is also nested ;)
      2. +
      3. It could have multiple sub items.
      4. +
      5. That are more than 2!
      6. +
      +
    4. +
    5. Finally, the list ends at top level.
    6. +
    +
    """ From 3c9d89be4b1477c6a4ebd9ef8b8cd5d10b268a1f Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Tue, 17 Jan 2023 10:42:26 +0530 Subject: [PATCH 003/281] Resolves markmap rendering issue in markdown tabs. --- funnel/assets/js/utils/markmap.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/funnel/assets/js/utils/markmap.js b/funnel/assets/js/utils/markmap.js index 41b7ca758..b197e7c83 100644 --- a/funnel/assets/js/utils/markmap.js +++ b/funnel/assets/js/utils/markmap.js @@ -21,6 +21,17 @@ const MarkmapEmbed = { const { Markmap } = await import('markmap-view'); const transformer = new Transformer(); + const observer = new IntersectionObserver( + (items, observer) => { + items.forEach((item) => { + if (item.isIntersecting) $(item.target).data('markmap').fit(); + }); + }, + { + root: $('.main-content')[0], + } + ); + parentElement .find('.md-embed-markmap:not(.activating):not(.activated)') .each(function embedMarkmap() { @@ -34,6 +45,8 @@ const MarkmapEmbed = { const current = $(markdownDiv).find('svg')[0]; const markmap = Markmap.create(current, { initialExpandLevel: 1 }, root); markmapEmbed.markmaps.push(markmap); + $(current).data('markmap', markmap); + observer.observe(current); $(markdownDiv).addClass('activated').removeClass('activating'); }); From 27358b47cf164d717438a2c759aa4909343a9c89 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Tue, 17 Jan 2023 10:44:25 +0530 Subject: [PATCH 004/281] Add .python-version to .gitignore. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 38cb34ba4..2220830c0 100644 --- a/.gitignore +++ b/.gitignore @@ -59,6 +59,7 @@ newrelic.ini # Local venvs (Idea creates them) venv/ env/ +.python-version # Editors .idea/ From f09b18a239b88f76ae738da7a3a18f23bb335198 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Tue, 17 Jan 2023 10:53:50 +0530 Subject: [PATCH 005/281] Restore configuration for markmap to earlier settings: disable pan, enable auto-fit and set fit ratio to 85%. --- funnel/assets/js/utils/markmap.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/funnel/assets/js/utils/markmap.js b/funnel/assets/js/utils/markmap.js index b197e7c83..f1c61f232 100644 --- a/funnel/assets/js/utils/markmap.js +++ b/funnel/assets/js/utils/markmap.js @@ -43,7 +43,16 @@ const MarkmapEmbed = { ); $(markdownDiv).find('.embed-container').append(''); const current = $(markdownDiv).find('svg')[0]; - const markmap = Markmap.create(current, { initialExpandLevel: 1 }, root); + const markmap = Markmap.create( + current, + { + autoFit: true, + pan: false, + fitRatio: 0.85, + initialExpandLevel: 1, + }, + root + ); markmapEmbed.markmaps.push(markmap); $(current).data('markmap', markmap); observer.observe(current); From e8843bc8423a0716712af317723ec46ff64d8f10 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Tue, 17 Jan 2023 12:25:21 +0530 Subject: [PATCH 006/281] Resolves js build issues in IntersectionObserver code in markmap. --- funnel/assets/js/utils/markmap.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/funnel/assets/js/utils/markmap.js b/funnel/assets/js/utils/markmap.js index f1c61f232..f224dbda6 100644 --- a/funnel/assets/js/utils/markmap.js +++ b/funnel/assets/js/utils/markmap.js @@ -22,7 +22,7 @@ const MarkmapEmbed = { const transformer = new Transformer(); const observer = new IntersectionObserver( - (items, observer) => { + (items) => { items.forEach((item) => { if (item.isIntersecting) $(item.target).data('markmap').fit(); }); From 372a9d5e5547cf1cfe165a1e67cb9b2314ac1ddc Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Tue, 17 Jan 2023 21:42:18 +0530 Subject: [PATCH 007/281] Better manage variable html classes in the output of markdown tabs. --- funnel/utils/markdown/tabs.py | 25 +++++++++------- tests/unit/utils/markdown/data/tabs.toml | 36 ++++++++++++------------ 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/funnel/utils/markdown/tabs.py b/funnel/utils/markdown/tabs.py index 119798b94..758c1199d 100644 --- a/funnel/utils/markdown/tabs.py +++ b/funnel/utils/markdown/tabs.py @@ -78,18 +78,25 @@ class TabNode: _tab_id: str = '' children: List[TabsetNode] = field(default_factory=list) _opening: ClassVar[str] = ( - '
    ' - + '
    ' + '' + '
    ' ) _closing: ClassVar[str] = '
    ' - _active_class_attr: ClassVar[str] = ' class="mui--is-active"' - _active_class: ClassVar[str] = 'mui--is-active' _item_html: ClassVar[str] = ( - '
  • ' + '' + '{title}
  • ' + + ' data-mui-toggle="tab" data-mui-controls="{tab_id}">{title}' ) + def _class_attr(self, classes=None): + if classes is None: + classes = [] + classes = classes + self._active_class + return f' class="{" ".join(classes)}"' if len(classes) > 0 else '' + + @property + def _active_class(self): + return ['mui--is-active'] if self.is_first else [] + @property def title(self): return ' '.join(self.info.strip().split()[1:]) @@ -113,7 +120,7 @@ def is_last(self) -> bool: @property def html_open(self) -> str: opening = self._opening.format( - tab_id=self.tab_id, active_class=self._active_class if self.is_first else '' + tab_id=self.tab_id, class_attr=self._class_attr(['md-tabs-panel', 'grid']) ) if self.is_first: opening = self.parent.html_open + opening @@ -126,9 +133,7 @@ def html_close(self) -> str: @property def html_tab_item(self): return self._item_html.format( - active_class=self._active_class_attr if self.is_first else '', - tab_id=self.tab_id, - title=self.title, + tab_id=self.tab_id, title=self.title, class_attr=self._class_attr() ) diff --git a/tests/unit/utils/markdown/data/tabs.toml b/tests/unit/utils/markdown/data/tabs.toml index 62ded0b71..1922ec74b 100644 --- a/tests/unit/utils/markdown/data/tabs.toml +++ b/tests/unit/utils/markdown/data/tabs.toml @@ -482,17 +482,17 @@ This tab is going to have a table!
    """ document = """

    Tabs using containers plugin #

    Let us see if we can use the containers plugin to render tabs.

    -

    The next tab has a blank title.
    +

    The next tab has a blank title.
    Please click the blank space.

    This tab contains code!

    -
    let x = 10000;
    +
    let x = 10000;
     sleep(x);
     
    -
    def sum(a, b):
    +
    def sum(a, b):
         return a['quantity'] + b['quantity']
     print(sum({'quantity': 5}, {'quantity': 10}))
     
    -
    **Here is bold markdown.**
    +
    **Here is bold markdown.**
     ### Heading
     \\::: should render three `:` characters.
     \\``` should render three \\` characters.
    @@ -500,8 +500,8 @@ There's a list below:
     - Item 1
     - Item 2
     
    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    +
    Mindmap
     # Digital Identifiers and Rights
     
     ## Community and Outreach
    @@ -597,7 +597,7 @@ There's a list below:
     - Public health services
     - Records (birth, death, land etc)
     
    -
    Visualization
    {
    +
    Visualization
    {
     "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
     "description": "A population pyramid for the US in 2000.",
     "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    @@ -668,13 +668,13 @@ There's a list below:
     }
     
     
    -
    Visualization
    sequenceDiagram
    +
    Visualization
    sequenceDiagram
      Alice->>+John: Hello John, how are you?
      Alice->>+John: John, can you hear me?
      John-->>-Alice: Hi Alice, I can hear you!
      John-->>-Alice: I feel great!
     
    -

    This tab is going to have a table!

    +

    This tab is going to have a table!

    @@ -707,17 +707,17 @@ There's a list below: """ tabs = """

    Tabs using containers plugin

    Let us see if we can use the containers plugin to render tabs.

    -

    The next tab has a blank title. +

    The next tab has a blank title. Please click the blank space.

    This tab contains code!

    -
    let x = 10000;
    +
    let x = 10000;
     sleep(x);
     
    -
    def sum(a, b):
    +
    def sum(a, b):
         return a['quantity'] + b['quantity']
     print(sum({'quantity': 5}, {'quantity': 10}))
     
    -
    **Here is bold markdown.**
    +
    **Here is bold markdown.**
     ### Heading
     \\::: should render three `:` characters.
     \\``` should render three \\` characters.
    @@ -725,8 +725,8 @@ There's a list below:
     - Item 1
     - Item 2
     
    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    +
    
     # Digital Identifiers and Rights
     
     ## Community and Outreach
    @@ -822,7 +822,7 @@ There's a list below:
     - Public health services
     - Records (birth, death, land etc)
     
    -
    {
    +
    {
       "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
       "description": "A population pyramid for the US in 2000.",
       "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    @@ -893,13 +893,13 @@ There's a list below:
     }
     
     
    -
    sequenceDiagram
    +
    sequenceDiagram
         Alice->>+John: Hello John, how are you?
         Alice->>+John: John, can you hear me?
         John-->>-Alice: Hi Alice, I can hear you!
         John-->>-Alice: I feel great!
     
    -

    This tab is going to have a table!

    +

    This tab is going to have a table!

    From 03249f9a97da08d6f87badcdda819513ac99c505 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Wed, 18 Jan 2023 13:54:23 +0530 Subject: [PATCH 008/281] Accessibility features(screen reader and keyboard nav) for markdown tabs. --- funnel/assets/js/utils/initembed.js | 2 + funnel/assets/js/utils/tabs.js | 51 ++++++++++++++++++++ funnel/utils/markdown/tabs.py | 61 ++++++++++++++++++++---- tests/unit/utils/markdown/data/tabs.toml | 36 +++++++------- 4 files changed, 123 insertions(+), 27 deletions(-) create mode 100644 funnel/assets/js/utils/tabs.js diff --git a/funnel/assets/js/utils/initembed.js b/funnel/assets/js/utils/initembed.js index 581870993..28a1cec88 100644 --- a/funnel/assets/js/utils/initembed.js +++ b/funnel/assets/js/utils/initembed.js @@ -3,6 +3,7 @@ import TypeformEmbed from './typeform_embed'; import MarkmapEmbed from './markmap'; import addMermaidEmbed from './mermaid'; import PrismEmbed from './prism'; +import MarkdownMUITabs from './tabs'; export default function initEmbed(parentContainer = '.markdown') { TypeformEmbed.init(parentContainer); @@ -10,4 +11,5 @@ export default function initEmbed(parentContainer = '.markdown') { MarkmapEmbed.init(parentContainer); addMermaidEmbed(parentContainer); PrismEmbed.init(parentContainer); + MarkdownMUITabs.init(parentContainer); } diff --git a/funnel/assets/js/utils/tabs.js b/funnel/assets/js/utils/tabs.js new file mode 100644 index 000000000..0d7951d25 --- /dev/null +++ b/funnel/assets/js/utils/tabs.js @@ -0,0 +1,51 @@ +const MarkdownMUITabs = { + async init(container) { + const parentElement = $(container || 'body'); + + parentElement + .find('.md-tabset .mui-tabs__bar') + .each(function tabsetsAccessibility() { + let index = 0; + const tabs = $(this).find('[role=tab]'); + // http://web-accessibility.carnegiemuseums.org/code/tabs/ + tabs.bind({ + keydown: function onpress(event) { + const LEFT_ARROW = 37; + const UP_ARROW = 38; + const RIGHT_ARROW = 39; + const DOWN_ARROW = 40; + const k = event.which || event.keyCode; + + if (k >= LEFT_ARROW && k <= DOWN_ARROW) { + if (k === LEFT_ARROW || k === UP_ARROW) { + if (index > 0) index -= 1; + else index = tabs.length - 1; + } else if (k === RIGHT_ARROW || k === DOWN_ARROW) { + if (index < tabs.length - 1) index += 1; + else index = 0; + } + window.mui.tabs.activate($(tabs.get(index)).data('mui-controls')); + } + }, + }); + tabs.each(function attachTabAccessibilityEvents() { + this.addEventListener('mui.tabs.showend', function addListenerToShownTab(ev) { + $(ev.srcElement).attr({ tabindex: 0, 'aria-selected': 'true' }).focus(); + }); + this.addEventListener( + 'mui.tabs.hideend', + function addListenerToHiddenTab(ev) { + $(ev.srcElement).attr({ tabindex: '-1', 'aria-selected': 'false' }); + } + ); + }); + }); + // parentElement.find('[data-mui-controls^="md-tab-"]').each(function attach() { + // this.addEventListener('mui.tabs.showend', function showingTab(ev) { + // console.log(ev); + // }); + // }); + }, +}; + +export default MarkdownMUITabs; diff --git a/funnel/utils/markdown/tabs.py b/funnel/utils/markdown/tabs.py index 758c1199d..d9057bc3d 100644 --- a/funnel/utils/markdown/tabs.py +++ b/funnel/utils/markdown/tabs.py @@ -52,8 +52,11 @@ class TabsetNode: start: int parent: Optional[TabNode] = None children: List[TabNode] = field(default_factory=list) - _html_tabs: ClassVar[str] = '
      {items_html}
    ' + _html_tabs: ClassVar[ + str + ] = '
      {items_html}
    ' html_close: ClassVar[str] = '' + _tabset_id: str = '' def flatten(self) -> List[TabNode]: tabs = self.children @@ -65,7 +68,18 @@ def flatten(self) -> List[TabNode]: @property def html_open(self): items_html = ''.join([item.html_tab_item for item in self.children]) - return '
    ' + self._html_tabs.format(items_html=items_html) + return ( + f'
    ' + + self._html_tabs.format(items_html=items_html) + ) + + @property + def tabset_id(self) -> str: + return 'md-tabset-' + self._tabset_id + + @tabset_id.setter + def tabset_id(self, value) -> None: + self._tabset_id = value @dataclass @@ -78,13 +92,17 @@ class TabNode: _tab_id: str = '' children: List[TabsetNode] = field(default_factory=list) _opening: ClassVar[str] = ( - '' + '
    ' + '
    ' + + '
    ' ) _closing: ClassVar[str] = '
    ' _item_html: ClassVar[str] = ( - '' - + '{title}' + '
  • ' + + '{title}
  • ' ) def _class_attr(self, classes=None): @@ -93,6 +111,19 @@ def _class_attr(self, classes=None): classes = classes + self._active_class return f' class="{" ".join(classes)}"' if len(classes) > 0 else '' + @property + def _item_aria(self): + if self.is_first: + return ' tabindex="0" aria-selected="true"' + return ' tabindex="-1" aria-selected="false"' + + def flatten(self) -> List[TabsetNode]: + tabsets = self.children + for tabset in self.children: + for tab in tabset.children: + tabsets = tabsets + tab.flatten() + return tabsets + @property def _active_class(self): return ['mui--is-active'] if self.is_first else [] @@ -103,7 +134,7 @@ def title(self): @property def tab_id(self) -> str: - return 'md-tab-id-' + self._tab_id + return 'md-tab-' + self._tab_id @tab_id.setter def tab_id(self, value) -> None: @@ -120,7 +151,7 @@ def is_last(self) -> bool: @property def html_open(self) -> str: opening = self._opening.format( - tab_id=self.tab_id, class_attr=self._class_attr(['md-tabs-panel', 'grid']) + tab_id=self.tab_id, class_attr=self._class_attr(['mui-tabs__pane', 'grid']) ) if self.is_first: opening = self.parent.html_open + opening @@ -133,7 +164,11 @@ def html_close(self) -> str: @property def html_tab_item(self): return self._item_html.format( - tab_id=self.tab_id, title=self.title, class_attr=self._class_attr() + tab_id=self.tab_id, + tabset_id=self.parent.tabset_id, + title=self.title, + class_attr=self._class_attr(), + accessibility=self._item_aria, ) @@ -189,6 +224,14 @@ def index(self, start: Optional[int] = None) -> Optional[TabNode]: return self._index[start] except KeyError: return None + + tabsets: List[TabsetNode] = [] + for tabset in self.tabsets: + tabsets.append(tabset) + for tab in tabset.children: + tabsets = tabsets + tab.flatten() + for i, tabset in enumerate(tabsets): + tabset.tabset_id = str(i + 1) tabs: List[TabNode] = reduce( lambda tablist, tabset: tablist + tabset.flatten(), self.tabsets, [] ) diff --git a/tests/unit/utils/markdown/data/tabs.toml b/tests/unit/utils/markdown/data/tabs.toml index 1922ec74b..9ae7ba958 100644 --- a/tests/unit/utils/markdown/data/tabs.toml +++ b/tests/unit/utils/markdown/data/tabs.toml @@ -482,17 +482,17 @@ This tab is going to have a table!
    """ document = """

    Tabs using containers plugin #

    Let us see if we can use the containers plugin to render tabs.

    -

    The next tab has a blank title.
    +

    The next tab has a blank title.
    Please click the blank space.

    This tab contains code!

    -
    let x = 10000;
    +
    let x = 10000;
     sleep(x);
     
    -
    def sum(a, b):
    +
    def sum(a, b):
         return a['quantity'] + b['quantity']
     print(sum({'quantity': 5}, {'quantity': 10}))
     
    -
    **Here is bold markdown.**
    +
    **Here is bold markdown.**
     ### Heading
     \\::: should render three `:` characters.
     \\``` should render three \\` characters.
    @@ -500,8 +500,8 @@ There's a list below:
     - Item 1
     - Item 2
     
    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    +
    Mindmap
     # Digital Identifiers and Rights
     
     ## Community and Outreach
    @@ -597,7 +597,7 @@ There's a list below:
     - Public health services
     - Records (birth, death, land etc)
     
    -
    Visualization
    {
    +
    Visualization
    {
     "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
     "description": "A population pyramid for the US in 2000.",
     "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    @@ -668,13 +668,13 @@ There's a list below:
     }
     
     
    -
    Visualization
    sequenceDiagram
    +
    Visualization
    sequenceDiagram
      Alice->>+John: Hello John, how are you?
      Alice->>+John: John, can you hear me?
      John-->>-Alice: Hi Alice, I can hear you!
      John-->>-Alice: I feel great!
     
    -

    This tab is going to have a table!

    +

    This tab is going to have a table!

    @@ -707,17 +707,17 @@ There's a list below: """ tabs = """

    Tabs using containers plugin

    Let us see if we can use the containers plugin to render tabs.

    -

    The next tab has a blank title. +

    The next tab has a blank title. Please click the blank space.

    This tab contains code!

    -
    let x = 10000;
    +
    let x = 10000;
     sleep(x);
     
    -
    def sum(a, b):
    +
    def sum(a, b):
         return a['quantity'] + b['quantity']
     print(sum({'quantity': 5}, {'quantity': 10}))
     
    -
    **Here is bold markdown.**
    +
    **Here is bold markdown.**
     ### Heading
     \\::: should render three `:` characters.
     \\``` should render three \\` characters.
    @@ -725,8 +725,8 @@ There's a list below:
     - Item 1
     - Item 2
     
    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    +
    
     # Digital Identifiers and Rights
     
     ## Community and Outreach
    @@ -822,7 +822,7 @@ There's a list below:
     - Public health services
     - Records (birth, death, land etc)
     
    -
    {
    +
    {
       "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
       "description": "A population pyramid for the US in 2000.",
       "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    @@ -893,13 +893,13 @@ There's a list below:
     }
     
     
    -
    sequenceDiagram
    +
    sequenceDiagram
         Alice->>+John: Hello John, how are you?
         Alice->>+John: John, can you hear me?
         John-->>-Alice: Hi Alice, I can hear you!
         John-->>-Alice: I feel great!
     
    -

    This tab is going to have a table!

    +

    This tab is going to have a table!

    From a795f311d9f3c043693b874ed69dab137efb9b4b Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Wed, 18 Jan 2023 13:58:39 +0530 Subject: [PATCH 009/281] Add class no-title for markdown tabs without specified title. --- funnel/utils/markdown/tabs.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/funnel/utils/markdown/tabs.py b/funnel/utils/markdown/tabs.py index d9057bc3d..3322c1112 100644 --- a/funnel/utils/markdown/tabs.py +++ b/funnel/utils/markdown/tabs.py @@ -109,6 +109,8 @@ def _class_attr(self, classes=None): if classes is None: classes = [] classes = classes + self._active_class + if self.title == '': + classes.append('no-title') return f' class="{" ".join(classes)}"' if len(classes) > 0 else '' @property From abb7db811dfd8e10b40d33add38cfbb8661989f2 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Wed, 18 Jan 2023 15:36:01 +0530 Subject: [PATCH 010/281] Styling for markdown tab with empty title. --- funnel/assets/sass/components/_tabs.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/funnel/assets/sass/components/_tabs.scss b/funnel/assets/sass/components/_tabs.scss index 9c7b5f92e..8ff89b5d6 100644 --- a/funnel/assets/sass/components/_tabs.scss +++ b/funnel/assets/sass/components/_tabs.scss @@ -183,3 +183,8 @@ border: 1px solid transparent; background: transparentize($mui-primary-color, 0.85); } + +.md-tabset .mui-tabs__bar .no-title a[role='tab']::before { + content: 'No Title'; + color: $mui-accent-color; +} From 65bcfd973b56728de255d94a83b7d701a361bd87 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Wed, 18 Jan 2023 17:14:33 +0530 Subject: [PATCH 011/281] Add preventDefault to keyboard navigation for markdown tabs. --- funnel/assets/js/utils/tabs.js | 1 + 1 file changed, 1 insertion(+) diff --git a/funnel/assets/js/utils/tabs.js b/funnel/assets/js/utils/tabs.js index 0d7951d25..e3b4c62f2 100644 --- a/funnel/assets/js/utils/tabs.js +++ b/funnel/assets/js/utils/tabs.js @@ -25,6 +25,7 @@ const MarkdownMUITabs = { else index = 0; } window.mui.tabs.activate($(tabs.get(index)).data('mui-controls')); + event.preventDefault(); } }, }); From f5634d0a56e771ab0bb905ce4213b4aa2a687f38 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Thu, 19 Jan 2023 18:36:19 +0530 Subject: [PATCH 012/281] Show 'Tab ' for markdown tabs without title. --- funnel/assets/sass/components/_tabs.scss | 5 ----- funnel/utils/markdown/tabs.py | 3 ++- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/funnel/assets/sass/components/_tabs.scss b/funnel/assets/sass/components/_tabs.scss index 8ff89b5d6..9c7b5f92e 100644 --- a/funnel/assets/sass/components/_tabs.scss +++ b/funnel/assets/sass/components/_tabs.scss @@ -183,8 +183,3 @@ border: 1px solid transparent; background: transparentize($mui-primary-color, 0.85); } - -.md-tabset .mui-tabs__bar .no-title a[role='tab']::before { - content: 'No Title'; - color: $mui-accent-color; -} diff --git a/funnel/utils/markdown/tabs.py b/funnel/utils/markdown/tabs.py index 3322c1112..8c824781f 100644 --- a/funnel/utils/markdown/tabs.py +++ b/funnel/utils/markdown/tabs.py @@ -132,7 +132,8 @@ def _active_class(self): @property def title(self): - return ' '.join(self.info.strip().split()[1:]) + tab_title = ' '.join(self.info.strip().split()[1:]) + return tab_title or 'Tab ' + str(self.parent.children.index(self) + 1) @property def tab_id(self) -> str: From 69e50299f1a8336e6bd2dba256bf96674841e384 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Sat, 21 Jan 2023 21:17:09 +0530 Subject: [PATCH 013/281] Make MUITabs a general site-wide activation. --- funnel/assets/js/app.js | 2 + funnel/assets/js/utils/initembed.js | 4 +- funnel/assets/js/utils/tabs.js | 67 +++++++++---------- .../notification_preferences.html.jinja2 | 10 ++- funnel/templates/project_layout.html.jinja2 | 15 +++-- funnel/templates/schedule_edit.html.jinja2 | 20 ++++-- 6 files changed, 67 insertions(+), 51 deletions(-) diff --git a/funnel/assets/js/app.js b/funnel/assets/js/app.js index 5ae5181d1..b0006ed2a 100644 --- a/funnel/assets/js/app.js +++ b/funnel/assets/js/app.js @@ -6,6 +6,7 @@ import loadLangTranslations from './utils/translations'; import LazyloadImg from './utils/lazyloadimage'; import Form from './utils/formhelper'; import Analytics from './utils/analytics'; +import MUITabs from './utils/tabs'; $(() => { window.Hasgeek.Config.availableLanguages = { @@ -47,6 +48,7 @@ $(() => { window.Hasgeek.Config.accountMenu ); ScrollHelper.scrollTabs(); + MUITabs.init(); Utils.truncate(); Utils.showTimeOnCalendar(); Utils.popupBackHandler(); diff --git a/funnel/assets/js/utils/initembed.js b/funnel/assets/js/utils/initembed.js index 28a1cec88..660500fc4 100644 --- a/funnel/assets/js/utils/initembed.js +++ b/funnel/assets/js/utils/initembed.js @@ -3,7 +3,7 @@ import TypeformEmbed from './typeform_embed'; import MarkmapEmbed from './markmap'; import addMermaidEmbed from './mermaid'; import PrismEmbed from './prism'; -import MarkdownMUITabs from './tabs'; +import MUITabs from './tabs'; export default function initEmbed(parentContainer = '.markdown') { TypeformEmbed.init(parentContainer); @@ -11,5 +11,5 @@ export default function initEmbed(parentContainer = '.markdown') { MarkmapEmbed.init(parentContainer); addMermaidEmbed(parentContainer); PrismEmbed.init(parentContainer); - MarkdownMUITabs.init(parentContainer); + MUITabs.init(parentContainer); } diff --git a/funnel/assets/js/utils/tabs.js b/funnel/assets/js/utils/tabs.js index e3b4c62f2..569897ece 100644 --- a/funnel/assets/js/utils/tabs.js +++ b/funnel/assets/js/utils/tabs.js @@ -1,46 +1,41 @@ -const MarkdownMUITabs = { +const MUITabs = { async init(container) { const parentElement = $(container || 'body'); - parentElement - .find('.md-tabset .mui-tabs__bar') - .each(function tabsetsAccessibility() { - let index = 0; - const tabs = $(this).find('[role=tab]'); - // http://web-accessibility.carnegiemuseums.org/code/tabs/ - tabs.bind({ - keydown: function onpress(event) { - const LEFT_ARROW = 37; - const UP_ARROW = 38; - const RIGHT_ARROW = 39; - const DOWN_ARROW = 40; - const k = event.which || event.keyCode; + parentElement.find('.mui-tabs__bar').each(function tabsetsAccessibility() { + let index = 0; + const tabs = $(this).find('[role=tab]'); + // http://web-accessibility.carnegiemuseums.org/code/tabs/ + tabs.bind({ + keydown: function onpress(event) { + const LEFT_ARROW = 37; + const UP_ARROW = 38; + const RIGHT_ARROW = 39; + const DOWN_ARROW = 40; + const k = event.which || event.keyCode; - if (k >= LEFT_ARROW && k <= DOWN_ARROW) { - if (k === LEFT_ARROW || k === UP_ARROW) { - if (index > 0) index -= 1; - else index = tabs.length - 1; - } else if (k === RIGHT_ARROW || k === DOWN_ARROW) { - if (index < tabs.length - 1) index += 1; - else index = 0; - } - window.mui.tabs.activate($(tabs.get(index)).data('mui-controls')); - event.preventDefault(); + if (k >= LEFT_ARROW && k <= DOWN_ARROW) { + if (k === LEFT_ARROW || k === UP_ARROW) { + if (index > 0) index -= 1; + else index = tabs.length - 1; + } else if (k === RIGHT_ARROW || k === DOWN_ARROW) { + if (index < tabs.length - 1) index += 1; + else index = 0; } - }, + window.mui.tabs.activate($(tabs.get(index)).data('mui-controls')); + event.preventDefault(); + } + }, + }); + tabs.each(function attachTabAccessibilityEvents() { + this.addEventListener('mui.tabs.showend', function addListenerToShownTab(ev) { + $(ev.srcElement).attr({ tabindex: 0, 'aria-selected': 'true' }).focus(); }); - tabs.each(function attachTabAccessibilityEvents() { - this.addEventListener('mui.tabs.showend', function addListenerToShownTab(ev) { - $(ev.srcElement).attr({ tabindex: 0, 'aria-selected': 'true' }).focus(); - }); - this.addEventListener( - 'mui.tabs.hideend', - function addListenerToHiddenTab(ev) { - $(ev.srcElement).attr({ tabindex: '-1', 'aria-selected': 'false' }); - } - ); + this.addEventListener('mui.tabs.hideend', function addListenerToHiddenTab(ev) { + $(ev.srcElement).attr({ tabindex: '-1', 'aria-selected': 'false' }); }); }); + }); // parentElement.find('[data-mui-controls^="md-tab-"]').each(function attach() { // this.addEventListener('mui.tabs.showend', function showingTab(ev) { // console.log(ev); @@ -49,4 +44,4 @@ const MarkdownMUITabs = { }, }; -export default MarkdownMUITabs; +export default MUITabs; diff --git a/funnel/templates/notification_preferences.html.jinja2 b/funnel/templates/notification_preferences.html.jinja2 index eeea05838..83f29fb2b 100644 --- a/funnel/templates/notification_preferences.html.jinja2 +++ b/funnel/templates/notification_preferences.html.jinja2 @@ -24,13 +24,17 @@
    {% for transport in transports %} -
    +
    {% if transport_details[transport]['available'] %}
    diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index cea86c0f6..74ef62650 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -52,19 +52,24 @@ {% macro project_header(project) %} {% if project.livestream_urls %} -
    - {% if project.livestream_urls|length > 2 %} +
    + {% if project.livestream_urls|length >= 2 %} {% endif %} {%- for stream in project.livestream_urls %} -
    +
    {{ livestream_edit_btn(project) }} {{ banner_edit_btn(project) }} diff --git a/funnel/templates/schedule_edit.html.jinja2 b/funnel/templates/schedule_edit.html.jinja2 index 62449e894..d5b4322df 100644 --- a/funnel/templates/schedule_edit.html.jinja2 +++ b/funnel/templates/schedule_edit.html.jinja2 @@ -29,11 +29,21 @@
    -
      - - + -
      +
      {%- for proposal in proposals['unscheduled'] %}
      {%- for member in proposal.memberships %}{% if not member.is_uncredited %} @@ -53,7 +63,7 @@
      {%- endfor %}
      -
      +
      {% for venue in venues %} From ab8d2fabdae56432ce2d43094e0b870c851621a5 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Sat, 21 Jan 2023 21:19:44 +0530 Subject: [PATCH 014/281] Watch jinja templates to restart devserver on change. --- devserver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devserver.py b/devserver.py index 75f000660..5bbfc7763 100755 --- a/devserver.py +++ b/devserver.py @@ -32,7 +32,7 @@ use_debugger=debug_mode, use_evalex=debug_mode, threaded=True, - extra_files=['funnel/static/build/manifest.json'], + extra_files=['funnel/static/build/manifest.json', 'funnel/templates/**.jinja2'], ) if background_rq: From ba5c78c916a7ddbdc817e885a90738ee9d89565f Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Sun, 22 Jan 2023 07:13:13 +0530 Subject: [PATCH 015/281] Move code for previous/next tab activations into functions. --- funnel/assets/js/utils/tabs.js | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/funnel/assets/js/utils/tabs.js b/funnel/assets/js/utils/tabs.js index 569897ece..275a294d9 100644 --- a/funnel/assets/js/utils/tabs.js +++ b/funnel/assets/js/utils/tabs.js @@ -3,9 +3,22 @@ const MUITabs = { const parentElement = $(container || 'body'); parentElement.find('.mui-tabs__bar').each(function tabsetsAccessibility() { + // http://web-accessibility.carnegiemuseums.org/code/tabs/ let index = 0; const tabs = $(this).find('[role=tab]'); - // http://web-accessibility.carnegiemuseums.org/code/tabs/ + function activateCurrent() { + window.mui.tabs.activate($(tabs.get(index)).data('mui-controls')); + } + function previous() { + if (index > 0) index -= 1; + else index = tabs.length - 1; + activateCurrent(); + } + function next() { + if (index < tabs.length - 1) index += 1; + else index = 0; + activateCurrent(); + } tabs.bind({ keydown: function onpress(event) { const LEFT_ARROW = 37; @@ -15,14 +28,8 @@ const MUITabs = { const k = event.which || event.keyCode; if (k >= LEFT_ARROW && k <= DOWN_ARROW) { - if (k === LEFT_ARROW || k === UP_ARROW) { - if (index > 0) index -= 1; - else index = tabs.length - 1; - } else if (k === RIGHT_ARROW || k === DOWN_ARROW) { - if (index < tabs.length - 1) index += 1; - else index = 0; - } - window.mui.tabs.activate($(tabs.get(index)).data('mui-controls')); + if (k === LEFT_ARROW || k === UP_ARROW) previous(); + else if (k === RIGHT_ARROW || k === DOWN_ARROW) next(); event.preventDefault(); } }, @@ -36,11 +43,6 @@ const MUITabs = { }); }); }); - // parentElement.find('[data-mui-controls^="md-tab-"]').each(function attach() { - // this.addEventListener('mui.tabs.showend', function showingTab(ev) { - // console.log(ev); - // }); - // }); }, }; From 4dc5974fbe88fcad5cf150d9f71c7438028fde76 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Sun, 22 Jan 2023 07:13:52 +0530 Subject: [PATCH 016/281] Revert "Watch jinja templates to restart devserver on change." This reverts commit ab8d2fabdae56432ce2d43094e0b870c851621a5. --- devserver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devserver.py b/devserver.py index 5bbfc7763..75f000660 100755 --- a/devserver.py +++ b/devserver.py @@ -32,7 +32,7 @@ use_debugger=debug_mode, use_evalex=debug_mode, threaded=True, - extra_files=['funnel/static/build/manifest.json', 'funnel/templates/**.jinja2'], + extra_files=['funnel/static/build/manifest.json'], ) if background_rq: From 77b77f913b564f6ca275ef0e6d10722cec1f60c2 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Tue, 24 Jan 2023 10:43:36 +0530 Subject: [PATCH 017/281] Updated expected output for markdown tests to accommodate the last change in handling of tabs with blank titles. --- tests/unit/utils/markdown/data/tabs.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/unit/utils/markdown/data/tabs.toml b/tests/unit/utils/markdown/data/tabs.toml index 9ae7ba958..76d6ca312 100644 --- a/tests/unit/utils/markdown/data/tabs.toml +++ b/tests/unit/utils/markdown/data/tabs.toml @@ -4,7 +4,7 @@ Let us see if we can use the containers plugin to render tabs. :::: tab Code **The next tab has a blank title. -Please click the blank space.** +The tab for it should render in the format "Tab ".** This tab contains code! ::: tab Javascript @@ -250,7 +250,7 @@ basic = """

      Tabs using containers plugin

      Let us see if we can use the containers plugin to render tabs.

      :::: tab Code
      The next tab has a blank title.
      -Please click the blank space.

      +The tab for it should render in the format "Tab <n>".

      This tab contains code!
      ::: tab Javascript

      let x = 10000;
      @@ -482,8 +482,8 @@ This tab is going to have a table!
      """ document = """

      Tabs using containers plugin #

      Let us see if we can use the containers plugin to render tabs.

      -

      The next tab has a blank title.
      -Please click the blank space.

      +

      The next tab has a blank title.
      +The tab for it should render in the format “Tab <n>”.

      This tab contains code!

      let x = 10000;
       sleep(x);
      @@ -707,8 +707,8 @@ There's a list below:
       
      """ tabs = """

      Tabs using containers plugin

      Let us see if we can use the containers plugin to render tabs.

      -

      The next tab has a blank title. -Please click the blank space.

      +

      The next tab has a blank title. +The tab for it should render in the format "Tab <n>".

      This tab contains code!

      let x = 10000;
       sleep(x);
      
      From f74cb858d6db7a69488eeb58ac0f07106eeadce2 Mon Sep 17 00:00:00 2001
      From: anishTP 
      Date: Mon, 30 Jan 2023 14:24:33 +0530
      Subject: [PATCH 018/281] Merging markdown-tabs into  markdown-tabs-styling
      
      ---
       funnel/assets/js/utils/tabs.js         | 49 ++++++++++++++++
       funnel/assets/sass/mui/_tabs.scss      | 77 +++++++++++++++++++++++---
       funnel/assets/sass/mui/_variables.scss |  5 +-
       funnel/utils/markdown/tabs.py          |  2 +-
       4 files changed, 124 insertions(+), 9 deletions(-)
      
      diff --git a/funnel/assets/js/utils/tabs.js b/funnel/assets/js/utils/tabs.js
      index 275a294d9..8bc5e8677 100644
      --- a/funnel/assets/js/utils/tabs.js
      +++ b/funnel/assets/js/utils/tabs.js
      @@ -1,3 +1,5 @@
      +import Utils from './helper';
      +
       const MUITabs = {
         async init(container) {
           const parentElement = $(container || 'body');
      @@ -41,8 +43,55 @@ const MUITabs = {
               this.addEventListener('mui.tabs.hideend', function addListenerToHiddenTab(ev) {
                 $(ev.srcElement).attr({ tabindex: '-1', 'aria-selected': 'false' });
               });
      +
      +        // const iconElements = document.querySelectorAll('.overflow-icon');
      +
      +        // if (iconElements.length > 2) {
      +        //   const lastIcon = iconElements[iconElements.length - 1];
      +        //   lastIcon.parentNode.removeChild(lastIcon);
      +
      +        //   const secondlastIcon = iconElements[iconElements.length - 2];
      +        //   secondlastIcon.parentNode.removeChildElement(secondlastIcon);
      +        // }
      +
      +        // const wrapperElements = document.querySelectorAll('.tabs__icon-wrapper');
      +
      +        // if (wrapperElements.length > 1) {
      +        //   const lastWrapperElement = wrapperElements[wrapperElements.length - 1];
      +        //   lastWrapperElement.parentNode.removeChild(lastWrapperElement);
      +        //   console.log(wrapperElements.length);
      +        // }
             });
           });
      +
      +    const tabsBar = document.querySelector('.mui-tabs__bar');
      +    console.log(tabsBar.scrollWidth, tabsBar.clientWidth);
      +
      +    if (tabsBar.scrollWidth - tabsBar.clientWidth > 0) {
      +      const iconWrapper = document.createElement('div');
      +      const overflowIconLeft = Utils.getFaiconHTML('angle-left', 'body', true, [
      +        'overflow-icon',
      +      ]);
      +      const overflowIconRight = Utils.getFaiconHTML('angle-right', 'body', true, [
      +        'overflow-icon',
      +      ]);
      +
      +      const tabsContainer = tabsBar.parentNode;
      +
      +      iconWrapper.setAttribute('class', 'tabs__icon-wrapper');
      +
      +      tabsContainer.replaceChild(iconWrapper, tabsBar);
      +      iconWrapper.appendChild(tabsBar);
      +
      +      tabsBar.insertAdjacentElement('beforebegin', overflowIconLeft);
      +      tabsBar.insertAdjacentElement('afterend', overflowIconRight);
      +    }
      +
      +    // parentElement.find('[data-mui-controls^="md-tab-"]').each(function attach() {
      +    //   this.addEventListener('mui.tabs.showend', function showingTab(ev) {
      +    //     console.log(ev);
      +    //   });
      +    // });
         },
       };
       
      diff --git a/funnel/assets/sass/mui/_tabs.scss b/funnel/assets/sass/mui/_tabs.scss
      index 1b0265cba..82f6c3bdb 100644
      --- a/funnel/assets/sass/mui/_tabs.scss
      +++ b/funnel/assets/sass/mui/_tabs.scss
      @@ -2,10 +2,13 @@
        * MUI Tabs module
        */
       
      -.mui-tabs__bar {
      + .mui-tabs__bar {
      +  display: flex;
      +  position: relative;
         list-style: none;
         padding-left: 0;
         margin-bottom: 0;
      +  gap: 16px;
         background-color: transparent;
         white-space: nowrap;
         overflow-x: auto;
      @@ -14,25 +17,30 @@
           display: inline-block;
       
           > a {
      -      display: block;
      +      display: flex;
             white-space: nowrap;
      -      text-transform: uppercase;
      +      // text-transform: uppercase;
             font-weight: 500;
             font-size: 14px;
             color: $mui-tab-font-color;
             cursor: default;
      -      height: 48px;
      -      line-height: 48px;
      -      padding-left: 24px;
      -      padding-right: 24px;
      +      // height: 48px;
      +      // line-height: 48px;
      +      line-height: 21px;
      +      // padding-left: 24px;
      +      // padding-right: 24px;
      +      padding: 12px 0;
             user-select: none;
       
             &:hover {
               text-decoration: none;
      +        color: $mui-tab-border-color-hover; 
      +        border-bottom: 2px solid $mui-tab-font-color-hover;
             }
           }
       
           &.mui--is-active {
      +      text-decoration: none;
             border-bottom: 2px solid $mui-tab-border-color-active;
       
             > a {
      @@ -40,6 +48,8 @@
                 color: $mui-tab-font-color;
               } @else {
                 color: $mui-tab-font-color-active;
      +          border-bottom: none;
      +          text-decoration: none;
               }
             }
           }
      @@ -62,6 +72,10 @@
         }
       }
       
      +.tabpanel__body__padding {
      +  padding: 8px 0 16px 0 !important;
      +}
      +
       .mui-tabs__pane {
         display: none;
       
      @@ -69,3 +83,52 @@
           display: block;
         }
       }
      +
      +/*
      + OVERFLOW ARROWS STYLING
      +*/
      +
      +/* hiding scrollbar */
      +
      +.mui-tabs__bar::-webkit-scrollbar {
      +  -ms-overflow-style: none;  /* Internet Explorer 10+ */
      +  scrollbar-width: none;  /* Firefox */
      +  position: relative;
      +}
      +.mui-tabs__bar::-webkit-scrollbar { 
      +  display: none;  /* Safari and Chrome */
      +}
      +
      +.tabs__icon-wrapper .overflow-icon{
      +  position: absolute;
      +  left: 0;
      +  width: 6px;
      +  height: 14px;
      +  display: none;
      +  align-items: center;
      +  cursor: pointer;
      +  color: #4d5763;
      +  font-size: 14px;
      +  line-height: 21px;
      +}
      +.overflow-icon:first-child {
      +  position: relative;
      +  display: flex;
      +  left: 4px;
      +}
      +.overflow-icon:last-child {
      +  display: flex;
      +  position: relative;
      +  right: 4px;
      +  justify-content: flex-end;
      +}
      +.overflow-icon:hover{
      +  color: #1f2d3d;
      +}
      +
      +.tabs__icon-wrapper {
      +  display: flex;
      +  position: relative;
      +  max-width: 100%;
      +  align-items: center;
      +}
      \ No newline at end of file
      diff --git a/funnel/assets/sass/mui/_variables.scss b/funnel/assets/sass/mui/_variables.scss
      index 583d9b817..f4f455bba 100644
      --- a/funnel/assets/sass/mui/_variables.scss
      +++ b/funnel/assets/sass/mui/_variables.scss
      @@ -213,9 +213,12 @@ $mui-table-border-color: $mui-divider-color !default;
       // TABS
       // ============================================================================
       
      -$mui-tab-font-color: $mui-base-font-color !default;
      +$mui-tab-font-color: $mui-text-accent !default;
       $mui-tab-font-color-active: $mui-primary-color !default;
       $mui-tab-border-color-active: $mui-primary-color !default;
      +$mui-tab-font-color-hover: $mui-text-light !default;
      +$mui-tab-border-color-hover: $mui-text-light !default;
      +
       
       // ============================================================================
       // CARET
      diff --git a/funnel/utils/markdown/tabs.py b/funnel/utils/markdown/tabs.py
      index 8c824781f..3696c1624 100644
      --- a/funnel/utils/markdown/tabs.py
      +++ b/funnel/utils/markdown/tabs.py
      @@ -94,7 +94,7 @@ class TabNode:
           _opening: ClassVar[str] = (
               '
      ' - + '
      ' + + '
      ' ) _closing: ClassVar[str] = '
      ' _item_html: ClassVar[str] = ( From c2122a84f0fa59ac7c98b60f7ce7b463bcb7580d Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Tue, 31 Jan 2023 10:59:45 +0530 Subject: [PATCH 019/281] Convert json response for toggle switch (#1610) --- funnel/assets/js/utils/formhelper.js | 1 + 1 file changed, 1 insertion(+) diff --git a/funnel/assets/js/utils/formhelper.js b/funnel/assets/js/utils/formhelper.js index f47e700fd..88b1c3afc 100644 --- a/funnel/assets/js/utils/formhelper.js +++ b/funnel/assets/js/utils/formhelper.js @@ -157,6 +157,7 @@ const Form = { }, body: new URLSearchParams(formData).toString(), }) + .then((response) => response.json()) .then((responseData) => { if (responseData && responseData.message) { window.toastr.success(responseData.message); From 9daa093871581fd7009c9bf3d47a8f4ebf1c70af Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 31 Jan 2023 23:13:56 +0530 Subject: [PATCH 020/281] [pre-commit.ci] pre-commit autoupdate (#1609) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e34507633..d5c88de2f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -79,7 +79,7 @@ repos: - toml==0.10.2 - tomli==2.0.1 - repo: https://github.com/PyCQA/isort - rev: 5.11.4 + rev: 5.12.0 hooks: - id: isort additional_dependencies: From 245591d892795e29da530001330f98d33e43ed48 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Wed, 1 Feb 2023 11:53:49 +0530 Subject: [PATCH 021/281] Import prismjs from webpack (#1605) * Move prism to webpack * Copy prisjm languages to build folder * Remove prism-show-language --- funnel/assets/js/utils/prism.js | 87 ++++++-------------- funnel/assets/sass/components/_markdown.scss | 2 + package-lock.json | 5 +- package.json | 1 + webpack.config.js | 4 + 5 files changed, 34 insertions(+), 65 deletions(-) diff --git a/funnel/assets/js/utils/prism.js b/funnel/assets/js/utils/prism.js index 798cae4cd..ec161d5f5 100644 --- a/funnel/assets/js/utils/prism.js +++ b/funnel/assets/js/utils/prism.js @@ -1,72 +1,18 @@ +import Prism from 'prismjs'; +import 'prismjs/plugins/autoloader/prism-autoloader'; +import 'prismjs/plugins/match-braces/prism-match-braces'; +import 'prismjs/plugins/toolbar/prism-toolbar'; +import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard'; + +Prism.plugins.autoloader.languages_path = '/static/build/js/prismjs/components/'; + const PrismEmbed = { activatePrism() { this.container .find('code[class*=language-]:not(.activated):not(.activating)') .each(function activate() { - window.Prism.highlightElement(this); - }); - }, - hooked: false, - loadPrism() { - const CDN_CSS = [ - 'https://unpkg.com/prismjs/themes/prism.min.css', - // 'https://unpkg.com/prismjs/plugins/line-numbers/prism-line-numbers.min.css', - 'https://unpkg.com/prismjs/plugins/match-braces/prism-match-braces.min.css', - ]; - const CDN = [ - 'https://unpkg.com/prismjs/components/prism-core.min.js', - 'https://unpkg.com/prismjs/plugins/autoloader/prism-autoloader.min.js', - 'https://unpkg.com/prismjs/plugins/match-braces/prism-match-braces.min.js', - // 'https://unpkg.com/prismjs/plugins/line-numbers/prism-line-numbers.min.js', - 'https://unpkg.com/prismjs/plugins/toolbar/prism-toolbar.min.js', - // 'https://unpkg.com/prismjs/plugins/show-language/prism-show-language.min.js', - 'https://unpkg.com/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js', - ]; - let asset = 0; - const loadPrismStyle = () => { - for (let i = 0; i < CDN_CSS.length; i += 1) { - if (!$(`link[href*="${CDN_CSS[i]}"]`).length) - $('head').append($(``)); - } - }; - const loadPrismScript = () => { - $.ajax({ - url: CDN[asset], - dataType: 'script', - cache: true, - }).done(() => { - if (asset < CDN.length - 1) { - asset += 1; - loadPrismScript(); - } else { - if (!this.hooked) { - this.hooked = true; - window.Prism.hooks.add('before-sanity-check', (env) => { - if (env.element) $(env.element).addClass('activating'); - }); - window.Prism.hooks.add('complete', (env) => { - if (env.element) - $(env.element).addClass('activated').removeClass('activating'); - $(env.element) - .parent() - .parent() - .find('.toolbar-item') - .find('a, button') - .addClass('mui-btn mui-btn--accent mui-btn--raised mui-btn--small'); - }); - $('body') - // .addClass('line-numbers') - .addClass('match-braces') - .addClass('rainbow-braces'); - } - this.activatePrism(); - } + Prism.highlightElement(this); }); - }; - loadPrismStyle(); - if (!window.Prism) { - loadPrismScript(); - } else this.activatePrism(); }, init(container) { this.container = $(container || 'body'); @@ -74,7 +20,20 @@ const PrismEmbed = { this.container.find('code[class*=language-]:not(.activated):not(.activating)') .length > 0 ) { - this.loadPrism(); + Prism.hooks.add('before-sanity-check', (env) => { + if (env.element) $(env.element).addClass('activating'); + }); + Prism.hooks.add('complete', (env) => { + if (env.element) $(env.element).addClass('activated').removeClass('activating'); + $(env.element) + .parent() + .parent() + .find('.toolbar-item') + .find('a, button') + .addClass('mui-btn mui-btn--accent mui-btn--raised mui-btn--small'); + }); + $('body').addClass('match-braces').addClass('rainbow-braces'); + this.activatePrism(); } }, }; diff --git a/funnel/assets/sass/components/_markdown.scss b/funnel/assets/sass/components/_markdown.scss index f82ea65d8..4a96bbf3a 100644 --- a/funnel/assets/sass/components/_markdown.scss +++ b/funnel/assets/sass/components/_markdown.scss @@ -1,4 +1,6 @@ @import 'table'; +@import 'node_modules/prismjs/themes/prism'; +@import 'node_modules/prismjs/plugins/match-braces/prism-match-braces'; .markdown { overflow-wrap: break-word; diff --git a/package-lock.json b/package-lock.json index 30e8e54c2..b7c1a1f2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,6 +34,7 @@ "mermaid": "^9.3.0", "path-browserify": "^1.0.1", "po2json": "^1.0.0-beta-3", + "prismjs": "^1.29.0", "ractive": "^0.8.0", "sprintf-js": "^1.1.2", "timeago.js": "^4.0.2", @@ -12062,6 +12063,7 @@ }, "node_modules/vega-embed/node_modules/yallist": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, @@ -22559,7 +22561,8 @@ }, "yallist": { "version": "4.0.0", - "bundled": true + "bundled": true, + "extraneous": true } } }, diff --git a/package.json b/package.json index fef531779..82f910c16 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "mermaid": "^9.3.0", "path-browserify": "^1.0.1", "po2json": "^1.0.0-beta-3", + "prismjs": "^1.29.0", "ractive": "^0.8.0", "sprintf-js": "^1.1.2", "timeago.js": "^4.0.2", diff --git a/webpack.config.js b/webpack.config.js index ef3322ef5..4dc9632be 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -125,6 +125,10 @@ module.exports = { from: 'node_modules/leaflet/dist/images', to: 'css/images', }, + { + from: 'node_modules/prismjs/components/*.min.js', + to: 'js/prismjs/components/[name].js', + }, ], }), new webpack.DefinePlugin({ From 264ade1038ed19b4cf6ba322dd9ad62c555e4553 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Wed, 1 Feb 2023 12:05:21 +0530 Subject: [PATCH 022/281] Fix otp login modal on project page (#1597) * Ajax post * Add next url with modal id * Change action url * Remove HX-Redirect since redirect.html takes care of reload * Pass request parameter use for modal login * Add request.args['modal'] to next_url * Add modal id in next_url * Fix request.args.get('modal') check * Remove the extra space --- funnel/templates/forms.html.jinja2 | 12 ---------- funnel/templates/login.html.jinja2 | 2 +- funnel/templates/loginform.html.jinja2 | 2 +- funnel/templates/otpform.html.jinja2 | 2 +- .../templates/password_login_form.html.jinja2 | 10 ++++---- funnel/templates/project_layout.html.jinja2 | 2 +- funnel/views/helpers.py | 1 - funnel/views/login.py | 23 +++++++++++++------ 8 files changed, 26 insertions(+), 28 deletions(-) diff --git a/funnel/templates/forms.html.jinja2 b/funnel/templates/forms.html.jinja2 index d8d98b330..0e1d8048f 100644 --- a/funnel/templates/forms.html.jinja2 +++ b/funnel/templates/forms.html.jinja2 @@ -350,18 +350,6 @@ autocomplete_endpoint: {{ field.autocomplete_endpoint|tojson }}, key: {{ field.results_key|tojson }} }); - {%- elif field.type == 'RecaptchaField' and ref_id != '' and not force %} - window.onInvisibleRecaptchaSubmit = function (recaptcha_response) { - document.getElementById("{{ ref_id }}").submit(); - }; - $('#{{ ref_id }}').submit(function (event) { - event.preventDefault(); - if (typeof grecaptcha !== "undefined" && grecaptcha.getResponse() === '') { - grecaptcha.execute(); - } else { - document.getElementById("{{ ref_id }}").submit(); - } - }) {%- elif field.type == 'ImgeeField' %} window.addEventListener("message", function (event) { if (event.origin === "{{ config['IMGEE_HOST'] }}") { diff --git a/funnel/templates/login.html.jinja2 b/funnel/templates/login.html.jinja2 index 053c9855b..0a119a64e 100644 --- a/funnel/templates/login.html.jinja2 +++ b/funnel/templates/login.html.jinja2 @@ -21,7 +21,7 @@

      {% trans %}Hello!{% endtrans %}

      {% trans %}Tell us where you’d like to get updates. We’ll send an OTP to confirm.{% endtrans %}

      {% endif %} -
      {{ passwordlogin(form, formid, ref_id) }}
      +
      {{ passwordlogin(form, formid, ref_id, action) }}

      {% trans %}Or, use your existing account, no OTP required{% endtrans %}

      {{ sociallogin(login_registry) }} diff --git a/funnel/templates/loginform.html.jinja2 b/funnel/templates/loginform.html.jinja2 index fdfcb63b5..f354a087d 100644 --- a/funnel/templates/loginform.html.jinja2 +++ b/funnel/templates/loginform.html.jinja2 @@ -3,7 +3,7 @@ {% from "password_login_form.html.jinja2" import passwordlogin, sociallogin %} {% block title %}{% endblock title %} {% block form %} - {{ passwordlogin(form, formid, ref_id) }} + {{ passwordlogin(form, formid, ref_id, action) }} {%- if form and form.recaptcha is defined %} {{ recaptcha(ref_id, 'loginformwrapper') }} {%- endif %} diff --git a/funnel/templates/otpform.html.jinja2 b/funnel/templates/otpform.html.jinja2 index d530d8089..411b43eaf 100644 --- a/funnel/templates/otpform.html.jinja2 +++ b/funnel/templates/otpform.html.jinja2 @@ -2,7 +2,7 @@ {% from "forms.html.jinja2" import renderform, renderform_inner %} {% block form %} - + {{ renderform_inner(form, formid) }}
      diff --git a/funnel/templates/password_login_form.html.jinja2 b/funnel/templates/password_login_form.html.jinja2 index 650812d3d..0e5019ce3 100644 --- a/funnel/templates/password_login_form.html.jinja2 +++ b/funnel/templates/password_login_form.html.jinja2 @@ -1,11 +1,12 @@ {% from "forms.html.jinja2" import renderfield, rendersubmit, recaptcha %} -{% macro passwordlogin(loginform, formid, ref_id, markup) %} + +{% macro passwordlogin(loginform, formid, ref_id, action) %} + action="{{ action }}"> {{ loginform.hidden_tag() }} {% if loginform.csrf_token is defined %} @@ -63,8 +64,9 @@

      {%- if loginform and loginform.recaptcha is defined %}{{ recaptcha(ref_id, 'loginformwrapper') }}{%- endif %} - {% endmacro %} - {% macro sociallogin(login_registry) %} +{% endmacro %} + +{% macro sociallogin(login_registry) %}
    @@ -707,17 +707,17 @@ There's a list below: """ tabs = """

    Tabs using containers plugin

    Let us see if we can use the containers plugin to render tabs.

    -

    The next tab has a blank title. +

    The next tab has a blank title. The tab for it should render in the format "Tab <n>".

    This tab contains code!

    -
    let x = 10000;
    +
    let x = 10000;
     sleep(x);
     
    -
    def sum(a, b):
    +
    def sum(a, b):
         return a['quantity'] + b['quantity']
     print(sum({'quantity': 5}, {'quantity': 10}))
     
    -
    **Here is bold markdown.**
    +
    **Here is bold markdown.**
     ### Heading
     \\::: should render three `:` characters.
     \\``` should render three \\` characters.
    @@ -725,8 +725,8 @@ There's a list below:
     - Item 1
     - Item 2
     
    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    +
    
     # Digital Identifiers and Rights
     
     ## Community and Outreach
    @@ -822,7 +822,7 @@ There's a list below:
     - Public health services
     - Records (birth, death, land etc)
     
    -
    {
    +
    {
       "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
       "description": "A population pyramid for the US in 2000.",
       "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    @@ -893,13 +893,13 @@ There's a list below:
     }
     
     
    -
    sequenceDiagram
    +
    sequenceDiagram
         Alice->>+John: Hello John, how are you?
         Alice->>+John: John, can you hear me?
         John-->>-Alice: Hi Alice, I can hear you!
         John-->>-Alice: I feel great!
     
    -

    This tab is going to have a table!

    +

    This tab is going to have a table!

    From 653f24d29289b94751b81f8a1f32813192fa2445 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Mon, 13 Feb 2023 21:56:10 +0530 Subject: [PATCH 039/281] Reintroduce recaptcha for for new email/phone (#1628) * Add recpactha back * Fix recaptcha macro * Fix typo --- funnel/forms/account.py | 4 +- funnel/templates/forms.html.jinja2 | 75 ++++++++++++------- funnel/templates/loginform.html.jinja2 | 2 +- .../templates/password_login_form.html.jinja2 | 2 +- 4 files changed, 54 insertions(+), 29 deletions(-) diff --git a/funnel/forms/account.py b/funnel/forms/account.py index 0319de815..d2064454e 100644 --- a/funnel/forms/account.py +++ b/funnel/forms/account.py @@ -512,7 +512,7 @@ def validate_emailclaim(form, field): @User.forms('email_add') -class NewEmailAddressForm(forms.Form): +class NewEmailAddressForm(forms.RecaptchaForm): """Form to add a new email address to a user account.""" __expects__ = ('edit_user',) @@ -551,7 +551,7 @@ class EmailPrimaryForm(forms.Form): @User.forms('phone_add') -class NewPhoneForm(forms.Form): +class NewPhoneForm(forms.RecaptchaForm): """Form to add a new mobile number (SMS-capable) to a user account.""" __expects__ = ('edit_user',) diff --git a/funnel/templates/forms.html.jinja2 b/funnel/templates/forms.html.jinja2 index 0e1d8048f..83c4a18a2 100644 --- a/funnel/templates/forms.html.jinja2 +++ b/funnel/templates/forms.html.jinja2 @@ -180,8 +180,16 @@ {# djlint: off #}{%- macro renderform(form, formid, submit, ref_id="form", message='', action=none, cancel_url='', multipart=false, style="", autosave=false, draft_revision=none) %}{# djlint: on #} {{ renderform_inner(form, formid or none, style=style, autosave=autosave, draft_revision=draft_revision) }} + {%- if form and form.recaptcha is defined %} +
    +
    + {%- endif %} {{ rendersubmit([(none, submit or _("Submit"), 'mui-btn--primary')], cancel_url=cancel_url, style=style, csrf_error=form.csrf_token.errors if form.csrf_token else "") }} +{%- if form and form.recaptcha is defined %}{{ recaptcha(formId=ref_id) }}{%- endif %} {% endmacro %} {%- macro ajaxform(ref_id, request, force=false) %} @@ -211,34 +219,51 @@ {%- endif %} {%- endmacro %} -{%- macro recaptcha(formId, forWrapperId) %} - + {%- else %} + + }; + + {%- endif %} {%- endmacro %} diff --git a/funnel/templates/loginform.html.jinja2 b/funnel/templates/loginform.html.jinja2 index f354a087d..1c2c93210 100644 --- a/funnel/templates/loginform.html.jinja2 +++ b/funnel/templates/loginform.html.jinja2 @@ -5,6 +5,6 @@ {% block form %} {{ passwordlogin(form, formid, ref_id, action) }} {%- if form and form.recaptcha is defined %} - {{ recaptcha(ref_id, 'loginformwrapper') }} + {{ recaptcha(ref_id, formWrapperId='loginformwrapper', ajax=true) }} {%- endif %} {% endblock form %} diff --git a/funnel/templates/password_login_form.html.jinja2 b/funnel/templates/password_login_form.html.jinja2 index 0e5019ce3..4899f396f 100644 --- a/funnel/templates/password_login_form.html.jinja2 +++ b/funnel/templates/password_login_form.html.jinja2 @@ -63,7 +63,7 @@ {% trans terms_url=url_for('policy', path='policy/terms'), privacy_path=url_for('policy', path='policy/privacy') %}By signing in, you agree to Hasgeek’s terms of service and privacy policy{% endtrans %}

    - {%- if loginform and loginform.recaptcha is defined %}{{ recaptcha(ref_id, 'loginformwrapper') }}{%- endif %} + {%- if loginform and loginform.recaptcha is defined %}{{ recaptcha(ref_id, formWrapperId='loginformwrapper', ajax=true) }}{%- endif %} {% endmacro %} {% macro sociallogin(login_registry) %} From e3c54ed77b4e7a8c8fd685ceb12fdd4d42dce4ac Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Mon, 13 Feb 2023 22:33:34 +0530 Subject: [PATCH 040/281] Fix search box placement on mobile when virtual keyboard is open (#1629) * Use virtual keyboard height to place bottom header * Remove form beforeunload event handler * Fix spacing of keyboard switcher * Add back form beforeunload function --- funnel/assets/sass/components/_header.scss | 4 ++-- funnel/assets/sass/form.scss | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/funnel/assets/sass/components/_header.scss b/funnel/assets/sass/components/_header.scss index ead55bcfa..7195e1f7e 100644 --- a/funnel/assets/sass/components/_header.scss +++ b/funnel/assets/sass/components/_header.scss @@ -7,7 +7,7 @@ position: fixed; left: 0; right: 0; - bottom: 0; + bottom: calc(env(keyboard-inset-height)); .header__nav { height: $mui-header-height; @@ -42,7 +42,7 @@ .search-form { position: fixed; - bottom: $mui-header-height; + bottom: calc(env(keyboard-inset-height) + #{$mui-header-height}); width: 100%; left: 0; box-shadow: 0 1px 3px rgba(158, 158, 158, 0.12), diff --git a/funnel/assets/sass/form.scss b/funnel/assets/sass/form.scss index c4be2625e..e9ce67f78 100644 --- a/funnel/assets/sass/form.scss +++ b/funnel/assets/sass/form.scss @@ -397,7 +397,6 @@ height: 32px !important; position: relative !important; padding-left: $mui-grid-padding/2 !important; - width: calc(100% + $mui-grid-padding) !important; } .mui-select:focus > label, .mui-select > select:focus ~ label { @@ -423,12 +422,16 @@ position: fixed; left: 0; bottom: 0; - width: 100%; + right: 0; + width: auto; z-index: 2; padding: $mui-grid-padding/2; margin: 0; background: $mui-bg-color-primary; margin-bottom: calc(env(keyboard-inset-height)); // Position it above the keyboard + .tabs__item { + margin: 0; + } } input#username:focus ~ .keyboard-switch { From 9200480683731d381de33413eae008697fe08abb Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Mon, 13 Feb 2023 22:53:35 +0530 Subject: [PATCH 041/281] Change embed regex for live url (#1630) --- funnel/assets/js/utils/embedvideo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/funnel/assets/js/utils/embedvideo.js b/funnel/assets/js/utils/embedvideo.js index 1ffbe1365..b02b0d743 100644 --- a/funnel/assets/js/utils/embedvideo.js +++ b/funnel/assets/js/utils/embedvideo.js @@ -8,7 +8,7 @@ const Video = { */ getVideoTypeAndId(url) { const regexMatch = url.match( - /(http:|https:|)\/\/(player.|www.)?(y2u\.be|vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(&\S+)?/ + /(http:|https:|)\/\/(player.|www.)?(y2u\.be|vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|live\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(&\S+)?/ ); let type = ''; if (regexMatch && regexMatch.length > 5) { From 98f3ed32672aea9f128bbe775e661f85f2fa0f96 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Mon, 13 Feb 2023 22:59:56 +0530 Subject: [PATCH 042/281] Profile avatar width to include padding and border --- funnel/assets/sass/components/_profileavatar.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/funnel/assets/sass/components/_profileavatar.scss b/funnel/assets/sass/components/_profileavatar.scss index 57960c426..51f362f4e 100644 --- a/funnel/assets/sass/components/_profileavatar.scss +++ b/funnel/assets/sass/components/_profileavatar.scss @@ -9,6 +9,7 @@ align-items: center; justify-content: center; overflow: hidden; + box-sizing: border-box; img { width: 100%; height: 100%; From b200e658963e4c941ba4d1c83066762313d12a87 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Tue, 14 Feb 2023 02:42:53 +0530 Subject: [PATCH 043/281] Mock transports in live_server test fixture (#1631) --- funnel/devtest.py | 165 +++++++++++++++++++++++++--- funnel/transports/sms/template.py | 4 + tests/conftest.py | 83 ++++++-------- tests/features/test_live_server.py | 19 +++- tests/unit/models/test_shortlink.py | 10 +- 5 files changed, 211 insertions(+), 70 deletions(-) diff --git a/funnel/devtest.py b/funnel/devtest.py index 4867ce8b2..44b221339 100644 --- a/funnel/devtest.py +++ b/funnel/devtest.py @@ -2,21 +2,27 @@ from __future__ import annotations -from typing import Any, Callable, Dict, Iterable, NamedTuple, Optional, Tuple +from secrets import token_urlsafe +from typing import Any, Callable, Dict, Iterable, List, NamedTuple, Optional, Tuple import atexit +import gc +import inspect import multiprocessing import os import platform import signal import socket import time +import weakref from sqlalchemy.engine import Engine from flask import Flask +from typing_extensions import Protocol + from . import app as main_app -from . import shortlinkapp +from . import shortlinkapp, transports from .models import db from .typing import ReturnView @@ -109,16 +115,119 @@ class HostPort(NamedTuple): port: int -def _dispose_engines_in_child_process( +class CapturedSms(NamedTuple): + phone: str + message: str + vars: Dict[str, str] # noqa: A003 + + +class CapturedEmail(NamedTuple): + subject: str + to: List[str] + content: str + from_email: Optional[str] + + +class CapturedCalls(Protocol): + """Protocol class for captured calls.""" + + email: List[CapturedEmail] + sms: List[CapturedSms] + + +def _signature_without_annotations(func) -> inspect.Signature: + """Generate a function signature without parameter type annotations.""" + sig = inspect.signature(func) + return sig.replace( + parameters=[ + p.replace(annotation=inspect.Parameter.empty) + for p in sig.parameters.values() + ] + ) + + +def install_mock(func: Callable, mock: Callable): + """ + Patch all existing references to :attr:`func` with :attr:`mock`. + + Uses the Python garbage collector to find and replace all references. + """ + # Validate function signature match before patching, ignoring type annotations + fsig = _signature_without_annotations(func) + msig = _signature_without_annotations(mock) + if fsig != msig: + raise TypeError( + f"Mock function's signature does not match original's:\n" + f"{mock.__name__}{msig} !=\n" + f"{func.__name__}{fsig}" + ) + # Use weakref to dereference func from local namespace + func = weakref.ref(func) + gc.collect() + refs = gc.get_referrers(func()) # type: ignore[misc] + # Recover func from the weakref so we can do an `is` match in referrers + func = func() # type: ignore[misc] + for ref in refs: + if isinstance(ref, dict): + # We have a namespace dict. Iterate through contents to find the reference + # and replace it + for key, value in ref.items(): + if value is func: + ref[key] = mock + + +def _prepare_subprocess( # pylint: disable=too-many-arguments engines: Iterable[Engine], + mock_transports: bool, + calls: CapturedCalls, worker: Callable, args: Tuple[Any], kwargs: Dict[str, Any], ) -> Any: - """Dispose SQLAlchemy engine connections in a forked process.""" - # https://docs.sqlalchemy.org/en/14/core/pooling.html#pooling-multiprocessing + """ + Prepare a subprocess for hosting a worker. + + 1. Dispose all SQLAlchemy engine connections so they're not shared with the parent + 2. Mock transports if requested, redirecting all calls to a log + 3. Launch the worker + """ + # https://docs.sqlalchemy.org/en/20/core/pooling.html#pooling-multiprocessing for e in engines: - e.dispose(close=False) # type: ignore[call-arg] + e.dispose(close=False) + + if mock_transports: + + def mock_email( # pylint: disable=too-many-arguments + subject: str, + to: List[Any], + content: str, + attachments=None, + from_email: Optional[Any] = None, + headers: Optional[dict] = None, + ) -> str: + calls.email.append( + CapturedEmail( + subject, + [str(each) for each in to], + content, + str(from_email) if from_email else None, + ) + ) + return token_urlsafe() + + def mock_sms( + phone: Any, + message: transports.sms.SmsTemplate, + callback: bool = True, + ) -> str: + calls.sms.append(CapturedSms(str(phone), str(message), message.vars())) + return token_urlsafe() + + # Patch email + install_mock(transports.email.send.send_email, mock_email) + # Patch SMS + install_mock(transports.sms.send, mock_sms) + return worker(*args, **kwargs) @@ -130,10 +239,11 @@ class BackgroundWorker: :param worker: The worker to run :param args: Args for worker :param kwargs: Kwargs for worker - :param probe: Optional host and port to probe for ready state + :param probe_at: Optional tuple of (host, port) to probe for ready state :param timeout: Timeout after which launch is considered to have failed :param clean_stop: Ask for graceful shutdown (default yes) :param daemon: Run process in daemon mode (linked to parent, automatic shutdown) + :param mock_transports: Patch transports with mock functions that write to a log """ def __init__( # pylint: disable=too-many-arguments @@ -143,8 +253,9 @@ def __init__( # pylint: disable=too-many-arguments kwargs: Optional[dict] = None, probe_at: Optional[Tuple[str, int]] = None, timeout: int = 10, - clean_stop=True, - daemon=True, + clean_stop: bool = True, + daemon: bool = True, + mock_transports: bool = False, ) -> None: self.worker = worker self.worker_args = args or () @@ -154,21 +265,30 @@ def __init__( # pylint: disable=too-many-arguments self.clean_stop = clean_stop self.daemon = daemon self._process: Optional[multiprocessing.Process] = None + self.mock_transports = mock_transports + + manager = multiprocessing.Manager() + self.calls: CapturedCalls = manager.Namespace() + self.calls.email = manager.list() + self.calls.sms = manager.list() def start(self) -> None: """Start worker in a separate process.""" if self._process is not None: return - engines = set() - for app in main_app, shortlinkapp: # TODO: Add hasjobapp here - with app.app_context(): - engines.add(db.engines[None]) - for bind in app.config.get('SQLALCHEMY_BINDS') or (): - engines.add(db.engines[bind]) + with main_app.app_context(): + db_engines = db.engines.values() self._process = multiprocessing.Process( - target=_dispose_engines_in_child_process, - args=(engines, self.worker, self.worker_args, self.worker_kwargs), + target=_prepare_subprocess, + args=( + db_engines, + self.mock_transports, + self.calls, + self.worker, + self.worker_args, + self.worker_kwargs, + ), ) self._process.daemon = self.daemon self._process.start() @@ -226,7 +346,7 @@ def _stop_cleanly(self) -> bool: """ Attempt to stop the server cleanly. - Sends a SIGINT signal and waits for ``timeout`` seconds. + Sends a SIGINT signal and waits for :attr:`timeout` seconds. :return: True if the server was cleanly stopped, False otherwise. """ @@ -249,3 +369,12 @@ def __repr__(self) -> str: f" {self.probe_at.host}:{self.probe_at.port}>" ) return f"" + + def __enter__(self) -> BackgroundWorker: + """Start server in a context manager.""" + self.start() + return self + + def __exit__(self, exc_type, exc_value, traceback) -> None: + """Finalise a context manager.""" + self.stop() diff --git a/funnel/transports/sms/template.py b/funnel/transports/sms/template.py index d45a67f7b..7d16b86a0 100644 --- a/funnel/transports/sms/template.py +++ b/funnel/transports/sms/template.py @@ -246,6 +246,10 @@ def __setattr__(self, attr: str, value) -> None: # variable, which will call `__setattr__`. At this point `_plaintext` has # already been set by `.format()` and should not be reset. + def vars(self) -> Dict[str, Any]: # noqa: A003 + """Return a dictionary of variables in the template.""" + return dict(self._format_kwargs) + @classmethod def validate_registered_template(cls) -> None: """Validate the Registered template as per documented rules.""" diff --git a/tests/conftest.py b/tests/conftest.py index b9acf73b2..57099b5d7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,10 +3,12 @@ from __future__ import annotations +from contextlib import ExitStack from dataclasses import dataclass from datetime import datetime, timezone from difflib import unified_diff from types import MethodType, SimpleNamespace +from unittest.mock import patch import re import shutil import typing as t @@ -964,55 +966,40 @@ def live_server(funnel_devtest, database, app): ) port = int(port_str) - # Save app config before modifying it to match live server environment - original_app_config = {} - for m_app in funnel_devtest.devtest_app.apps_by_host.values(): - original_app_config[m_app] = { - 'PREFERRED_URL_SCHEME': m_app.config['PREFERRED_URL_SCHEME'], - 'SERVER_NAME': m_app.config['SERVER_NAME'], - } - m_app.config['PREFERRED_URL_SCHEME'] = scheme - m_host = m_app.config['SERVER_NAME'].split(':', 1)[0] - m_app.config['SERVER_NAME'] = f'{m_host}:{port}' - - # Start background worker and wait until it's receiving connections - server = funnel_devtest.BackgroundWorker( - run_simple, - args=('127.0.0.1', port, funnel_devtest.devtest_app), - kwargs={ - 'use_reloader': False, - 'use_debugger': True, - 'use_evalex': False, - 'threaded': True, - 'ssl_context': 'adhoc' if use_https else None, - }, - probe_at=('127.0.0.1', port), - ) - try: - server.start() - except RuntimeError as exc: - # Server did not respond to probe until timeout; mark test as failed - server.stop() - pytest.fail(str(exc)) - - with app.app_context(): - # Return live server config within an app context so that the test function - # can use url_for without creating a context. However, secondary apps will - # need context specifically established for url_for on them - yield SimpleNamespace( - url=f'{scheme}://{app.config["SERVER_NAME"]}/', - urls=[ - f'{scheme}://{m_app.config["SERVER_NAME"]}/' - for m_app in funnel_devtest.devtest_app.apps_by_host.values() - ], - ) - - # Stop server after use - server.stop() + # Patch app config to match this fixture's config (scheme and port change). + with ExitStack() as config_patch_stack: + for m_app in funnel_devtest.devtest_app.apps_by_host.values(): + m_host = m_app.config['SERVER_NAME'].split(':', 1)[0] + config_patch_stack.enter_context( + patch.dict( + m_app.config, + {'PREFERRED_URL_SCHEME': scheme, 'SERVER_NAME': f'{m_host}:{port}'}, + ) + ) - # Restore original app config - for m_app, config in original_app_config.items(): - m_app.config.update(config) + # Start background worker and yield as fixture + with funnel_devtest.BackgroundWorker( + run_simple, + args=('127.0.0.1', port, funnel_devtest.devtest_app), + kwargs={ + 'use_reloader': False, + 'use_debugger': True, + 'use_evalex': False, + 'threaded': True, + 'ssl_context': 'adhoc' if use_https else None, + }, + probe_at=('127.0.0.1', port), + mock_transports=True, + ) as server: + yield SimpleNamespace( + background_worker=server, + transport_calls=server.calls, + url=f'{scheme}://{app.config["SERVER_NAME"]}/', + urls=[ + f'{scheme}://{m_app.config["SERVER_NAME"]}/' + for m_app in funnel_devtest.devtest_app.apps_by_host.values() + ], + ) @pytest.fixture() diff --git a/tests/features/test_live_server.py b/tests/features/test_live_server.py index b0a39e811..09bb598f4 100644 --- a/tests/features/test_live_server.py +++ b/tests/features/test_live_server.py @@ -1,9 +1,26 @@ """Test live server.""" -def test_open_homepage(browser, db_session, live_server, org_uu) -> None: +def test_open_homepage(live_server, browser, db_session, org_uu) -> None: """Launch a live server and visit homepage.""" org_uu.profile.is_verified = True db_session.commit() browser.visit(live_server.url) assert browser.is_text_present("Explore communities") + + +def test_transport_mock_sms(live_server, app, browser) -> None: + """Live server fixture mocks transport functions to a logger.""" + browser.visit(app.url_for('login')) + assert list(live_server.transport_calls.sms) == [] + assert list(live_server.transport_calls.email) == [] + browser.find_by_name('username').fill('8123456789') + browser.find_by_css('#form-passwordlogin button').click() + browser.find_by_name('otp').click() # This causes browser to wait until load + assert list(live_server.transport_calls.sms) != [] + assert list(live_server.transport_calls.email) == [] + assert len(live_server.transport_calls.sms) == 1 + captured_sms = live_server.transport_calls.sms[-1] + assert captured_sms.phone == '+918123456789' + assert captured_sms.message.startswith('OTP is') + assert 'otp' in captured_sms.vars diff --git a/tests/unit/models/test_shortlink.py b/tests/unit/models/test_shortlink.py index 664b3617f..aae552a93 100644 --- a/tests/unit/models/test_shortlink.py +++ b/tests/unit/models/test_shortlink.py @@ -4,6 +4,9 @@ # https://datatracker.ietf.org/doc/html/rfc2606#section-3 # https://datatracker.ietf.org/doc/html/rfc6761#section-6.5 +# Since a random number generator is not a unique number generator, some tests are +# marked as flaky and will be re-run in case a dupe value is generated + from typing import Any from unittest.mock import patch @@ -26,6 +29,7 @@ def __call__(self, smaller: bool = False) -> Any: return value +@pytest.mark.flaky(reruns=2) def test_random_bigint() -> None: """Random numbers are within expected range (this test depends on luck).""" randset = set() @@ -36,9 +40,10 @@ def test_random_bigint() -> None: assert -(2**63) <= num <= 2**63 - 1 randset.add(num) # Ignore up to 2 collisions - assert 998 <= len(randset) <= 1000 + assert len(randset) == 1000 +@pytest.mark.flaky(reruns=2) def test_smaller_random_int() -> None: """Smaller random numbers are within expected range (this test depends on luck).""" randset = set() @@ -48,8 +53,7 @@ def test_smaller_random_int() -> None: # within bigint sign bit range assert 0 < num <= 2**24 - 1 randset.add(num) - # Ignore up to 2 collisions - assert 998 <= len(randset) <= 1000 + assert len(randset) == 1000 def test_mock_random_bigint() -> None: From b7954b51257f8a2f4864156c94656fab45699bfb Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Wed, 15 Feb 2023 12:06:02 +0530 Subject: [PATCH 044/281] Hide scan badge and contacts --- funnel/templates/macros.html.jinja2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/funnel/templates/macros.html.jinja2 b/funnel/templates/macros.html.jinja2 index 844a5fedc..b22043a22 100644 --- a/funnel/templates/macros.html.jinja2 +++ b/funnel/templates/macros.html.jinja2 @@ -133,8 +133,8 @@ {% trans %}Organizations{% endtrans %} {% trans %}Notifications{% endtrans %} {% trans %}Saved projects{% endtrans %} - {% trans %}Scan badge{% endtrans %} - {% trans %}Contacts{% endtrans %} + {% endmacro %} From f28a2acd32582398129bfc451279204a6fc264dc Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Wed, 15 Feb 2023 17:06:31 +0530 Subject: [PATCH 045/281] Replace `from_self` query for SQLAlchemy 2.0 (#1634) --- funnel/models/contact_exchange.py | 99 +++++++++++++++++-------------- 1 file changed, 55 insertions(+), 44 deletions(-) diff --git a/funnel/models/contact_exchange.py b/funnel/models/contact_exchange.py index c27c803bb..2d5ce0b57 100644 --- a/funnel/models/contact_exchange.py +++ b/funnel/models/contact_exchange.py @@ -11,6 +11,8 @@ from sqlalchemy.ext.associationproxy import association_proxy +from pytz import timezone + from coaster.sqlalchemy import LazyRoleSet from coaster.utils import uuid_to_base58 @@ -129,8 +131,12 @@ def migrate_user( # type: ignore[return] @classmethod def grouped_counts_for(cls, user, archived=False): """Return count of contacts grouped by project and date.""" - query = db.session.query( - cls.scanned_at, Project.id, Project.uuid, Project.timezone, Project.title + subq = sa.select( + cls.scanned_at.label('scanned_at'), + Project.id.label('project_id'), + Project.uuid.label('project_uuid'), + Project.timezone.label('project_timezone'), + Project.title.label('project_title'), ).filter( cls.ticket_participant_id == TicketParticipant.id, TicketParticipant.project_id == Project.id, @@ -140,67 +146,68 @@ def grouped_counts_for(cls, user, archived=False): if not archived: # If archived: return everything (contacts including archived contacts) # If not archived: return only unarchived contacts - query = query.filter(cls.archived.is_(False)) + subq = subq.filter(cls.archived.is_(False)) - # from_self turns `SELECT columns` into `SELECT new_columns FROM (SELECT - # columns)` query = ( - query.from_self( - Project.id.label('id'), - Project.uuid.label('uuid'), - Project.title.label('title'), - Project.timezone.label('timezone'), + db.session.query( + sa.column('project_id'), + sa.column('project_uuid'), + sa.column('project_title'), + sa.column('project_timezone'), sa.cast( sa.func.date_trunc( - 'day', sa.func.timezone(Project.timezone, cls.scanned_at) + 'day', + sa.func.timezone( + sa.column('project_timezone'), sa.column('scanned_at') + ), ), sa.Date, - ).label('date'), + ).label('scan_date'), sa.func.count().label('count'), ) + .select_from(subq.subquery()) .group_by( - sa.text('id'), - sa.text('uuid'), - sa.text('title'), - sa.text('timezone'), - sa.text('date'), + sa.column('project_id'), + sa.column('project_uuid'), + sa.column('project_title'), + sa.column('project_timezone'), + sa.column('scan_date'), ) - .order_by(sa.text('date DESC')) + .order_by(sa.text('scan_date DESC')) ) # Issued SQL: # # SELECT - # project_id AS id, - # project_uuid AS uuid, - # project_title AS title, - # project_timezone AS "timezone", - # date_trunc( - # 'day', - # timezone("timezone", contact_exchange_scanned_at) - # )::date AS date, + # project_id, + # project_uuid, + # project_title, + # project_timezone, + # CAST( + # date_trunc('day', timezone(project_timezone, scanned_at)) + # AS DATE + # ) AS scan_date, # count(*) AS count # FROM ( # SELECT - # contact_exchange.scanned_at AS contact_exchange_scanned_at, + # contact_exchange.scanned_at AS scanned_at, # project.id AS project_id, # project.uuid AS project_uuid, - # project.title AS project_title, - # project.timezone AS project_timezone - # FROM contact_exchange, ticket_participant, project + # project.timezone AS project_timezone, + # project.title AS project_title + # FROM contact_exchange, project, ticket_participant # WHERE # contact_exchange.ticket_participant_id = ticket_participant.id # AND ticket_participant.project_id = project.id - # AND contact_exchange.user_id = :user_id + # AND :user_id = contact_exchange.user_id + # AND contact_exchange.archived IS false # ) AS anon_1 - # GROUP BY id, uuid, title, timezone, date - # ORDER BY date DESC; + # GROUP BY project_id, project_uuid, project_title, project_timezone, scan_date + # ORDER BY scan_date DESC - # Our query result looks like this: - # [(id, uuid, title, timezone, date, count), ...] - # where (id, uuid, title, timezone) repeat for each date - # - # Transform it into this: + # The query result has rows of: + # (project_id, project_uuid, project_title, project_timezone, scan_date, count) + # with one row per date. It is then transformed into: # [ # (ProjectId(id, uuid, uuid_b58, title, timezone), [ # DateCountContacts(date, count, contacts), @@ -211,18 +218,18 @@ def grouped_counts_for(cls, user, archived=False): # ] # We don't do it here, but this can easily be converted into a dictionary of - # {project: dates}: - # >>> OrderedDict(result) # Preserve order with most recent projects first - # >>> dict(result) # Don't preserve order + # `{project: dates}` using `dict(result)` groups = [ ( k, [ DateCountContacts( - r.date, + r.scan_date, r.count, - cls.contacts_for_project_and_date(user, k, r.date, archived), + cls.contacts_for_project_and_date( + user, k, r.scan_date, archived + ), ) for r in g ], @@ -230,7 +237,11 @@ def grouped_counts_for(cls, user, archived=False): for k, g in groupby( query, lambda r: ProjectId( - r.id, r.uuid, uuid_to_base58(r.uuid), r.title, r.timezone + id=r.project_id, + uuid=r.project_uuid, + uuid_b58=uuid_to_base58(r.project_uuid), + title=r.project_title, + timezone=timezone(r.project_timezone), ), ) ] From c0d539229b5c42e8911eefe30cbe71490116db0c Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Wed, 15 Feb 2023 22:10:41 +0530 Subject: [PATCH 046/281] Header and Keyboard switch changes (#1635) * add default value for css variable keyboard-inset-height * Show keyboard switcher by default on mobile * Default bottom when keyboard-inset-height is missing * Fix background colour * Styling changes for keyboard switch * Add inline keyboard switch * Fix class name * Change icon size * Show both keyboard icons * Add blur and focus on input field for firefox to change keyboard --- funnel/assets/sass/components/_header.scss | 4 +- funnel/assets/sass/form.scss | 22 +---------- funnel/assets/sass/pages/login_form.scss | 37 +++++++++++++++++-- funnel/templates/forms.html.jinja2 | 20 +++++----- .../templates/password_login_form.html.jinja2 | 4 +- 5 files changed, 50 insertions(+), 37 deletions(-) diff --git a/funnel/assets/sass/components/_header.scss b/funnel/assets/sass/components/_header.scss index 7195e1f7e..b6c8f520e 100644 --- a/funnel/assets/sass/components/_header.scss +++ b/funnel/assets/sass/components/_header.scss @@ -7,7 +7,7 @@ position: fixed; left: 0; right: 0; - bottom: calc(env(keyboard-inset-height)); + bottom: calc(env(keyboard-inset-height, 0px)); .header__nav { height: $mui-header-height; @@ -42,7 +42,7 @@ .search-form { position: fixed; - bottom: calc(env(keyboard-inset-height) + #{$mui-header-height}); + bottom: calc(env(keyboard-inset-height, 0px) + #{$mui-header-height}); width: 100%; left: 0; box-shadow: 0 1px 3px rgba(158, 158, 158, 0.12), diff --git a/funnel/assets/sass/form.scss b/funnel/assets/sass/form.scss index e9ce67f78..09023057b 100644 --- a/funnel/assets/sass/form.scss +++ b/funnel/assets/sass/form.scss @@ -413,27 +413,9 @@ } // ============================================================================ -// Keyboard switcher +// Input field helper icon (keyboard switch/Show password) // ============================================================================ -.tabs.keyboard-switch { +.field-toggle { display: none; - justify-content: space-between; - position: fixed; - left: 0; - bottom: 0; - right: 0; - width: auto; - z-index: 2; - padding: $mui-grid-padding/2; - margin: 0; - background: $mui-bg-color-primary; - margin-bottom: calc(env(keyboard-inset-height)); // Position it above the keyboard - .tabs__item { - margin: 0; - } -} - -input#username:focus ~ .keyboard-switch { - display: flex; } diff --git a/funnel/assets/sass/pages/login_form.scss b/funnel/assets/sass/pages/login_form.scss index 39cb2b7fa..bcdd71765 100644 --- a/funnel/assets/sass/pages/login_form.scss +++ b/funnel/assets/sass/pages/login_form.scss @@ -171,16 +171,26 @@ a.loginbutton.hidden, background-color: $mui-bg-color-primary !important; } +// ============================================================================ +// Input field helper icon +// ============================================================================ + +.field-toggle { + padding: $mui-grid-padding/2; + position: absolute; + right: -$mui-grid-padding/2; + bottom: -$mui-grid-padding/4; + float: right; + z-index: 3; +} + // ============================================================================ // Password field // ============================================================================ .mui-textfield--password { .password-toggle { - position: relative; - right: 0; - bottom: 22px; - float: right; + display: inline-block; } .password-strength-icon { position: absolute; @@ -249,3 +259,22 @@ a.loginbutton.hidden, .password-field-sidetext { margin: 0 0 20px; } + +// ============================================================================ +// Keyboard switcher +// ============================================================================ + +.mui-textfield { + .field-toggle:last-child { + right: 20px; + } + input#username:focus ~ .keyboard-switch .field-toggle { + display: inline-block; + } + .field-toggle { + color: $mui-text-accent; + } + .field-toggle.active { + color: $mui-text-light; + } +} diff --git a/funnel/templates/forms.html.jinja2 b/funnel/templates/forms.html.jinja2 index 83c4a18a2..69f70a46a 100644 --- a/funnel/templates/forms.html.jinja2 +++ b/funnel/templates/forms.html.jinja2 @@ -75,13 +75,13 @@ {%- elif field.widget.input_type in ['text', 'email', 'search', 'url', 'number', 'tel'] and field.widget.html_tag not in ['ul', 'ol'] %}
    {{ field | render_field_options(class="field-" + field.id + " " + widget_css_class, tabindex=tabindex, autofocus=autofocus, rows=rows, placeholder=placeholder)}} + {%- if not nolabel %} {%- endif %} -
    {%- elif field.type == 'ImgeeField' %}
    @@ -90,8 +90,8 @@ {%- elif field.widget.input_type == 'password' and field.widget.html_tag not in ['ul', 'ol'] %}
    {{ field | render_field_options(class="field-" + field.id + " " + widget_css_class, tabindex=tabindex, autofocus=autofocus, rows=rows, placeholder=placeholder)}} - {{ faicon(icon='eye', icon_size='title', css_class="mui--text-light") }} - {{ faicon(icon='eye-slash', icon_size='title', css_class="mui--text-light") }} + {{ faicon(icon='eye', icon_size='title', css_class="mui--text-light") }} + {{ faicon(icon='eye-slash', icon_size='title', css_class="mui--text-light") }} {%- if not nolabel %} {%- endif %} @@ -327,17 +327,19 @@ if($('#username').length > 0) { $('#username').attr('inputmode', 'tel'); $('#username').attr('autocomplete', 'tel'); - $('.js-keyboard-switcher').toggleClass('tabs__item--active'); + $('.js-keyboard-switcher[data-inputmode="tel"]').addClass('active'); } // Add support to toggle username field input mode between tel & email to change keyboard in mobile $('.js-keyboard-switcher').on('click touchstart touchend', function(event) { event.preventDefault(); var inputMode = $(this).data('inputmode'); - $('.js-keyboard-switcher').removeClass('tabs__item--active'); - $(this).addClass('tabs__item--active'); + $('.js-keyboard-switcher').removeClass('active'); + $(this).addClass('active'); $('#username').attr('inputmode', inputMode); $('#username').attr('autocomplete', inputMode); + $('#username').blur(); + $('#username').focus(); }); {% if form and form.otp %} diff --git a/funnel/templates/password_login_form.html.jinja2 b/funnel/templates/password_login_form.html.jinja2 index 4899f396f..d58ea7c37 100644 --- a/funnel/templates/password_login_form.html.jinja2 +++ b/funnel/templates/password_login_form.html.jinja2 @@ -43,7 +43,7 @@ data-callback="onInvisibleRecaptchaSubmit" data-size="invisible">
    -
    +
    -
    +
    @@ -37,6 +37,7 @@ {% endblock left_col %} {% block footerinnerscripts %} + {{ ajaxform(ref_id='form-update', request=request) }} {% block serviceworker %} From c4300b5f7090aae565efd062258ffd89ba9273f9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 23 Feb 2023 12:11:10 +0530 Subject: [PATCH 051/281] [pre-commit.ci] pre-commit autoupdate (#1643) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c7b2ecd0f..c67563aa5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -114,7 +114,7 @@ repos: - id: flake8 additional_dependencies: *flake8deps - repo: https://github.com/PyCQA/pylint - rev: v2.16.1 + rev: v2.16.2 hooks: - id: pylint args: [ From 4f5e9896d9f2bbafc818751d378dc96d4f8dbc1e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Feb 2023 15:18:06 +0530 Subject: [PATCH 052/281] Bump werkzeug from 2.2.2 to 2.2.3 (#1637) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Kiran Jonnalagadda --- requirements.txt | 32 +++++++++--------- requirements_dev.txt | 78 +++++++++++++++++++++---------------------- requirements_test.txt | 38 ++++++++++----------- 3 files changed, 74 insertions(+), 74 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2ae599a2e..231699a2c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,13 +4,13 @@ # # pip-compile --output-file=requirements.txt --resolver=backtracking requirements.in # -aiohttp==3.8.3 +aiohttp==3.8.4 # via # geoip2 # tuspy aiosignal==1.3.1 # via aiohttp -alembic==1.9.3 +alembic==1.9.4 # via # -r requirements.in # flask-migrate @@ -65,7 +65,7 @@ cffi==1.15.1 # argon2-cffi-bindings # cryptography # pynacl -charset-normalizer==2.1.1 +charset-normalizer==3.0.1 # via # aiohttp # requests @@ -107,7 +107,7 @@ fabric3==1.14.post1 # via -r requirements.in filelock==3.9.0 # via tldextract -flask==2.2.2 +flask==2.2.3 # via # -r requirements.in # baseframe @@ -232,7 +232,7 @@ markdown==3.4.1 # coaster # flask-flatpages # pymdown-extensions -markdown-it-py==2.1.0 +markdown-it-py==2.2.0 # via # -r requirements.in # mdit-py-plugins @@ -253,7 +253,7 @@ marshmallow-enum==1.5.1 # via dataclasses-json maxminddb==2.2.0 # via geoip2 -mdit-py-plugins==0.3.3 +mdit-py-plugins==0.3.4 # via -r requirements.in mdurl==0.1.2 # via markdown-it-py @@ -287,7 +287,7 @@ paramiko==2.12.0 # via fabric3 passlib==1.7.4 # via -r requirements.in -phonenumbers==8.13.5 +phonenumbers==8.13.6 # via -r requirements.in premailer==3.10.0 # via -r requirements.in @@ -351,7 +351,7 @@ python-dateutil==2.8.2 # rq-scheduler python-dotenv==0.21.1 # via -r requirements.in -python-utils==3.4.5 +python-utils==3.5.2 # via progressbar2 pytz==2022.7.1 # via @@ -372,7 +372,7 @@ pyyaml==6.0 # flask-flatpages qrcode==7.4.2 # via -r requirements.in -redis==4.5.0 +redis==4.5.1 # via # baseframe # flask-redis @@ -402,7 +402,7 @@ requests-oauthlib==1.3.1 # via tweepy rich==13.3.1 # via -r requirements.in -rq==1.12.0 +rq==1.13.0 # via # -r requirements.in # baseframe @@ -436,7 +436,7 @@ six==1.16.0 # requests-mock # sqlalchemy-json # tuspy -sqlalchemy==2.0.2 +sqlalchemy==2.0.4 # via # -r requirements.in # alembic @@ -447,7 +447,7 @@ sqlalchemy==2.0.2 # wtforms-sqlalchemy sqlalchemy-json==0.5.0 # via -r requirements.in -sqlalchemy-utils==0.39.0 +sqlalchemy-utils==0.40.0 # via # -r requirements.in # coaster @@ -467,9 +467,9 @@ tuspy==1.0.0 # via pyvimeo tweepy==4.12.1 # via -r requirements.in -twilio==7.16.2 +twilio==7.16.4 # via -r requirements.in -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via # -r requirements.in # baseframe @@ -506,7 +506,7 @@ webencodings==0.5.1 # via # bleach # html5lib -werkzeug==2.2.2 +werkzeug==2.2.3 # via # -r requirements.in # baseframe @@ -523,7 +523,7 @@ wtforms-sqlalchemy==0.3 # via baseframe yarl==1.8.2 # via aiohttp -zipp==3.12.1 +zipp==3.14.0 # via importlib-metadata zxcvbn==4.4.28 # via -r requirements.in diff --git a/requirements_dev.txt b/requirements_dev.txt index a74e4c37d..7a086c1f9 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -4,13 +4,13 @@ # # pip-compile --output-file=requirements_dev.txt --resolver=backtracking requirements.in requirements_dev.in requirements_test.in # -aiohttp==3.8.3 +aiohttp==3.8.4 # via # geoip2 # tuspy aiosignal==1.3.1 # via aiohttp -alembic==1.9.3 +alembic==1.9.4 # via # -r requirements.in # flask-migrate @@ -20,7 +20,7 @@ argon2-cffi==21.3.0 # via -r requirements.in argon2-cffi-bindings==21.2.0 # via argon2-cffi -astroid==2.14.1 +astroid==2.14.2 # via pylint async-generator==1.10 # via @@ -91,7 +91,7 @@ cffi==1.15.1 # pynacl cfgv==3.3.1 # via pre-commit -charset-normalizer==2.1.1 +charset-normalizer==3.0.1 # via # aiohttp # requests @@ -145,7 +145,7 @@ dill==0.3.6 # via pylint distlib==0.3.6 # via virtualenv -djlint==1.19.14 +djlint==1.19.15 # via -r requirements_dev.in dnspython==2.3.0 # via @@ -187,7 +187,7 @@ flake8-assertive==2.1.0 # via -r requirements_dev.in flake8-blind-except==0.2.1 # via -r requirements_dev.in -flake8-bugbear==23.1.20 +flake8-bugbear==23.2.13 # via -r requirements_dev.in flake8-builtins==2.1.0 # via -r requirements_dev.in @@ -205,9 +205,9 @@ flake8-plugin-utils==1.3.2 # via flake8-pytest-style flake8-print==5.0.0 # via -r requirements_dev.in -flake8-pytest-style==1.6.0 +flake8-pytest-style==1.7.2 # via -r requirements_dev.in -flask==2.2.2 +flask==2.2.3 # via # -r requirements.in # baseframe @@ -277,7 +277,7 @@ gherkin-official==24.0.0 # via reformat-gherkin gitdb==4.0.10 # via gitpython -gitpython==3.1.30 +gitpython==3.1.31 # via bandit grapheme==0.6.0 # via baseframe @@ -303,7 +303,7 @@ httplib2==0.21.0 # oauth2client icalendar==5.0.4 # via -r requirements.in -identify==2.5.17 +identify==2.5.18 # via pre-commit idna==3.4 # via @@ -367,7 +367,7 @@ markdown==3.4.1 # coaster # flask-flatpages # pymdown-extensions -markdown-it-py==2.1.0 +markdown-it-py==2.2.0 # via # -r requirements.in # mdit-py-plugins @@ -392,7 +392,7 @@ mccabe==0.7.0 # via # flake8 # pylint -mdit-py-plugins==0.3.3 +mdit-py-plugins==0.3.4 # via -r requirements.in mdurl==0.1.2 # via markdown-it-py @@ -404,7 +404,7 @@ multidict==6.0.4 # yarl mxsniff==0.3.5 # via baseframe -mypy==1.0.0 +mypy==1.0.1 # via -r requirements_dev.in mypy-extensions==1.0.0 # via @@ -455,7 +455,7 @@ pbr==5.11.1 # via stevedore pep8-naming==0.13.3 # via -r requirements_dev.in -phonenumbers==8.13.5 +phonenumbers==8.13.6 # via -r requirements.in pip-tools==6.12.2 # via -r requirements_dev.in @@ -466,7 +466,7 @@ platformdirs==3.0.0 # virtualenv pluggy==1.0.0 # via pytest -pre-commit==3.0.4 +pre-commit==3.1.0 # via -r requirements_dev.in premailer==3.10.0 # via -r requirements.in @@ -515,7 +515,7 @@ pyjsparser==2.7.1 # via js2py pyjwt==2.6.0 # via twilio -pylint==2.16.1 +pylint==2.16.2 # via # -r requirements_dev.in # pylint-pytest @@ -560,7 +560,7 @@ pytest-env==0.8.1 # via -r requirements_test.in pytest-remotedata==0.4.0 # via -r requirements_test.in -pytest-rerunfailures==11.0 +pytest-rerunfailures==11.1.1 # via -r requirements_test.in pytest-splinter==3.3.2 # via -r requirements_test.in @@ -575,7 +575,7 @@ python-dotenv==0.21.1 # via # -r requirements.in # pytest-dotenv -python-utils==3.4.5 +python-utils==3.5.2 # via progressbar2 pytz==2022.7.1 # via @@ -602,7 +602,7 @@ pyyaml==6.0 # reformat-gherkin qrcode==7.4.2 # via -r requirements.in -redis==4.5.0 +redis==4.5.1 # via # baseframe # flask-redis @@ -639,7 +639,7 @@ requests-oauthlib==1.3.1 # via tweepy rich==13.3.1 # via -r requirements.in -rq==1.12.0 +rq==1.13.0 # via # -r requirements.in # baseframe @@ -649,7 +649,7 @@ rq-scheduler==0.11.0 # via flask-rq2 rsa==4.9 # via oauth2client -selenium==4.8.0 +selenium==4.8.2 # via pytest-splinter semantic-version==2.10.0 # via @@ -686,11 +686,11 @@ snowballstemmer==2.2.0 # via pydocstyle sortedcontainers==2.4.0 # via trio -soupsieve==2.3.2.post1 +soupsieve==2.4 # via beautifulsoup4 splinter==0.19.0 # via pytest-splinter -sqlalchemy==2.0.2 +sqlalchemy==2.0.4 # via # -r requirements.in # alembic @@ -701,13 +701,13 @@ sqlalchemy==2.0.2 # wtforms-sqlalchemy sqlalchemy-json==0.5.0 # via -r requirements.in -sqlalchemy-utils==0.39.0 +sqlalchemy-utils==0.40.0 # via # -r requirements.in # coaster statsd==4.0.1 # via baseframe -stevedore==4.1.1 +stevedore==5.0.0 # via bandit tinydb==4.7.1 # via tuspy @@ -749,7 +749,7 @@ tuspy==1.0.0 # via pyvimeo tweepy==4.12.1 # via -r requirements.in -twilio==7.16.2 +twilio==7.16.4 # via -r requirements.in types-certifi==2021.10.8.3 # via -r requirements_dev.in @@ -757,7 +757,7 @@ types-click==7.1.8 # via types-flask types-cryptography==3.3.23.2 # via -r requirements_dev.in -types-docutils==0.19.1.3 +types-docutils==0.19.1.6 # via types-setuptools types-flask==1.1.6 # via -r requirements_dev.in @@ -775,29 +775,29 @@ types-maxminddb==1.5.0 # via # -r requirements_dev.in # types-geoip2 -types-pyopenssl==23.0.0.2 +types-pyopenssl==23.0.0.4 # via types-redis -types-python-dateutil==2.8.19.6 +types-python-dateutil==2.8.19.8 # via -r requirements_dev.in -types-pytz==2022.7.1.0 +types-pytz==2022.7.1.2 # via -r requirements_dev.in -types-redis==4.4.0.6 +types-redis==4.5.1.3 # via -r requirements_dev.in -types-requests==2.28.11.12 +types-requests==2.28.11.14 # via -r requirements_dev.in -types-setuptools==67.2.0.0 +types-setuptools==67.4.0.1 # via -r requirements_dev.in -types-six==1.16.21.4 +types-six==1.16.21.6 # via -r requirements_dev.in -types-toml==0.10.8.3 +types-toml==0.10.8.5 # via -r requirements_dev.in -types-urllib3==1.26.25.5 +types-urllib3==1.26.25.7 # via types-requests types-werkzeug==1.0.9 # via # -r requirements_dev.in # types-flask -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via # -r requirements.in # astroid @@ -848,7 +848,7 @@ webencodings==0.5.1 # via # bleach # html5lib -werkzeug==2.2.2 +werkzeug==2.2.3 # via # -r requirements.in # baseframe @@ -871,7 +871,7 @@ wtforms-sqlalchemy==0.3 # via baseframe yarl==1.8.2 # via aiohttp -zipp==3.12.1 +zipp==3.14.0 # via importlib-metadata zxcvbn==4.4.28 # via -r requirements.in diff --git a/requirements_test.txt b/requirements_test.txt index 2a6c368d5..83815fcd8 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -4,13 +4,13 @@ # # pip-compile --output-file=requirements_test.txt --resolver=backtracking requirements.in requirements_test.in # -aiohttp==3.8.3 +aiohttp==3.8.4 # via # geoip2 # tuspy aiosignal==1.3.1 # via aiohttp -alembic==1.9.3 +alembic==1.9.4 # via # -r requirements.in # flask-migrate @@ -76,7 +76,7 @@ cffi==1.15.1 # argon2-cffi-bindings # cryptography # pynacl -charset-normalizer==2.1.1 +charset-normalizer==3.0.1 # via # aiohttp # requests @@ -133,7 +133,7 @@ fabric3==1.14.post1 # via -r requirements.in filelock==3.9.0 # via tldextract -flask==2.2.2 +flask==2.2.3 # via # -r requirements.in # baseframe @@ -267,7 +267,7 @@ markdown==3.4.1 # coaster # flask-flatpages # pymdown-extensions -markdown-it-py==2.1.0 +markdown-it-py==2.2.0 # via # -r requirements.in # mdit-py-plugins @@ -288,7 +288,7 @@ marshmallow-enum==1.5.1 # via dataclasses-json maxminddb==2.2.0 # via geoip2 -mdit-py-plugins==0.3.3 +mdit-py-plugins==0.3.4 # via -r requirements.in mdurl==0.1.2 # via markdown-it-py @@ -334,7 +334,7 @@ parse-type==0.6.0 # via pytest-bdd passlib==1.7.4 # via -r requirements.in -phonenumbers==8.13.5 +phonenumbers==8.13.6 # via -r requirements.in pluggy==1.0.0 # via pytest @@ -413,7 +413,7 @@ pytest-env==0.8.1 # via -r requirements_test.in pytest-remotedata==0.4.0 # via -r requirements_test.in -pytest-rerunfailures==11.0 +pytest-rerunfailures==11.1.1 # via -r requirements_test.in pytest-splinter==3.3.2 # via -r requirements_test.in @@ -428,7 +428,7 @@ python-dotenv==0.21.1 # via # -r requirements.in # pytest-dotenv -python-utils==3.4.5 +python-utils==3.5.2 # via progressbar2 pytz==2022.7.1 # via @@ -449,7 +449,7 @@ pyyaml==6.0 # flask-flatpages qrcode==7.4.2 # via -r requirements.in -redis==4.5.0 +redis==4.5.1 # via # baseframe # flask-redis @@ -482,7 +482,7 @@ requests-oauthlib==1.3.1 # via tweepy rich==13.3.1 # via -r requirements.in -rq==1.12.0 +rq==1.13.0 # via # -r requirements.in # baseframe @@ -492,7 +492,7 @@ rq-scheduler==0.11.0 # via flask-rq2 rsa==4.9 # via oauth2client -selenium==4.8.0 +selenium==4.8.2 # via pytest-splinter semantic-version==2.10.0 # via @@ -523,11 +523,11 @@ sniffio==1.3.0 # via trio sortedcontainers==2.4.0 # via trio -soupsieve==2.3.2.post1 +soupsieve==2.4 # via beautifulsoup4 splinter==0.19.0 # via pytest-splinter -sqlalchemy==2.0.2 +sqlalchemy==2.0.4 # via # -r requirements.in # alembic @@ -538,7 +538,7 @@ sqlalchemy==2.0.2 # wtforms-sqlalchemy sqlalchemy-json==0.5.0 # via -r requirements.in -sqlalchemy-utils==0.39.0 +sqlalchemy-utils==0.40.0 # via # -r requirements.in # coaster @@ -570,9 +570,9 @@ tuspy==1.0.0 # via pyvimeo tweepy==4.12.1 # via -r requirements.in -twilio==7.16.2 +twilio==7.16.4 # via -r requirements.in -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via # -r requirements.in # baseframe @@ -613,7 +613,7 @@ webencodings==0.5.1 # via # bleach # html5lib -werkzeug==2.2.2 +werkzeug==2.2.3 # via # -r requirements.in # baseframe @@ -632,7 +632,7 @@ wtforms-sqlalchemy==0.3 # via baseframe yarl==1.8.2 # via aiohttp -zipp==3.12.1 +zipp==3.14.0 # via importlib-metadata zxcvbn==4.4.28 # via -r requirements.in From b5efd201df296b38e2255570503c2b6570408d20 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Thu, 23 Feb 2023 16:29:37 +0530 Subject: [PATCH 053/281] Change get tickets button text if subscriptions is enabled (#1646) * Add is subscription field to boxoffice form * change logic in feature_project_subscription --- funnel/forms/sync_ticket.py | 5 +++++ funnel/templates/project_layout.html.jinja2 | 6 +++++- funnel/views/project.py | 10 ++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/funnel/forms/sync_ticket.py b/funnel/forms/sync_ticket.py index f006dacde..b15f4ca48 100644 --- a/funnel/forms/sync_ticket.py +++ b/funnel/forms/sync_ticket.py @@ -46,6 +46,11 @@ class ProjectBoxofficeForm(forms.Form): default=False, description=__("If checked, both free and buy tickets will shown on project"), ) + is_subscription = forms.BooleanField( + __("This is a subscription"), + default=True, + description=__("If not checked, buy tickets button will be shown"), + ) @TicketEvent.forms('main') diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index 730264179..985e1523c 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -193,7 +193,11 @@

    {% trans %}Sales closed{% endtrans %}

    - + {% if project.features.subscription %} + + {%- else %} + + {% endif %}
    {%- endif %} diff --git a/funnel/views/project.py b/funnel/views/project.py index 16667d310..e135e73e1 100644 --- a/funnel/views/project.py +++ b/funnel/views/project.py @@ -181,6 +181,14 @@ def feature_project_tickets_or_rsvp(obj: Project) -> bool: return obj.features.tickets() or obj.features.rsvp() +@Project.features('subscription', cached_property=True) +def feature_project_subscription(obj: Project) -> bool: + return ( + obj.boxoffice_data is not None + and obj.boxoffice_data.get('is_subscription', True) is True + ) + + @Project.features('rsvp_unregistered') def feature_project_register(obj: Project) -> bool: rsvp = obj.rsvp_for(current_auth.user) @@ -506,6 +514,7 @@ def edit_boxoffice_data(self) -> ReturnView: org=boxoffice_data.get('org', ''), item_collection_id=boxoffice_data.get('item_collection_id', ''), allow_rsvp=self.obj.allow_rsvp, + is_subscription=boxoffice_data.get('is_subscription', True), ), model=Project, ) @@ -513,6 +522,7 @@ def edit_boxoffice_data(self) -> ReturnView: form.populate_obj(self.obj) self.obj.boxoffice_data['org'] = form.org.data self.obj.boxoffice_data['item_collection_id'] = form.item_collection_id.data + self.obj.boxoffice_data['is_subscription'] = form.is_subscription.data db.session.commit() flash(_("Your changes have been saved"), 'info') return render_redirect(self.obj.url_for()) From ad93404b5116da1d2a8101d3eea88f8d4cb30add Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Thu, 23 Feb 2023 22:56:13 +0530 Subject: [PATCH 054/281] Styling fix for comments form and send button (#1647) * Change send button styling. Add autocapitalize for codemirror * Change ticket price font size in mobile * Change send button styling. Add autocapitalize for codemirror * Change ticket price font size in mobile * Add margin for send button * Align items center --- funnel/assets/js/utils/codemirror.js | 1 + funnel/assets/sass/pages/comments.scss | 16 +++++----------- funnel/assets/sass/pages/project.scss | 6 +++++- funnel/templates/project_layout.html.jinja2 | 4 ++-- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/funnel/assets/js/utils/codemirror.js b/funnel/assets/js/utils/codemirror.js index bf17af1d6..c0a71a2d9 100644 --- a/funnel/assets/js/utils/codemirror.js +++ b/funnel/assets/js/utils/codemirror.js @@ -30,6 +30,7 @@ function codemirrorHelper(markdownId, updateFnCallback = '', callbackInterval = const extensions = [ EditorView.lineWrapping, + EditorView.contentAttributes.of({ autocapitalize: 'on' }), closeBrackets(), history(), foldGutter(), diff --git a/funnel/assets/sass/pages/comments.scss b/funnel/assets/sass/pages/comments.scss index 4e5e29ea3..41a3e2c93 100644 --- a/funnel/assets/sass/pages/comments.scss +++ b/funnel/assets/sass/pages/comments.scss @@ -200,7 +200,7 @@ } .icon-btn { min-width: 40px; - margin: 0 0 0 8px; + margin: 0; } .user { display: inline-block; @@ -231,22 +231,16 @@ max-height: 100%; overflow-y: scroll; .mui-form { + align-items: center; .mui-form__fields .cm-editor { border: none; border-radius: 0; background: $mui-bg-color-primary; } } - .mui-btn--raised.icon-btn { - border-radius: 0; - box-shadow: none; - padding-bottom: 16px; - background: inherit; - } - .user { - padding-bottom: $mui-grid-padding/2; - padding-right: $mui-grid-padding; - margin-right: 0; + .user, + .icon-btn { + margin: 0 $mui-grid-padding/2 0 0; } } .ajax-form--block.ajax-form--mob { diff --git a/funnel/assets/sass/pages/project.scss b/funnel/assets/sass/pages/project.scss index ff4d3dafb..1fa236ccb 100644 --- a/funnel/assets/sass/pages/project.scss +++ b/funnel/assets/sass/pages/project.scss @@ -16,7 +16,7 @@ width: 100%; left: 0; bottom: 0; - padding: $mui-grid-padding/4 $mui-grid-padding !important; + padding: 0 $mui-grid-padding $mui-grid-padding/4 !important; box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.1); background-color: #ffffff; z-index: 1000; @@ -96,6 +96,7 @@ justify-content: space-between; width: 100%; flex-wrap: wrap; + align-self: center; } .register-block__txt { margin: 0; @@ -141,6 +142,9 @@ margin: 0 0 $mui-grid-padding; max-width: 100%; } + .register-block__txt--bigger { + font-size: 16px; + } .register-block__btn { width: 100%; font-size: inherit; diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index 985e1523c..317f2dc72 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -187,10 +187,10 @@ {% if project.features.tickets() %}
    -

    +

    -

    {% trans %}Sales closed{% endtrans %}

    +

    {% trans %}Sales closed{% endtrans %}

    {% if project.features.subscription %} From 475756b803ad2de416c586d9e8476ae354a68d5c Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Sat, 25 Feb 2023 00:19:02 +0530 Subject: [PATCH 055/281] Add pip-audit and fix pytest in GitHub Actions (#1648) --- .coveragerc | 1 + .github/workflows/pytest.yml | 6 +++++- .pre-commit-config.yaml | 19 ++++++++++++++++++- requirements.in | 3 ++- requirements.txt | 17 +++-------------- requirements_dev.txt | 16 +++------------- requirements_test.txt | 17 +++-------------- tests/conftest.py | 2 +- tests/unit/utils/markdown/test_markdown.py | 2 +- 9 files changed, 37 insertions(+), 46 deletions(-) diff --git a/.coveragerc b/.coveragerc index b2e8e1510..20f4ed8b2 100644 --- a/.coveragerc +++ b/.coveragerc @@ -13,6 +13,7 @@ exclude_lines = # Don't complain about importerror handlers except ImportError + except ModuleNotFoundError # Don't complain if tests don't hit defensive assertion code: raise AssertionError diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index a6cbfd70e..458704a36 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -13,6 +13,8 @@ on: - '**.py' - '**.js' - '**.jinja2' + - 'requirements.txt' + - 'requirements_test.txt' workflow_call: inputs: requirements: @@ -90,7 +92,7 @@ jobs: echo ${{ inputs.requirements_test }} > requirements_test.txt - name: Install Python dependencies run: | - python -m pip install --upgrade pip + python -m pip install --upgrade pip setuptools pip install -r requirements_test.txt - name: Install pytest-github-actions-annotate-failures run: pip install pytest-github-actions-annotate-failures @@ -108,6 +110,8 @@ jobs: FLASK_ENV=testing flask dbconfig | psql -h localhost -U postgres geoname_testing psql -h localhost -U postgres -c "grant all privileges on database funnel_testing to $(whoami);" psql -h localhost -U postgres -c "grant all privileges on database geoname_testing to $(whoami);" + psql -h localhost -U postgres funnel_testing -c "grant all privileges on schema public to $(whoami); grant all privileges on all tables in schema public to $(whoami); grant all privileges on all sequences in schema public to $(whoami);" + psql -h localhost -U postgres geoname_testing -c "grant all privileges on schema public to $(whoami); grant all privileges on all tables in schema public to $(whoami); grant all privileges on all sequences in schema public to $(whoami);" - name: Test with pytest run: | pytest -vv --showlocals --splinter-headless --cov=funnel diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c67563aa5..94355b186 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ default_stages: [commit] # default_language_version: # python: python3.9 ci: - skip: ['pip-compile', 'yesqa', 'no-commit-to-branch'] + skip: ['pip-compile', 'pip-audit', 'yesqa', 'no-commit-to-branch'] repos: - repo: https://github.com/pre-commit-ci/pre-commit-ci-config rev: v1.5.1 @@ -44,6 +44,23 @@ repos: 'requirements_dev.in', ] files: ^requirements(_test|_dev)?\.(in|txt)$ + - repo: https://github.com/pypa/pip-audit + rev: v2.4.15 + hooks: + - id: pip-audit + args: [ + '--no-deps', + '--fix', + '-r', + 'requirements.txt', + '-r', + 'requirements_test.txt', + '-r', + 'requirements_dev.txt', + '--ignore-vuln', + 'PYSEC-2021-13', # Flask-Caching uses pickle, exposing a vulnerability + ] + files: ^requirements(_test|_dev)?\.txt$ - repo: https://github.com/lucasmbrown/mirrors-autoflake rev: v1.3 hooks: diff --git a/requirements.in b/requirements.in index b76f5dfaf..a051e2150 100644 --- a/requirements.in +++ b/requirements.in @@ -49,7 +49,7 @@ Pygments pyIsEmail pymdown-extensions python-dateutil -python-dotenv +python-dotenv<1.0 # 1.0 drops Python 3.7 support pytz PyVimeo qrcode @@ -59,6 +59,7 @@ rq SQLAlchemy>=1.4.33 sqlalchemy-json SQLAlchemy-Utils +toml tweepy twilio typing-extensions diff --git a/requirements.txt b/requirements.txt index 231699a2c..7f7151818 100644 --- a/requirements.txt +++ b/requirements.txt @@ -121,7 +121,6 @@ flask==2.2.3 # flask-migrate # flask-redis # flask-rq2 - # flask-script # flask-sqlalchemy # flask-wtf flask-assets==2.0 @@ -149,8 +148,6 @@ flask-redis==0.4.0 # via -r requirements.in flask-rq2==18.3 # via -r requirements.in -flask-script==2.0.6 - # via coaster flask-sqlalchemy==3.0.3 # via # -r requirements.in @@ -178,9 +175,7 @@ grapheme==0.6.0 greenlet==2.0.2 # via -r requirements.in html2text==2020.1.16 - # via - # -r requirements.in - # coaster + # via -r requirements.in html5lib==1.1 # via # baseframe @@ -210,7 +205,6 @@ itsdangerous==2.0.1 # flask-wtf jinja2==3.1.2 # via - # coaster # flask # flask-babel # flask-flatpages @@ -293,8 +287,6 @@ premailer==3.10.0 # via -r requirements.in progressbar2==4.2.0 # via -r requirements.in -psycopg2==2.9.5 - # via coaster psycopg2-binary==2.9.5 # via -r requirements.in pyasn1==0.4.8 @@ -317,7 +309,6 @@ pyexecjs==1.5.1 pygments==2.14.0 # via # -r requirements.in - # coaster # rich pyisemail==2.0.1 # via @@ -367,9 +358,7 @@ pytz-deprecation-shim==0.1.0.post0 pyvimeo==1.1.0 # via -r requirements.in pyyaml==6.0 - # via - # coaster - # flask-flatpages + # via flask-flatpages qrcode==7.4.2 # via -r requirements.in redis==4.5.1 @@ -460,7 +449,7 @@ tldextract==3.4.0 # coaster # mxsniff toml==0.10.2 - # via coaster + # via -r requirements.in tqdm==4.64.1 # via nltk tuspy==1.0.0 diff --git a/requirements_dev.txt b/requirements_dev.txt index 7a086c1f9..9ae6b9592 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -221,7 +221,6 @@ flask==2.2.3 # flask-migrate # flask-redis # flask-rq2 - # flask-script # flask-sqlalchemy # flask-wtf flask-assets==2.0 @@ -249,8 +248,6 @@ flask-redis==0.4.0 # via -r requirements.in flask-rq2==18.3 # via -r requirements.in -flask-script==2.0.6 - # via coaster flask-sqlalchemy==3.0.3 # via # -r requirements.in @@ -290,9 +287,7 @@ html-tag-names==0.1.2 html-void-elements==0.1.0 # via djlint html2text==2020.1.16 - # via - # -r requirements.in - # coaster + # via -r requirements.in html5lib==1.1 # via # baseframe @@ -333,7 +328,6 @@ itsdangerous==2.0.1 # flask-wtf jinja2==3.1.2 # via - # coaster # flask # flask-babel # flask-flatpages @@ -472,8 +466,6 @@ premailer==3.10.0 # via -r requirements.in progressbar2==4.2.0 # via -r requirements.in -psycopg2==2.9.5 - # via coaster psycopg2-binary==2.9.5 # via -r requirements.in pyasn1==0.4.8 @@ -504,7 +496,6 @@ pyflakes==3.0.1 pygments==2.14.0 # via # -r requirements.in - # coaster # rich pyisemail==2.0.1 # via @@ -595,7 +586,6 @@ pyvimeo==1.1.0 pyyaml==6.0 # via # bandit - # coaster # djlint # flask-flatpages # pre-commit @@ -719,8 +709,8 @@ tokenize-rt==5.0.0 # via pyupgrade toml==0.10.2 # via + # -r requirements.in # -r requirements_dev.in - # coaster tomli==2.0.1 # via # black @@ -836,7 +826,7 @@ user-agents==2.2.0 # via -r requirements.in virtualenv==20.19.0 # via pre-commit -watchdog==2.2.1 +watchdog==2.3.0 # via -r requirements_dev.in wcwidth==0.2.6 # via reformat-gherkin diff --git a/requirements_test.txt b/requirements_test.txt index 83815fcd8..3997509ad 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -147,7 +147,6 @@ flask==2.2.3 # flask-migrate # flask-redis # flask-rq2 - # flask-script # flask-sqlalchemy # flask-wtf flask-assets==2.0 @@ -175,8 +174,6 @@ flask-redis==0.4.0 # via -r requirements.in flask-rq2==18.3 # via -r requirements.in -flask-script==2.0.6 - # via coaster flask-sqlalchemy==3.0.3 # via # -r requirements.in @@ -206,9 +203,7 @@ greenlet==2.0.2 h11==0.14.0 # via wsproto html2text==2020.1.16 - # via - # -r requirements.in - # coaster + # via -r requirements.in html5lib==1.1 # via # baseframe @@ -241,7 +236,6 @@ itsdangerous==2.0.1 # flask-wtf jinja2==3.1.2 # via - # coaster # flask # flask-babel # flask-flatpages @@ -342,8 +336,6 @@ premailer==3.10.0 # via -r requirements.in progressbar2==4.2.0 # via -r requirements.in -psycopg2==2.9.5 - # via coaster psycopg2-binary==2.9.5 # via -r requirements.in pyasn1==0.4.8 @@ -366,7 +358,6 @@ pyexecjs==1.5.1 pygments==2.14.0 # via # -r requirements.in - # coaster # rich pyisemail==2.0.1 # via @@ -444,9 +435,7 @@ pytz-deprecation-shim==0.1.0.post0 pyvimeo==1.1.0 # via -r requirements.in pyyaml==6.0 - # via - # coaster - # flask-flatpages + # via flask-flatpages qrcode==7.4.2 # via -r requirements.in redis==4.5.1 @@ -551,7 +540,7 @@ tldextract==3.4.0 # coaster # mxsniff toml==0.10.2 - # via coaster + # via -r requirements.in tomli==2.0.1 # via # coverage diff --git a/tests/conftest.py b/tests/conftest.py index 57099b5d7..43ce303e6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -272,7 +272,7 @@ def no_colorize(code_string: str, lang: t.Optional[str] = 'python') -> str: TerminalTrueColorFormatter, ) from pygments.lexers import get_lexer_by_name, guess_lexer - except ImportError: + except ModuleNotFoundError: return no_colorize if rich_console.color_system == 'truecolor': diff --git a/tests/unit/utils/markdown/test_markdown.py b/tests/unit/utils/markdown/test_markdown.py index e55c52183..922dc3b02 100644 --- a/tests/unit/utils/markdown/test_markdown.py +++ b/tests/unit/utils/markdown/test_markdown.py @@ -32,7 +32,7 @@ def test_markdown_cases( ) -> None: case = markdown_test_registry.test_case(md_testname, md_configname) if case.expected_output is None: - warnings.warn(f'Expected output not generated for {case}') + warnings.warn(f'Expected output not generated for {case}', stacklevel=1) pytest.skip(f'Expected output not generated for {case}') assert case.expected_output == case.output From c530749bcdacf3efb0e538d9c8847988e479837d Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Mon, 27 Feb 2023 18:13:34 +0530 Subject: [PATCH 056/281] Remove pytest mark markdown_update_output (#1642) * Remove pytest mark markdown_update_output used for generating markdown output * Add stacklevel=1 for warnings.warn, to address flake8 error. --- Makefile | 5 ----- tests/unit/utils/markdown/test_markdown.py | 9 --------- 2 files changed, 14 deletions(-) diff --git a/Makefile b/Makefile index 4a022568e..06baa154c 100644 --- a/Makefile +++ b/Makefile @@ -36,10 +36,5 @@ deps-test: deps-dev: pip-compile --upgrade --output-file=requirements_dev.txt --resolver=backtracking requirements.in requirements_test.in requirements_dev.in -tests-data: tests-data-markdown - -tests-data-markdown: - pytest -v -m update_markdown_data - debug-markdown-tests: pytest -v -m debug_markdown_output diff --git a/tests/unit/utils/markdown/test_markdown.py b/tests/unit/utils/markdown/test_markdown.py index 922dc3b02..92253f087 100644 --- a/tests/unit/utils/markdown/test_markdown.py +++ b/tests/unit/utils/markdown/test_markdown.py @@ -41,15 +41,6 @@ def test_markdown_cases( # fail_with_diff(case.expected_output, case.output) -@pytest.mark.update_markdown_data() -def test_markdown_update_output(pytestconfig, markdown_test_registry): - """Update the expected output in all .toml files.""" - has_mark = pytestconfig.getoption('-m', default=None) == 'update_markdown_data' - if not has_mark: - pytest.skip('Skipping update of expected output of markdown test cases') - markdown_test_registry.update_expected_output() - - @pytest.mark.debug_markdown_output() def test_markdown_debug_output(pytestconfig, markdown_test_registry): has_mark = pytestconfig.getoption('-m', default=None) == 'debug_markdown_output' From 6576a3e0886043b9f492b4532b97553d1565d0a9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 22:02:51 +0530 Subject: [PATCH 057/281] [pre-commit.ci] pre-commit autoupdate (#1650) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/Riverside-Healthcare/djLint: v1.19.14 → v1.19.15](https://github.com/Riverside-Healthcare/djLint/compare/v1.19.14...v1.19.15) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 94355b186..2f449167b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -190,7 +190,7 @@ repos: args: ['--single-quote', '--trailing-comma', 'es5'] exclude: funnel/templates/js/ - repo: https://github.com/Riverside-Healthcare/djLint - rev: v1.19.14 + rev: v1.19.15 hooks: - id: djlint-jinja files: \.html\.(jinja2|j2)$ From 3055709edddcd944966a62d3b5847c74fad686fc Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Wed, 1 Mar 2023 15:04:49 +0530 Subject: [PATCH 058/281] Remove white space in title block (#1651) --- funnel/templates/layout.html.jinja2 | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/funnel/templates/layout.html.jinja2 b/funnel/templates/layout.html.jinja2 index a2ee77a5e..69c4a2c90 100644 --- a/funnel/templates/layout.html.jinja2 +++ b/funnel/templates/layout.html.jinja2 @@ -10,21 +10,18 @@ content="width=device-width, initial-scale=1.0, maximum-scale=1.0"/> {%- block titletags %} - {% block titleblock %} + {%- block titleblock -%} {% block title %} {{ title }} - {% endblock title %} - {% if title_suffix %} - – {{ title_suffix }} - {% elif title_suffix == '' %} - {% elif self.title() != config['SITE_TITLE'] %} - – {{ config['SITE_TITLE'] }} - {% endif %} - {%- endblock titleblock %} - - - - {%- endblock titletags %} + {% endblock title %}{% if title_suffix %} – {{ title_suffix }} + {%- elif title_suffix == '' and self.title() != config['SITE_TITLE'] -%} – {{ config['SITE_TITLE'] }} + {%- endif -%} + {%- endblock titleblock -%} + + + + + {%- endblock titletags %} From 6680399b00856b356e8edab1c5c6cdd20c835fc8 Mon Sep 17 00:00:00 2001 From: Amogh M Aradhya Date: Thu, 2 Mar 2023 00:41:01 +0530 Subject: [PATCH 059/281] Add safety policy file and security.txt (#1652) Co-authored-by: Kiran Jonnalagadda --- .pre-commit-config.yaml | 4 +++- .safety-policy.yml | 6 ++++++ funnel/static/.well-known/assetlinks.json | 2 +- funnel/static/.well-known/security.txt | 4 ++++ 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 .safety-policy.yml create mode 100644 funnel/static/.well-known/security.txt diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2f449167b..5d5763823 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -58,7 +58,9 @@ repos: '-r', 'requirements_dev.txt', '--ignore-vuln', - 'PYSEC-2021-13', # Flask-Caching uses pickle, exposing a vulnerability + 'PYSEC-2021-13', # https://github.com/pallets-eco/flask-caching/pull/209 + '--ignore-vuln', + 'PYSEC-2022-42969', # https://github.com/pytest-dev/pytest/issues/10392 ] files: ^requirements(_test|_dev)?\.txt$ - repo: https://github.com/lucasmbrown/mirrors-autoflake diff --git a/.safety-policy.yml b/.safety-policy.yml new file mode 100644 index 000000000..84a93c620 --- /dev/null +++ b/.safety-policy.yml @@ -0,0 +1,6 @@ +security: + ignore-vulnerabilities: + 33026: + reason: https://github.com/pallets-eco/flask-caching/pull/209 + 42969: + reason: https://github.com/pytest-dev/pytest/issues/10392 diff --git a/funnel/static/.well-known/assetlinks.json b/funnel/static/.well-known/assetlinks.json index 0ca63261c..9a15e6f8a 100644 --- a/funnel/static/.well-known/assetlinks.json +++ b/funnel/static/.well-known/assetlinks.json @@ -3,7 +3,7 @@ "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "web", - "site": "https://auth.hasgeek.com" + "site": "https://hasgeek.com" } } ] diff --git a/funnel/static/.well-known/security.txt b/funnel/static/.well-known/security.txt new file mode 100644 index 000000000..a6a977394 --- /dev/null +++ b/funnel/static/.well-known/security.txt @@ -0,0 +1,4 @@ +Contact: mailto:support@hasgeek.com +Expires: 2024-03-01T06:30:00.000Z +Acknowledgments: https://hasgeek.com/humans.txt +Preferred-Languages: en From deb73fb6304bd444ce136a2282e5a65596cba7de Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Thu, 2 Mar 2023 03:03:39 +0530 Subject: [PATCH 060/281] Move to pip-compile-multi for dependency management (#1649) Co-authored-by: Kiran Jonnalagadda --- .github/workflows/pytest.yml | 35 +- .gitignore | 3 + .pre-commit-config.yaml | 48 +- Makefile | 99 +- package-lock.json | 19066 ++++------------- requirements.in => requirements/base.in | 12 +- requirements.txt => requirements/base.txt | 170 +- requirements_dev.in => requirements/dev.in | 5 +- requirements/dev.txt | 216 + requirements_test.in => requirements/test.in | 1 + requirements/test.txt | 110 + requirements_dev.txt | 871 - requirements_test.txt | 630 - 13 files changed, 4882 insertions(+), 16384 deletions(-) rename requirements.in => requirements/base.in (79%) rename requirements.txt => requirements/base.txt (73%) rename requirements_dev.in => requirements/dev.in (86%) create mode 100644 requirements/dev.txt rename requirements_test.in => requirements/test.in (94%) create mode 100644 requirements/test.txt delete mode 100644 requirements_dev.txt delete mode 100644 requirements_test.txt diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 458704a36..3311f9faa 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -13,18 +13,18 @@ on: - '**.py' - '**.js' - '**.jinja2' - - 'requirements.txt' - - 'requirements_test.txt' + - 'requirements/base.txt' + - 'requirements/test.txt' workflow_call: inputs: requirements: - description: Updated requirements.txt + description: Updated requirements/base.txt type: string requirements_dev: - description: Updated requirements_dev.txt + description: Updated requirements/dev.txt type: string requirements_test: - description: Updated requirements_test.txt + description: Updated requirements/test.txt type: string permissions: @@ -65,10 +65,11 @@ jobs: - name: Install Geckodriver (for browser testing) uses: browser-actions/setup-geckodriver@latest - name: Install Python - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: pip + cache-dependency-path: 'requirements/*.txt' - name: Install Node uses: actions/setup-node@v3 with: @@ -78,28 +79,24 @@ jobs: run: | sudo -- sh -c "echo '127.0.0.1 funnel.test' >> /etc/hosts" sudo -- sh -c "echo '127.0.0.1 f.test' >> /etc/hosts" - - name: Optionally replace requirements.txt + - name: Optionally replace requirements/base.txt if: ${{ inputs.requirements }} run: | - echo ${{ inputs.requirements }} > requirements.txt - - name: Optionally replace requirements_dev.txt + echo ${{ inputs.requirements }} > requirements/base.txt + - name: Optionally replace requirements/dev.txt if: ${{ inputs.requirements_dev }} run: | - echo ${{ inputs.requirements_dev }} > requirements_dev.txt - - name: Optionally replace requirements_test.txt + echo ${{ inputs.requirements_dev }} > requirements/dev.txt + - name: Optionally replace requirements/test.txt if: ${{ inputs.requirements_test }} run: | - echo ${{ inputs.requirements_test }} > requirements_test.txt - - name: Install Python dependencies + echo ${{ inputs.requirements_test }} > requirements/test.txt + - name: Install Node and Python dependencies run: | python -m pip install --upgrade pip setuptools - pip install -r requirements_test.txt - - name: Install pytest-github-actions-annotate-failures + make install-test + - name: Annotate Pytest failures in PR run: pip install pytest-github-actions-annotate-failures - - name: Install Node modules - run: npm ci - - name: Webpack JS and CSS assets - run: npm run build - name: Create PostgreSQL databases run: | sudo apt-get install postgresql-client -y diff --git a/.gitignore b/.gitignore index 2220830c0..1e11e7497 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,9 @@ baseframe-packed.* # Download files geoname_data +# Dependencies +build/dependencies + # Log and test files error.log error.log.* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5d5763823..5885d5329 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,45 +5,17 @@ default_stages: [commit] # default_language_version: # python: python3.9 ci: - skip: ['pip-compile', 'pip-audit', 'yesqa', 'no-commit-to-branch'] + skip: ['pip-audit', 'yesqa', 'no-commit-to-branch'] repos: - repo: https://github.com/pre-commit-ci/pre-commit-ci-config rev: v1.5.1 hooks: - id: check-pre-commit-ci-config - - repo: https://github.com/jazzband/pip-tools - rev: 6.12.2 + - repo: https://github.com/peterdemin/pip-compile-multi + rev: v2.6.2 hooks: - - id: pip-compile - name: pip-compile requirements.in - args: - [ - '--output-file=requirements.txt', - '--resolver=backtracking', - 'requirements.in', - ] - files: ^requirements\.(in|txt)$ - - id: pip-compile - name: pip-compile requirements_test.in - args: - [ - '--output-file=requirements_test.txt', - '--resolver=backtracking', - 'requirements.in', - 'requirements_test.in', - ] - files: ^requirements(_test)?\.(in|txt)$ - - id: pip-compile - name: pip-compile requirements_dev.in - args: - [ - '--output-file=requirements_dev.txt', - '--resolver=backtracking', - 'requirements.in', - 'requirements_test.in', - 'requirements_dev.in', - ] - files: ^requirements(_test|_dev)?\.(in|txt)$ + - id: pip-compile-multi-verify + files: ^requirements/.*\.(in|txt)$ - repo: https://github.com/pypa/pip-audit rev: v2.4.15 hooks: @@ -52,17 +24,17 @@ repos: '--no-deps', '--fix', '-r', - 'requirements.txt', + 'requirements/base.txt', '-r', - 'requirements_test.txt', + 'requirements/test.txt', '-r', - 'requirements_dev.txt', + 'requirements/dev.txt', '--ignore-vuln', 'PYSEC-2021-13', # https://github.com/pallets-eco/flask-caching/pull/209 '--ignore-vuln', 'PYSEC-2022-42969', # https://github.com/pytest-dev/pytest/issues/10392 ] - files: ^requirements(_test|_dev)?\.txt$ + files: ^requirements/.*\.txt$ - repo: https://github.com/lucasmbrown/mirrors-autoflake rev: v1.3 hooks: @@ -182,7 +154,7 @@ repos: - id: mixed-line-ending - id: no-commit-to-branch - id: requirements-txt-fixer - files: requirements(_.*)?\.in + files: requirements/.*\.in - id: trailing-whitespace args: ['--markdown-linebreak-ext=md'] - repo: https://github.com/pre-commit/mirrors-prettier diff --git a/Makefile b/Makefile index 06baa154c..c16269425 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,25 @@ -all: assets - -assets: - npm install - npm run build - -build: - npm run build - -babel: babelpy babeljs +all: + @echo "You must have an active Python virtualenv (3.7+) before using any of these." + @echo + @echo "For production deployment:" + @echo " make install # For first time setup and after dependency upgrades" + @echo " make assets # For only Node asset changes" + @echo + @echo "For testing and CI:" + @echo " make install-test # Install everything needed for a test environment" + @echo + @echo "For development:" + @echo " make install-dev # For first time setup and after dependency upgrades" + @echo " make deps # Scan for dependency upgrades (and test afterwards!)" + @echo " make deps-python # Scan for Python dependency upgrades" + @echo " make deps-npm # Scan for NPM dependency upgrades" + @echo + @echo "To upgrade dependencies in a development environment, use all in order and" + @echo "commit changes only if all tests pass:" + @echo + @echo " make deps" + @echo " make install-dev" + @echo " pytest" babelpy: ZXCVBN_DIR=`python -c "import zxcvbn; import pathlib; print(pathlib.Path(zxcvbn.__file__).parent, end='')"` @@ -25,16 +37,69 @@ babeljs: ls $(baseframe_dir) | grep -E '[[:lower:]]{2}_[[:upper:]]{2}' | xargs -I % sh -c './node_modules/.bin/po2json --format=jed --pretty $(baseframe_dir)/%/LC_MESSAGES/baseframe.po $(target_dir)/%/baseframe.json' ./node_modules/.bin/prettier --write $(target_dir)/**/**.json -deps: deps-main deps-test deps-dev +babel: babelpy babeljs + +deps-editable: DEPS = coaster baseframe +deps-editable: + @if [ ! -d "build" ]; then mkdir build; fi; + @if [ ! -d "build/dependencies" ]; then mkdir build/dependencies; fi; + @cd build/dependencies;\ + for dep in $(DEPS); do\ + if [ -e "$$dep" ]; then\ + echo "Updating $$dep...";\ + echo `cd $$dep;git pull;`;\ + else\ + echo "Cloning dependency $$dep as locally editable installation...";\ + git clone https://github.com/hasgeek/$$dep.git;\ + fi;\ + done; + +deps-python: deps-editable + pip-compile-multi --backtracking --use-cache + +deps-python-rebuild: deps-editable + pip-compile-multi --backtracking + +deps-python-base: deps-editable + pip-compile-multi -t requirements/base.in --backtracking --use-cache + +deps-python-test: deps-editable + pip-compile-multi -t requirements/test.in --backtracking --use-cache -deps-main: - pip-compile --upgrade --output-file=requirements.txt --resolver=backtracking requirements.in +deps-python-dev: deps-editable + pip-compile-multi -t requirements/dev.in --backtracking --use-cache -deps-test: - pip-compile --upgrade --output-file=requirements_test.txt --resolver=backtracking requirements.in requirements_test.in +deps-python-verify: + pip-compile-multi verify -deps-dev: - pip-compile --upgrade --output-file=requirements_dev.txt --resolver=backtracking requirements.in requirements_test.in requirements_dev.in +deps-npm: + npm update + +deps: deps-python deps-npm + +install-npm: + npm install + +install-npm-ci: + npm clean-install + +install-python-dev: deps-editable + pip install -r requirements/dev.txt + +install-python-test: deps-editable + pip install -r requirements/test.txt + +install-python: deps-editable + pip install -r requirements/base.txt + +install-dev: deps-editable install-python-dev install-npm assets + +install-test: deps-editable install-python-test install-npm-ci assets + +install: deps-editable install-python install-npm-ci assets + +assets: + npm run build debug-markdown-tests: pytest -v -m debug_markdown_output diff --git a/package-lock.json b/package-lock.json index 2d1373ce7..675f404a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "hasgeek", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -100,34 +100,34 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", "dev": true, "dependencies": { - "@ampproject/remapping": "^2.1.0", + "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", + "json5": "^2.2.2", "semver": "^6.3.0" }, "engines": { @@ -139,13 +139,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", "dev": true, "dependencies": { - "@babel/types": "^7.20.2", + "@babel/types": "^7.21.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -192,14 +193,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.0", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -210,17 +212,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", + "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -231,13 +234,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz", + "integrity": "sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "regexpu-core": "^5.3.1" }, "engines": { "node": ">=6.9.0" @@ -285,13 +288,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -310,12 +313,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -334,9 +337,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -344,9 +347,9 @@ "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" }, "engines": { "node": ">=6.9.0" @@ -392,16 +395,17 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -461,38 +465,38 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -512,9 +516,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -538,14 +542,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -555,13 +559,13 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -589,13 +593,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -654,12 +658,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -702,16 +706,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" + "@babel/plugin-transform-parameters": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -737,13 +741,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -770,14 +774,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", + "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -996,12 +1000,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1011,14 +1015,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1043,9 +1047,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", + "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1058,18 +1062,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", + "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -1081,12 +1085,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1096,9 +1101,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1158,12 +1163,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", + "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1220,13 +1225,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1236,14 +1241,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", + "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1253,14 +1258,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-identifier": "^7.19.1" }, "engines": { @@ -1287,13 +1292,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1334,9 +1339,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1364,13 +1369,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" }, "engines": { "node": ">=6.9.0" @@ -1410,13 +1415,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -1606,58 +1611,51 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", - "dependencies": { - "regenerator-runtime": "^0.13.10" - }, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz", - "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==", - "dev": true, + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "dependencies": { - "core-js-pure": "^3.25.1", - "regenerator-runtime": "^0.13.10" + "regenerator-runtime": "^0.13.11" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", + "@babel/generator": "^7.21.1", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", + "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1666,9 +1664,9 @@ } }, "node_modules/@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.19.4", @@ -1685,13 +1683,13 @@ "integrity": "sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==" }, "node_modules/@codemirror/autocomplete": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.3.1.tgz", - "integrity": "sha512-t7oq6gz7fkZsrnGDrtFLfk4l3YivTpq/fqqxtzOAV/YGlr16jQFxIqOpUrjE2Eb914GXOwERfUz+TYOxx4L76w==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.4.2.tgz", + "integrity": "sha512-8WE2xp+D0MpWEv5lZ6zPW1/tf4AGb358T5GWYiKEuCP8MvFfT3tH2mIF9Y2yr2e3KbHuSvsVhosiEyqCpiJhZQ==", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.5.0", + "@codemirror/view": "^6.6.0", "@lezer/common": "^1.0.0" }, "peerDependencies": { @@ -1702,20 +1700,20 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.1.2.tgz", - "integrity": "sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.1.tgz", + "integrity": "sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==", "dependencies": { "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", + "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0" } }, "node_modules/@codemirror/lang-css": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.0.1.tgz", - "integrity": "sha512-rlLq1Dt0WJl+2epLQeAsfqIsx3lGu4HStHCJu95nGGuz2P2fNugbU3dQYafr2VRjM4eMC9HviI6jvS98CNtG5w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.0.2.tgz", + "integrity": "sha512-4V4zmUOl2Glx0GWw0HiO1oGD4zvMlIQ3zx5hXOE6ipCjhohig2bhWRAasrZylH9pRNTcl1VMa59Lsl8lZWlTzw==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -1724,27 +1722,28 @@ } }, "node_modules/@codemirror/lang-html": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.1.3.tgz", - "integrity": "sha512-LmtIElopGK6bBfddAyjBitS6hz8nFr/PVUtvqmfomXlHB4m+Op2d5eGk/X9/CSby6Y8NqXXkGa3yDd9lfJ6Qlg==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.2.tgz", + "integrity": "sha512-bqCBASkteKySwtIbiV/WCtGnn/khLRbbiV5TE+d9S9eQJD7BA4c5dTRm2b3bVmSpilff5EYxvB4PQaZzM/7cNw==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/language": "^6.0.0", + "@codemirror/language": "^6.4.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.2.2", "@lezer/common": "^1.0.0", - "@lezer/html": "^1.0.1" + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.0" } }, "node_modules/@codemirror/lang-javascript": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.1.1.tgz", - "integrity": "sha512-F4+kiuC5d5dUSJmff96tJQwpEXs/tX/4bapMRnZWW6bHKK1Fx6MunTzopkCUWRa9bF87GPmb9m7Qtg7Yv8f3uQ==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.1.4.tgz", + "integrity": "sha512-OxLf7OfOZBTMRMi6BO/F72MNGmgOd9B0vetOLvHsDACFXayBzW8fm8aWnDM0yuy68wTK03MBf4HbjSBNRG5q7A==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", + "@codemirror/language": "^6.6.0", "@codemirror/lint": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -1753,9 +1752,9 @@ } }, "node_modules/@codemirror/lang-markdown": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.0.5.tgz", - "integrity": "sha512-qH0THRYc2M7pIJoAp6jstXZkv8ZMVhNaBm7Bs4+0SLHhHlwX53txFy98AcPwrfq0Sh8Zi6RAuj9j/GyL8E1MKw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.1.0.tgz", + "integrity": "sha512-HQDJg1Js19fPKKsI3Rp1X0J6mxyrRy2NX6+Evh0+/jGm6IZHL5ygMGKBYNWKXodoDQFvgdofNRG33gWOwV59Ag==", "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.3.0", @@ -1766,9 +1765,9 @@ } }, "node_modules/@codemirror/language": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.3.1.tgz", - "integrity": "sha512-MK+G1QKaGfSEUg9YEFaBkMBI6j1ge4VMBPZv9fDYotw7w695c42x5Ba1mmwBkesYnzYFBfte6Hh9TDcKa6xORQ==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.6.0.tgz", + "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -1779,9 +1778,9 @@ } }, "node_modules/@codemirror/lint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.0.0.tgz", - "integrity": "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.2.0.tgz", + "integrity": "sha512-KVCECmR2fFeYBr1ZXDVue7x3q5PMI0PzcIbA+zKufnkniMBo1325t0h1jM85AKp8l3tj67LRxVpZfgDxEXlQkg==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -1789,16 +1788,16 @@ } }, "node_modules/@codemirror/state": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.3.tgz", - "integrity": "sha512-0Rn7vadZ6EgHaKdIOwyhBWLdPDh1JM5USYqXjxwrvpmTKWu4wQ77twgAYEg1MU282XcrnV4ZqFf+00bu6UPCyg==" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz", + "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==" }, "node_modules/@codemirror/view": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.5.0.tgz", - "integrity": "sha512-dapE7AywjyYoHBHn4n+wCRKFqMEmYZHHlfyoSO+e1P6MK4az1wg9t7mfwbdI9mXuBzmPBX7NmU3Xmq+qmxDOLw==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.9.1.tgz", + "integrity": "sha512-bzfSjJn9dAADVpabLKWKNmMG4ibyTV2e3eOGowjElNPTdTkSbi6ixPYHm2u0ADcETfKsi2/R84Rkmi91dH9yEg==", "dependencies": { - "@codemirror/state": "^6.0.0", + "@codemirror/state": "^6.1.4", "style-mod": "^4.0.0", "w3c-keyname": "^2.2.4" } @@ -1814,9 +1813,9 @@ } }, "node_modules/@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "version": "2.88.11", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", + "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -1832,7 +1831,7 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "~6.10.3", "safe-buffer": "^5.1.2", "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", @@ -1890,9 +1889,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -2004,14 +2003,14 @@ } }, "node_modules/@lezer/common": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz", - "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.2.tgz", + "integrity": "sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==" }, "node_modules/@lezer/css": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.0.1.tgz", - "integrity": "sha512-kLGsbzXdp1ntzO2jDwFf+2w76EBlLiD4FKofx7tgkdqeFRoslFiMS2qqbNtAauXw8ihZ4cE5YpxSpfsKXSs5Sg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.1.tgz", + "integrity": "sha512-mSjx+unLLapEqdOYDejnGBokB5+AiJKZVclmud0MKQOKx3DLJ5b5VTCstgDDknR6iIV4gVrN6euzsCnj0A2gQA==", "dependencies": { "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" @@ -2026,9 +2025,9 @@ } }, "node_modules/@lezer/html": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.0.1.tgz", - "integrity": "sha512-sC00zEt3GBh3vVO6QaGX4YZCl41S9dHWN/WGBsDixy9G+sqOC7gsa4cxA/fmRVAiBvhqYkJk+5Ul4oul92CPVw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.3.tgz", + "integrity": "sha512-04Fyvu66DjV2EjhDIG1kfDdktn5Pfw56SXPrzKNQH5B2m7BDfc6bDsz+ZJG8dLS3kIPEKbyyq1Sm2/kjeG0+AA==", "dependencies": { "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", @@ -2036,18 +2035,18 @@ } }, "node_modules/@lezer/javascript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.0.2.tgz", - "integrity": "sha512-IjOVeIRhM8IuafWNnk+UzRz7p4/JSOKBNINLYLsdSGuJS9Ju7vFdc82AlTt0jgtV5D8eBZf4g0vK4d3ttBNz7A==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.1.tgz", + "integrity": "sha512-Hqx36DJeYhKtdpc7wBYPR0XF56ZzIp0IkMO/zNNj80xcaFOV4Oj/P7TQc/8k2TxNhzl7tV5tXS8ZOCPbT4L3nA==", "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" } }, "node_modules/@lezer/lr": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.4.tgz", - "integrity": "sha512-L/52/oMJBFXXx8qBYF4UgktLP2geQ/qn5Fd8+5L/mqlLLCB9+qdKktFAtejd9FdFMaFx6lrP5rmLz4sN3Kplcg==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.3.tgz", + "integrity": "sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w==", "dependencies": { "@lezer/common": "^1.0.0" } @@ -2103,6 +2102,18 @@ "semver": "^7.3.5" } }, + "node_modules/@npmcli/fs/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@npmcli/fs/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -2118,6 +2129,12 @@ "node": ">=10" } }, + "node_modules/@npmcli/fs/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", @@ -2348,9 +2365,9 @@ } }, "node_modules/@types/d3-dsv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-2.0.2.tgz", - "integrity": "sha512-T4aL2ZzaILkLGKbxssipYVRs8334PSR9FQzTGftZbc3jIPGkiXXS7qUCh8/q8UWFzxBZQ92dvR0v7+AM9wL2PA==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-2.0.3.tgz", + "integrity": "sha512-15sp4Z+ZVWuZuV0QEDu4cu/0C5vlD+JYXaUMDs8JTWpTJjcrAtjyR1vVwEfbgmU5kLNOOMRTlDCYyWWFx7eh/w==" }, "node_modules/@types/d3-ease": { "version": "2.0.2", @@ -2376,9 +2393,9 @@ "integrity": "sha512-OhQPuTeeMhD9A0Ksqo4q1S9Z1Q57O/t4tTPBxBQxRB4IERnxeoEYLPe72fA/GYpPSUrfKZVOgLHidkxwbzLdJA==" }, "node_modules/@types/d3-geo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-2.0.3.tgz", - "integrity": "sha512-kFwLEMXq1mGJ2Eho7KrOUYvLcc2YTDeKj+kTFt87JlEbRQ0rgo8ZENNb5vTYmZrJ2xL/vVM5M7yqVZGOPH2JFg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-2.0.4.tgz", + "integrity": "sha512-kP0LcPVN6P/42hmFt0kZm93YTscfawZo6tioL9y0Ya2l5rxaGoYrIG4zee+yJoK9cLTOc8E8S5ExqTEYVwjIkw==", "dependencies": { "@types/geojson": "*" } @@ -2536,9 +2553,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + "version": "18.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -2586,9 +2603,9 @@ "dev": true }, "node_modules/@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", + "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==", "dev": true }, "node_modules/@types/uglify-js": { @@ -2927,9 +2944,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -2997,9 +3014,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -3062,16 +3079,12 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" + "deep-equal": "^2.0.5" } }, "node_modules/array-includes": { @@ -3137,7 +3150,6 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -3151,6 +3163,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -3222,11 +3248,23 @@ } }, "node_modules/autolinker": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", - "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", + "integrity": "sha512-zQAFO1Dlsn69eXaO6+7YZc+v84aquQKbwpzCE3L0stj56ERn9hutFxPopViLjo9G+rWwjozRhgS5KJ25Xy19cQ==", "dependencies": { - "tslib": "^2.3.0" + "gulp-header": "^1.7.1" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/aws-sign2": { @@ -3239,25 +3277,28 @@ } }, "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true }, "node_modules/axe-core": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.1.tgz", - "integrity": "sha512-1exVbW0X1O/HSr/WMwnaweyqcWOgZgLiVxdLG34pvSQk4NlYQr9OUy0JLwuhFfuVNQzzqgH57eYzkFBCb3bIsQ==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.3.tgz", + "integrity": "sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } }, "node_modules/babel-eslint": { "version": "10.1.0", @@ -3414,9 +3455,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "funding": [ { "type": "opencollective", @@ -3428,10 +3469,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" }, "bin": { "browserslist": "cli.js" @@ -3519,6 +3560,18 @@ "node": ">= 10" } }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cacache/node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -3549,6 +3602,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/cacache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -3606,9 +3665,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "version": "1.0.30001458", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz", + "integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==", "funding": [ { "type": "opencollective", @@ -3666,10 +3725,16 @@ } }, "node_modules/ci-info": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz", - "integrity": "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { "node": ">=8" } @@ -3896,9 +3961,9 @@ } }, "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -3945,34 +4010,31 @@ } }, "node_modules/core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.0.tgz", + "integrity": "sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ==", "dev": true, "dependencies": { - "browserslist": "^4.21.4" + "browserslist": "^4.21.5" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-pure": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz", - "integrity": "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "dependencies": { + "layout-base": "^1.0.0" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -4079,9 +4141,9 @@ } }, "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", - "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", "dev": true }, "node_modules/cypress/node_modules/ansi-styles": { @@ -4154,6 +4216,18 @@ "node": ">=8" } }, + "node_modules/cypress/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cypress/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -4184,148 +4258,208 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/d3": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-6.7.0.tgz", - "integrity": "sha512-hNHRhe+yCDLUG6Q2LwvR/WdNFPOJQ5VWqsJcwIYVeI401+d2/rrCjxSXkiAdIlpx7/73eApFB4Olsmh3YN7a6g==", - "dependencies": { - "d3-array": "2", - "d3-axis": "2", - "d3-brush": "2", - "d3-chord": "2", - "d3-color": "2", - "d3-contour": "2", - "d3-delaunay": "5", - "d3-dispatch": "2", - "d3-drag": "2", - "d3-dsv": "2", - "d3-ease": "2", - "d3-fetch": "2", - "d3-force": "2", - "d3-format": "2", - "d3-geo": "2", - "d3-hierarchy": "2", - "d3-interpolate": "2", - "d3-path": "2", - "d3-polygon": "2", - "d3-quadtree": "2", - "d3-random": "2", - "d3-scale": "3", - "d3-scale-chromatic": "2", - "d3-selection": "2", - "d3-shape": "2", - "d3-time": "2", - "d3-time-format": "3", - "d3-timer": "2", - "d3-transition": "2", - "d3-zoom": "2" - } + "node_modules/cypress/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "node_modules/cytoscape": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.23.0.tgz", + "integrity": "sha512-gRZqJj/1kiAVPkrVFvz/GccxsXhF3Qwpptl32gKKypO4IlqnKBjTOu+HbXtEggSGzC5KCaHp3/F7GgENrtsFkA==", "dependencies": { - "internmap": "^1.0.0" + "heap": "^0.2.6", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=0.10" } }, - "node_modules/d3-axis": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-2.1.0.tgz", - "integrity": "sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw==" + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + }, + "node_modules/d3": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.6.tgz", + "integrity": "sha512-i1x8Q3lGerBazuvWsImnUKrjfCdBnRnk8aq7hqOK/5+CAWJTt/zr9CaR1mlJf17oH8l/v4mOaDLU+F/l2dq1Vg==" + }, + "node_modules/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-brush": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-2.1.0.tgz", - "integrity": "sha512-cHLLAFatBATyIKqZOkk/mDHUbzne2B3ZwxkzMHvFTCZCmLaXDpZRihQSn8UNXTkGD/3lb/W2sQz0etAftmHMJQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-chord": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-2.0.0.tgz", - "integrity": "sha512-D5PZb7EDsRNdGU4SsjQyKhja8Zgu+SHZfUSO5Ls8Wsn+jsAKUUGkcshLxMg9HDFxG3KqavGWaWkJ8EpU8ojuig==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", "dependencies": { - "d3-path": "1 - 2" + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-contour": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-2.0.0.tgz", - "integrity": "sha512-9unAtvIaNk06UwqBmvsdHX7CZ+NPDZnn8TtNH1myW93pWJkhsV25JcgnYAu0Ck5Veb1DHiCv++Ic5uvJ+h50JA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", "dependencies": { - "d3-array": "2" + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "dependencies": { - "delaunator": "4" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-drag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", - "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-selection": "2" + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "dependencies": { - "commander": "2", - "iconv-lite": "0.4", + "commander": "7", + "iconv-lite": "0.6", "rw": "1" }, "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-dsv/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } }, "node_modules/d3-ease": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", - "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-fetch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-2.0.0.tgz", - "integrity": "sha512-TkYv/hjXgCryBeNKiclrwqZH7Nb+GaOwo3Neg24ZVWA3MKB+Rd+BY84Nh6tmNEMcjUik1CSUWjXYndmeO6F7sw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", "dependencies": { - "d3-dsv": "1 - 2" + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-flextree": { @@ -4336,32 +4470,36 @@ "d3-hierarchy": "^1.1.5" } }, - "node_modules/d3-flextree/node_modules/d3-hierarchy": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" - }, "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", "dependencies": { - "d3-array": "^2.5.0" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-geo-projection": { @@ -4393,141 +4531,175 @@ } }, "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" }, "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "d3-color": "1 - 2" + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-polygon": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-2.0.0.tgz", - "integrity": "sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-random": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-2.2.2.tgz", - "integrity": "sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-scale-chromatic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz", - "integrity": "sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", "dependencies": { - "d3-color": "1 - 2", - "d3-interpolate": "1 - 2" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-selection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", - "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", "dependencies": { - "d3-path": "1 - 2" + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", "dependencies": { - "d3-array": "2" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "d3-time": "1 - 2" + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } }, "node_modules/d3-transition": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", - "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", "dependencies": { - "d3-color": "1 - 2", - "d3-dispatch": "1 - 2", - "d3-ease": "1 - 2", - "d3-interpolate": "1 - 2", - "d3-timer": "1 - 2" + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" }, "peerDependencies": { - "d3-selection": "2" + "d3-selection": "2 - 3" } }, "node_modules/d3-zoom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", - "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" } }, "node_modules/dagre-d3-es": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.6.tgz", - "integrity": "sha512-CaaE/nZh205ix+Up4xsnlGmpog5GGm81Upi2+/SBHxwNwrccBb3K51LzjZ1U6hgvOlAEUsVWf1xSTzCyKpJ6+Q==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.8.tgz", + "integrity": "sha512-eykdoYQ4FwCJinEYS0gPL2f2w+BPbSLvnQSJ3Ye1vAoPjdkq6xIMKBv+UkICd3qZE26wBKIn3p+6n0QC7R1LyA==", "dependencies": { - "d3": "^7.7.0", + "d3": "^7.8.2", "lodash-es": "^4.17.21" } }, - "node_modules/dagre-d3-es/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, "node_modules/dagre-d3-es/node_modules/d3": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.7.0.tgz", - "integrity": "sha512-VEwHCMgMjD2WBsxeRGUE18RmzxT9Bn7ghDpzvTEvkLSBAKgTMydJjouZTjspgQfRHpPt/PB3EHWBa6SSyFQq4g==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.2.tgz", + "integrity": "sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -4564,451 +4736,428 @@ "node": ">=12" } }, - "node_modules/dagre-d3-es/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, + "node_modules/dagre-d3-es/node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "engines": { "node": ">=12" } }, - "node_modules/dagre-d3-es/node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" - } + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true }, - "node_modules/dagre-d3-es/node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" + "assert-plus": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">=0.10" } }, - "node_modules/dagre-d3-es/node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "node_modules/dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "d3-path": "1 - 3" + "ms": "2.1.2" }, "engines": { - "node": ">=12" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/dagre-d3-es/node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-contour": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz", - "integrity": "sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==", + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, "dependencies": { - "d3-array": "^3.2.0" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/dagre-d3-es/node_modules/d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "dependencies": { - "delaunator": "5" + "node": ">=0.10.0" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dagre-d3-es/node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "node_modules/deep-equal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dagre-d3-es/node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dagre-d3-es/node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, "dependencies": { - "d3-dsv": "1 - 3" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dagre-d3-es/node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" }, "engines": { - "node": ">=12" - } - }, - "node_modules/dagre-d3-es/node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/dagre-d3-es/node_modules/d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, "dependencies": { - "d3-array": "2.5.0 - 3" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" + "robust-predicates": "^3.0.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "engines": { - "node": ">=12" - } + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true }, - "node_modules/dagre-d3-es/node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/dagre-d3-es/node_modules/d3-random": { + "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/dagre-d3-es/node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "path-type": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/dagre-d3-es/node_modules/d3-scale-chromatic": { + "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" + "esutils": "^2.0.2" }, "engines": { - "node": ">=12" + "node": ">=6.0.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } + "node_modules/dompurify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", + "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==" }, - "node_modules/dagre-d3-es/node_modules/d3-shape": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, "dependencies": { - "d3-array": "2 - 3" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/dagre-d3-es/node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "node_modules/electron-to-chromium": { + "version": "1.4.315", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.315.tgz", + "integrity": "sha512-ndBQYz3Eyy3rASjjQ9poMJGoAlsZ/aZnq6GBsGL4w/4sWIAwiUHVSsMuADbxa8WJw7pZ0oxLpGbtoDt4vRTdCg==" + }, + "node_modules/elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/emojione": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/emojione/-/emojione-4.5.0.tgz", + "integrity": "sha512-Tq55Y3UgPOnayFDN+Qd6QMP0rpoH10a1nhSFN27s8gXW3qymgFIHiXys2ECYYAI134BafmI3qP9ni2rZOe9BjA==" + }, + "node_modules/emojionearea": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/emojionearea/-/emojionearea-3.4.2.tgz", + "integrity": "sha512-u0i5hD/VqIE2PgmreT6Q2uKQkf9p8jbp2em23xB9llxHnsPxyu1RzzUwbZ/rLGfHpxvhUwYjGa9EYsuN3J+jLQ==", "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" + "emojione": ">=2.0.1", + "jquery": ">=1.8.3", + "jquery-textcomplete": ">=1.3.4" } }, - "node_modules/dagre-d3-es/node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, "engines": { - "node": ">=12" + "node": ">= 4" } }, - "node_modules/dagre-d3-es/node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/dagre-d3-es/node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dagre-d3-es/node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "dependencies": { - "robust-predicates": "^3.0.0" + "iconv-lite": "^0.6.2" } }, - "node_modules/dagre-d3-es/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "once": "^1.4.0" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, + "node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dependencies": { - "assert-plus": "^1.0.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=0.10" + "node": ">=10.13.0" } }, - "node_modules/dayjs": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", - "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dependencies": { - "ms": "2.1.2" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=8.6" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "bin": { + "envinfo": "dist/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "node_modules/es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", "dev": true, "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" }, "engines": { "node": ">= 0.4" @@ -5017,319 +5166,69 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dev": true, "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "dev": true, "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "node_modules/delayed-stream": { + "node_modules/es-shim-unscopables": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, - "engines": { - "node": ">=0.4.0" + "dependencies": { + "has": "^1.0.3" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dependencies": { - "path-type": "^4.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dompurify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.1.tgz", - "integrity": "sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA==" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/emojione": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/emojione/-/emojione-4.5.0.tgz", - "integrity": "sha512-Tq55Y3UgPOnayFDN+Qd6QMP0rpoH10a1nhSFN27s8gXW3qymgFIHiXys2ECYYAI134BafmI3qP9ni2rZOe9BjA==" - }, - "node_modules/emojionearea": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/emojionearea/-/emojionearea-3.4.2.tgz", - "integrity": "sha512-u0i5hD/VqIE2PgmreT6Q2uKQkf9p8jbp2em23xB9llxHnsPxyu1RzzUwbZ/rLGfHpxvhUwYjGa9EYsuN3J+jLQ==", - "dependencies": { - "emojione": ">=2.0.1", - "jquery": ">=1.8.3", - "jquery-textcomplete": ">=1.3.4" - } - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/escalade": { @@ -5444,9 +5343,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", + "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -5456,13 +5355,14 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -5512,23 +5412,25 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", "tsconfig-paths": "^3.14.1" }, "engines": { @@ -5539,12 +5441,12 @@ } }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -5559,30 +5461,27 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", "semver": "^6.3.0" }, "engines": { @@ -5614,26 +5513,27 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.31.10", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", - "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dev": true, "peer": true, "dependencies": { - "array-includes": "^3.1.5", - "array.prototype.flatmap": "^1.3.0", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.1", - "object.values": "^1.1.5", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", + "resolve": "^2.0.0-next.4", "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.7" + "string.prototype.matchall": "^4.0.8" }, "engines": { "node": ">=4" @@ -5853,9 +5753,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -5874,6 +5774,17 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -5910,6 +5821,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -5936,9 +5852,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", "dependencies": { "estraverse": "^5.1.0" }, @@ -6134,9 +6050,9 @@ } }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dependencies": { "reusify": "^1.0.4" } @@ -6233,9 +6149,9 @@ } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -6324,6 +6240,15 @@ "jquery": ">=1.4.4" } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -6481,9 +6406,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "dependencies": { "function-bind": "^1.1.1", @@ -6623,9 +6548,9 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, "dependencies": { "ini": "2.0.0" @@ -6645,10 +6570,25 @@ "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.2.11", @@ -6664,9 +6604,9 @@ } }, "node_modules/globby/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "engines": { "node": ">= 4" } @@ -6717,6 +6657,18 @@ "node": "*" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -6814,6 +6766,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -6847,6 +6811,11 @@ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -6859,10 +6828,28 @@ "node": ">=10" } }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/htmx.org": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-1.8.4.tgz", - "integrity": "sha512-T+1Z9RAZpJ1Ia6cvpV67lstvJ5UQkNpUAulpyfxUCHYbzYcaUVQC/PrcIdPNRU9e1ii6Ec7EEw7GnenavOZB6g==" + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-1.8.5.tgz", + "integrity": "sha512-3U9xraoaqNFCIUcpxD0EmF266ZS7DddTiraD9lqFORnsVnzmddAzi24ilaNyS4I9nhSj8tqiWbOf+ulKrU8bag==" }, "node_modules/http-cache-semantics": { "version": "4.1.1", @@ -6945,11 +6932,11 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -7070,12 +7057,12 @@ } }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.2.0", "has": "^1.0.3", "side-channel": "^1.0.4" }, @@ -7084,9 +7071,12 @@ } }, "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } }, "node_modules/interpret": { "version": "2.2.0", @@ -7103,6 +7093,36 @@ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7237,6 +7257,15 @@ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -7375,6 +7404,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -7429,6 +7467,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -7447,6 +7504,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -7459,10 +7525,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -7608,9 +7688,9 @@ } }, "node_modules/jquery": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz", - "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==" + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz", + "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==" }, "node_modules/jquery-textcomplete": { "version": "1.8.5", @@ -7775,9 +7855,9 @@ } }, "node_modules/katex": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.3.tgz", - "integrity": "sha512-3EykQddareoRmbtNiNEDgl3IGjryyrp2eg/25fHDEnlHymIDi33bptkMv6K4EOC2LZCybLW/ZkEo6Le+EM9pmA==", + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.4.tgz", + "integrity": "sha512-WudRKUj8yyBeVDI4aYMNxhx5Vhh2PjpzQw1GRu/LVGqL4m1AxwD1GcUp0IMbdJaf5zsjtj8ghP0DOQRYhroNkw==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -7812,9 +7892,9 @@ } }, "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, "engines": { "node": ">= 8" @@ -7835,6 +7915,11 @@ "language-subtag-registry": "~0.3.2" } }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + }, "node_modules/lazy-ass": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", @@ -7845,9 +7930,9 @@ } }, "node_modules/leaflet": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.2.tgz", - "integrity": "sha512-Kc77HQvWO+y9y2oIs3dn5h5sy2kr3j41ewdqCMEUA4N89lgfUUfOBy7wnnHEstDpefiGFObq12FdopGRMx4J7g==" + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.3.tgz", + "integrity": "sha512-iB2cR9vAkDOu5l3HAay2obcUHZ7xwUBBjph8+PGtmW/2lYhbLizWtG7nTeYht36WfOslixQF9D/uSIzhZgGMfQ==" }, "node_modules/leven": { "version": "3.1.0", @@ -8066,8 +8151,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash-es": { "version": "4.17.21", @@ -8306,14 +8390,12 @@ } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, "node_modules/magic-string": { @@ -8367,6 +8449,24 @@ "node": ">= 10" } }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -8398,9 +8498,9 @@ } }, "node_modules/markmap-lib": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/markmap-lib/-/markmap-lib-0.14.3.tgz", - "integrity": "sha512-nvHpeBp3nlQvCgNETHwASYLqo4GGjl3JF04+Aq3i0+8ni0mKDqongrEslU1cI0SuELOjGphTXiLt6ugcObhE/A==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/markmap-lib/-/markmap-lib-0.14.4.tgz", + "integrity": "sha512-tyXhpER0XdQe/sxWOjMVshbPcfrcNnV5MzdjxVGUUovep1jxFuuBWS5Cp7z41pzUpW1+56Mxb7Vgp4Psme3sSw==", "dependencies": { "@babel/runtime": "^7.18.9", "js-yaml": "^4.1.0", @@ -8416,10 +8516,13 @@ "markmap-common": "*" } }, - "node_modules/markmap-lib/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "node_modules/markmap-lib/node_modules/autolinker": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", + "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", + "dependencies": { + "tslib": "^2.3.0" + } }, "node_modules/markmap-lib/node_modules/js-yaml": { "version": "4.1.0", @@ -8432,10 +8535,30 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/markmap-lib/node_modules/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/markmap-lib/node_modules/remarkable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", + "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", + "dependencies": { + "argparse": "^1.0.10", + "autolinker": "^3.11.0" + }, + "bin": { + "remarkable": "bin/remarkable.js" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/markmap-view": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.14.3.tgz", - "integrity": "sha512-8w96PQv5O4+XAKhdHWnZvl16PvOn1UdvBRWdhkwYjH2DXuWp1cmXqF4ushgEp4Ec/GxhZlTcQN4+0hyFxgIK+w==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.14.4.tgz", + "integrity": "sha512-SHG5FmqIjGiWjAn4FJ7FgzbPN9c0XPYEFu/RV7c3ZyWuKNL1YZRbwROjkElN5UXaMDhjlieoxnWJIDKp3vPRAA==", "dependencies": { "@babel/runtime": "^7.12.5", "@types/d3": "^6.0.0", @@ -8449,40 +8572,315 @@ "markmap-common": "*" } }, - "node_modules/markmap/node_modules/autolinker": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", - "integrity": "sha512-zQAFO1Dlsn69eXaO6+7YZc+v84aquQKbwpzCE3L0stj56ERn9hutFxPopViLjo9G+rWwjozRhgS5KJ25Xy19cQ==", + "node_modules/markmap-view/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/markmap-view/node_modules/d3": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-6.7.0.tgz", + "integrity": "sha512-hNHRhe+yCDLUG6Q2LwvR/WdNFPOJQ5VWqsJcwIYVeI401+d2/rrCjxSXkiAdIlpx7/73eApFB4Olsmh3YN7a6g==", "dependencies": { - "gulp-header": "^1.7.1" + "d3-array": "2", + "d3-axis": "2", + "d3-brush": "2", + "d3-chord": "2", + "d3-color": "2", + "d3-contour": "2", + "d3-delaunay": "5", + "d3-dispatch": "2", + "d3-drag": "2", + "d3-dsv": "2", + "d3-ease": "2", + "d3-fetch": "2", + "d3-force": "2", + "d3-format": "2", + "d3-geo": "2", + "d3-hierarchy": "2", + "d3-interpolate": "2", + "d3-path": "2", + "d3-polygon": "2", + "d3-quadtree": "2", + "d3-random": "2", + "d3-scale": "3", + "d3-scale-chromatic": "2", + "d3-selection": "2", + "d3-shape": "2", + "d3-time": "2", + "d3-time-format": "3", + "d3-timer": "2", + "d3-transition": "2", + "d3-zoom": "2" } }, - "node_modules/markmap/node_modules/d3": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.6.tgz", - "integrity": "sha512-i1x8Q3lGerBazuvWsImnUKrjfCdBnRnk8aq7hqOK/5+CAWJTt/zr9CaR1mlJf17oH8l/v4mOaDLU+F/l2dq1Vg==" - }, - "node_modules/markmap/node_modules/remarkable": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz", - "integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==", + "node_modules/markmap-view/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", "dependencies": { - "argparse": "^1.0.10", - "autolinker": "~0.28.0" - }, - "bin": { - "remarkable": "bin/remarkable.js" - }, - "engines": { - "node": ">= 0.10.0" + "internmap": "^1.0.0" } }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { + "node_modules/markmap-view/node_modules/d3-axis": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-2.1.0.tgz", + "integrity": "sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw==" + }, + "node_modules/markmap-view/node_modules/d3-brush": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-2.1.0.tgz", + "integrity": "sha512-cHLLAFatBATyIKqZOkk/mDHUbzne2B3ZwxkzMHvFTCZCmLaXDpZRihQSn8UNXTkGD/3lb/W2sQz0etAftmHMJQ==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-drag": "2", + "d3-interpolate": "1 - 2", + "d3-selection": "2", + "d3-transition": "2" + } + }, + "node_modules/markmap-view/node_modules/d3-chord": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-2.0.0.tgz", + "integrity": "sha512-D5PZb7EDsRNdGU4SsjQyKhja8Zgu+SHZfUSO5Ls8Wsn+jsAKUUGkcshLxMg9HDFxG3KqavGWaWkJ8EpU8ojuig==", + "dependencies": { + "d3-path": "1 - 2" + } + }, + "node_modules/markmap-view/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/markmap-view/node_modules/d3-contour": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-2.0.0.tgz", + "integrity": "sha512-9unAtvIaNk06UwqBmvsdHX7CZ+NPDZnn8TtNH1myW93pWJkhsV25JcgnYAu0Ck5Veb1DHiCv++Ic5uvJ+h50JA==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/markmap-view/node_modules/d3-delaunay": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", + "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "dependencies": { + "delaunator": "4" + } + }, + "node_modules/markmap-view/node_modules/d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "node_modules/markmap-view/node_modules/d3-drag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", + "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-selection": "2" + } + }, + "node_modules/markmap-view/node_modules/d3-dsv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", + "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "dependencies": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json", + "csv2tsv": "bin/dsv2dsv", + "dsv2dsv": "bin/dsv2dsv", + "dsv2json": "bin/dsv2json", + "json2csv": "bin/json2dsv", + "json2dsv": "bin/json2dsv", + "json2tsv": "bin/json2dsv", + "tsv2csv": "bin/dsv2dsv", + "tsv2json": "bin/dsv2json" + } + }, + "node_modules/markmap-view/node_modules/d3-ease": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", + "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" + }, + "node_modules/markmap-view/node_modules/d3-fetch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-2.0.0.tgz", + "integrity": "sha512-TkYv/hjXgCryBeNKiclrwqZH7Nb+GaOwo3Neg24ZVWA3MKB+Rd+BY84Nh6tmNEMcjUik1CSUWjXYndmeO6F7sw==", + "dependencies": { + "d3-dsv": "1 - 2" + } + }, + "node_modules/markmap-view/node_modules/d3-force": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", + "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-quadtree": "1 - 2", + "d3-timer": "1 - 2" + } + }, + "node_modules/markmap-view/node_modules/d3-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", + "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + }, + "node_modules/markmap-view/node_modules/d3-geo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", + "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "dependencies": { + "d3-array": "^2.5.0" + } + }, + "node_modules/markmap-view/node_modules/d3-hierarchy": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", + "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" + }, + "node_modules/markmap-view/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/markmap-view/node_modules/d3-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", + "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" + }, + "node_modules/markmap-view/node_modules/d3-polygon": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-2.0.0.tgz", + "integrity": "sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ==" + }, + "node_modules/markmap-view/node_modules/d3-quadtree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", + "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + }, + "node_modules/markmap-view/node_modules/d3-random": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-2.2.2.tgz", + "integrity": "sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw==" + }, + "node_modules/markmap-view/node_modules/d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "node_modules/markmap-view/node_modules/d3-scale-chromatic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz", + "integrity": "sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA==", + "dependencies": { + "d3-color": "1 - 2", + "d3-interpolate": "1 - 2" + } + }, + "node_modules/markmap-view/node_modules/d3-selection": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", + "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" + }, + "node_modules/markmap-view/node_modules/d3-shape": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", + "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "dependencies": { + "d3-path": "1 - 2" + } + }, + "node_modules/markmap-view/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/markmap-view/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/markmap-view/node_modules/d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + }, + "node_modules/markmap-view/node_modules/d3-transition": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", + "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", + "dependencies": { + "d3-color": "1 - 2", + "d3-dispatch": "1 - 2", + "d3-ease": "1 - 2", + "d3-interpolate": "1 - 2", + "d3-timer": "1 - 2" + }, + "peerDependencies": { + "d3-selection": "2" + } + }, + "node_modules/markmap-view/node_modules/d3-zoom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", + "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-drag": "2", + "d3-interpolate": "1 - 2", + "d3-selection": "2", + "d3-transition": "2" + } + }, + "node_modules/markmap-view/node_modules/delaunator": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", + "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" + }, + "node_modules/markmap-view/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markmap-view/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", "decamelize": "^1.2.0", @@ -8529,34 +8927,31 @@ } }, "node_modules/mermaid": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.3.0.tgz", - "integrity": "sha512-mGl0BM19TD/HbU/LmlaZbjBi//tojelg8P/mxD6pPZTAYaI+VawcyBdqRsoUHSc7j71PrMdJ3HBadoQNdvP5cg==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.4.0.tgz", + "integrity": "sha512-4PWbOND7CNRbjHrdG3WUUGBreKAFVnMhdlPjttuUkeHbCQmAHkwzSh5dGwbrKmXGRaR4uTvfFVYzUcg++h0DkA==", "dependencies": { "@braintree/sanitize-url": "^6.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", "d3": "^7.0.0", - "dagre-d3-es": "7.0.6", - "dompurify": "2.4.1", + "dagre-d3-es": "7.0.8", + "dompurify": "2.4.3", + "elkjs": "^0.8.2", "khroma": "^2.0.0", "lodash-es": "^4.17.21", - "moment-mini": "^2.24.0", + "moment": "^2.29.4", "non-layered-tidy-tree-layout": "^2.0.2", "stylis": "^4.1.2", + "ts-dedent": "^2.2.0", "uuid": "^9.0.0" } }, - "node_modules/mermaid/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, "node_modules/mermaid/node_modules/d3": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.7.0.tgz", - "integrity": "sha512-VEwHCMgMjD2WBsxeRGUE18RmzxT9Bn7ghDpzvTEvkLSBAKgTMydJjouZTjspgQfRHpPt/PB3EHWBa6SSyFQq4g==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.2.tgz", + "integrity": "sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -8593,12681 +8988,1485 @@ "node": ">=12" } }, - "node_modules/mermaid/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, + "node_modules/mermaid/node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "engines": { "node": ">=12" } }, - "node_modules/mermaid/node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" + "node_modules/mermaid/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/mermaid/node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dependencies": { - "d3-path": "1 - 3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=12" + "node": ">=8.6" } }, - "node_modules/mermaid/node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/mermaid/node_modules/d3-contour": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz", - "integrity": "sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "d3-array": "^3.2.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/mermaid/node_modules/d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "dependencies": { - "delaunator": "5" - }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/mermaid/node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/mermaid/node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/mermaid/node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" }, "engines": { - "node": ">=12" + "node": ">= 6" } }, - "node_modules/mermaid/node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "node_modules/minimist-options/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/mermaid/node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, "dependencies": { - "d3-dsv": "1 - 3" + "yallist": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/mermaid/node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" + "minipass": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/mermaid/node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" } }, - "node_modules/mermaid/node_modules/d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, "dependencies": { - "d3-array": "2.5.0 - 3" + "minipass": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/mermaid/node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/mermaid/node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, "dependencies": { - "d3-color": "1 - 3" + "minipass": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/mermaid/node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "engines": { - "node": ">=12" - } + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/mermaid/node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/mermaid/node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" - } + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/mermaid/node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/mermaid/node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/mermaid/node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/mermaid/node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true }, - "node_modules/mermaid/node_modules/d3-shape": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", - "dependencies": { - "d3-path": "1 - 3" + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=12" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/mermaid/node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, - "node_modules/mermaid/node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/mermaid/node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "node_modules/mermaid/node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=12" + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/mermaid/node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" + "encoding": "^0.1.0" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mermaid/node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "dependencies": { - "robust-predicates": "^3.0.0" + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/mermaid/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mermaid/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" + "node": ">= 10.12.0" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, "dependencies": { - "mime-db": "1.52.0" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">= 0.6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" }, "engines": { - "node": "*" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "node_modules/node-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/node-gyp/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/minimist-options/node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/node-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "node_modules/node-sass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.3.tgz", + "integrity": "sha512-8MIlsY/4dXUkJDYht9pIWBhMil3uHmE8b/AdJPjmFn1nBx9X9BASzfzmsCy0uCCb8eqI3SYYzVPDswWqSx7gjw==", "dev": true, + "hasInstallScript": true, "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "meow": "^9.0.0", + "nan": "^2.13.2", + "node-gyp": "^8.4.1", + "npmlog": "^5.0.0", + "request": "^2.88.0", + "sass-graph": "^4.0.1", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" + "bin": { + "node-sass": "bin/node-sass" }, "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/node-sass/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/node-sass/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" - } - }, - "node_modules/moment-mini": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.29.4.tgz", - "integrity": "sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "node_modules/node-sass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.3.tgz", - "integrity": "sha512-8MIlsY/4dXUkJDYht9pIWBhMil3uHmE8b/AdJPjmFn1nBx9X9BASzfzmsCy0uCCb8eqI3SYYzVPDswWqSx7gjw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "async-foreach": "^0.1.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "lodash": "^4.17.15", - "meow": "^9.0.0", - "nan": "^2.13.2", - "node-gyp": "^8.4.1", - "npmlog": "^5.0.0", - "request": "^2.88.0", - "sass-graph": "^4.0.1", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "bin": { - "node-sass": "bin/node-sass" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/node-sass/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/node-sass/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/node-sass/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/node-sass/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { "color-name": "~1.1.4" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/node-sass/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/node-sass/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-sass/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/non-layered-tidy-tree-layout": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", - "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", - "dev": true, - "peer": true, - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "dependencies": { - "semver-compare": "^1.0.0" - } - }, - "node_modules/po2json": { - "version": "1.0.0-beta-3", - "resolved": "https://registry.npmjs.org/po2json/-/po2json-1.0.0-beta-3.tgz", - "integrity": "sha512-taS8y6ZEGzPAs0rygW9CuUPY8C3Zgx6cBy31QXxG2JlWS3fLxj/kuD3cbIfXBg30PuYN7J5oyBa/TIRjyqFFtg==", - "dependencies": { - "commander": "^6.0.0", - "gettext-parser": "2.0.0", - "gettext-to-messageformat": "0.3.1" - }, - "bin": { - "po2json": "bin/po2json" - }, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "commander": "^6.0.0", - "gettext-parser": "2.0.0", - "gettext-to-messageformat": "0.3.1" - } - }, - "node_modules/po2json/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ractive": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/ractive/-/ractive-0.8.14.tgz", - "integrity": "sha512-oEYRyM2VbHL1bcymhLFXb8SK8htd4MPfgWdqJADaUTy3+0K4/5PfEw8szj6rWe2N2asJ1jNNdYqkvIWca1M9dg==" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "peer": true - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/remarkable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", - "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", - "dependencies": { - "argparse": "^1.0.10", - "autolinker": "^3.11.0" - }, - "bin": { - "remarkable": "bin/remarkable.js" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/remarkable-katex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/remarkable-katex/-/remarkable-katex-1.2.1.tgz", - "integrity": "sha512-Y1VquJBZnaVsfsVcKW2hmjT+pDL7mp8l5WAVlvuvViltrdok2m1AIKmJv8SsH+mBY84PoMw67t3kTWw1dIm8+g==" - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, - "dependencies": { - "throttleit": "^1.0.0" - } - }, - "node_modules/request/node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/request/node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sass-graph": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", - "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "lodash": "^4.17.11", - "scss-tokenizer": "^0.4.3", - "yargs": "^17.2.1" - }, - "bin": { - "sassgraph": "bin/sassgraph" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/scss-tokenizer": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", - "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", - "dev": true, - "dependencies": { - "js-base64": "^2.4.9", - "source-map": "^0.7.3" - } - }, - "node_modules/scss-tokenizer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/stdout-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/stdout-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/stdout-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true, - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-mod": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", - "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==" - }, - "node_modules/stylis": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", - "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/table/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/table/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "node_modules/throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/timeago.js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz", - "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/tmp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/topojson-client": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", - "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", - "dependencies": { - "commander": "2" - }, - "bin": { - "topo2geo": "bin/topo2geo", - "topomerge": "bin/topomerge", - "topoquantize": "bin/topoquantize" - } - }, - "node_modules/topojson-client/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "dev": true, - "dependencies": { - "glob": "^7.1.2" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vcards-js": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/vcards-js/-/vcards-js-2.10.0.tgz", - "integrity": "sha512-nah+xbVInVJaO6+C5PEUqaougmv8BN8aa7ZCtmVQcX6eWIZGRukckFtseXSI7KD7/nXtwkJe624y42T0r+L+AQ==" - }, - "node_modules/vega": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", - "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", - "dependencies": { - "vega-crossfilter": "~4.1.0", - "vega-dataflow": "~5.7.4", - "vega-encode": "~4.9.0", - "vega-event-selector": "~3.0.0", - "vega-expression": "~5.0.0", - "vega-force": "~4.1.0", - "vega-format": "~1.1.0", - "vega-functions": "~5.13.0", - "vega-geo": "~4.4.0", - "vega-hierarchy": "~4.1.0", - "vega-label": "~1.2.0", - "vega-loader": "~4.5.0", - "vega-parser": "~6.1.4", - "vega-projection": "~1.5.0", - "vega-regression": "~1.1.0", - "vega-runtime": "~6.1.3", - "vega-scale": "~7.2.0", - "vega-scenegraph": "~4.10.1", - "vega-statistics": "~1.8.0", - "vega-time": "~2.1.0", - "vega-transforms": "~4.10.0", - "vega-typings": "~0.22.0", - "vega-util": "~1.17.0", - "vega-view": "~5.11.0", - "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.2.0", - "vega-wordcloud": "~4.1.3" - } - }, - "node_modules/vega-canvas": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/vega-canvas/-/vega-canvas-1.2.6.tgz", - "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" - }, - "node_modules/vega-crossfilter": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", - "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", - "dependencies": { - "d3-array": "^3.1.1", - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-crossfilter/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-dataflow": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/vega-dataflow/-/vega-dataflow-5.7.4.tgz", - "integrity": "sha512-JGHTpUo8XGETH3b1V892we6hdjzCWB977ybycIu8DPqRoyrZuj6t1fCVImazfMgQD1LAfJlQybWP+alwKDpKig==", - "dependencies": { - "vega-format": "^1.0.4", - "vega-loader": "^4.3.2", - "vega-util": "^1.16.1" - } - }, - "node_modules/vega-embed": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/vega-embed/-/vega-embed-6.21.0.tgz", - "integrity": "sha512-Tzo9VAfgNRb6XpxSFd7uphSeK2w5OxDY2wDtmpsQ+rQlPSEEI9TE6Jsb2nHRLD5J4FrmXKLrTcORqidsNQSXEg==", - "bundleDependencies": [ - "yallist" - ], - "dependencies": { - "fast-json-patch": "^3.1.1", - "json-stringify-pretty-compact": "^3.0.0", - "semver": "^7.3.7", - "tslib": "^2.4.0", - "vega-interpreter": "^1.0.4", - "vega-schema-url-parser": "^2.2.0", - "vega-themes": "^2.10.0", - "vega-tooltip": "^0.28.0", - "yallist": "*" - }, - "peerDependencies": { - "vega": "^5.21.0", - "vega-lite": "*" - } - }, - "node_modules/vega-embed/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vega-embed/node_modules/yallist": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/vega-encode": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", - "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", - "dependencies": { - "d3-array": "^3.1.1", - "d3-interpolate": "^3.0.1", - "vega-dataflow": "^5.7.3", - "vega-scale": "^7.0.3", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-encode/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-encode/node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" - }, - "node_modules/vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "dependencies": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-expression/node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "node_modules/vega-force": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", - "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", - "dependencies": { - "d3-force": "^3.0.0", - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-force/node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-format": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", - "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", - "dependencies": { - "d3-array": "^3.1.1", - "d3-format": "^3.1.0", - "d3-time-format": "^4.1.0", - "vega-time": "^2.0.3", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-format/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-format/node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-format/node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-functions": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", - "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", - "dependencies": { - "d3-array": "^3.1.1", - "d3-color": "^3.0.1", - "d3-geo": "^3.0.1", - "vega-dataflow": "^5.7.3", - "vega-expression": "^5.0.0", - "vega-scale": "^7.2.0", - "vega-scenegraph": "^4.9.3", - "vega-selections": "^5.3.1", - "vega-statistics": "^1.7.9", - "vega-time": "^2.1.0", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-functions/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-functions/node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-functions/node_modules/d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-geo": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", - "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", - "dependencies": { - "d3-array": "^3.1.1", - "d3-color": "^3.0.1", - "d3-geo": "^3.0.1", - "vega-canvas": "^1.2.5", - "vega-dataflow": "^5.7.3", - "vega-projection": "^1.4.5", - "vega-statistics": "^1.7.9", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-geo/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-geo/node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-geo/node_modules/d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-hierarchy": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", - "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", - "dependencies": { - "d3-hierarchy": "^3.1.0", - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-hierarchy/node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-interpreter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-interpreter/-/vega-interpreter-1.0.4.tgz", - "integrity": "sha512-6tpYIa/pJz0cZo5fSxDSkZkAA51pID2LjOtQkOQvbzn+sJiCaWKPFhur8MBqbcmYZ9bnap1OYNwlrvpd2qBLvg==" - }, - "node_modules/vega-label": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", - "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", - "dependencies": { - "vega-canvas": "^1.2.6", - "vega-dataflow": "^5.7.3", - "vega-scenegraph": "^4.9.2", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-lite": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-5.6.0.tgz", - "integrity": "sha512-aTjQk//SzL9ctHY4ItA8yZSGflHMWPJmCXEs8LeRlixuOaAbamZmeL8xNMbQpS/vAZQeFAqjcJ32Fuztz/oGww==", - "dependencies": { - "@types/clone": "~2.1.1", - "clone": "~2.1.2", - "fast-deep-equal": "~3.1.3", - "fast-json-stable-stringify": "~2.1.0", - "json-stringify-pretty-compact": "~3.0.0", - "tslib": "~2.4.0", - "vega-event-selector": "~3.0.0", - "vega-expression": "~5.0.0", - "vega-util": "~1.17.0", - "yargs": "~17.6.0" - }, - "bin": { - "vl2pdf": "bin/vl2pdf", - "vl2png": "bin/vl2png", - "vl2svg": "bin/vl2svg", - "vl2vg": "bin/vl2vg" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "vega": "^5.22.0" - } - }, - "node_modules/vega-loader": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", - "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", - "dependencies": { - "d3-dsv": "^3.0.1", - "node-fetch": "^2.6.7", - "topojson-client": "^3.1.0", - "vega-format": "^1.1.0", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-loader/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/vega-loader/node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-loader/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vega-parser": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.1.4.tgz", - "integrity": "sha512-tORdpWXiH/kkXcpNdbSVEvtaxBuuDtgYp9rBunVW9oLsjFvFXbSWlM1wvJ9ZFSaTfx6CqyTyGMiJemmr1QnTjQ==", - "dependencies": { - "vega-dataflow": "^5.7.3", - "vega-event-selector": "^3.0.0", - "vega-functions": "^5.12.1", - "vega-scale": "^7.1.1", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-projection": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", - "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", - "dependencies": { - "d3-geo": "^3.0.1", - "d3-geo-projection": "^4.0.0" - } - }, - "node_modules/vega-projection/node_modules/d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-regression": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", - "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", - "dependencies": { - "d3-array": "^3.1.1", - "vega-dataflow": "^5.7.3", - "vega-statistics": "^1.7.9", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-regression/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-runtime": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/vega-runtime/-/vega-runtime-6.1.3.tgz", - "integrity": "sha512-gE+sO2IfxMUpV0RkFeQVnHdmPy3K7LjHakISZgUGsDI/ZFs9y+HhBf8KTGSL5pcZPtQsZh3GBQ0UonqL1mp9PA==", - "dependencies": { - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-scale": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", - "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", - "dependencies": { - "d3-array": "^3.1.1", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "vega-time": "^2.1.0", - "vega-util": "^1.17.0" - } - }, - "node_modules/vega-scale/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-scale/node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-scale/node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-scenegraph": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", - "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", - "dependencies": { - "d3-path": "^3.0.1", - "d3-shape": "^3.1.0", - "vega-canvas": "^1.2.5", - "vega-loader": "^4.4.0", - "vega-scale": "^7.2.0", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-scenegraph/node_modules/d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-scenegraph/node_modules/d3-shape": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-schema-url-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vega-schema-url-parser/-/vega-schema-url-parser-2.2.0.tgz", - "integrity": "sha512-yAtdBnfYOhECv9YC70H2gEiqfIbVkq09aaE4y/9V/ovEFmH9gPKaEgzIZqgT7PSPQjKhsNkb6jk6XvSoboxOBw==" - }, - "node_modules/vega-selections": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.4.0.tgz", - "integrity": "sha512-Un3JdLDPjIpF9Dh4sw6m1c/QAcfam6m1YXHJ9vJxE/GdJ+sOrPxc7bcEU8VhOmTUN7IQUn4/1ry4JqqOVMbEhw==", - "dependencies": { - "d3-array": "3.1.1", - "vega-expression": "^5.0.0", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-selections/node_modules/d3-array": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", - "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-statistics": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", - "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", - "dependencies": { - "d3-array": "^3.1.1" - } - }, - "node_modules/vega-statistics/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-themes": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.12.0.tgz", - "integrity": "sha512-gHNYCzDgexSQDmGzQsxH57OYgFVbAOmvhIYN3MPOvVucyI+zhbUawBVIVNzG9ftucRp0MaaMVXi6ctC5HLnBsg==", - "peerDependencies": { - "vega": "*", - "vega-lite": "*" - } - }, - "node_modules/vega-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", - "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", - "dependencies": { - "d3-array": "^3.1.1", - "d3-time": "^3.0.0", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-time/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-time/node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-tooltip": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/vega-tooltip/-/vega-tooltip-0.28.0.tgz", - "integrity": "sha512-DbK0V5zzk+p9cphZZXV91ZGeKq0zr6JIS0VndUoGTisldzw4tRgmpGQcTfMjew53o7/voeTM2ELTnJAJRzX4tg==", - "dependencies": { - "vega-util": "^1.17.0" - } - }, - "node_modules/vega-transforms": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", - "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", - "dependencies": { - "d3-array": "^3.1.1", - "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.8.0", - "vega-time": "^2.1.0", - "vega-util": "^1.16.1" - } - }, - "node_modules/vega-transforms/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-typings": { - "version": "0.22.3", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", - "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", - "dependencies": { - "vega-event-selector": "^3.0.0", - "vega-expression": "^5.0.0", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-util": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", - "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" - }, - "node_modules/vega-view": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", - "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", - "dependencies": { - "d3-array": "^3.1.1", - "d3-timer": "^3.0.1", - "vega-dataflow": "^5.7.3", - "vega-format": "^1.1.0", - "vega-functions": "^5.13.0", - "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.10.0", - "vega-util": "^1.16.1" - } - }, - "node_modules/vega-view-transforms": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/vega-view-transforms/-/vega-view-transforms-4.5.8.tgz", - "integrity": "sha512-966m7zbzvItBL8rwmF2nKG14rBp7q+3sLCKWeMSUrxoG+M15Smg5gWEGgwTG3A/RwzrZ7rDX5M1sRaAngRH25g==", - "dependencies": { - "vega-dataflow": "^5.7.3", - "vega-scenegraph": "^4.9.2", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-view/node_modules/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-view/node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-voronoi": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", - "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", - "dependencies": { - "d3-delaunay": "^6.0.2", - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-voronoi/node_modules/d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vega-voronoi/node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "dependencies": { - "robust-predicates": "^3.0.0" - } - }, - "node_modules/vega-wordcloud": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vega-wordcloud/-/vega-wordcloud-4.1.3.tgz", - "integrity": "sha512-is4zYn9FMAyp9T4SAcz2P/U/wqc0Lx3P5YtpWKCbOH02a05vHjUQrQ2TTPOuvmMfAEDCSKvbMSQIJMOE018lJA==", - "dependencies": { - "vega-canvas": "^1.2.5", - "vega-dataflow": "^5.7.3", - "vega-scale": "^7.1.1", - "vega-statistics": "^1.7.9", - "vega-util": "^1.15.2" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vue": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", - "dependencies": { - "@vue/compiler-sfc": "2.7.14", - "csstype": "^3.1.0" - } - }, - "node_modules/vue-script2": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vue-script2/-/vue-script2-2.1.0.tgz", - "integrity": "sha512-EDUOjQBFvhkJXwmWuUR9ijlF7/4JtmvjXSKaHSa/LNTMy9ltjgKgYB68aqlxgq8ORdSxowd5eo24P1syjZJnBA==" - }, - "node_modules/w3c-keyname": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", - "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==" - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/webpack": { - "version": "5.75.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", - "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-manifest-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-5.0.0.tgz", - "integrity": "sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw==", - "dependencies": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "webpack": "^5.47.0" - } - }, - "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workbox-background-sync": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", - "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", - "dev": true, - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-broadcast-update": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", - "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-build": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", - "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", - "dev": true, - "dependencies": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.5.4", - "workbox-broadcast-update": "6.5.4", - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-google-analytics": "6.5.4", - "workbox-navigation-preload": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-range-requests": "6.5.4", - "workbox-recipes": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4", - "workbox-streams": "6.5.4", - "workbox-sw": "6.5.4", - "workbox-window": "6.5.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "dev": true, - "dependencies": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/workbox-build/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/workbox-build/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/workbox-build/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/workbox-cacheable-response": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", - "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-core": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", - "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==", - "dev": true - }, - "node_modules/workbox-expiration": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", - "dev": true, - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-google-analytics": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", - "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", - "dev": true, - "dependencies": { - "workbox-background-sync": "6.5.4", - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "node_modules/workbox-navigation-preload": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", - "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-precaching": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "node_modules/workbox-range-requests": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", - "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-recipes": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", - "dev": true, - "dependencies": { - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "node_modules/workbox-routing": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-strategies": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-streams": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4" - } - }, - "node_modules/workbox-sw": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", - "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==", - "dev": true - }, - "node_modules/workbox-webpack-plugin": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", - "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.5.4" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.9.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/workbox-window": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", - "dev": true, - "dependencies": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.4" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "dev": true - }, - "@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - } - }, - "@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", - "requires": { - "regenerator-runtime": "^0.13.10" - } - }, - "@babel/runtime-corejs3": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz", - "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==", - "dev": true, - "requires": { - "core-js-pure": "^3.25.1", - "regenerator-runtime": "^0.13.10" - } - }, - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - }, - "@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@braintree/sanitize-url": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz", - "integrity": "sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==" - }, - "@codemirror/autocomplete": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.3.1.tgz", - "integrity": "sha512-t7oq6gz7fkZsrnGDrtFLfk4l3YivTpq/fqqxtzOAV/YGlr16jQFxIqOpUrjE2Eb914GXOwERfUz+TYOxx4L76w==", - "requires": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.5.0", - "@lezer/common": "^1.0.0" - } - }, - "@codemirror/commands": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.1.2.tgz", - "integrity": "sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg==", - "requires": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0" - } - }, - "@codemirror/lang-css": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.0.1.tgz", - "integrity": "sha512-rlLq1Dt0WJl+2epLQeAsfqIsx3lGu4HStHCJu95nGGuz2P2fNugbU3dQYafr2VRjM4eMC9HviI6jvS98CNtG5w==", - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/css": "^1.0.0" - } - }, - "@codemirror/lang-html": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.1.3.tgz", - "integrity": "sha512-LmtIElopGK6bBfddAyjBitS6hz8nFr/PVUtvqmfomXlHB4m+Op2d5eGk/X9/CSby6Y8NqXXkGa3yDd9lfJ6Qlg==", - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.2.2", - "@lezer/common": "^1.0.0", - "@lezer/html": "^1.0.1" - } - }, - "@codemirror/lang-javascript": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.1.1.tgz", - "integrity": "sha512-F4+kiuC5d5dUSJmff96tJQwpEXs/tX/4bapMRnZWW6bHKK1Fx6MunTzopkCUWRa9bF87GPmb9m7Qtg7Yv8f3uQ==", - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/javascript": "^1.0.0" - } - }, - "@codemirror/lang-markdown": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.0.5.tgz", - "integrity": "sha512-qH0THRYc2M7pIJoAp6jstXZkv8ZMVhNaBm7Bs4+0SLHhHlwX53txFy98AcPwrfq0Sh8Zi6RAuj9j/GyL8E1MKw==", - "requires": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/language": "^6.3.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/markdown": "^1.0.0" - } - }, - "@codemirror/language": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.3.1.tgz", - "integrity": "sha512-MK+G1QKaGfSEUg9YEFaBkMBI6j1ge4VMBPZv9fDYotw7w695c42x5Ba1mmwBkesYnzYFBfte6Hh9TDcKa6xORQ==", - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "@codemirror/lint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.0.0.tgz", - "integrity": "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==", - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "@codemirror/state": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.3.tgz", - "integrity": "sha512-0Rn7vadZ6EgHaKdIOwyhBWLdPDh1JM5USYqXjxwrvpmTKWu4wQ77twgAYEg1MU282XcrnV4ZqFf+00bu6UPCyg==" - }, - "@codemirror/view": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.5.0.tgz", - "integrity": "sha512-dapE7AywjyYoHBHn4n+wCRKFqMEmYZHHlfyoSO+e1P6MK4az1wg9t7mfwbdI9mXuBzmPBX7NmU3Xmq+qmxDOLw==", - "requires": { - "@codemirror/state": "^6.0.0", - "style-mod": "^4.0.0", - "w3c-keyname": "^2.2.4" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true - }, - "@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" - } - }, - "@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - } - } - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@lezer/common": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz", - "integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==" - }, - "@lezer/css": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.0.1.tgz", - "integrity": "sha512-kLGsbzXdp1ntzO2jDwFf+2w76EBlLiD4FKofx7tgkdqeFRoslFiMS2qqbNtAauXw8ihZ4cE5YpxSpfsKXSs5Sg==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/highlight": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.3.tgz", - "integrity": "sha512-3vLKLPThO4td43lYRBygmMY18JN3CPh9w+XS2j8WC30vR4yZeFG4z1iFe4jXE43NtGqe//zHW5q8ENLlHvz9gw==", - "requires": { - "@lezer/common": "^1.0.0" - } - }, - "@lezer/html": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.0.1.tgz", - "integrity": "sha512-sC00zEt3GBh3vVO6QaGX4YZCl41S9dHWN/WGBsDixy9G+sqOC7gsa4cxA/fmRVAiBvhqYkJk+5Ul4oul92CPVw==", - "requires": { - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/javascript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.0.2.tgz", - "integrity": "sha512-IjOVeIRhM8IuafWNnk+UzRz7p4/JSOKBNINLYLsdSGuJS9Ju7vFdc82AlTt0jgtV5D8eBZf4g0vK4d3ttBNz7A==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/lr": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.4.tgz", - "integrity": "sha512-L/52/oMJBFXXx8qBYF4UgktLP2geQ/qn5Fd8+5L/mqlLLCB9+qdKktFAtejd9FdFMaFx6lrP5rmLz4sN3Kplcg==", - "requires": { - "@lezer/common": "^1.0.0" - } - }, - "@lezer/markdown": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.0.2.tgz", - "integrity": "sha512-8CY0OoZ6V5EzPjSPeJ4KLVbtXdLBd8V6sRCooN5kHnO28ytreEGTyrtU/zUwo/XLRzGr/e1g44KlzKi3yWGB5A==", - "requires": { - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - } - }, - "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } - }, - "@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - } - } - }, - "@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", - "dev": true, - "requires": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/clone/-/clone-2.1.1.tgz", - "integrity": "sha512-BZIU34bSYye0j/BFcPraiDZ5ka6MJADjcDVELGf7glr9K+iE8NYVjFslJFVWzskSxkLLyCrSPScE82/UUoBSvg==" - }, - "@types/d3": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-6.7.5.tgz", - "integrity": "sha512-TUZ6zuT/KIvbHSv81kwAiO5gG5aTuoiLGnWR/KxHJ15Idy/xmGUXaaF5zMG+UMIsndcGlSHTmrvwRgdvZlNKaA==", - "requires": { - "@types/d3-array": "^2", - "@types/d3-axis": "^2", - "@types/d3-brush": "^2", - "@types/d3-chord": "^2", - "@types/d3-color": "^2", - "@types/d3-contour": "^2", - "@types/d3-delaunay": "^5", - "@types/d3-dispatch": "^2", - "@types/d3-drag": "^2", - "@types/d3-dsv": "^2", - "@types/d3-ease": "^2", - "@types/d3-fetch": "^2", - "@types/d3-force": "^2", - "@types/d3-format": "^2", - "@types/d3-geo": "^2", - "@types/d3-hierarchy": "^2", - "@types/d3-interpolate": "^2", - "@types/d3-path": "^2", - "@types/d3-polygon": "^2", - "@types/d3-quadtree": "^2", - "@types/d3-random": "^2", - "@types/d3-scale": "^3", - "@types/d3-scale-chromatic": "^2", - "@types/d3-selection": "^2", - "@types/d3-shape": "^2", - "@types/d3-time": "^2", - "@types/d3-time-format": "^3", - "@types/d3-timer": "^2", - "@types/d3-transition": "^2", - "@types/d3-zoom": "^2" - } - }, - "@types/d3-array": { - "version": "2.12.3", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-2.12.3.tgz", - "integrity": "sha512-hN879HLPTVqZV3FQEXy7ptt083UXwguNbnxdTGzVW4y4KjX5uyNKljrQixZcSJfLyFirbpUokxpXtvR+N5+KIg==" - }, - "@types/d3-axis": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-2.1.3.tgz", - "integrity": "sha512-QjXjwZ0xzyrW2ndkmkb09ErgWDEYtbLBKGui73QLMFm3woqWpxptfD5Y7vqQdybMcu7WEbjZ5q+w2w5+uh2IjA==", - "requires": { - "@types/d3-selection": "^2" - } - }, - "@types/d3-brush": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-2.1.2.tgz", - "integrity": "sha512-DnZmjdK1ycX1CMiW9r5E3xSf1tL+bp3yob1ON8bf0xB0/odfmGXeYOTafU+2SmU1F0/dvcqaO4SMjw62onOu6A==", - "requires": { - "@types/d3-selection": "^2" - } - }, - "@types/d3-chord": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-2.0.3.tgz", - "integrity": "sha512-koIqSNQLPRQPXt7c55hgRF6Lr9Ps72r1+Biv55jdYR+SHJ463MsB2lp4ktzttFNmrQw/9yWthf/OmSUj5dNXKw==" - }, - "@types/d3-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz", - "integrity": "sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w==" - }, - "@types/d3-contour": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-2.0.4.tgz", - "integrity": "sha512-WMac1xV/mXAgkgr5dUvzsBV5OrgNZDBDpJk9s3v2SadTqGgDRirKABb2Ek2H1pFlYVH4Oly9XJGnuzxKDduqWA==", - "requires": { - "@types/d3-array": "^2", - "@types/geojson": "*" - } - }, - "@types/d3-delaunay": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-5.3.1.tgz", - "integrity": "sha512-F6itHi2DxdatHil1rJ2yEFUNhejj8+0Acd55LZ6Ggwbdoks0+DxVY2cawNj16sjCBiWvubVlh6eBMVsYRNGLew==" - }, - "@types/d3-dispatch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-2.0.1.tgz", - "integrity": "sha512-eT2K8uG3rXkmRiCpPn0rNrekuSLdBfV83vbTvfZliA5K7dbeaqWS/CBHtJ9SQoF8aDTsWSY4A0RU67U/HcKdJQ==" - }, - "@types/d3-drag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-2.0.2.tgz", - "integrity": "sha512-m9USoFaTgVw2mmE7vLjWTApT9dMxMlql/dl3Gj503x+1a2n6K455iDWydqy2dfCpkUBCoF82yRGDgcSk9FUEyQ==", - "requires": { - "@types/d3-selection": "^2" - } - }, - "@types/d3-dsv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-2.0.2.tgz", - "integrity": "sha512-T4aL2ZzaILkLGKbxssipYVRs8334PSR9FQzTGftZbc3jIPGkiXXS7qUCh8/q8UWFzxBZQ92dvR0v7+AM9wL2PA==" - }, - "@types/d3-ease": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-2.0.2.tgz", - "integrity": "sha512-29Y73Tg6o6aL+3/S/kEun84m5BO4bjRNau6pMWv9N9rZHcJv/O/07mW6EjqxrePZZS64fj0wiB5LMHr4Jzf3eQ==" - }, - "@types/d3-fetch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-2.0.2.tgz", - "integrity": "sha512-sllsCSWrNdSvzOJWN5RnxkmtvW9pCttONGajSxHX9FUQ9kOkGE391xlz6VDBdZxLnpwjp3I+mipbwsaCjq4m5A==", - "requires": { - "@types/d3-dsv": "^2" - } - }, - "@types/d3-force": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.4.tgz", - "integrity": "sha512-1XVRc2QbeUSL1FRVE53Irdz7jY+drTwESHIMVirCwkAAMB/yVC8ezAfx/1Alq0t0uOnphoyhRle1ht5CuPgSJQ==" - }, - "@types/d3-format": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-2.0.2.tgz", - "integrity": "sha512-OhQPuTeeMhD9A0Ksqo4q1S9Z1Q57O/t4tTPBxBQxRB4IERnxeoEYLPe72fA/GYpPSUrfKZVOgLHidkxwbzLdJA==" - }, - "@types/d3-geo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-2.0.3.tgz", - "integrity": "sha512-kFwLEMXq1mGJ2Eho7KrOUYvLcc2YTDeKj+kTFt87JlEbRQ0rgo8ZENNb5vTYmZrJ2xL/vVM5M7yqVZGOPH2JFg==", - "requires": { - "@types/geojson": "*" - } - }, - "@types/d3-hierarchy": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-2.0.2.tgz", - "integrity": "sha512-6PlBRwbjUPPt0ZFq/HTUyOAdOF3p73EUYots74lHMUyAVtdFSOS/hAeNXtEIM9i7qRDntuIblXxHGUMb9MuNRA==" - }, - "@types/d3-interpolate": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-2.0.2.tgz", - "integrity": "sha512-lElyqlUfIPyWG/cD475vl6msPL4aMU7eJvx1//Q177L8mdXoVPFl1djIESF2FKnc0NyaHvQlJpWwKJYwAhUoCw==", - "requires": { - "@types/d3-color": "^2" - } - }, - "@types/d3-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-2.0.2.tgz", - "integrity": "sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg==" - }, - "@types/d3-polygon": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-2.0.1.tgz", - "integrity": "sha512-X3XTIwBxlzRIWe4yaD1KsmcfItjSPLTGL04QDyP08jyHDVsnz3+NZJMwtD4vCaTAVpGSjbqS+jrBo8cO2V/xMA==" - }, - "@types/d3-quadtree": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-2.0.2.tgz", - "integrity": "sha512-KgWL4jlz8QJJZX01E4HKXJ9FLU94RTuObsAYqsPp8YOAcYDmEgJIQJ+ojZcnKUAnrUb78ik8JBKWas5XZPqJnQ==" - }, - "@types/d3-random": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-2.2.1.tgz", - "integrity": "sha512-5vvxn6//poNeOxt1ZwC7QU//dG9QqABjy1T7fP/xmFHY95GnaOw3yABf29hiu5SR1Oo34XcpyHFbzod+vemQjA==" - }, - "@types/d3-scale": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz", - "integrity": "sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==", - "requires": { - "@types/d3-time": "^2" - } - }, - "@types/d3-scale-chromatic": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-2.0.1.tgz", - "integrity": "sha512-3EuZlbPu+pvclZcb1DhlymTWT2W+lYsRKBjvkH2ojDbCWDYavifqu1vYX9WGzlPgCgcS4Alhk1+zapXbGEGylQ==" - }, - "@types/d3-selection": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-2.0.1.tgz", - "integrity": "sha512-3mhtPnGE+c71rl/T5HMy+ykg7migAZ4T6gzU0HxpgBFKcasBrSnwRbYV1/UZR6o5fkpySxhWxAhd7yhjj8jL7g==" - }, - "@types/d3-shape": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-2.1.3.tgz", - "integrity": "sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==", - "requires": { - "@types/d3-path": "^2" - } - }, - "@types/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==" - }, - "@types/d3-time-format": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-3.0.1.tgz", - "integrity": "sha512-5GIimz5IqaRsdnxs4YlyTZPwAMfALu/wA4jqSiuqgdbCxUZ2WjrnwANqOtoBJQgeaUTdYNfALJO0Yb0YrDqduA==" - }, - "@types/d3-timer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-2.0.1.tgz", - "integrity": "sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA==" - }, - "@types/d3-transition": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-2.0.2.tgz", - "integrity": "sha512-376TICEykdXOEA9uUIYpjshEkxfGwCPnkHUl8+6gphzKbf5NMnUhKT7wR59Yxrd9wtJ/rmE3SVLx6/8w4eY6Zg==", - "requires": { - "@types/d3-selection": "^2" - } - }, - "@types/d3-zoom": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-2.0.3.tgz", - "integrity": "sha512-9X9uDYKk2U8w775OHj36s9Q7GkNAnJKGw6+sbkP5DpHSjELwKvTGzEK6+IISYfLpJRL/V3mRXMhgDnnJ5LkwJg==", - "requires": { - "@types/d3-interpolate": "^2", - "@types/d3-selection": "^2" - } - }, - "@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - }, - "@types/geojson": { - "version": "7946.0.10", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", - "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true - }, - "@types/sizzle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", - "dev": true - }, - "@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true - }, - "@types/tapable": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", - "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", - "dev": true - }, - "@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", - "dev": true - }, - "@types/uglify-js": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", - "integrity": "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "@types/webpack": { - "version": "4.41.33", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", - "integrity": "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" - } - }, - "@types/webpack-sources": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", - "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } - } - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@vue/compiler-sfc": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", - "requires": { - "@babel/parser": "^7.18.4", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true - }, - "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - } - } - }, - "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - } - }, - "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true - }, - "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "autolinker": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", - "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "axe-core": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.1.tgz", - "integrity": "sha512-1exVbW0X1O/HSr/WMwnaweyqcWOgZgLiVxdLG34pvSQk4NlYQr9OUy0JLwuhFfuVNQzzqgH57eYzkFBCb3bIsQ==", - "dev": true - }, - "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, - "babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "ci-info": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz", - "integrity": "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", - "dev": true, - "requires": { - "@types/webpack": "^4.4.31", - "del": "^4.1.1" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - }, - "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "requires": { - "source-map": "^0.6.1" - } - }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "requires": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-js-pure": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz", - "integrity": "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "crelt": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", - "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==" - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - }, - "cypress": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", - "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", - "dev": true, - "requires": { - "@cypress/request": "^2.88.10", - "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.6.0", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^5.1.0", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "eventemitter2": "6.4.7", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-ci": "^3.0.0", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.6", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.3.2", - "supports-color": "^8.1.1", - "tmp": "~0.2.1", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" - }, - "dependencies": { - "@types/node": { - "version": "14.18.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", - "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "d3": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-6.7.0.tgz", - "integrity": "sha512-hNHRhe+yCDLUG6Q2LwvR/WdNFPOJQ5VWqsJcwIYVeI401+d2/rrCjxSXkiAdIlpx7/73eApFB4Olsmh3YN7a6g==", - "requires": { - "d3-array": "2", - "d3-axis": "2", - "d3-brush": "2", - "d3-chord": "2", - "d3-color": "2", - "d3-contour": "2", - "d3-delaunay": "5", - "d3-dispatch": "2", - "d3-drag": "2", - "d3-dsv": "2", - "d3-ease": "2", - "d3-fetch": "2", - "d3-force": "2", - "d3-format": "2", - "d3-geo": "2", - "d3-hierarchy": "2", - "d3-interpolate": "2", - "d3-path": "2", - "d3-polygon": "2", - "d3-quadtree": "2", - "d3-random": "2", - "d3-scale": "3", - "d3-scale-chromatic": "2", - "d3-selection": "2", - "d3-shape": "2", - "d3-time": "2", - "d3-time-format": "3", - "d3-timer": "2", - "d3-transition": "2", - "d3-zoom": "2" - } - }, - "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "requires": { - "internmap": "^1.0.0" - } - }, - "d3-axis": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-2.1.0.tgz", - "integrity": "sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw==" - }, - "d3-brush": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-2.1.0.tgz", - "integrity": "sha512-cHLLAFatBATyIKqZOkk/mDHUbzne2B3ZwxkzMHvFTCZCmLaXDpZRihQSn8UNXTkGD/3lb/W2sQz0etAftmHMJQ==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" - } - }, - "d3-chord": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-2.0.0.tgz", - "integrity": "sha512-D5PZb7EDsRNdGU4SsjQyKhja8Zgu+SHZfUSO5Ls8Wsn+jsAKUUGkcshLxMg9HDFxG3KqavGWaWkJ8EpU8ojuig==", - "requires": { - "d3-path": "1 - 2" - } - }, - "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" - }, - "d3-contour": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-2.0.0.tgz", - "integrity": "sha512-9unAtvIaNk06UwqBmvsdHX7CZ+NPDZnn8TtNH1myW93pWJkhsV25JcgnYAu0Ck5Veb1DHiCv++Ic5uvJ+h50JA==", - "requires": { - "d3-array": "2" - } - }, - "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", - "requires": { - "delaunator": "4" - } - }, - "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "d3-drag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", - "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-selection": "2" - } - }, - "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", - "requires": { - "commander": "2", - "iconv-lite": "0.4", - "rw": "1" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - }, - "d3-ease": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", - "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" - }, - "d3-fetch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-2.0.0.tgz", - "integrity": "sha512-TkYv/hjXgCryBeNKiclrwqZH7Nb+GaOwo3Neg24ZVWA3MKB+Rd+BY84Nh6tmNEMcjUik1CSUWjXYndmeO6F7sw==", - "requires": { - "d3-dsv": "1 - 2" - } - }, - "d3-flextree": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/d3-flextree/-/d3-flextree-2.1.2.tgz", - "integrity": "sha512-gJiHrx5uTTHq44bjyIb3xpbmmdZcWLYPKeO9EPVOq8EylMFOiH2+9sWqKAiQ4DcFuOZTAxPOQyv0Rnmji/g15A==", - "requires": { - "d3-hierarchy": "^1.1.5" - }, - "dependencies": { - "d3-hierarchy": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" - } - } - }, - "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" - } - }, - "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" - }, - "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", - "requires": { - "d3-array": "^2.5.0" - } - }, - "d3-geo-projection": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", - "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", - "requires": { - "commander": "7", - "d3-array": "1 - 3", - "d3-geo": "1.12.0 - 3" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - } - } - }, - "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" - }, - "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", - "requires": { - "d3-color": "1 - 2" - } - }, - "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" - }, - "d3-polygon": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-2.0.0.tgz", - "integrity": "sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ==" - }, - "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" - }, - "d3-random": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-2.2.2.tgz", - "integrity": "sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw==" - }, - "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", - "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" - } - }, - "d3-scale-chromatic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz", - "integrity": "sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA==", - "requires": { - "d3-color": "1 - 2", - "d3-interpolate": "1 - 2" - } - }, - "d3-selection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", - "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" - }, - "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", - "requires": { - "d3-path": "1 - 2" - } - }, - "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", - "requires": { - "d3-array": "2" - } - }, - "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", - "requires": { - "d3-time": "1 - 2" - } - }, - "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" - }, - "d3-transition": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", - "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", - "requires": { - "d3-color": "1 - 2", - "d3-dispatch": "1 - 2", - "d3-ease": "1 - 2", - "d3-interpolate": "1 - 2", - "d3-timer": "1 - 2" - } - }, - "d3-zoom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", - "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" - } - }, - "dagre-d3-es": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.6.tgz", - "integrity": "sha512-CaaE/nZh205ix+Up4xsnlGmpog5GGm81Upi2+/SBHxwNwrccBb3K51LzjZ1U6hgvOlAEUsVWf1xSTzCyKpJ6+Q==", - "requires": { - "d3": "^7.7.0", - "lodash-es": "^4.17.21" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "d3": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.7.0.tgz", - "integrity": "sha512-VEwHCMgMjD2WBsxeRGUE18RmzxT9Bn7ghDpzvTEvkLSBAKgTMydJjouZTjspgQfRHpPt/PB3EHWBa6SSyFQq4g==", - "requires": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - } - }, - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" - }, - "d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - } - }, - "d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" - }, - "d3-contour": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz", - "integrity": "sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==", - "requires": { - "d3-array": "^3.2.0" - } - }, - "d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "requires": { - "delaunator": "5" - } - }, - "d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" - }, - "d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - } - }, - "d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - } - }, - "d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" - }, - "d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "requires": { - "d3-dsv": "1 - 3" - } - }, - "d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" - }, - "d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "requires": { - "d3-array": "2.5.0 - 3" - } - }, - "d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" - }, - "d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "requires": { - "d3-color": "1 - 3" - } - }, - "d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" - }, - "d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" - }, - "d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" - }, - "d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" - }, - "d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "requires": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - } - }, - "d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "requires": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - } - }, - "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" - }, - "d3-shape": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "requires": { - "d3-time": "1 - 3" - } - }, - "d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" - }, - "d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "requires": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - } - }, - "delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "requires": { - "robust-predicates": "^3.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "dayjs": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", - "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true - } - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - } - } - }, - "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" - } - }, - "dompurify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.1.tgz", - "integrity": "sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA==" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "dev": true, - "requires": { - "jake": "^10.8.5" - } - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "emojione": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/emojione/-/emojione-4.5.0.tgz", - "integrity": "sha512-Tq55Y3UgPOnayFDN+Qd6QMP0rpoH10a1nhSFN27s8gXW3qymgFIHiXys2ECYYAI134BafmI3qP9ni2rZOe9BjA==" - }, - "emojionearea": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/emojionearea/-/emojionearea-3.4.2.tgz", - "integrity": "sha512-u0i5hD/VqIE2PgmreT6Q2uKQkf9p8jbp2em23xB9llxHnsPxyu1RzzUwbZ/rLGfHpxvhUwYjGa9EYsuN3J+jLQ==", - "requires": { - "emojione": ">=2.0.1", - "jquery": ">=1.8.3", - "jquery-textcomplete": ">=1.3.4" - } - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - } - } - }, - "eslint-config-airbnb": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", - "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", - "dev": true, - "requires": { - "eslint-config-airbnb-base": "^14.2.1", - "object.assign": "^4.1.2", - "object.entries": "^1.1.2" - } - }, - "eslint-config-airbnb-base": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.2" - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-cypress": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz", - "integrity": "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==", - "requires": { - "globals": "^11.12.0" - } - }, - "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", - "dev": true, - "requires": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", - "minimatch": "^3.1.2", - "semver": "^6.3.0" - } - }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-react": { - "version": "7.31.10", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", - "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", - "dev": true, - "peer": true, - "requires": { - "array-includes": "^3.1.5", - "array.prototype.flatmap": "^1.3.0", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.1", - "object.values": "^1.1.5", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.7" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "peer": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "peer": true, - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - } - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - }, - "eslint-webpack-plugin": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.7.0.tgz", - "integrity": "sha512-bNaVVUvU4srexGhVcayn/F4pJAz19CWBkKoMx7aSQ4wtTbZQCnG5O9LHCE42mM+JSKOUp7n6vd5CIwzj7lOVGA==", - "requires": { - "@types/eslint": "^7.29.0", - "arrify": "^2.0.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "requires": { - "pify": "^2.2.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-patch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", - "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "footable": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/footable/-/footable-2.0.6.tgz", - "integrity": "sha512-OSkHeQ3pSt2rVchLlUa02axnnCd/C8eaK4KJriglJtR+QWg4caNkooOqvb1owzJiZ9+/bEhnXCic3mv8vLKM2A==", - "requires": { - "jquery": ">=1.4.4" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, - "requires": { - "async": "^3.2.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "gettext-parser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.0.0.tgz", - "integrity": "sha512-FDs/7XjNw58ToQwJFO7avZZbPecSYgw8PBYhd0An+4JtZSrSzKhEvTsVV2uqdO7VziWTOGSgLGD5YRPdsCjF7Q==", - "requires": { - "encoding": "^0.1.12", - "safe-buffer": "^5.1.2" - } - }, - "gettext-to-messageformat": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/gettext-to-messageformat/-/gettext-to-messageformat-0.3.1.tgz", - "integrity": "sha512-UyqIL3Ul4NryU95Wome/qtlcuVIqgEWVIFw0zi7Lv14ACLXfaVDCbrjZ7o+3BZ7u+4NS1mP/2O1eXZoHCoas8g==", - "requires": { - "gettext-parser": "^1.4.0" - }, - "dependencies": { - "gettext-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", - "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", - "requires": { - "encoding": "^0.1.12", - "safe-buffer": "^5.1.1" - } - } - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "requires": { - "ini": "2.0.0" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - } - } - }, - "globule": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", - "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "^4.17.21", - "minimatch": "~3.0.2" - }, - "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "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" - } - }, - "minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "gulp-header": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", - "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", - "requires": { - "concat-with-sourcemaps": "*", - "lodash.template": "^4.4.0", - "through2": "^2.0.0" - } - }, - "hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "htmx.org": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-1.8.4.tgz", - "integrity": "sha512-T+1Z9RAZpJ1Ia6cvpV67lstvJ5UQkNpUAulpyfxUCHYbzYcaUVQC/PrcIdPNRU9e1ii6Ec7EEw7GnenavOZB6g==" - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "dev": true - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "requires": { - "ci-info": "^3.2.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - }, - "dependencies": { - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - } - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dev": true, - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jquery": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz", - "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==" - }, - "jquery-textcomplete": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/jquery-textcomplete/-/jquery-textcomplete-1.8.5.tgz", - "integrity": "sha512-WctSUxFk7GF5Tx2gHeVKrpkQ9tsV7mibBJ0AYNwEx+Zx3ZoUQgU5grkBXY3SCqpq/owMAMEvksN96DBSWT4PSg==" - }, - "jquery-ui": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", - "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", - "requires": { - "jquery": ">=1.8.0 <4.0.0" - } - }, - "jquery-ui-sortable-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jquery-ui-sortable-npm/-/jquery-ui-sortable-npm-1.0.0.tgz", - "integrity": "sha512-y4wIwcgpVq+vLlzT1/7aH+/WBzYEQhS4vtBExDphfnyz10ysglVfqXjwErv9xmczio+cpSAE7howhNYlD2pJQw==" - }, - "jquery-ui-touch-punch": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/jquery-ui-touch-punch/-/jquery-ui-touch-punch-0.2.3.tgz", - "integrity": "sha512-Q/7aAd+SjbV0SspHO7Kuk96NJIbLwJAS0lD81U1PKcU2T5ZKayXMORH+Y5qvYLuy41xqVQbWimsRKDn1v3oI2Q==" - }, - "js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "json-stringify-pretty-compact": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz", - "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true - }, - "jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "jsqr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", - "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" - }, - "jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "dev": true, - "requires": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - } - }, - "katex": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.3.tgz", - "integrity": "sha512-3EykQddareoRmbtNiNEDgl3IGjryyrp2eg/25fHDEnlHymIDi33bptkMv6K4EOC2LZCybLW/ZkEo6Le+EM9pmA==", - "requires": { - "commander": "^8.0.0" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - } - } - }, - "khroma": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.0.0.tgz", - "integrity": "sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==" - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dev": true, - "requires": { - "language-subtag-registry": "~0.3.2" - } - }, - "lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true - }, - "leaflet": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.2.tgz", - "integrity": "sha512-Kc77HQvWO+y9y2oIs3dn5h5sy2kr3j41ewdqCMEUA4N89lgfUUfOBy7wnnHEstDpefiGFObq12FdopGRMx4J7g==" - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "lint-staged": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.6.tgz", - "integrity": "sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg==", - "dev": true, - "requires": { - "cli-truncate": "2.1.0", - "colorette": "^1.4.0", - "commander": "^8.2.0", - "cosmiconfig": "^7.0.1", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "execa": "^5.1.1", - "listr2": "^3.12.2", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "3.3.0", - "supports-color": "8.1.1" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - } - } - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - } - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true - }, - "markmap": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/markmap/-/markmap-0.6.1.tgz", - "integrity": "sha512-pjlp/nAisQ8/YxPhW7i+eDjtMlUQF6Rr27qzt+EiSYUYzYFkq9HEKHso1KgJRocexLahqr2+QO0umXDiGkfIPg==", - "requires": { - "d3": "3.5.6", - "remarkable": "1.7.4" - }, - "dependencies": { - "autolinker": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", - "integrity": "sha512-zQAFO1Dlsn69eXaO6+7YZc+v84aquQKbwpzCE3L0stj56ERn9hutFxPopViLjo9G+rWwjozRhgS5KJ25Xy19cQ==", - "requires": { - "gulp-header": "^1.7.1" - } - }, - "d3": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.6.tgz", - "integrity": "sha512-i1x8Q3lGerBazuvWsImnUKrjfCdBnRnk8aq7hqOK/5+CAWJTt/zr9CaR1mlJf17oH8l/v4mOaDLU+F/l2dq1Vg==" - }, - "remarkable": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz", - "integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==", - "requires": { - "argparse": "^1.0.10", - "autolinker": "~0.28.0" - } - } - } - }, - "markmap-common": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/markmap-common/-/markmap-common-0.14.2.tgz", - "integrity": "sha512-uGk++7mh237YneJRn9BH/KMbc1ImvMSlvOHOXqK9TyFP+NqQ0+ZYYKYXdTRyozzcMMtz0U0fb00k3Z7FNkAu1g==", - "peer": true, - "requires": { - "@babel/runtime": "^7.12.1" - } - }, - "markmap-lib": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/markmap-lib/-/markmap-lib-0.14.3.tgz", - "integrity": "sha512-nvHpeBp3nlQvCgNETHwASYLqo4GGjl3JF04+Aq3i0+8ni0mKDqongrEslU1cI0SuELOjGphTXiLt6ugcObhE/A==", - "requires": { - "@babel/runtime": "^7.18.9", - "js-yaml": "^4.1.0", - "katex": "^0.16.0", - "prismjs": "^1.28.0", - "remarkable": "^2.0.1", - "remarkable-katex": "^1.2.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - } - } - }, - "markmap-view": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.14.3.tgz", - "integrity": "sha512-8w96PQv5O4+XAKhdHWnZvl16PvOn1UdvBRWdhkwYjH2DXuWp1cmXqF4ushgEp4Ec/GxhZlTcQN4+0hyFxgIK+w==", - "requires": { - "@babel/runtime": "^7.12.5", - "@types/d3": "^6.0.0", - "d3": "^6.2.0", - "d3-flextree": "^2.1.1" - } - }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "mermaid": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.3.0.tgz", - "integrity": "sha512-mGl0BM19TD/HbU/LmlaZbjBi//tojelg8P/mxD6pPZTAYaI+VawcyBdqRsoUHSc7j71PrMdJ3HBadoQNdvP5cg==", - "requires": { - "@braintree/sanitize-url": "^6.0.0", - "d3": "^7.0.0", - "dagre-d3-es": "7.0.6", - "dompurify": "2.4.1", - "khroma": "^2.0.0", - "lodash-es": "^4.17.21", - "moment-mini": "^2.24.0", - "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.2", - "uuid": "^9.0.0" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "d3": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.7.0.tgz", - "integrity": "sha512-VEwHCMgMjD2WBsxeRGUE18RmzxT9Bn7ghDpzvTEvkLSBAKgTMydJjouZTjspgQfRHpPt/PB3EHWBa6SSyFQq4g==", - "requires": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - } - }, - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" - }, - "d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - } - }, - "d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" - }, - "d3-contour": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz", - "integrity": "sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==", - "requires": { - "d3-array": "^3.2.0" - } - }, - "d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "requires": { - "delaunator": "5" - } - }, - "d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" - }, - "d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - } - }, - "d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - } - }, - "d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" - }, - "d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "requires": { - "d3-dsv": "1 - 3" - } - }, - "d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" - }, - "d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "requires": { - "d3-array": "2.5.0 - 3" - } - }, - "d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" - }, - "d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "requires": { - "d3-color": "1 - 3" - } - }, - "d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" - }, - "d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" - }, - "d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" - }, - "d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" - }, - "d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "requires": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - } - }, - "d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "requires": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - } - }, - "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" - }, - "d3-shape": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "requires": { - "d3-time": "1 - 3" - } - }, - "d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" - }, - "d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "requires": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - } - }, - "delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "requires": { - "robust-predicates": "^3.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" - } - } - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true - } - } - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "moment-mini": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.29.4.tgz", - "integrity": "sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } + "engines": { + "node": ">=7.0.0" } }, - "node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "node_modules/node-sass/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/node-sass/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "engines": { + "node": ">=8" } }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "node-sass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.3.tgz", - "integrity": "sha512-8MIlsY/4dXUkJDYht9pIWBhMil3uHmE8b/AdJPjmFn1nBx9X9BASzfzmsCy0uCCb8eqI3SYYzVPDswWqSx7gjw==", + "node_modules/node-sass/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "lodash": "^4.17.15", - "meow": "^9.0.0", - "nan": "^2.13.2", - "node-gyp": "^8.4.1", - "npmlog": "^5.0.0", - "request": "^2.88.0", - "sass-graph": "^4.0.1", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "non-layered-tidy-tree-layout": { + "node_modules/non-layered-tidy-tree-layout": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" }, - "nopt": { + "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, - "requires": { + "dependencies": { "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" } }, - "normalize-package-data": { + "node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "requires": { + "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "normalize-path": { + "node_modules/normalize-package-data/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } }, - "npm-run-path": { + "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "requires": { + "dependencies": { "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "npmlog": { + "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "dev": true, - "requires": { + "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", "gauge": "^3.0.0", "set-blocking": "^2.0.0" } }, - "oauth-sign": { + "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "object-keys": { + "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + } }, - "object.assign": { + "node_modules/object.assign": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.entries": { + "node_modules/object.entries": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" } }, - "object.fromentries": { + "node_modules/object.fromentries": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", "dev": true, - "peer": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.hasown": { + "node_modules/object.hasown": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dev": true, "peer": true, - "requires": { + "dependencies": { "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.values": { + "node_modules/object.values": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { + "dependencies": { "wrappy": "1" } }, - "onetime": { + "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "requires": { + "dependencies": { "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "optionator": { + "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "requires": { + "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, - "ospath": { + "node_modules/ospath": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", "dev": true }, - "p-limit": { + "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "requires": { + "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "p-map": { + "node_modules/p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "p-try": { + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "parent-module": { + "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { + "dependencies": { "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "parse-json": { + "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "path-browserify": { + "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, - "path-exists": { + "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } }, - "path-is-inside": { + "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, - "path-key": { + "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-type": { + "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } }, - "pend": { + "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, - "performance-now": { + "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, - "picocolors": { + "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pify": { + "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "pinkie": { + "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "pinkie-promise": { + "node_modules/pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, - "requires": { + "dependencies": { "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "pkg-dir": { + "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "requires": { + "dependencies": { "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "please-upgrade-node": { + "node_modules/please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, - "requires": { + "dependencies": { "semver-compare": "^1.0.0" } }, - "po2json": { + "node_modules/po2json": { "version": "1.0.0-beta-3", "resolved": "https://registry.npmjs.org/po2json/-/po2json-1.0.0-beta-3.tgz", "integrity": "sha512-taS8y6ZEGzPAs0rygW9CuUPY8C3Zgx6cBy31QXxG2JlWS3fLxj/kuD3cbIfXBg30PuYN7J5oyBa/TIRjyqFFtg==", - "requires": { + "dependencies": { "commander": "^6.0.0", "gettext-parser": "2.0.0", "gettext-to-messageformat": "0.3.1" }, - "dependencies": { - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" - } + "bin": { + "po2json": "bin/po2json" + }, + "engines": { + "node": ">=10.0" + }, + "peerDependencies": { + "commander": "^6.0.0", + "gettext-parser": "2.0.0", + "gettext-to-messageformat": "0.3.1" + } + }, + "node_modules/po2json/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "engines": { + "node": ">= 6" } }, - "postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", - "requires": { + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "prelude-ls": { + "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } }, - "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true + "node_modules/prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } }, - "prettier-linter-helpers": { + "node_modules/prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, - "requires": { + "dependencies": { "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "pretty-bytes": { + "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "prismjs": { + "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "progress": { + "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } }, - "promise-inflight": { + "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, - "promise-retry": { + "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "requires": { + "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" } }, - "prop-types": { + "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "peer": true, - "requires": { + "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, - "proxy-from-env": { + "node_modules/proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", "dev": true }, - "psl": { + "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, - "pump": { + "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "requires": { + "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true + "node_modules/qs": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "queue-microtask": { + "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "quick-lru": { + "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "ractive": { + "node_modules/ractive": { "version": "0.8.14", "resolved": "https://registry.npmjs.org/ractive/-/ractive-0.8.14.tgz", "integrity": "sha512-oEYRyM2VbHL1bcymhLFXb8SK8htd4MPfgWdqJADaUTy3+0K4/5PfEw8szj6rWe2N2asJ1jNNdYqkvIWca1M9dg==" }, - "randombytes": { + "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { + "dependencies": { "safe-buffer": "^5.1.0" } }, - "react-is": { + "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true, "peer": true }, - "read-pkg": { + "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "requires": { + "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", "parse-json": "^5.0.0", "type-fest": "^0.6.0" }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "read-pkg-up": { + "node_modules/read-pkg-up": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "rechoir": { + "node_modules/rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, - "requires": { + "dependencies": { "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" } }, - "redent": { + "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "requires": { + "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "regenerate": { + "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, - "regenerate-unicode-properties": { + "node_modules/regenerate-unicode-properties": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, - "requires": { + "dependencies": { "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, - "requires": { + "dependencies": { "@babel/runtime": "^7.8.4" } }, - "regexp.prototype.flags": { + "node_modules/regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "regexpp": { + "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } }, - "regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "node_modules/regexpu-core": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", + "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", "dev": true, - "requires": { + "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "regjsparser": { + "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, - "requires": { + "dependencies": { "jsesc": "~0.5.0" }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } + "bin": { + "regjsparser": "bin/parser" } }, - "remarkable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", - "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", - "requires": { + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remarkable": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz", + "integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==", + "dependencies": { "argparse": "^1.0.10", - "autolinker": "^3.11.0" + "autolinker": "~0.28.0" + }, + "bin": { + "remarkable": "bin/remarkable.js" + }, + "engines": { + "node": ">= 0.10.0" } }, - "remarkable-katex": { + "node_modules/remarkable-katex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/remarkable-katex/-/remarkable-katex-1.2.1.tgz", "integrity": "sha512-Y1VquJBZnaVsfsVcKW2hmjT+pDL7mp8l5WAVlvuvViltrdok2m1AIKmJv8SsH+mBY84PoMw67t3kTWw1dIm8+g==" }, - "request": { + "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, - "requires": { + "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", "caseless": "~0.12.0", @@ -21289,490 +10488,682 @@ "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, - "dependencies": { - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } + "engines": { + "node": ">= 6" } }, - "request-progress": { + "node_modules/request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, - "requires": { + "dependencies": { "throttleit": "^1.0.0" } }, - "require-directory": { + "node_modules/request/node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/request/node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } }, - "require-from-string": { + "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } }, - "resolve": { + "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, - "requires": { + "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-cwd": { + "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "requires": { + "dependencies": { "resolve-from": "^5.0.0" }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" } }, - "resolve-from": { + "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } }, - "restore-cursor": { + "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "requires": { + "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "retry": { + "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4" + } }, - "reusify": { + "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "rfdc": { + "node_modules/rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "rimraf": { + "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, - "requires": { - "fsevents": "~2.3.2" + "dependencies": { + "randombytes": "^2.1.0" } }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "node_modules/rollup-plugin-terser/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "run-parallel": { + "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { "queue-microtask": "^1.2.2" } }, - "rw": { + "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, - "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, - "requires": { + "dependencies": { "tslib": "^2.1.0" } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "safe-regex-test": { + "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sass-graph": { + "node_modules/sass-graph": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", "dev": true, - "requires": { + "dependencies": { "glob": "^7.0.0", "lodash": "^4.17.11", "scss-tokenizer": "^0.4.3", "yargs": "^17.2.1" + }, + "bin": { + "sassgraph": "bin/sassgraph" + }, + "engines": { + "node": ">=12" } }, - "sass-loader": { + "node_modules/sass-loader": { "version": "12.6.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", "dev": true, - "requires": { + "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } } }, - "schema-utils": { + "node_modules/schema-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, - "requires": { + "dependencies": { "@types/json-schema": "^7.0.5", "ajv": "^6.12.4", "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "scss-tokenizer": { + "node_modules/scss-tokenizer": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", "dev": true, - "requires": { + "dependencies": { "js-base64": "^2.4.9", "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } } }, - "semver": { + "node_modules/scss-tokenizer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "semver-compare": { + "node_modules/semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "requires": { + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { "randombytes": "^2.1.0" } }, - "set-blocking": { + "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, - "shallow-clone": { + "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "requires": { + "dependencies": { "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" } }, - "shebang-command": { + "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } }, - "side-channel": { + "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "slash": { + "node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "slice-ansi": { + "node_modules/slice-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "smart-buffer": { + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } }, - "socks": { + "node_modules/socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, - "requires": { + "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" } }, - "socks-proxy-agent": { + "node_modules/socks-proxy-agent": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "dev": true, - "requires": { + "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" } }, - "source-list-map": { + "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" }, - "source-map": { + "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } }, - "source-map-js": { + "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } }, - "source-map-support": { + "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "sourcemap-codec": { + "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", "dev": true }, - "spdx-correct": { + "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, - "requires": { + "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-exceptions": { + "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, - "spdx-expression-parse": { + "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "requires": { + "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-license-ids": { + "node_modules/spdx-license-ids": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, - "sshpk": { + "node_modules/sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, - "requires": { + "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", @@ -21782,96 +11173,127 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, - "ssri": { + "node_modules/ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, - "requires": { + "dependencies": { "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" } }, - "stdout-stream": { + "node_modules/stdout-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", "dev": true, - "requires": { + "dependencies": { "readable-stream": "^2.0.1" - }, + } + }, + "node_modules/stdout-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/stdout-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stdout-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stdout-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" } }, - "string_decoder": { + "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "~5.2.0" } }, - "string-argv": { + "node_modules/string-argv": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6.19" + } }, - "string-width": { + "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { + "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - } + "engines": { + "node": ">=8" } }, - "string.prototype.matchall": { + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string.prototype.matchall": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4", @@ -21880,1347 +11302,1367 @@ "internal-slot": "^1.0.3", "regexp.prototype.flags": "^1.4.3", "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trimend": { + "node_modules/string.prototype.trimend": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trimstart": { + "node_modules/string.prototype.trimstart": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "stringify-object": { + "node_modules/stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "dev": true, - "requires": { + "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { + "dependencies": { "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-bom": { + "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "strip-comments": { + "node_modules/strip-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "strip-final-newline": { + "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "strip-indent": { + "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, - "requires": { + "dependencies": { "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" } }, - "strip-json-comments": { + "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "style-mod": { + "node_modules/style-mod": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==" }, - "stylis": { + "node_modules/stylis": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "supports-preserve-symlinks-flag": { + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "table": { + "node_modules/table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "requires": { + "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1" }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/table/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/table/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "tapable": { + "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } }, - "tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, - "requires": { + "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "temp-dir": { + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "tempy": { + "node_modules/tempy": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", "dev": true, - "requires": { + "dependencies": { "is-stream": "^2.0.0", "temp-dir": "^2.0.0", "type-fest": "^0.16.0", "unique-string": "^2.0.0" }, - "dependencies": { - "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true - } + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", - "requires": { + "node_modules/terser": { + "version": "5.16.5", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", + "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", + "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, - "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" } }, - "terser-webpack-plugin": { + "node_modules/terser-webpack-plugin": { "version": "5.3.6", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "requires": { + "dependencies": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", "terser": "^5.14.1" }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true } } }, - "text-table": { + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, - "throttleit": { + "node_modules/throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", "dev": true }, - "through": { + "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "through2": { + "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { + "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" - }, + } + }, + "node_modules/through2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "timeago.js": { + "node_modules/timeago.js": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz", "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" }, - "tmp": { + "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, - "requires": { + "dependencies": { "rimraf": "^3.0.0" }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "to-fast-properties": { + "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "topojson-client": { + "node_modules/topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", - "requires": { + "dependencies": { "commander": "2" }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" } }, - "tough-cookie": { + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, - "requires": { + "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "trim-newlines": { + "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "true-case-path": { + "node_modules/true-case-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.2" } }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, - "requires": { + "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" - }, + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, - "tunnel-agent": { + "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "tweetnacl": { + "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, - "type-check": { + "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "requires": { + "dependencies": { "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "type-fest": { + "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "unbox-primitive": { + "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "unicode-canonical-property-names-ecmascript": { + "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "unicode-match-property-ecmascript": { + "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "requires": { + "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "unicode-property-aliases-ecmascript": { + "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "unique-filename": { + "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "requires": { + "dependencies": { "unique-slug": "^2.0.0" } }, - "unique-slug": { + "node_modules/unique-slug": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "requires": { + "dependencies": { "imurmurhash": "^0.1.4" } }, - "unique-string": { + "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, - "requires": { + "dependencies": { "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "universalify": { + "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 10.0.0" + } }, - "untildify": { + "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "upath": { + "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } }, - "update-browserslist-db": { + "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "requires": { + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "uuid": { + "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } }, - "v8-compile-cache": { + "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, - "validate-npm-package-license": { + "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "requires": { + "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "vcards-js": { + "node_modules/vcards-js": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/vcards-js/-/vcards-js-2.10.0.tgz", "integrity": "sha512-nah+xbVInVJaO6+C5PEUqaougmv8BN8aa7ZCtmVQcX6eWIZGRukckFtseXSI7KD7/nXtwkJe624y42T0r+L+AQ==" }, - "vega": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.22.1.tgz", - "integrity": "sha512-KJBI7OWSzpfCPbmWl3GQCqBqbf2TIdpWS0mzO6MmWbvdMhWHf74P9IVnx1B1mhg0ZTqWFualx9ZYhWzMMwudaQ==", - "requires": { - "vega-crossfilter": "~4.1.0", - "vega-dataflow": "~5.7.4", - "vega-encode": "~4.9.0", - "vega-event-selector": "~3.0.0", - "vega-expression": "~5.0.0", - "vega-force": "~4.1.0", - "vega-format": "~1.1.0", - "vega-functions": "~5.13.0", - "vega-geo": "~4.4.0", - "vega-hierarchy": "~4.1.0", - "vega-label": "~1.2.0", - "vega-loader": "~4.5.0", - "vega-parser": "~6.1.4", - "vega-projection": "~1.5.0", - "vega-regression": "~1.1.0", - "vega-runtime": "~6.1.3", - "vega-scale": "~7.2.0", - "vega-scenegraph": "~4.10.1", - "vega-statistics": "~1.8.0", - "vega-time": "~2.1.0", - "vega-transforms": "~4.10.0", - "vega-typings": "~0.22.0", - "vega-util": "~1.17.0", - "vega-view": "~5.11.0", - "vega-view-transforms": "~4.5.8", - "vega-voronoi": "~4.2.0", - "vega-wordcloud": "~4.1.3" + "node_modules/vega": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.23.0.tgz", + "integrity": "sha512-FjgDD/VmL9yl36ByLq66mEusDF/wZGRktK4JA5MkF68hQqj3F8BFMDDVNwCASuwY97H6wr7kw/RFqNI6XocjJQ==", + "dependencies": { + "vega-crossfilter": "~4.1.1", + "vega-dataflow": "~5.7.5", + "vega-encode": "~4.9.1", + "vega-event-selector": "~3.0.1", + "vega-expression": "~5.0.1", + "vega-force": "~4.1.1", + "vega-format": "~1.1.1", + "vega-functions": "~5.13.1", + "vega-geo": "~4.4.1", + "vega-hierarchy": "~4.1.1", + "vega-label": "~1.2.1", + "vega-loader": "~4.5.1", + "vega-parser": "~6.2.0", + "vega-projection": "~1.6.0", + "vega-regression": "~1.1.1", + "vega-runtime": "~6.1.4", + "vega-scale": "~7.3.0", + "vega-scenegraph": "~4.10.2", + "vega-statistics": "~1.8.1", + "vega-time": "~2.1.1", + "vega-transforms": "~4.10.1", + "vega-typings": "~0.23.0", + "vega-util": "~1.17.1", + "vega-view": "~5.11.1", + "vega-view-transforms": "~4.5.9", + "vega-voronoi": "~4.2.1", + "vega-wordcloud": "~4.1.4" } }, - "vega-canvas": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/vega-canvas/-/vega-canvas-1.2.6.tgz", - "integrity": "sha512-rgeYUpslYn/amIfnuv3Sw6n4BGns94OjjZNtUc9IDji6b+K8LGS/kW+Lvay8JX/oFqtulBp8RLcHN6QjqPLA9Q==" + "node_modules/vega-canvas": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/vega-canvas/-/vega-canvas-1.2.7.tgz", + "integrity": "sha512-OkJ9CACVcN9R5Pi9uF6MZBF06pO6qFpDYHWSKBJsdHP5o724KrsgR6UvbnXFH82FdsiTOff/HqjuaG8C7FL+9Q==" }, - "vega-crossfilter": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.0.tgz", - "integrity": "sha512-aiOJcvVpiEDIu5uNc4Kf1hakkkPaVOO5fw5T4RSFAw6GEDbdqcB6eZ1xePcsLVic1hxYD5SGiUPdiiIs0SMh2g==", - "requires": { - "d3-array": "^3.1.1", - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" - }, + "node_modules/vega-crossfilter": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.1.tgz", + "integrity": "sha512-yesvlMcwRwxrtAd9IYjuxWJJuAMI0sl7JvAFfYtuDkkGDtqfLXUcCzHIATqW6igVIE7tWwGxnbfvQLhLNgK44Q==", "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - } + "d3-array": "^3.2.2", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" } }, - "vega-dataflow": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/vega-dataflow/-/vega-dataflow-5.7.4.tgz", - "integrity": "sha512-JGHTpUo8XGETH3b1V892we6hdjzCWB977ybycIu8DPqRoyrZuj6t1fCVImazfMgQD1LAfJlQybWP+alwKDpKig==", - "requires": { - "vega-format": "^1.0.4", - "vega-loader": "^4.3.2", - "vega-util": "^1.16.1" + "node_modules/vega-dataflow": { + "version": "5.7.5", + "resolved": "https://registry.npmjs.org/vega-dataflow/-/vega-dataflow-5.7.5.tgz", + "integrity": "sha512-EdsIl6gouH67+8B0f22Owr2tKDiMPNNR8lEvJDcxmFw02nXd8juimclpLvjPQriqn6ta+3Dn5txqfD117H04YA==", + "dependencies": { + "vega-format": "^1.1.1", + "vega-loader": "^4.5.1", + "vega-util": "^1.17.1" } }, - "vega-embed": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/vega-embed/-/vega-embed-6.21.0.tgz", - "integrity": "sha512-Tzo9VAfgNRb6XpxSFd7uphSeK2w5OxDY2wDtmpsQ+rQlPSEEI9TE6Jsb2nHRLD5J4FrmXKLrTcORqidsNQSXEg==", - "requires": { + "node_modules/vega-embed": { + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/vega-embed/-/vega-embed-6.21.3.tgz", + "integrity": "sha512-Aus0pD//D7mVxNARQnfODfQ7yy3Ys3ftDd8Keyh11AY09SCqIZcJOa+BstwBhp0bhNWKE7zv5KL0fxP5zePxbw==", + "bundleDependencies": [ + "yallist" + ], + "dependencies": { "fast-json-patch": "^3.1.1", "json-stringify-pretty-compact": "^3.0.0", - "semver": "^7.3.7", - "tslib": "^2.4.0", + "semver": "^7.3.8", + "tslib": "^2.5.0", "vega-interpreter": "^1.0.4", "vega-schema-url-parser": "^2.2.0", - "vega-themes": "^2.10.0", - "vega-tooltip": "^0.28.0", + "vega-themes": "^2.12.1", + "vega-tooltip": "^0.30.1", "yallist": "*" }, + "peerDependencies": { + "vega": "^5.21.0", + "vega-lite": "*" + } + }, + "node_modules/vega-embed/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "vega-encode": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.0.tgz", - "integrity": "sha512-etv2BHuCn9bzEc0cxyA2TnbtcAFQGVFmsaqmB4sgBCaqTSEfXMoX68LK3yxBrsdm5LU+y3otJVoewi3qWYCx2g==", - "requires": { - "d3-array": "^3.1.1", - "d3-interpolate": "^3.0.1", - "vega-dataflow": "^5.7.3", - "vega-scale": "^7.0.3", - "vega-util": "^1.15.2" + "node_modules/vega-embed/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vega-embed/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "inBundle": true + }, + "node_modules/vega-encode": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.1.tgz", + "integrity": "sha512-05JB47UZaqIBS9t6rtHI/aKjEuH4EsSIH+wJWItht4BFj33eIl4XRNtlXdE31uuQT2pXWz5ZWW3KboMuaFzKLw==", "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "requires": { - "d3-color": "1 - 3" - } - } + "d3-array": "^3.2.2", + "d3-interpolate": "^3.0.1", + "vega-dataflow": "^5.7.5", + "vega-scale": "^7.3.0", + "vega-util": "^1.17.1" } }, - "vega-event-selector": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.0.tgz", - "integrity": "sha512-Gls93/+7tEJGE3kUuUnxrBIxtvaNeF01VIFB2Q2Of2hBIBvtHX74jcAdDtkh5UhhoYGD8Q1J30P5cqEBEwtPoQ==" + "node_modules/vega-event-selector": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.1.tgz", + "integrity": "sha512-K5zd7s5tjr1LiOOkjGpcVls8GsH/f2CWCrWcpKy74gTCp+llCdwz0Enqo013ZlGaRNjfgD/o1caJRt3GSaec4A==" }, - "vega-expression": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.0.tgz", - "integrity": "sha512-y5+c2frq0tGwJ7vYXzZcfVcIRF/QGfhf2e+bV1Z0iQs+M2lI1II1GPDdmOcMKimpoCVp/D61KUJDIGE1DSmk2w==", - "requires": { - "@types/estree": "^0.0.50", - "vega-util": "^1.16.0" - }, + "node_modules/vega-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.0.1.tgz", + "integrity": "sha512-atfzrMekrcsuyUgZCMklI5ki8cV763aeo1Y6YrfYU7FBwcQEoFhIV/KAJ1vae51aPDGtfzvwbtVIo3WShFCP2Q==", "dependencies": { - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - } + "@types/estree": "^1.0.0", + "vega-util": "^1.17.1" } }, - "vega-force": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.0.tgz", - "integrity": "sha512-Sssf8iH48vYlz+E7/RpU+SUaJbuLoIL87U4tG2Av4gf/hRiImU49x2TI3EuhFWg1zpaCFxlz0CAaX++Oh/gjdw==", - "requires": { - "d3-force": "^3.0.0", - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" - }, + "node_modules/vega-force": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.1.1.tgz", + "integrity": "sha512-T6fJAUz9zdXf2qj2Hz0VlmdtaY7eZfcKNazhUV8hza4R3F9ug6r/hSrdovfc9ExmbUjL5iyvDUsf63r8K3/wVQ==", "dependencies": { - "d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - } - } + "d3-force": "^3.0.0", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" } }, - "vega-format": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", - "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", - "requires": { - "d3-array": "^3.1.1", + "node_modules/vega-format": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.1.tgz", + "integrity": "sha512-Rll7YgpYbsgaAa54AmtEWrxaJqgOh5fXlvM2wewO4trb9vwM53KBv4Q/uBWCLK3LLGeBXIF6gjDt2LFuJAUtkQ==", + "dependencies": { + "d3-array": "^3.2.2", "d3-format": "^3.1.0", "d3-time-format": "^4.1.0", - "vega-time": "^2.0.3", - "vega-util": "^1.15.2" - }, - "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" - }, - "d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "requires": { - "d3-time": "1 - 3" - } - } + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" } }, - "vega-functions": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.0.tgz", - "integrity": "sha512-Mf53zNyx+c9fFqagEI0T8zc9nMlx0zozOngr8oOpG1tZDKOgwOnUgN99zQKbLHjyv+UzWrq3LYTnSLyVe0ZmhQ==", - "requires": { - "d3-array": "^3.1.1", - "d3-color": "^3.0.1", - "d3-geo": "^3.0.1", - "vega-dataflow": "^5.7.3", - "vega-expression": "^5.0.0", - "vega-scale": "^7.2.0", - "vega-scenegraph": "^4.9.3", - "vega-selections": "^5.3.1", - "vega-statistics": "^1.7.9", - "vega-time": "^2.1.0", - "vega-util": "^1.16.0" - }, - "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" - }, - "d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "requires": { - "d3-array": "2.5.0 - 3" - } - } + "node_modules/vega-functions": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.1.tgz", + "integrity": "sha512-0LhntimnvBl4VzRO/nkCwCTbtaP8bE552galKQbCg88GDxdmcmlsoTCwUzG0vZ/qmNM3IbqnP5k5/um3zwFqLw==", + "dependencies": { + "d3-array": "^3.2.2", + "d3-color": "^3.1.0", + "d3-geo": "^3.1.0", + "vega-dataflow": "^5.7.5", + "vega-expression": "^5.0.1", + "vega-scale": "^7.3.0", + "vega-scenegraph": "^4.10.2", + "vega-selections": "^5.4.1", + "vega-statistics": "^1.8.1", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" } }, - "vega-geo": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.0.tgz", - "integrity": "sha512-3YX41y+J5pu0PMjvBCASg0/lgvu9+QXWJZ+vl6FFKa8AlsIopQ67ZL7ObwqjZcoZMolJ4q0rc+ZO8aj1pXCYcw==", - "requires": { - "d3-array": "^3.1.1", - "d3-color": "^3.0.1", - "d3-geo": "^3.0.1", - "vega-canvas": "^1.2.5", - "vega-dataflow": "^5.7.3", - "vega-projection": "^1.4.5", - "vega-statistics": "^1.7.9", - "vega-util": "^1.15.2" - }, + "node_modules/vega-geo": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.1.tgz", + "integrity": "sha512-s4WeZAL5M3ZUV27/eqSD3v0FyJz3PlP31XNSLFy4AJXHxHUeXT3qLiDHoVQnW5Om+uBCPDtTT1ROx1smGIf2aA==", "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" - }, - "d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "requires": { - "d3-array": "2.5.0 - 3" - } - } + "d3-array": "^3.2.2", + "d3-color": "^3.1.0", + "d3-geo": "^3.1.0", + "vega-canvas": "^1.2.7", + "vega-dataflow": "^5.7.5", + "vega-projection": "^1.6.0", + "vega-statistics": "^1.8.1", + "vega-util": "^1.17.1" } }, - "vega-hierarchy": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.0.tgz", - "integrity": "sha512-DWBK39IEt4FiQru12twzKSFUvFFZ7KtlH9+lAaqrJnKuIZFCyQ1XOUfKScfbKIlk4KS+DuCTNLI/pxC/f7Sk9Q==", - "requires": { - "d3-hierarchy": "^3.1.0", - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" - }, + "node_modules/vega-hierarchy": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.1.tgz", + "integrity": "sha512-h5mbrDtPKHBBQ9TYbvEb/bCqmGTlUX97+4CENkyH21tJs7naza319B15KRK0NWOHuhbGhFmF8T0696tg+2c8XQ==", "dependencies": { - "d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" - } + "d3-hierarchy": "^3.1.2", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" } }, - "vega-interpreter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vega-interpreter/-/vega-interpreter-1.0.4.tgz", - "integrity": "sha512-6tpYIa/pJz0cZo5fSxDSkZkAA51pID2LjOtQkOQvbzn+sJiCaWKPFhur8MBqbcmYZ9bnap1OYNwlrvpd2qBLvg==" + "node_modules/vega-hierarchy/node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } }, - "vega-label": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.0.tgz", - "integrity": "sha512-1prOqkCAfXaUvMqavbGI0nbYGqV8UQR9qvuVwrPJ6Yxm3GIUIOA/JRqNY8eZR8USwMP/kzsqlfVEixj9+Y75VQ==", - "requires": { + "node_modules/vega-interpreter": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/vega-interpreter/-/vega-interpreter-1.0.5.tgz", + "integrity": "sha512-po6oTOmeQqr1tzTCdD15tYxAQLeUnOVirAysgVEemzl+vfmvcEP7jQmlc51jz0jMA+WsbmE6oJywisQPu/H0Bg==" + }, + "node_modules/vega-label": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.1.tgz", + "integrity": "sha512-n/ackJ5lc0Xs9PInCaGumYn2awomPjJ87EMVT47xNgk2bHmJoZV1Ve/1PUM6Eh/KauY211wPMrNp/9Im+7Ripg==", + "dependencies": { "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" } }, - "vega-lite": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-5.6.0.tgz", - "integrity": "sha512-aTjQk//SzL9ctHY4ItA8yZSGflHMWPJmCXEs8LeRlixuOaAbamZmeL8xNMbQpS/vAZQeFAqjcJ32Fuztz/oGww==", - "requires": { + "node_modules/vega-lite": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-5.6.1.tgz", + "integrity": "sha512-Dij2OkJcmK+/2pIcLambjV/vWmhP11ypL3YqDVryBfJxP1m+ZgZU+8/SOEP3B2R1MhmmT7JDYQUtiNcGi1/2ig==", + "dependencies": { "@types/clone": "~2.1.1", "clone": "~2.1.2", "fast-deep-equal": "~3.1.3", "fast-json-stable-stringify": "~2.1.0", "json-stringify-pretty-compact": "~3.0.0", - "tslib": "~2.4.0", + "tslib": "~2.5.0", "vega-event-selector": "~3.0.0", "vega-expression": "~5.0.0", "vega-util": "~1.17.0", - "yargs": "~17.6.0" + "yargs": "~17.6.2" + }, + "bin": { + "vl2pdf": "bin/vl2pdf", + "vl2png": "bin/vl2png", + "vl2svg": "bin/vl2svg", + "vl2vg": "bin/vl2vg" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "vega": "^5.22.0" } }, - "vega-loader": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", - "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", - "requires": { + "node_modules/vega-lite/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/vega-lite/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/vega-loader": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.1.tgz", + "integrity": "sha512-qy5x32SaT0YkEujQM2yKqvLGV9XWQ2aEDSugBFTdYzu/1u4bxdUSRDREOlrJ9Km3RWIOgFiCkobPmFxo47SKuA==", + "dependencies": { "d3-dsv": "^3.0.1", "node-fetch": "^2.6.7", "topojson-client": "^3.1.0", - "vega-format": "^1.1.0", - "vega-util": "^1.16.0" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } + "vega-format": "^1.1.1", + "vega-util": "^1.17.1" } }, - "vega-parser": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.1.4.tgz", - "integrity": "sha512-tORdpWXiH/kkXcpNdbSVEvtaxBuuDtgYp9rBunVW9oLsjFvFXbSWlM1wvJ9ZFSaTfx6CqyTyGMiJemmr1QnTjQ==", - "requires": { - "vega-dataflow": "^5.7.3", - "vega-event-selector": "^3.0.0", - "vega-functions": "^5.12.1", - "vega-scale": "^7.1.1", - "vega-util": "^1.16.0" + "node_modules/vega-parser": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.2.0.tgz", + "integrity": "sha512-as+QnX8Qxe9q51L1C2sVBd+YYYctP848+zEvkBT2jlI2g30aZ6Uv7sKsq7QTL6DUbhXQKR0XQtzlanckSFdaOQ==", + "dependencies": { + "vega-dataflow": "^5.7.5", + "vega-event-selector": "^3.0.1", + "vega-functions": "^5.13.1", + "vega-scale": "^7.3.0", + "vega-util": "^1.17.1" } }, - "vega-projection": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.5.0.tgz", - "integrity": "sha512-aob7qojh555x3hQWZ/tr8cIJNSWQbm6EoWTJaheZgFOY2x3cDa4Qrg3RJbGw6KwVj/IQk2p40paRzixKZ2kr+A==", - "requires": { - "d3-geo": "^3.0.1", - "d3-geo-projection": "^4.0.0" - }, - "dependencies": { - "d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "requires": { - "d3-array": "2.5.0 - 3" - } - } + "node_modules/vega-projection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.6.0.tgz", + "integrity": "sha512-LGUaO/kpOEYuTlul+x+lBzyuL9qmMwP1yShdUWYLW+zXoeyGbs5OZW+NbPPwLYqJr5lpXDr/vGztFuA/6g2xvQ==", + "dependencies": { + "d3-geo": "^3.1.0", + "d3-geo-projection": "^4.0.0", + "vega-scale": "^7.3.0" } }, - "vega-regression": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.0.tgz", - "integrity": "sha512-09K0RemY6cdaXBAyakDUNFfEkRcLkGjkDJyWQPAUqGK59hV2J+G3i4uxkZp18Vu0t8oqU7CgzwWim1s5uEpOcA==", - "requires": { - "d3-array": "^3.1.1", + "node_modules/vega-regression": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.1.1.tgz", + "integrity": "sha512-98i/z0vdDhOIEhJUdYoJ2nlfVdaHVp2CKB39Qa7G/XyRw0+QwDFFrp8ZRec2xHjHfb6bYLGNeh1pOsC13FelJg==", + "dependencies": { + "d3-array": "^3.2.2", "vega-dataflow": "^5.7.3", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" - }, - "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - } } }, - "vega-runtime": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/vega-runtime/-/vega-runtime-6.1.3.tgz", - "integrity": "sha512-gE+sO2IfxMUpV0RkFeQVnHdmPy3K7LjHakISZgUGsDI/ZFs9y+HhBf8KTGSL5pcZPtQsZh3GBQ0UonqL1mp9PA==", - "requires": { - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" + "node_modules/vega-runtime": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/vega-runtime/-/vega-runtime-6.1.4.tgz", + "integrity": "sha512-0dDYXyFLQcxPQ2OQU0WuBVYLRZnm+/CwVu6i6N4idS7R9VXIX5581EkCh3pZ20pQ/+oaA7oJ0pR9rJgJ6rukRQ==", + "dependencies": { + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" } }, - "vega-scale": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.2.0.tgz", - "integrity": "sha512-QYltO/otrZHLrCGGf06Y99XtPtqWXITr6rw7rO9oL+l3d9o5RFl9sjHrVxiM7v+vGoZVWbBd5IPbFhPsXZ6+TA==", - "requires": { - "d3-array": "^3.1.1", + "node_modules/vega-scale": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.3.0.tgz", + "integrity": "sha512-pMOAI2h+e1z7lsqKG+gMfR6NKN2sTcyjZbdJwntooW0uFHwjLGjMSY7kSd3nSEquF0HQ8qF7zR6gs1eRwlGimw==", + "dependencies": { + "d3-array": "^3.2.2", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", - "vega-time": "^2.1.0", - "vega-util": "^1.17.0" - }, - "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "requires": { - "d3-color": "1 - 3" - } - }, - "d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "requires": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - } - } + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" } }, - "vega-scenegraph": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.1.tgz", - "integrity": "sha512-takIpkmNxYHhJYALOYzhTin3EDzbys6U4g+l1yJZVlXG9YTdiCMuEVAdtaQOCqF9/7qytD6pCrMxJY2HaoN0qQ==", - "requires": { - "d3-path": "^3.0.1", - "d3-shape": "^3.1.0", - "vega-canvas": "^1.2.5", - "vega-loader": "^4.4.0", - "vega-scale": "^7.2.0", - "vega-util": "^1.15.2" - }, + "node_modules/vega-scenegraph": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.2.tgz", + "integrity": "sha512-R8m6voDZO5+etwNMcXf45afVM3XAtokMqxuDyddRl9l1YqSJfS+3u8hpolJ50c2q6ZN20BQiJwKT1o0bB7vKkA==", "dependencies": { - "d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" - }, - "d3-shape": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", - "requires": { - "d3-path": "1 - 3" - } - } + "d3-path": "^3.1.0", + "d3-shape": "^3.2.0", + "vega-canvas": "^1.2.7", + "vega-loader": "^4.5.1", + "vega-scale": "^7.3.0", + "vega-util": "^1.17.1" } }, - "vega-schema-url-parser": { + "node_modules/vega-schema-url-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/vega-schema-url-parser/-/vega-schema-url-parser-2.2.0.tgz", "integrity": "sha512-yAtdBnfYOhECv9YC70H2gEiqfIbVkq09aaE4y/9V/ovEFmH9gPKaEgzIZqgT7PSPQjKhsNkb6jk6XvSoboxOBw==" }, - "vega-selections": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.4.0.tgz", - "integrity": "sha512-Un3JdLDPjIpF9Dh4sw6m1c/QAcfam6m1YXHJ9vJxE/GdJ+sOrPxc7bcEU8VhOmTUN7IQUn4/1ry4JqqOVMbEhw==", - "requires": { - "d3-array": "3.1.1", - "vega-expression": "^5.0.0", - "vega-util": "^1.16.0" - }, - "dependencies": { - "d3-array": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", - "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", - "requires": { - "internmap": "1 - 2" - } - } + "node_modules/vega-selections": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.4.1.tgz", + "integrity": "sha512-EtYc4DvA+wXqBg9tq+kDomSoVUPCmQfS7hUxy2qskXEed79YTimt3Hcl1e1fW226I4AVDBEqTTKebmKMzbSgAA==", + "dependencies": { + "d3-array": "3.2.2", + "vega-expression": "^5.0.1", + "vega-util": "^1.17.1" } }, - "vega-statistics": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.0.tgz", - "integrity": "sha512-dl+LCRS6qS4jWDme/NEdPVt5r649uB4IK6Kyr2/czmGA5JqjuFmtQ9lHQOnRu8945XLkqLf+JIQQo7vnw+nslA==", - "requires": { - "d3-array": "^3.1.1" - }, - "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - } + "node_modules/vega-statistics": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.8.1.tgz", + "integrity": "sha512-eRR3LZBusnTXUkc/uunAvWi1PjCJK+Ba4vFvEISc5Iv5xF4Aw2cBhEz1obEt6ID5fGVCTAl0E1LOSFxubS89hQ==", + "dependencies": { + "d3-array": "^3.2.2" } }, - "vega-themes": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.12.0.tgz", - "integrity": "sha512-gHNYCzDgexSQDmGzQsxH57OYgFVbAOmvhIYN3MPOvVucyI+zhbUawBVIVNzG9ftucRp0MaaMVXi6ctC5HLnBsg==", - "requires": {} + "node_modules/vega-themes": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.12.1.tgz", + "integrity": "sha512-tedbkKx+5fKBR3W1R1rOpLeUxdbovm7CE8ygUNqH6HfBChBafUzdoxEmr6ZLv2c+ouPX6T/fuvaT78wZVqpwTA==", + "peerDependencies": { + "vega": "*", + "vega-lite": "*" + } }, - "vega-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", - "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", - "requires": { - "d3-array": "^3.1.1", - "d3-time": "^3.0.0", - "vega-util": "^1.15.2" - }, + "node_modules/vega-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.1.tgz", + "integrity": "sha512-z1qbgyX0Af2kQSGFbApwBbX2meenGvsoX8Nga8uyWN8VIbiySo/xqizz1KrP6NbB6R+x5egKmkjdnyNThPeEWA==", "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "requires": { - "d3-array": "2 - 3" - } - } + "d3-array": "^3.2.2", + "d3-time": "^3.1.0", + "vega-util": "^1.17.1" } }, - "vega-tooltip": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/vega-tooltip/-/vega-tooltip-0.28.0.tgz", - "integrity": "sha512-DbK0V5zzk+p9cphZZXV91ZGeKq0zr6JIS0VndUoGTisldzw4tRgmpGQcTfMjew53o7/voeTM2ELTnJAJRzX4tg==", - "requires": { + "node_modules/vega-tooltip": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/vega-tooltip/-/vega-tooltip-0.30.1.tgz", + "integrity": "sha512-h+IlI8/07scB1RGXkO9snNorAlgugE7dH+4LNNVaycgJgScMZYluQB6J+BcaWf/OAj3pLV2OlyED2kfz3CgH2w==", + "dependencies": { "vega-util": "^1.17.0" } }, - "vega-transforms": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.0.tgz", - "integrity": "sha512-Yk6ByzVq5F2niFfPlSsrU5wi+NZhsF7IBpJCcTfms4U7eoyNepUXagdFEJ3VWBD/Lit6GorLXFgO17NYcyS5gg==", - "requires": { - "d3-array": "^3.1.1", - "vega-dataflow": "^5.7.4", - "vega-statistics": "^1.8.0", - "vega-time": "^2.1.0", - "vega-util": "^1.16.1" - }, - "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - } + "node_modules/vega-transforms": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.1.tgz", + "integrity": "sha512-0uWrUZaYl8kjWrGbvPOQSKk6kcNXQFY9moME+bUmkADAvFptphCGbaEIn/nSsG6uCxj8E3rqKmKfjSWdU5yOqA==", + "dependencies": { + "d3-array": "^3.2.2", + "vega-dataflow": "^5.7.5", + "vega-statistics": "^1.8.1", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" } }, - "vega-typings": { - "version": "0.22.3", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.22.3.tgz", - "integrity": "sha512-PREcya3nXT9Tk7xU0IhEpOLVTlqizNtKXV55NhI6ApBjJtqVYbJL7IBh2ckKxGBy3YeUQ37BQZl56UqqiYVWBw==", - "requires": { - "vega-event-selector": "^3.0.0", - "vega-expression": "^5.0.0", - "vega-util": "^1.15.2" + "node_modules/vega-typings": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.23.0.tgz", + "integrity": "sha512-10ZRRGoUZoQLS5jMiIFhSZMDc3UkPhDP2VMUN/oHZXElvPCGjfjvgmiC6XzvvN4sRXdccMcZX1lZPoyYPERVkA==", + "dependencies": { + "@types/geojson": "^7946.0.10", + "vega-event-selector": "^3.0.1", + "vega-expression": "^5.0.1", + "vega-util": "^1.17.1" } }, - "vega-util": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", - "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" - }, - "vega-view": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.0.tgz", - "integrity": "sha512-MI9NTRFmtFX6ADk6KOHhi8bhHjC9pPm42Bj2+74c6l1d3NQZf9Jv7lkiGqKohdkQDNH9LPwz/6slhKwPU9JdkQ==", - "requires": { - "d3-array": "^3.1.1", + "node_modules/vega-util": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.1.tgz", + "integrity": "sha512-ToPkWoBdP6awoK+bnYaFhgdqZhsNwKxWbuMnFell+4K/Cb6Q1st5Pi9I7iI5Y6n5ZICDDsd6eL7/IhBjEg1NUQ==" + }, + "node_modules/vega-view": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.1.tgz", + "integrity": "sha512-RoWxuoEMI7xVQJhPqNeLEHCezudsf3QkVMhH5tCovBqwBADQGqq9iWyax3ZzdyX1+P3eBgm7cnLvpqtN2hU8kA==", + "dependencies": { + "d3-array": "^3.2.2", "d3-timer": "^3.0.1", - "vega-dataflow": "^5.7.3", - "vega-format": "^1.1.0", - "vega-functions": "^5.13.0", - "vega-runtime": "^6.1.3", - "vega-scenegraph": "^4.10.0", - "vega-util": "^1.16.1" - }, - "dependencies": { - "d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" - } + "vega-dataflow": "^5.7.5", + "vega-format": "^1.1.1", + "vega-functions": "^5.13.1", + "vega-runtime": "^6.1.4", + "vega-scenegraph": "^4.10.2", + "vega-util": "^1.17.1" } }, - "vega-view-transforms": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/vega-view-transforms/-/vega-view-transforms-4.5.8.tgz", - "integrity": "sha512-966m7zbzvItBL8rwmF2nKG14rBp7q+3sLCKWeMSUrxoG+M15Smg5gWEGgwTG3A/RwzrZ7rDX5M1sRaAngRH25g==", - "requires": { - "vega-dataflow": "^5.7.3", - "vega-scenegraph": "^4.9.2", - "vega-util": "^1.15.2" + "node_modules/vega-view-transforms": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/vega-view-transforms/-/vega-view-transforms-4.5.9.tgz", + "integrity": "sha512-NxEq4ZD4QwWGRrl2yDLnBRXM9FgCI+vvYb3ZC2+nVDtkUxOlEIKZsMMw31op5GZpfClWLbjCT3mVvzO2xaTF+g==", + "dependencies": { + "vega-dataflow": "^5.7.5", + "vega-scenegraph": "^4.10.2", + "vega-util": "^1.17.1" } }, - "vega-voronoi": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.0.tgz", - "integrity": "sha512-1iuNAVZgUHRlBpdq4gSga3KlQmrgFfwy+KpyDgPLQ8HbLkhcVeT7RDh2L6naluqD7Op0xVLms3clR920WsYryQ==", - "requires": { - "d3-delaunay": "^6.0.2", - "vega-dataflow": "^5.7.3", - "vega-util": "^1.15.2" - }, + "node_modules/vega-voronoi": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.1.tgz", + "integrity": "sha512-zzi+fxU/SBad4irdLLsG3yhZgXWZezraGYVQfZFWe8kl7W/EHUk+Eqk/eetn4bDeJ6ltQskX+UXH3OP5Vh0Q0Q==", "dependencies": { - "d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "requires": { - "delaunator": "5" - } - }, - "delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "requires": { - "robust-predicates": "^3.0.0" - } - } + "d3-delaunay": "^6.0.2", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" } }, - "vega-wordcloud": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vega-wordcloud/-/vega-wordcloud-4.1.3.tgz", - "integrity": "sha512-is4zYn9FMAyp9T4SAcz2P/U/wqc0Lx3P5YtpWKCbOH02a05vHjUQrQ2TTPOuvmMfAEDCSKvbMSQIJMOE018lJA==", - "requires": { - "vega-canvas": "^1.2.5", - "vega-dataflow": "^5.7.3", - "vega-scale": "^7.1.1", - "vega-statistics": "^1.7.9", - "vega-util": "^1.15.2" + "node_modules/vega-wordcloud": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/vega-wordcloud/-/vega-wordcloud-4.1.4.tgz", + "integrity": "sha512-oeZLlnjiusLAU5vhk0IIdT5QEiJE0x6cYoGNq1th+EbwgQp153t4r026fcib9oq15glHFOzf81a8hHXHSJm1Jw==", + "dependencies": { + "vega-canvas": "^1.2.7", + "vega-dataflow": "^5.7.5", + "vega-scale": "^7.3.0", + "vega-statistics": "^1.8.1", + "vega-util": "^1.17.1" } }, - "verror": { + "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, - "requires": { + "engines": [ + "node >=0.6.0" + ], + "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, - "vue": { + "node_modules/vue": { "version": "2.7.14", "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", - "requires": { + "dependencies": { "@vue/compiler-sfc": "2.7.14", "csstype": "^3.1.0" } }, - "vue-script2": { + "node_modules/vue-script2": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/vue-script2/-/vue-script2-2.1.0.tgz", "integrity": "sha512-EDUOjQBFvhkJXwmWuUR9ijlF7/4JtmvjXSKaHSa/LNTMy9ltjgKgYB68aqlxgq8ORdSxowd5eo24P1syjZJnBA==" }, - "w3c-keyname": { + "node_modules/w3c-keyname": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==" }, - "watchpack": { + "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "requires": { + "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, - "webpack": { + "node_modules/webpack": { "version": "5.75.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", - "requires": { + "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", @@ -23246,41 +12688,28 @@ "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, - "dependencies": { - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true } } }, - "webpack-cli": { + "node_modules/webpack-cli": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, - "requires": { + "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", "@webpack-cli/info": "^1.5.0", @@ -23294,133 +12723,260 @@ "rechoir": "^0.7.0", "webpack-merge": "^5.7.3" }, - "dependencies": { - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true + "webpack-dev-server": { + "optional": true } } }, - "webpack-manifest-plugin": { + "node_modules/webpack-cli/node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-manifest-plugin": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-5.0.0.tgz", "integrity": "sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw==", - "requires": { + "dependencies": { "tapable": "^2.0.0", "webpack-sources": "^2.2.0" }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", "dependencies": { - "webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - } - } + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" } }, - "webpack-merge": { + "node_modules/webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, - "requires": { + "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" } }, - "webpack-sources": { + "node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "node_modules/webpack/node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "which": { + "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "which-boxed-primitive": { + "node_modules/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "requires": { + "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "wide-align": { + "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, - "requires": { + "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "wildcard": { + "node_modules/wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, - "word-wrap": { + "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } }, - "workbox-background-sync": { + "node_modules/workbox-background-sync": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", "dev": true, - "requires": { + "dependencies": { "idb": "^7.0.1", "workbox-core": "6.5.4" } }, - "workbox-broadcast-update": { + "node_modules/workbox-broadcast-update": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", "dev": true, - "requires": { + "dependencies": { "workbox-core": "6.5.4" } }, - "workbox-build": { + "node_modules/workbox-build": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", "dev": true, - "requires": { + "dependencies": { "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.11.1", "@babel/preset-env": "^7.11.0", @@ -23459,119 +13015,159 @@ "workbox-sw": "6.5.4", "workbox-window": "6.5.4" }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dev": true, "dependencies": { - "@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "dev": true, - "requires": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - } - }, - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "requires": { - "whatwg-url": "^7.0.0" - } - } + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, - "workbox-cacheable-response": { + "node_modules/workbox-cacheable-response": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", "dev": true, - "requires": { + "dependencies": { "workbox-core": "6.5.4" } }, - "workbox-core": { + "node_modules/workbox-core": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==", "dev": true }, - "workbox-expiration": { + "node_modules/workbox-expiration": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", "dev": true, - "requires": { + "dependencies": { "idb": "^7.0.1", "workbox-core": "6.5.4" } }, - "workbox-google-analytics": { + "node_modules/workbox-google-analytics": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", "dev": true, - "requires": { + "dependencies": { "workbox-background-sync": "6.5.4", "workbox-core": "6.5.4", "workbox-routing": "6.5.4", "workbox-strategies": "6.5.4" } }, - "workbox-navigation-preload": { + "node_modules/workbox-navigation-preload": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", "dev": true, - "requires": { + "dependencies": { "workbox-core": "6.5.4" } }, - "workbox-precaching": { + "node_modules/workbox-precaching": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", "dev": true, - "requires": { + "dependencies": { "workbox-core": "6.5.4", "workbox-routing": "6.5.4", "workbox-strategies": "6.5.4" } }, - "workbox-range-requests": { + "node_modules/workbox-range-requests": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", "dev": true, - "requires": { + "dependencies": { "workbox-core": "6.5.4" } }, - "workbox-recipes": { + "node_modules/workbox-recipes": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", "dev": true, - "requires": { + "dependencies": { "workbox-cacheable-response": "6.5.4", "workbox-core": "6.5.4", "workbox-expiration": "6.5.4", @@ -23580,139 +13176,167 @@ "workbox-strategies": "6.5.4" } }, - "workbox-routing": { + "node_modules/workbox-routing": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", "dev": true, - "requires": { + "dependencies": { "workbox-core": "6.5.4" } }, - "workbox-strategies": { + "node_modules/workbox-strategies": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", "dev": true, - "requires": { + "dependencies": { "workbox-core": "6.5.4" } }, - "workbox-streams": { + "node_modules/workbox-streams": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", "dev": true, - "requires": { + "dependencies": { "workbox-core": "6.5.4", "workbox-routing": "6.5.4" } }, - "workbox-sw": { + "node_modules/workbox-sw": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==", "dev": true }, - "workbox-webpack-plugin": { + "node_modules/workbox-webpack-plugin": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", "dev": true, - "requires": { + "dependencies": { "fast-json-stable-stringify": "^2.1.0", "pretty-bytes": "^5.4.1", "upath": "^1.2.0", "webpack-sources": "^1.4.3", "workbox-build": "6.5.4" }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, "dependencies": { - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, - "workbox-window": { + "node_modules/workbox-window": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", "dev": true, - "requires": { + "dependencies": { "@types/trusted-types": "^2.0.2", "workbox-core": "6.5.4" } }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "wrappy": { + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "xtend": { + "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } }, - "y18n": { + "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, - "yaml": { + "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 6" + } }, - "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "requires": { + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", @@ -23721,26 +13345,34 @@ "y18n": "^5.0.5", "yargs-parser": "^21.1.1" }, - "dependencies": { - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - } + "engines": { + "node": ">=12" } }, - "yargs-parser": { + "node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } }, - "yauzl": { + "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, - "requires": { + "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } diff --git a/requirements.in b/requirements/base.in similarity index 79% rename from requirements.in rename to requirements/base.in index a051e2150..2abc004ad 100644 --- a/requirements.in +++ b/requirements/base.in @@ -1,15 +1,15 @@ +-e file:./build/dependencies/baseframe +-e file:./build/dependencies/coaster alembic argon2-cffi Babel base58 -git+https://github.com/hasgeek/baseframe.git#egg=baseframe bcrypt better_profanity!=0.7.0 # https://github.com/snguyenthanh/better_profanity/issues/19 blinker Brotli chevron click -git+https://github.com/hasgeek/coaster.git#egg=coaster cryptography dataclasses-json fabric3 @@ -29,10 +29,10 @@ geoip2 greenlet html2text icalendar -idna>=2.5 +idna itsdangerous<2.1.0 # https://github.com/pallets/itsdangerous/pull/273 js2py -jsmin>=3.0.0 +jsmin linkify-it-py Markdown markdown-it-py @@ -56,7 +56,7 @@ qrcode requests rich rq -SQLAlchemy>=1.4.33 +SQLAlchemy sqlalchemy-json SQLAlchemy-Utils toml @@ -64,6 +64,6 @@ tweepy twilio typing-extensions user-agents -werkzeug>=2.0.2 # https://github.com/pallets/werkzeug/pull/2237 +werkzeug whitenoise zxcvbn diff --git a/requirements.txt b/requirements/base.txt similarity index 73% rename from requirements.txt rename to requirements/base.txt index 7f7151818..8d82bd6c0 100644 --- a/requirements.txt +++ b/requirements/base.txt @@ -1,9 +1,16 @@ +# SHA1:87537613ba4f34ca5f6e28e02432eb68315d15ed # -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: +# This file is autogenerated by pip-compile-multi +# To update, run: # -# pip-compile --output-file=requirements.txt --resolver=backtracking requirements.in +# pip-compile-multi # +-e file:./build/dependencies/baseframe + # via -r requirements/base.in +-e file:./build/dependencies/coaster + # via + # -r requirements/base.in + # baseframe aiohttp==3.8.4 # via # geoip2 @@ -12,12 +19,12 @@ aiosignal==1.3.1 # via aiohttp alembic==1.9.4 # via - # -r requirements.in + # -r requirements/base.in # flask-migrate aniso8601==9.0.1 # via coaster argon2-cffi==21.3.0 - # via -r requirements.in + # via -r requirements/base.in argon2-cffi-bindings==21.2.0 # via argon2-cffi async-timeout==4.0.2 @@ -26,32 +33,30 @@ async-timeout==4.0.2 # redis attrs==22.2.0 # via aiohttp -babel==2.11.0 +babel==2.12.1 # via - # -r requirements.in + # -r requirements/base.in # flask-babel base58==2.1.1 # via - # -r requirements.in + # -r requirements/base.in # coaster -baseframe @ git+https://github.com/hasgeek/baseframe.git - # via -r requirements.in bcrypt==4.0.1 # via - # -r requirements.in + # -r requirements/base.in # paramiko better-profanity==0.6.1 - # via -r requirements.in + # via -r requirements/base.in bleach==6.0.0 # via # baseframe # coaster blinker==1.5 # via - # -r requirements.in + # -r requirements/base.in # coaster brotli==1.0.9 - # via -r requirements.in + # via -r requirements/base.in cachelib==0.9.0 # via flask-caching cachetools==5.3.0 @@ -70,22 +75,18 @@ charset-normalizer==3.0.1 # aiohttp # requests chevron==0.14.0 - # via -r requirements.in + # via -r requirements/base.in click==8.1.3 # via - # -r requirements.in + # -r requirements/base.in # flask # nltk # rq -coaster @ git+https://github.com/hasgeek/coaster.git - # via - # -r requirements.in - # baseframe -croniter==1.3.8 +crontab==1.0.0 # via rq-scheduler cryptography==39.0.1 # via - # -r requirements.in + # -r requirements/base.in # paramiko # pyopenssl cssmin==0.2.0 @@ -95,7 +96,7 @@ cssselect==1.2.0 cssutils==2.6.0 # via premailer dataclasses-json==0.5.7 - # via -r requirements.in + # via -r requirements/base.in dnspython==2.3.0 # via # baseframe @@ -104,12 +105,12 @@ dnspython==2.3.0 emoji==2.2.0 # via baseframe fabric3==1.14.post1 - # via -r requirements.in + # via -r requirements/base.in filelock==3.9.0 # via tldextract flask==2.2.3 # via - # -r requirements.in + # -r requirements/base.in # baseframe # coaster # flask-assets @@ -125,57 +126,59 @@ flask==2.2.3 # flask-wtf flask-assets==2.0 # via - # -r requirements.in + # -r requirements/base.in # baseframe # coaster flask-babel==3.0.1 # via - # -r requirements.in + # -r requirements/base.in # baseframe flask-caching==2.0.2 # via baseframe flask-executor==1.0.0 - # via -r requirements.in + # via -r requirements/base.in flask-flatpages==0.8.1 - # via -r requirements.in + # via -r requirements/base.in flask-mailman==0.3.0 - # via -r requirements.in + # via -r requirements/base.in flask-migrate==4.0.4 # via - # -r requirements.in + # -r requirements/base.in # coaster flask-redis==0.4.0 - # via -r requirements.in + # via -r requirements/base.in flask-rq2==18.3 - # via -r requirements.in + # via -r requirements/base.in flask-sqlalchemy==3.0.3 # via - # -r requirements.in + # -r requirements/base.in # coaster # flask-migrate flask-wtf==1.1.1 # via - # -r requirements.in + # -r requirements/base.in # baseframe +freezegun==1.2.2 + # via rq-scheduler frozenlist==1.3.3 # via # aiohttp # aiosignal furl==2.1.3 # via - # -r requirements.in + # -r requirements/base.in # baseframe # coaster future==0.18.3 # via tuspy geoip2==4.6.0 - # via -r requirements.in + # via -r requirements/base.in grapheme==0.6.0 # via baseframe greenlet==2.0.2 - # via -r requirements.in + # via -r requirements/base.in html2text==2020.1.16 - # via -r requirements.in + # via -r requirements/base.in html5lib==1.1 # via # baseframe @@ -185,10 +188,10 @@ httplib2==0.21.0 # oauth2 # oauth2client icalendar==5.0.4 - # via -r requirements.in + # via -r requirements/base.in idna==3.4 # via - # -r requirements.in + # -r requirements/base.in # requests # tldextract # yarl @@ -200,7 +203,7 @@ isoweek==1.3.3 # via coaster itsdangerous==2.0.1 # via - # -r requirements.in + # -r requirements/base.in # flask # flask-wtf jinja2==3.1.2 @@ -211,24 +214,24 @@ jinja2==3.1.2 joblib==1.2.0 # via nltk js2py==0.74 - # via -r requirements.in + # via -r requirements/base.in jsmin==3.0.1 - # via -r requirements.in + # via -r requirements/base.in linkify-it-py==2.0.0 - # via -r requirements.in + # via -r requirements/base.in lxml==4.9.2 # via premailer mako==1.2.4 # via alembic markdown==3.4.1 # via - # -r requirements.in + # -r requirements/base.in # coaster # flask-flatpages # pymdown-extensions markdown-it-py==2.2.0 # via - # -r requirements.in + # -r requirements/base.in # mdit-py-plugins # rich markupsafe==2.1.2 @@ -248,7 +251,7 @@ marshmallow-enum==1.5.1 maxminddb==2.2.0 # via geoip2 mdit-py-plugins==0.3.4 - # via -r requirements.in + # via -r requirements/base.in mdurl==0.1.2 # via markdown-it-py mkdocs-material-extensions==1.1.1 @@ -266,9 +269,9 @@ ndg-httpsclient==0.5.1 nltk==3.8.1 # via coaster oauth2==1.9.0.post1 - # via -r requirements.in + # via -r requirements/base.in oauth2client==4.1.3 - # via -r requirements.in + # via -r requirements/base.in oauthlib==3.2.2 # via # requests-oauthlib @@ -280,15 +283,15 @@ packaging==23.0 paramiko==2.12.0 # via fabric3 passlib==1.7.4 - # via -r requirements.in + # via -r requirements/base.in phonenumbers==8.13.6 - # via -r requirements.in + # via -r requirements/base.in premailer==3.10.0 - # via -r requirements.in + # via -r requirements/base.in progressbar2==4.2.0 - # via -r requirements.in + # via -r requirements/base.in psycopg2-binary==2.9.5 - # via -r requirements.in + # via -r requirements/base.in pyasn1==0.4.8 # via # baseframe @@ -300,7 +303,7 @@ pyasn1-modules==0.2.8 # via oauth2client pycountry==22.3.5 # via - # -r requirements.in + # -r requirements/base.in # baseframe pycparser==2.21 # via cffi @@ -308,11 +311,11 @@ pyexecjs==1.5.1 # via coaster pygments==2.14.0 # via - # -r requirements.in + # -r requirements/base.in # rich pyisemail==2.0.1 # via - # -r requirements.in + # -r requirements/base.in # baseframe # mxsniff pyjsparser==2.7.1 @@ -321,7 +324,7 @@ pyjwt==2.6.0 # via twilio pymdown-extensions==9.9.2 # via - # -r requirements.in + # -r requirements/base.in # coaster pynacl==1.5.0 # via paramiko @@ -335,19 +338,18 @@ pypng==0.20220715.0 # via qrcode python-dateutil==2.8.2 # via - # -r requirements.in + # -r requirements/base.in # baseframe - # croniter + # freezegun # icalendar # rq-scheduler python-dotenv==0.21.1 - # via -r requirements.in + # via -r requirements/base.in python-utils==3.5.2 # via progressbar2 pytz==2022.7.1 # via - # -r requirements.in - # babel + # -r requirements/base.in # baseframe # coaster # flask-babel @@ -356,11 +358,11 @@ pytz==2022.7.1 pytz-deprecation-shim==0.1.0.post0 # via tzlocal pyvimeo==1.1.0 - # via -r requirements.in + # via -r requirements/base.in pyyaml==6.0 # via flask-flatpages qrcode==7.4.2 - # via -r requirements.in + # via -r requirements/base.in redis==4.5.1 # via # baseframe @@ -371,7 +373,7 @@ regex==2022.10.31 # via nltk requests==2.28.2 # via - # -r requirements.in + # -r requirements/base.in # baseframe # geoip2 # premailer @@ -390,14 +392,14 @@ requests-mock==1.10.0 requests-oauthlib==1.3.1 # via tweepy rich==13.3.1 - # via -r requirements.in + # via -r requirements/base.in rq==1.13.0 # via - # -r requirements.in + # -r requirements/base.in # baseframe # flask-rq2 # rq-scheduler -rq-scheduler==0.11.0 +rq-scheduler==0.13.0 # via flask-rq2 rsa==4.9 # via oauth2client @@ -405,7 +407,7 @@ semantic-version==2.10.0 # via # baseframe # coaster -sentry-sdk==1.15.0 +sentry-sdk==1.16.0 # via baseframe six==1.16.0 # via @@ -427,7 +429,7 @@ six==1.16.0 # tuspy sqlalchemy==2.0.4 # via - # -r requirements.in + # -r requirements/base.in # alembic # coaster # flask-sqlalchemy @@ -435,10 +437,10 @@ sqlalchemy==2.0.4 # sqlalchemy-utils # wtforms-sqlalchemy sqlalchemy-json==0.5.0 - # via -r requirements.in + # via -r requirements/base.in sqlalchemy-utils==0.40.0 # via - # -r requirements.in + # -r requirements/base.in # coaster statsd==4.0.1 # via baseframe @@ -449,18 +451,18 @@ tldextract==3.4.0 # coaster # mxsniff toml==0.10.2 - # via -r requirements.in + # via -r requirements/base.in tqdm==4.64.1 # via nltk tuspy==1.0.0 # via pyvimeo tweepy==4.12.1 - # via -r requirements.in + # via -r requirements/base.in twilio==7.16.4 - # via -r requirements.in + # via -r requirements/base.in typing-extensions==4.5.0 # via - # -r requirements.in + # -r requirements/base.in # baseframe # coaster # qrcode @@ -486,7 +488,7 @@ urllib3==1.26.14 # requests # sentry-sdk user-agents==2.2.0 - # via -r requirements.in + # via -r requirements/base.in webassets==2.0 # via # coaster @@ -497,12 +499,12 @@ webencodings==0.5.1 # html5lib werkzeug==2.2.3 # via - # -r requirements.in + # -r requirements/base.in # baseframe # coaster # flask -whitenoise==6.3.0 - # via -r requirements.in +whitenoise==6.4.0 + # via -r requirements/base.in wtforms==3.0.1 # via # baseframe @@ -512,10 +514,10 @@ wtforms-sqlalchemy==0.3 # via baseframe yarl==1.8.2 # via aiohttp -zipp==3.14.0 +zipp==3.15.0 # via importlib-metadata zxcvbn==4.4.28 - # via -r requirements.in + # via -r requirements/base.in # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/requirements_dev.in b/requirements/dev.in similarity index 86% rename from requirements_dev.in rename to requirements/dev.in index 03b541d43..5237852ff 100644 --- a/requirements_dev.in +++ b/requirements/dev.in @@ -1,3 +1,4 @@ +-r test.in bandit black djlint @@ -13,12 +14,12 @@ flake8-logging-format flake8-mutable flake8-print flake8-pytest-style +flask-debugtoolbar isort -itsdangerous<2.1.0 # Dupe from requirements.in due to version pin there lxml-stubs mypy pep8-naming -pip-tools +pip-compile-multi pre-commit pylint pylint-pytest diff --git a/requirements/dev.txt b/requirements/dev.txt new file mode 100644 index 000000000..e07ec3413 --- /dev/null +++ b/requirements/dev.txt @@ -0,0 +1,216 @@ +# SHA1:a9312939b5b58f79793c49960eb08f8877f0ef67 +# +# This file is autogenerated by pip-compile-multi +# To update, run: +# +# pip-compile-multi +# +-r test.txt +-e file:./build/dependencies/baseframe + # via -r requirements/base.in +-e file:./build/dependencies/coaster + # via + # -r requirements/base.in + # baseframe +astroid==2.14.2 + # via pylint +bandit==1.7.4 + # via -r requirements/dev.in +black==23.1.0 + # via -r requirements/dev.in +build==0.10.0 + # via pip-tools +cattrs==22.1.0 + # via reformat-gherkin +cfgv==3.3.1 + # via pre-commit +cssbeautifier==1.14.7 + # via djlint +dill==0.3.6 + # via pylint +distlib==0.3.6 + # via virtualenv +djlint==1.19.16 + # via -r requirements/dev.in +editorconfig==0.12.3 + # via + # cssbeautifier + # jsbeautifier +flake8==6.0.0 + # via + # -r requirements/dev.in + # flake8-assertive + # flake8-bugbear + # flake8-builtins + # flake8-comprehensions + # flake8-docstrings + # flake8-isort + # flake8-mutable + # flake8-print + # pep8-naming +flake8-assertive==2.1.0 + # via -r requirements/dev.in +flake8-blind-except==0.2.1 + # via -r requirements/dev.in +flake8-bugbear==23.2.13 + # via -r requirements/dev.in +flake8-builtins==2.1.0 + # via -r requirements/dev.in +flake8-comprehensions==3.10.1 + # via -r requirements/dev.in +flake8-docstrings==1.7.0 + # via -r requirements/dev.in +flake8-isort==6.0.0 + # via -r requirements/dev.in +flake8-logging-format==0.9.0 + # via -r requirements/dev.in +flake8-mutable==1.2.0 + # via -r requirements/dev.in +flake8-plugin-utils==1.3.2 + # via flake8-pytest-style +flake8-print==5.0.0 + # via -r requirements/dev.in +flake8-pytest-style==1.7.2 + # via -r requirements/dev.in +flask-debugtoolbar==0.13.1 + # via -r requirements/dev.in +gherkin-official==24.0.0 + # via reformat-gherkin +gitdb==4.0.10 + # via gitpython +gitpython==3.1.31 + # via bandit +html-tag-names==0.1.2 + # via djlint +html-void-elements==0.1.0 + # via djlint +identify==2.5.18 + # via pre-commit +isort==5.12.0 + # via + # -r requirements/dev.in + # flake8-isort + # pylint +jsbeautifier==1.14.7 + # via + # cssbeautifier + # djlint +lazy-object-proxy==1.9.0 + # via astroid +lxml-stubs==0.4.0 + # via -r requirements/dev.in +mccabe==0.7.0 + # via + # flake8 + # pylint +mypy==1.0.1 + # via -r requirements/dev.in +nodeenv==1.7.0 + # via pre-commit +pathspec==0.11.0 + # via + # black + # djlint +pbr==5.11.1 + # via stevedore +pep8-naming==0.13.3 + # via -r requirements/dev.in +pip-compile-multi==2.6.2 + # via -r requirements/dev.in +pip-tools==6.12.3 + # via pip-compile-multi +platformdirs==3.0.0 + # via + # black + # pylint + # virtualenv +pre-commit==3.1.1 + # via -r requirements/dev.in +pycodestyle==2.10.0 + # via + # flake8 + # flake8-print +pydocstyle==6.3.0 + # via flake8-docstrings +pyflakes==3.0.1 + # via flake8 +pylint==2.16.2 + # via + # -r requirements/dev.in + # pylint-pytest +pylint-pytest==1.1.2 + # via -r requirements/dev.in +pyproject-hooks==1.0.0 + # via build +pyupgrade==3.3.1 + # via -r requirements/dev.in +reformat-gherkin==3.0.1 + # via -r requirements/dev.in +smmap==5.0.0 + # via gitdb +snowballstemmer==2.2.0 + # via pydocstyle +stevedore==5.0.0 + # via bandit +tokenize-rt==5.0.0 + # via pyupgrade +toposort==1.10 + # via pip-compile-multi +types-certifi==2021.10.8.3 + # via -r requirements/dev.in +types-click==7.1.8 + # via types-flask +types-cryptography==3.3.23.2 + # via -r requirements/dev.in +types-flask==1.1.6 + # via -r requirements/dev.in +types-geoip2==3.0.0 + # via -r requirements/dev.in +types-ipaddress==1.0.8 + # via types-maxminddb +types-itsdangerous==1.1.6 + # via -r requirements/dev.in +types-jinja2==2.11.9 + # via types-flask +types-markupsafe==1.1.10 + # via types-jinja2 +types-maxminddb==1.5.0 + # via + # -r requirements/dev.in + # types-geoip2 +types-pyopenssl==23.0.0.4 + # via types-redis +types-python-dateutil==2.8.19.10 + # via -r requirements/dev.in +types-pytz==2022.7.1.2 + # via -r requirements/dev.in +types-redis==4.5.1.4 + # via -r requirements/dev.in +types-requests==2.28.11.15 + # via -r requirements/dev.in +types-setuptools==67.4.0.3 + # via -r requirements/dev.in +types-six==1.16.21.6 + # via -r requirements/dev.in +types-toml==0.10.8.5 + # via -r requirements/dev.in +types-urllib3==1.26.25.8 + # via types-requests +types-werkzeug==1.0.9 + # via + # -r requirements/dev.in + # types-flask +virtualenv==20.20.0 + # via pre-commit +watchdog==2.3.1 + # via -r requirements/dev.in +wcwidth==0.2.6 + # via reformat-gherkin +wheel==0.38.4 + # via pip-tools +wrapt==1.15.0 + # via astroid + +# The following packages are considered to be unsafe in a requirements file: +# pip +# setuptools diff --git a/requirements_test.in b/requirements/test.in similarity index 94% rename from requirements_test.in rename to requirements/test.in index 434b5eb4d..1e2666d2a 100644 --- a/requirements_test.in +++ b/requirements/test.in @@ -1,3 +1,4 @@ +-r base.in beautifulsoup4 colorama coverage diff --git a/requirements/test.txt b/requirements/test.txt new file mode 100644 index 000000000..a69305b7e --- /dev/null +++ b/requirements/test.txt @@ -0,0 +1,110 @@ +# SHA1:c5a71eb216230dce54d598cfeb833afe50a4af40 +# +# This file is autogenerated by pip-compile-multi +# To update, run: +# +# pip-compile-multi +# +-r base.txt +-e file:./build/dependencies/baseframe + # via -r requirements/base.in +-e file:./build/dependencies/coaster + # via + # -r requirements/base.in + # baseframe +async-generator==1.10 + # via + # trio + # trio-websocket +beautifulsoup4==4.11.2 + # via -r requirements/test.in +colorama==0.4.6 + # via -r requirements/test.in +coverage[toml]==6.5.0 + # via + # -r requirements/test.in + # coveralls + # pytest-cov +coveralls==3.3.1 + # via -r requirements/test.in +docopt==0.6.2 + # via coveralls +exceptiongroup==1.1.0 + # via + # pytest + # trio +h11==0.14.0 + # via wsproto +iniconfig==2.0.0 + # via pytest +outcome==1.2.0 + # via trio +parse==1.19.0 + # via + # parse-type + # pytest-bdd +parse-type==0.6.0 + # via pytest-bdd +pluggy==1.0.0 + # via pytest +pysocks==1.7.1 + # via urllib3 +pytest==7.2.1 + # via + # -r requirements/test.in + # pytest-bdd + # pytest-cov + # pytest-dotenv + # pytest-env + # pytest-remotedata + # pytest-rerunfailures + # pytest-splinter +pytest-bdd==6.1.1 + # via -r requirements/test.in +pytest-cov==4.0.0 + # via -r requirements/test.in +pytest-dotenv==0.5.2 + # via -r requirements/test.in +pytest-env==0.8.1 + # via -r requirements/test.in +pytest-remotedata==0.4.0 + # via -r requirements/test.in +pytest-rerunfailures==11.1.1 + # via -r requirements/test.in +pytest-splinter==3.3.2 + # via -r requirements/test.in +selenium==4.8.2 + # via pytest-splinter +sniffio==1.3.0 + # via trio +sortedcontainers==2.4.0 + # via trio +soupsieve==2.4 + # via beautifulsoup4 +splinter==0.19.0 + # via pytest-splinter +tomli==2.0.1 + # via + # coverage + # pytest +tomlkit==0.11.6 + # via -r requirements/test.in +trio==0.22.0 + # via + # selenium + # trio-websocket +trio-websocket==0.9.2 + # via selenium +urllib3[socks]==1.26.14 + # via + # geoip2 + # pytest-splinter + # requests + # selenium + # sentry-sdk + # splinter +wsproto==1.2.0 + # via trio-websocket + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/requirements_dev.txt b/requirements_dev.txt deleted file mode 100644 index 9ae6b9592..000000000 --- a/requirements_dev.txt +++ /dev/null @@ -1,871 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --output-file=requirements_dev.txt --resolver=backtracking requirements.in requirements_dev.in requirements_test.in -# -aiohttp==3.8.4 - # via - # geoip2 - # tuspy -aiosignal==1.3.1 - # via aiohttp -alembic==1.9.4 - # via - # -r requirements.in - # flask-migrate -aniso8601==9.0.1 - # via coaster -argon2-cffi==21.3.0 - # via -r requirements.in -argon2-cffi-bindings==21.2.0 - # via argon2-cffi -astroid==2.14.2 - # via pylint -async-generator==1.10 - # via - # trio - # trio-websocket -async-timeout==4.0.2 - # via - # aiohttp - # redis -attrs==22.2.0 - # via - # aiohttp - # cattrs - # flake8-bugbear - # outcome - # pytest - # reformat-gherkin - # trio -babel==2.11.0 - # via - # -r requirements.in - # flask-babel -bandit==1.7.4 - # via -r requirements_dev.in -base58==2.1.1 - # via - # -r requirements.in - # coaster -baseframe @ git+https://github.com/hasgeek/baseframe.git - # via -r requirements.in -bcrypt==4.0.1 - # via - # -r requirements.in - # paramiko -beautifulsoup4==4.11.2 - # via -r requirements_test.in -better-profanity==0.6.1 - # via -r requirements.in -black==23.1.0 - # via -r requirements_dev.in -bleach==6.0.0 - # via - # baseframe - # coaster -blinker==1.5 - # via - # -r requirements.in - # coaster -brotli==1.0.9 - # via -r requirements.in -build==0.10.0 - # via pip-tools -cachelib==0.9.0 - # via flask-caching -cachetools==5.3.0 - # via premailer -cattrs==22.1.0 - # via reformat-gherkin -certifi==2022.12.7 - # via - # requests - # selenium - # sentry-sdk -cffi==1.15.1 - # via - # argon2-cffi-bindings - # cryptography - # pynacl -cfgv==3.3.1 - # via pre-commit -charset-normalizer==3.0.1 - # via - # aiohttp - # requests -chevron==0.14.0 - # via -r requirements.in -click==8.1.3 - # via - # -r requirements.in - # black - # djlint - # flask - # nltk - # pip-tools - # reformat-gherkin - # rq -coaster @ git+https://github.com/hasgeek/coaster.git - # via - # -r requirements.in - # baseframe -colorama==0.4.6 - # via - # -r requirements_test.in - # djlint -coverage[toml]==6.5.0 - # via - # -r requirements_test.in - # coveralls - # pytest-cov -coveralls==3.3.1 - # via -r requirements_test.in -croniter==1.3.8 - # via rq-scheduler -cryptography==39.0.1 - # via - # -r requirements.in - # paramiko - # pyopenssl - # types-pyopenssl - # types-redis -cssbeautifier==1.14.7 - # via djlint -cssmin==0.2.0 - # via baseframe -cssselect==1.2.0 - # via premailer -cssutils==2.6.0 - # via premailer -dataclasses-json==0.5.7 - # via -r requirements.in -dill==0.3.6 - # via pylint -distlib==0.3.6 - # via virtualenv -djlint==1.19.15 - # via -r requirements_dev.in -dnspython==2.3.0 - # via - # baseframe - # mxsniff - # pyisemail -docopt==0.6.2 - # via coveralls -editorconfig==0.12.3 - # via - # cssbeautifier - # jsbeautifier -emoji==2.2.0 - # via baseframe -exceptiongroup==1.1.0 - # via - # cattrs - # pytest - # trio -fabric3==1.14.post1 - # via -r requirements.in -filelock==3.9.0 - # via - # tldextract - # virtualenv -flake8==6.0.0 - # via - # -r requirements_dev.in - # flake8-assertive - # flake8-bugbear - # flake8-builtins - # flake8-comprehensions - # flake8-docstrings - # flake8-isort - # flake8-mutable - # flake8-print - # pep8-naming -flake8-assertive==2.1.0 - # via -r requirements_dev.in -flake8-blind-except==0.2.1 - # via -r requirements_dev.in -flake8-bugbear==23.2.13 - # via -r requirements_dev.in -flake8-builtins==2.1.0 - # via -r requirements_dev.in -flake8-comprehensions==3.10.1 - # via -r requirements_dev.in -flake8-docstrings==1.7.0 - # via -r requirements_dev.in -flake8-isort==6.0.0 - # via -r requirements_dev.in -flake8-logging-format==0.9.0 - # via -r requirements_dev.in -flake8-mutable==1.2.0 - # via -r requirements_dev.in -flake8-plugin-utils==1.3.2 - # via flake8-pytest-style -flake8-print==5.0.0 - # via -r requirements_dev.in -flake8-pytest-style==1.7.2 - # via -r requirements_dev.in -flask==2.2.3 - # via - # -r requirements.in - # baseframe - # coaster - # flask-assets - # flask-babel - # flask-caching - # flask-executor - # flask-flatpages - # flask-mailman - # flask-migrate - # flask-redis - # flask-rq2 - # flask-sqlalchemy - # flask-wtf -flask-assets==2.0 - # via - # -r requirements.in - # baseframe - # coaster -flask-babel==3.0.1 - # via - # -r requirements.in - # baseframe -flask-caching==2.0.2 - # via baseframe -flask-executor==1.0.0 - # via -r requirements.in -flask-flatpages==0.8.1 - # via -r requirements.in -flask-mailman==0.3.0 - # via -r requirements.in -flask-migrate==4.0.4 - # via - # -r requirements.in - # coaster -flask-redis==0.4.0 - # via -r requirements.in -flask-rq2==18.3 - # via -r requirements.in -flask-sqlalchemy==3.0.3 - # via - # -r requirements.in - # coaster - # flask-migrate -flask-wtf==1.1.1 - # via - # -r requirements.in - # baseframe -frozenlist==1.3.3 - # via - # aiohttp - # aiosignal -furl==2.1.3 - # via - # -r requirements.in - # baseframe - # coaster -future==0.18.3 - # via tuspy -geoip2==4.6.0 - # via -r requirements.in -gherkin-official==24.0.0 - # via reformat-gherkin -gitdb==4.0.10 - # via gitpython -gitpython==3.1.31 - # via bandit -grapheme==0.6.0 - # via baseframe -greenlet==2.0.2 - # via -r requirements.in -h11==0.14.0 - # via wsproto -html-tag-names==0.1.2 - # via djlint -html-void-elements==0.1.0 - # via djlint -html2text==2020.1.16 - # via -r requirements.in -html5lib==1.1 - # via - # baseframe - # coaster -httplib2==0.21.0 - # via - # oauth2 - # oauth2client -icalendar==5.0.4 - # via -r requirements.in -identify==2.5.18 - # via pre-commit -idna==3.4 - # via - # -r requirements.in - # requests - # tldextract - # trio - # yarl -importlib-metadata==6.0.0 - # via - # flask - # markdown -iniconfig==2.0.0 - # via pytest -isort==5.12.0 - # via - # -r requirements_dev.in - # flake8-isort - # pylint -isoweek==1.3.3 - # via coaster -itsdangerous==2.0.1 - # via - # -r requirements.in - # -r requirements_dev.in - # flask - # flask-wtf -jinja2==3.1.2 - # via - # flask - # flask-babel - # flask-flatpages -joblib==1.2.0 - # via nltk -js2py==0.74 - # via -r requirements.in -jsbeautifier==1.14.7 - # via - # cssbeautifier - # djlint -jsmin==3.0.1 - # via -r requirements.in -lazy-object-proxy==1.9.0 - # via astroid -linkify-it-py==2.0.0 - # via -r requirements.in -lxml==4.9.2 - # via - # -r requirements_test.in - # premailer -lxml-stubs==0.4.0 - # via -r requirements_dev.in -mako==1.2.4 - # via - # alembic - # pytest-bdd -markdown==3.4.1 - # via - # -r requirements.in - # coaster - # flask-flatpages - # pymdown-extensions -markdown-it-py==2.2.0 - # via - # -r requirements.in - # mdit-py-plugins - # rich -markupsafe==2.1.2 - # via - # baseframe - # coaster - # jinja2 - # mako - # werkzeug - # wtforms -marshmallow==3.19.0 - # via - # dataclasses-json - # marshmallow-enum -marshmallow-enum==1.5.1 - # via dataclasses-json -maxminddb==2.2.0 - # via geoip2 -mccabe==0.7.0 - # via - # flake8 - # pylint -mdit-py-plugins==0.3.4 - # via -r requirements.in -mdurl==0.1.2 - # via markdown-it-py -mkdocs-material-extensions==1.1.1 - # via flask-mailman -multidict==6.0.4 - # via - # aiohttp - # yarl -mxsniff==0.3.5 - # via baseframe -mypy==1.0.1 - # via -r requirements_dev.in -mypy-extensions==1.0.0 - # via - # black - # mypy - # typing-inspect -ndg-httpsclient==0.5.1 - # via baseframe -nltk==3.8.1 - # via coaster -nodeenv==1.7.0 - # via pre-commit -oauth2==1.9.0.post1 - # via -r requirements.in -oauth2client==4.1.3 - # via -r requirements.in -oauthlib==3.2.2 - # via - # requests-oauthlib - # tweepy -orderedmultidict==1.0.1 - # via furl -outcome==1.2.0 - # via trio -packaging==23.0 - # via - # black - # build - # marshmallow - # pytest - # pytest-remotedata - # pytest-rerunfailures -paramiko==2.12.0 - # via fabric3 -parse==1.19.0 - # via - # parse-type - # pytest-bdd -parse-type==0.6.0 - # via pytest-bdd -passlib==1.7.4 - # via -r requirements.in -pathspec==0.11.0 - # via - # black - # djlint -pbr==5.11.1 - # via stevedore -pep8-naming==0.13.3 - # via -r requirements_dev.in -phonenumbers==8.13.6 - # via -r requirements.in -pip-tools==6.12.2 - # via -r requirements_dev.in -platformdirs==3.0.0 - # via - # black - # pylint - # virtualenv -pluggy==1.0.0 - # via pytest -pre-commit==3.1.0 - # via -r requirements_dev.in -premailer==3.10.0 - # via -r requirements.in -progressbar2==4.2.0 - # via -r requirements.in -psycopg2-binary==2.9.5 - # via -r requirements.in -pyasn1==0.4.8 - # via - # baseframe - # ndg-httpsclient - # oauth2client - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via oauth2client -pycodestyle==2.10.0 - # via - # flake8 - # flake8-print -pycountry==22.3.5 - # via - # -r requirements.in - # baseframe -pycparser==2.21 - # via cffi -pydocstyle==6.3.0 - # via flake8-docstrings -pyexecjs==1.5.1 - # via coaster -pyflakes==3.0.1 - # via flake8 -pygments==2.14.0 - # via - # -r requirements.in - # rich -pyisemail==2.0.1 - # via - # -r requirements.in - # baseframe - # mxsniff -pyjsparser==2.7.1 - # via js2py -pyjwt==2.6.0 - # via twilio -pylint==2.16.2 - # via - # -r requirements_dev.in - # pylint-pytest -pylint-pytest==1.1.2 - # via -r requirements_dev.in -pymdown-extensions==9.9.2 - # via - # -r requirements.in - # coaster -pynacl==1.5.0 - # via paramiko -pyopenssl==23.0.0 - # via - # baseframe - # ndg-httpsclient -pyparsing==3.0.9 - # via httplib2 -pypng==0.20220715.0 - # via qrcode -pyproject-hooks==1.0.0 - # via build -pysocks==1.7.1 - # via urllib3 -pytest==7.2.1 - # via - # -r requirements_test.in - # pylint-pytest - # pytest-bdd - # pytest-cov - # pytest-dotenv - # pytest-env - # pytest-remotedata - # pytest-rerunfailures - # pytest-splinter -pytest-bdd==6.1.1 - # via -r requirements_test.in -pytest-cov==4.0.0 - # via -r requirements_test.in -pytest-dotenv==0.5.2 - # via -r requirements_test.in -pytest-env==0.8.1 - # via -r requirements_test.in -pytest-remotedata==0.4.0 - # via -r requirements_test.in -pytest-rerunfailures==11.1.1 - # via -r requirements_test.in -pytest-splinter==3.3.2 - # via -r requirements_test.in -python-dateutil==2.8.2 - # via - # -r requirements.in - # baseframe - # croniter - # icalendar - # rq-scheduler -python-dotenv==0.21.1 - # via - # -r requirements.in - # pytest-dotenv -python-utils==3.5.2 - # via progressbar2 -pytz==2022.7.1 - # via - # -r requirements.in - # babel - # baseframe - # coaster - # flask-babel - # icalendar - # twilio -pytz-deprecation-shim==0.1.0.post0 - # via tzlocal -pyupgrade==3.3.1 - # via -r requirements_dev.in -pyvimeo==1.1.0 - # via -r requirements.in -pyyaml==6.0 - # via - # bandit - # djlint - # flask-flatpages - # pre-commit - # reformat-gherkin -qrcode==7.4.2 - # via -r requirements.in -redis==4.5.1 - # via - # baseframe - # flask-redis - # flask-rq2 - # rq -reformat-gherkin==3.0.1 - # via -r requirements_dev.in -regex==2022.10.31 - # via - # djlint - # nltk -requests==2.28.2 - # via - # -r requirements.in - # baseframe - # coveralls - # geoip2 - # premailer - # pyvimeo - # requests-file - # requests-mock - # requests-oauthlib - # tldextract - # tuspy - # tweepy - # twilio -requests-file==1.5.1 - # via tldextract -requests-mock==1.10.0 - # via - # -r requirements_test.in - # baseframe -requests-oauthlib==1.3.1 - # via tweepy -rich==13.3.1 - # via -r requirements.in -rq==1.13.0 - # via - # -r requirements.in - # baseframe - # flask-rq2 - # rq-scheduler -rq-scheduler==0.11.0 - # via flask-rq2 -rsa==4.9 - # via oauth2client -selenium==4.8.2 - # via pytest-splinter -semantic-version==2.10.0 - # via - # baseframe - # coaster -sentry-sdk==1.15.0 - # via baseframe -six==1.16.0 - # via - # bleach - # cssbeautifier - # fabric3 - # flask-flatpages - # furl - # html5lib - # js2py - # jsbeautifier - # mxsniff - # oauth2client - # orderedmultidict - # paramiko - # parse-type - # pyexecjs - # python-dateutil - # requests-file - # requests-mock - # sqlalchemy-json - # tuspy -smmap==5.0.0 - # via gitdb -sniffio==1.3.0 - # via trio -snowballstemmer==2.2.0 - # via pydocstyle -sortedcontainers==2.4.0 - # via trio -soupsieve==2.4 - # via beautifulsoup4 -splinter==0.19.0 - # via pytest-splinter -sqlalchemy==2.0.4 - # via - # -r requirements.in - # alembic - # coaster - # flask-sqlalchemy - # sqlalchemy-json - # sqlalchemy-utils - # wtforms-sqlalchemy -sqlalchemy-json==0.5.0 - # via -r requirements.in -sqlalchemy-utils==0.40.0 - # via - # -r requirements.in - # coaster -statsd==4.0.1 - # via baseframe -stevedore==5.0.0 - # via bandit -tinydb==4.7.1 - # via tuspy -tldextract==3.4.0 - # via - # coaster - # mxsniff -tokenize-rt==5.0.0 - # via pyupgrade -toml==0.10.2 - # via - # -r requirements.in - # -r requirements_dev.in -tomli==2.0.1 - # via - # black - # build - # coverage - # djlint - # mypy - # pylint - # pyproject-hooks - # pytest -tomlkit==0.11.6 - # via - # -r requirements_test.in - # pylint -tqdm==4.64.1 - # via - # djlint - # nltk -trio==0.22.0 - # via - # selenium - # trio-websocket -trio-websocket==0.9.2 - # via selenium -tuspy==1.0.0 - # via pyvimeo -tweepy==4.12.1 - # via -r requirements.in -twilio==7.16.4 - # via -r requirements.in -types-certifi==2021.10.8.3 - # via -r requirements_dev.in -types-click==7.1.8 - # via types-flask -types-cryptography==3.3.23.2 - # via -r requirements_dev.in -types-docutils==0.19.1.6 - # via types-setuptools -types-flask==1.1.6 - # via -r requirements_dev.in -types-geoip2==3.0.0 - # via -r requirements_dev.in -types-ipaddress==1.0.8 - # via types-maxminddb -types-itsdangerous==1.1.6 - # via -r requirements_dev.in -types-jinja2==2.11.9 - # via types-flask -types-markupsafe==1.1.10 - # via types-jinja2 -types-maxminddb==1.5.0 - # via - # -r requirements_dev.in - # types-geoip2 -types-pyopenssl==23.0.0.4 - # via types-redis -types-python-dateutil==2.8.19.8 - # via -r requirements_dev.in -types-pytz==2022.7.1.2 - # via -r requirements_dev.in -types-redis==4.5.1.3 - # via -r requirements_dev.in -types-requests==2.28.11.14 - # via -r requirements_dev.in -types-setuptools==67.4.0.1 - # via -r requirements_dev.in -types-six==1.16.21.6 - # via -r requirements_dev.in -types-toml==0.10.8.5 - # via -r requirements_dev.in -types-urllib3==1.26.25.7 - # via types-requests -types-werkzeug==1.0.9 - # via - # -r requirements_dev.in - # types-flask -typing-extensions==4.5.0 - # via - # -r requirements.in - # astroid - # baseframe - # black - # coaster - # mypy - # pylint - # pytest-bdd - # qrcode - # sqlalchemy - # typing-inspect -typing-inspect==0.8.0 - # via dataclasses-json -tzdata==2022.7 - # via pytz-deprecation-shim -tzlocal==4.2 - # via js2py -ua-parser==0.16.1 - # via user-agents -uc-micro-py==1.0.1 - # via linkify-it-py -uglipyjs==0.2.5 - # via coaster -unidecode==1.3.6 - # via coaster -urllib3[socks]==1.26.14 - # via - # geoip2 - # pytest-splinter - # requests - # selenium - # sentry-sdk - # splinter -user-agents==2.2.0 - # via -r requirements.in -virtualenv==20.19.0 - # via pre-commit -watchdog==2.3.0 - # via -r requirements_dev.in -wcwidth==0.2.6 - # via reformat-gherkin -webassets==2.0 - # via - # coaster - # flask-assets -webencodings==0.5.1 - # via - # bleach - # html5lib -werkzeug==2.2.3 - # via - # -r requirements.in - # baseframe - # coaster - # flask -wheel==0.38.4 - # via pip-tools -whitenoise==6.3.0 - # via -r requirements.in -wrapt==1.14.1 - # via astroid -wsproto==1.2.0 - # via trio-websocket -wtforms==3.0.1 - # via - # baseframe - # flask-wtf - # wtforms-sqlalchemy -wtforms-sqlalchemy==0.3 - # via baseframe -yarl==1.8.2 - # via aiohttp -zipp==3.14.0 - # via importlib-metadata -zxcvbn==4.4.28 - # via -r requirements.in - -# The following packages are considered to be unsafe in a requirements file: -# pip -# setuptools diff --git a/requirements_test.txt b/requirements_test.txt deleted file mode 100644 index 3997509ad..000000000 --- a/requirements_test.txt +++ /dev/null @@ -1,630 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --output-file=requirements_test.txt --resolver=backtracking requirements.in requirements_test.in -# -aiohttp==3.8.4 - # via - # geoip2 - # tuspy -aiosignal==1.3.1 - # via aiohttp -alembic==1.9.4 - # via - # -r requirements.in - # flask-migrate -aniso8601==9.0.1 - # via coaster -argon2-cffi==21.3.0 - # via -r requirements.in -argon2-cffi-bindings==21.2.0 - # via argon2-cffi -async-generator==1.10 - # via - # trio - # trio-websocket -async-timeout==4.0.2 - # via - # aiohttp - # redis -attrs==22.2.0 - # via - # aiohttp - # outcome - # pytest - # trio -babel==2.11.0 - # via - # -r requirements.in - # flask-babel -base58==2.1.1 - # via - # -r requirements.in - # coaster -baseframe @ git+https://github.com/hasgeek/baseframe.git - # via -r requirements.in -bcrypt==4.0.1 - # via - # -r requirements.in - # paramiko -beautifulsoup4==4.11.2 - # via -r requirements_test.in -better-profanity==0.6.1 - # via -r requirements.in -bleach==6.0.0 - # via - # baseframe - # coaster -blinker==1.5 - # via - # -r requirements.in - # coaster -brotli==1.0.9 - # via -r requirements.in -cachelib==0.9.0 - # via flask-caching -cachetools==5.3.0 - # via premailer -certifi==2022.12.7 - # via - # requests - # selenium - # sentry-sdk -cffi==1.15.1 - # via - # argon2-cffi-bindings - # cryptography - # pynacl -charset-normalizer==3.0.1 - # via - # aiohttp - # requests -chevron==0.14.0 - # via -r requirements.in -click==8.1.3 - # via - # -r requirements.in - # flask - # nltk - # rq -coaster @ git+https://github.com/hasgeek/coaster.git - # via - # -r requirements.in - # baseframe -colorama==0.4.6 - # via -r requirements_test.in -coverage[toml]==6.5.0 - # via - # -r requirements_test.in - # coveralls - # pytest-cov -coveralls==3.3.1 - # via -r requirements_test.in -croniter==1.3.8 - # via rq-scheduler -cryptography==39.0.1 - # via - # -r requirements.in - # paramiko - # pyopenssl -cssmin==0.2.0 - # via baseframe -cssselect==1.2.0 - # via premailer -cssutils==2.6.0 - # via premailer -dataclasses-json==0.5.7 - # via -r requirements.in -dnspython==2.3.0 - # via - # baseframe - # mxsniff - # pyisemail -docopt==0.6.2 - # via coveralls -emoji==2.2.0 - # via baseframe -exceptiongroup==1.1.0 - # via - # pytest - # trio -fabric3==1.14.post1 - # via -r requirements.in -filelock==3.9.0 - # via tldextract -flask==2.2.3 - # via - # -r requirements.in - # baseframe - # coaster - # flask-assets - # flask-babel - # flask-caching - # flask-executor - # flask-flatpages - # flask-mailman - # flask-migrate - # flask-redis - # flask-rq2 - # flask-sqlalchemy - # flask-wtf -flask-assets==2.0 - # via - # -r requirements.in - # baseframe - # coaster -flask-babel==3.0.1 - # via - # -r requirements.in - # baseframe -flask-caching==2.0.2 - # via baseframe -flask-executor==1.0.0 - # via -r requirements.in -flask-flatpages==0.8.1 - # via -r requirements.in -flask-mailman==0.3.0 - # via -r requirements.in -flask-migrate==4.0.4 - # via - # -r requirements.in - # coaster -flask-redis==0.4.0 - # via -r requirements.in -flask-rq2==18.3 - # via -r requirements.in -flask-sqlalchemy==3.0.3 - # via - # -r requirements.in - # coaster - # flask-migrate -flask-wtf==1.1.1 - # via - # -r requirements.in - # baseframe -frozenlist==1.3.3 - # via - # aiohttp - # aiosignal -furl==2.1.3 - # via - # -r requirements.in - # baseframe - # coaster -future==0.18.3 - # via tuspy -geoip2==4.6.0 - # via -r requirements.in -grapheme==0.6.0 - # via baseframe -greenlet==2.0.2 - # via -r requirements.in -h11==0.14.0 - # via wsproto -html2text==2020.1.16 - # via -r requirements.in -html5lib==1.1 - # via - # baseframe - # coaster -httplib2==0.21.0 - # via - # oauth2 - # oauth2client -icalendar==5.0.4 - # via -r requirements.in -idna==3.4 - # via - # -r requirements.in - # requests - # tldextract - # trio - # yarl -importlib-metadata==6.0.0 - # via - # flask - # markdown -iniconfig==2.0.0 - # via pytest -isoweek==1.3.3 - # via coaster -itsdangerous==2.0.1 - # via - # -r requirements.in - # flask - # flask-wtf -jinja2==3.1.2 - # via - # flask - # flask-babel - # flask-flatpages -joblib==1.2.0 - # via nltk -js2py==0.74 - # via -r requirements.in -jsmin==3.0.1 - # via -r requirements.in -linkify-it-py==2.0.0 - # via -r requirements.in -lxml==4.9.2 - # via - # -r requirements_test.in - # premailer -mako==1.2.4 - # via - # alembic - # pytest-bdd -markdown==3.4.1 - # via - # -r requirements.in - # coaster - # flask-flatpages - # pymdown-extensions -markdown-it-py==2.2.0 - # via - # -r requirements.in - # mdit-py-plugins - # rich -markupsafe==2.1.2 - # via - # baseframe - # coaster - # jinja2 - # mako - # werkzeug - # wtforms -marshmallow==3.19.0 - # via - # dataclasses-json - # marshmallow-enum -marshmallow-enum==1.5.1 - # via dataclasses-json -maxminddb==2.2.0 - # via geoip2 -mdit-py-plugins==0.3.4 - # via -r requirements.in -mdurl==0.1.2 - # via markdown-it-py -mkdocs-material-extensions==1.1.1 - # via flask-mailman -multidict==6.0.4 - # via - # aiohttp - # yarl -mxsniff==0.3.5 - # via baseframe -mypy-extensions==1.0.0 - # via typing-inspect -ndg-httpsclient==0.5.1 - # via baseframe -nltk==3.8.1 - # via coaster -oauth2==1.9.0.post1 - # via -r requirements.in -oauth2client==4.1.3 - # via -r requirements.in -oauthlib==3.2.2 - # via - # requests-oauthlib - # tweepy -orderedmultidict==1.0.1 - # via furl -outcome==1.2.0 - # via trio -packaging==23.0 - # via - # marshmallow - # pytest - # pytest-remotedata - # pytest-rerunfailures -paramiko==2.12.0 - # via fabric3 -parse==1.19.0 - # via - # parse-type - # pytest-bdd -parse-type==0.6.0 - # via pytest-bdd -passlib==1.7.4 - # via -r requirements.in -phonenumbers==8.13.6 - # via -r requirements.in -pluggy==1.0.0 - # via pytest -premailer==3.10.0 - # via -r requirements.in -progressbar2==4.2.0 - # via -r requirements.in -psycopg2-binary==2.9.5 - # via -r requirements.in -pyasn1==0.4.8 - # via - # baseframe - # ndg-httpsclient - # oauth2client - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via oauth2client -pycountry==22.3.5 - # via - # -r requirements.in - # baseframe -pycparser==2.21 - # via cffi -pyexecjs==1.5.1 - # via coaster -pygments==2.14.0 - # via - # -r requirements.in - # rich -pyisemail==2.0.1 - # via - # -r requirements.in - # baseframe - # mxsniff -pyjsparser==2.7.1 - # via js2py -pyjwt==2.6.0 - # via twilio -pymdown-extensions==9.9.2 - # via - # -r requirements.in - # coaster -pynacl==1.5.0 - # via paramiko -pyopenssl==23.0.0 - # via - # baseframe - # ndg-httpsclient -pyparsing==3.0.9 - # via httplib2 -pypng==0.20220715.0 - # via qrcode -pysocks==1.7.1 - # via urllib3 -pytest==7.2.1 - # via - # -r requirements_test.in - # pytest-bdd - # pytest-cov - # pytest-dotenv - # pytest-env - # pytest-remotedata - # pytest-rerunfailures - # pytest-splinter -pytest-bdd==6.1.1 - # via -r requirements_test.in -pytest-cov==4.0.0 - # via -r requirements_test.in -pytest-dotenv==0.5.2 - # via -r requirements_test.in -pytest-env==0.8.1 - # via -r requirements_test.in -pytest-remotedata==0.4.0 - # via -r requirements_test.in -pytest-rerunfailures==11.1.1 - # via -r requirements_test.in -pytest-splinter==3.3.2 - # via -r requirements_test.in -python-dateutil==2.8.2 - # via - # -r requirements.in - # baseframe - # croniter - # icalendar - # rq-scheduler -python-dotenv==0.21.1 - # via - # -r requirements.in - # pytest-dotenv -python-utils==3.5.2 - # via progressbar2 -pytz==2022.7.1 - # via - # -r requirements.in - # babel - # baseframe - # coaster - # flask-babel - # icalendar - # twilio -pytz-deprecation-shim==0.1.0.post0 - # via tzlocal -pyvimeo==1.1.0 - # via -r requirements.in -pyyaml==6.0 - # via flask-flatpages -qrcode==7.4.2 - # via -r requirements.in -redis==4.5.1 - # via - # baseframe - # flask-redis - # flask-rq2 - # rq -regex==2022.10.31 - # via nltk -requests==2.28.2 - # via - # -r requirements.in - # baseframe - # coveralls - # geoip2 - # premailer - # pyvimeo - # requests-file - # requests-mock - # requests-oauthlib - # tldextract - # tuspy - # tweepy - # twilio -requests-file==1.5.1 - # via tldextract -requests-mock==1.10.0 - # via - # -r requirements_test.in - # baseframe -requests-oauthlib==1.3.1 - # via tweepy -rich==13.3.1 - # via -r requirements.in -rq==1.13.0 - # via - # -r requirements.in - # baseframe - # flask-rq2 - # rq-scheduler -rq-scheduler==0.11.0 - # via flask-rq2 -rsa==4.9 - # via oauth2client -selenium==4.8.2 - # via pytest-splinter -semantic-version==2.10.0 - # via - # baseframe - # coaster -sentry-sdk==1.15.0 - # via baseframe -six==1.16.0 - # via - # bleach - # fabric3 - # flask-flatpages - # furl - # html5lib - # js2py - # mxsniff - # oauth2client - # orderedmultidict - # paramiko - # parse-type - # pyexecjs - # python-dateutil - # requests-file - # requests-mock - # sqlalchemy-json - # tuspy -sniffio==1.3.0 - # via trio -sortedcontainers==2.4.0 - # via trio -soupsieve==2.4 - # via beautifulsoup4 -splinter==0.19.0 - # via pytest-splinter -sqlalchemy==2.0.4 - # via - # -r requirements.in - # alembic - # coaster - # flask-sqlalchemy - # sqlalchemy-json - # sqlalchemy-utils - # wtforms-sqlalchemy -sqlalchemy-json==0.5.0 - # via -r requirements.in -sqlalchemy-utils==0.40.0 - # via - # -r requirements.in - # coaster -statsd==4.0.1 - # via baseframe -tinydb==4.7.1 - # via tuspy -tldextract==3.4.0 - # via - # coaster - # mxsniff -toml==0.10.2 - # via -r requirements.in -tomli==2.0.1 - # via - # coverage - # pytest -tomlkit==0.11.6 - # via -r requirements_test.in -tqdm==4.64.1 - # via nltk -trio==0.22.0 - # via - # selenium - # trio-websocket -trio-websocket==0.9.2 - # via selenium -tuspy==1.0.0 - # via pyvimeo -tweepy==4.12.1 - # via -r requirements.in -twilio==7.16.4 - # via -r requirements.in -typing-extensions==4.5.0 - # via - # -r requirements.in - # baseframe - # coaster - # pytest-bdd - # qrcode - # sqlalchemy - # typing-inspect -typing-inspect==0.8.0 - # via dataclasses-json -tzdata==2022.7 - # via pytz-deprecation-shim -tzlocal==4.2 - # via js2py -ua-parser==0.16.1 - # via user-agents -uc-micro-py==1.0.1 - # via linkify-it-py -uglipyjs==0.2.5 - # via coaster -unidecode==1.3.6 - # via coaster -urllib3[socks]==1.26.14 - # via - # geoip2 - # pytest-splinter - # requests - # selenium - # sentry-sdk - # splinter -user-agents==2.2.0 - # via -r requirements.in -webassets==2.0 - # via - # coaster - # flask-assets -webencodings==0.5.1 - # via - # bleach - # html5lib -werkzeug==2.2.3 - # via - # -r requirements.in - # baseframe - # coaster - # flask -whitenoise==6.3.0 - # via -r requirements.in -wsproto==1.2.0 - # via trio-websocket -wtforms==3.0.1 - # via - # baseframe - # flask-wtf - # wtforms-sqlalchemy -wtforms-sqlalchemy==0.3 - # via baseframe -yarl==1.8.2 - # via aiohttp -zipp==3.14.0 - # via importlib-metadata -zxcvbn==4.4.28 - # via -r requirements.in - -# The following packages are considered to be unsafe in a requirements file: -# setuptools From a17715517aa3e6edc49ae737adf20f8729790cf8 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Thu, 2 Mar 2023 03:18:46 +0530 Subject: [PATCH 061/281] Fixes implementation for Tabs (#1623) * mui tabs styling changes * Add negative margin to markdown to show prev next icons * Missing opening bracket * Restructured and cleaned up styling and javascript for Markdown tabs. * Update markdown tests data to accommodate for use of top-padding class for MUI tabpanels. * MUI Tabs UI/UX. * Activation of tabs accessibility features extracted to be applied site-wide. * Do not apply .mui-tabs__bar styles for .mui-tabs__bar--pills. * Resolves https://github.com/hasgeek/funnel/pull/1623/files\#r1109317036 * Addresses https://github.com/hasgeek/funnel/pull/1623\#discussion_r1109319714 * Addresses https://github.com/hasgeek/funnel/pull/1623/files\#r1108808351 * Make markdown tabs agnostic of UI framework selectors. * Cleanup code for markdown tabs and tabs accessibility. --------- Co-authored-by: Vidya Ramakrishnan --- funnel/assets/js/app.js | 4 +- funnel/assets/js/utils/helper.js | 9 + funnel/assets/js/utils/initembed.js | 4 +- funnel/assets/js/utils/tabs.js | 422 ++++++++++--------- funnel/assets/sass/base/_variable.scss | 7 + funnel/assets/sass/components/_markdown.scss | 4 +- funnel/assets/sass/components/_tabs.scss | 147 +++++++ funnel/assets/sass/mui/_custom.scss | 6 + funnel/assets/sass/mui/_tabs.scss | 87 +--- funnel/assets/sass/mui/_variables.scss | 2 +- funnel/assets/sass/pages/submission.scss | 2 - funnel/utils/markdown/tabs.py | 91 ++-- tests/unit/utils/markdown/data/tabs.toml | 40 +- 13 files changed, 472 insertions(+), 353 deletions(-) diff --git a/funnel/assets/js/app.js b/funnel/assets/js/app.js index b0006ed2a..7f5ab47e6 100644 --- a/funnel/assets/js/app.js +++ b/funnel/assets/js/app.js @@ -6,7 +6,7 @@ import loadLangTranslations from './utils/translations'; import LazyloadImg from './utils/lazyloadimage'; import Form from './utils/formhelper'; import Analytics from './utils/analytics'; -import MUITabs from './utils/tabs'; +import Tabs from './utils/tabs'; $(() => { window.Hasgeek.Config.availableLanguages = { @@ -48,7 +48,7 @@ $(() => { window.Hasgeek.Config.accountMenu ); ScrollHelper.scrollTabs(); - MUITabs.init(); + Tabs.init(); Utils.truncate(); Utils.showTimeOnCalendar(); Utils.popupBackHandler(); diff --git a/funnel/assets/js/utils/helper.js b/funnel/assets/js/utils/helper.js index 541c78258..1f3b3cd2f 100644 --- a/funnel/assets/js/utils/helper.js +++ b/funnel/assets/js/utils/helper.js @@ -421,6 +421,15 @@ const Utils = { svgElem.classList.add('fa5-icon', ...cssClassArray); return svgElem; }, + debounce(fn, timeout, context, ...args) { + let timer = null; + function debounceFn() { + if (timer) clearTimeout(timer); + const fnContext = context || this; + timer = setTimeout(fn.bind(fnContext, ...args), timeout); + } + return debounceFn; + }, }; export default Utils; diff --git a/funnel/assets/js/utils/initembed.js b/funnel/assets/js/utils/initembed.js index 660500fc4..71a8e9d8f 100644 --- a/funnel/assets/js/utils/initembed.js +++ b/funnel/assets/js/utils/initembed.js @@ -3,7 +3,7 @@ import TypeformEmbed from './typeform_embed'; import MarkmapEmbed from './markmap'; import addMermaidEmbed from './mermaid'; import PrismEmbed from './prism'; -import MUITabs from './tabs'; +import Tabs from './tabs'; export default function initEmbed(parentContainer = '.markdown') { TypeformEmbed.init(parentContainer); @@ -11,5 +11,5 @@ export default function initEmbed(parentContainer = '.markdown') { MarkmapEmbed.init(parentContainer); addMermaidEmbed(parentContainer); PrismEmbed.init(parentContainer); - MUITabs.init(parentContainer); + Tabs.init(parentContainer); } diff --git a/funnel/assets/js/utils/tabs.js b/funnel/assets/js/utils/tabs.js index 78163be34..0888fe425 100644 --- a/funnel/assets/js/utils/tabs.js +++ b/funnel/assets/js/utils/tabs.js @@ -1,208 +1,230 @@ import Utils from './helper'; -const MUITabs = { - async init(container) { - const parentElement = $(container || 'body'); - - parentElement - .find('.md-tabset .mui-tabs__bar:not(.activating):not(.activated)') - .each(function tabsetsAccessibility() { - $(this).addClass('activating'); - // http://web-accessibility.carnegiemuseums.org/code/tabs/ - let index = 0; - const tabs = $(this).find('[role=tab]'); - const tabSet = $(this).parent(); - // CREATING TOUCH ICON TOGGLE - function toggleTouchIcon() { - if (index === 0) { - tabSet - .find('.overflow-icon-left.js-tab-touch') - .addClass('hidden-overflowIcon'); - tabSet - .find('.overflow-icon-right.js-tab-touch') - .removeClass('hidden-overflowIcon'); - } else if (index > 0 && index < tabs.length - 1) { - tabSet - .find('.overflow-icon-left.js-tab-touch') - .removeClass('hidden-overflowIcon'); - tabSet - .find('.overflow-icon-right.js-tab-touch') - .removeClass('hidden-overflowIcon'); - } else { - tabSet - .find('.overflow-icon-left.js-tab-touch') - .removeClass('hidden-overflowIcon'); - tabSet - .find('.overflow-icon-right.js-tab-touch') - .addClass('hidden-overflowIcon'); - } - } - // DEFINING SCROLL ICON TOGGLE FUNCTION - function toggleScrollIcon() { - const tabsBar = tabSet.find('.mui-tabs__bar'); - const scrollVal = Math.ceil(tabsBar.scrollLeft()); - const maxScrollWidth = tabsBar[0].scrollWidth - tabsBar[0].clientWidth; - - if (scrollVal <= 0) { - tabsBar - .parent() - .find('.overflow-icon-left.js-tab-scroll') - .css('visibility', 'hidden'); - - tabsBar - .parent() - .find('.overflow-icon-right.js-tab-scroll') - .css('visibility', 'visible'); - } else - tabsBar - .parent() - .find('.overflow-icon-left.js-tab-scroll') - .css('visibility', 'visible'); - - if (maxScrollWidth - scrollVal <= 1) { - tabsBar - .parent() - .find('.overflow-icon-right.js-tab-scroll') - .css('visibility', 'hidden'); - - tabsBar - .parent() - .find('.overflow-icon-left.js-tab-scroll') - .css('visibility', 'visible'); - } else - tabsBar - .parent() - .find('.overflow-icon-right.js-tab-scroll') - .css('visibility', 'visible'); - } - // ACTIVATING CURRENT ELEMENT - function activateCurrent() { - window.mui.tabs.activate($(tabs.get(index)).data('mui-controls')); +const Tabs = { + overflowObserver: new ResizeObserver(function checkOverflow(entries) { + entries.forEach((entry) => { + if (Tabs.helpers.hasOverflow(entry.target)) + $(entry.target).parent().addClass('has-overflow'); + else $(entry.target).parent().removeClass('has-overflow'); + }); + }), + getIntersectionObserver(tablist) { + return new IntersectionObserver((entries) => { + entries.forEach( + (entry) => { + $(entry.target).data('isIntersecting', entry.isIntersecting); + }, + { + root: tablist, + threshold: 1, } - // FUNCTIONS FOR NAVIGATING TABSBAR ON KEYPRESS - function previous() { - if (index > 0) { - index -= 1; - toggleTouchIcon(); - } else { - index = tabs.length - 1; - toggleTouchIcon(); - } - activateCurrent(); - } - function next() { - if (index < tabs.length - 1) { - index += 1; - toggleTouchIcon(); - } else { - index = 0; - toggleTouchIcon(); - } - activateCurrent(); - } - // KEYPRESS EVENTHANDLER FOR EACH TAB INSTANCE - tabs.bind({ - keydown: function onpress(event) { - const LEFT_ARROW = 37; - const UP_ARROW = 38; - const RIGHT_ARROW = 39; - const DOWN_ARROW = 40; - const k = event.which || event.keyCode; - - if (k >= LEFT_ARROW && k <= DOWN_ARROW) { - if (k === LEFT_ARROW || k === UP_ARROW) previous(); - else if (k === RIGHT_ARROW || k === DOWN_ARROW) next(); - event.preventDefault(); - } - }, - }); - // CLICK EVENTHANDLER FOR EACH TAB INSTANCE - tabs.bind('click', () => { - setTimeout(() => { - index = $(this).find('li.mui--is-active').index(); - toggleTouchIcon(); - }, 100); - }); - // EVENT LISTENERS FOR ACCESSIBILITY EVENTS - tabs.each(function attachTabAccessibilityEvents() { - this.addEventListener('mui.tabs.showend', function addListenerToShownTab(ev) { - $(ev.srcElement).attr({ tabindex: 0, 'aria-selected': 'true' }).focus(); - }); - this.addEventListener( - 'mui.tabs.hideend', - function addListenerToHiddenTab(ev) { - $(ev.srcElement).attr({ tabindex: '-1', 'aria-selected': 'false' }); - } - ); - }); - // CREATING OVERFLOW ICONS FOR TOUCH AND SCROLL - if ($(this).prop('scrollWidth') - $(this).prop('clientWidth') > 0) { - const overflowTouchIconLeft = Utils.getFaiconHTML( - 'angle-left', - 'body', - true, - ['overflow-icon', 'overflow-icon-left', 'js-tab-touch'] - ); - const overflowTouchIconRight = Utils.getFaiconHTML( - 'angle-right', - 'body', - true, - ['overflow-icon', 'overflow-icon-right', 'js-tab-touch'] - ); - const overflowScrollIconLeft = Utils.getFaiconHTML( - 'angle-left', - 'body', - false, - ['overflow-icon', 'overflow-icon-left', 'js-tab-scroll'] - ); - const overflowScrollIconRight = Utils.getFaiconHTML( - 'angle-right', - 'body', - true, - ['overflow-icon', 'overflow-icon-right', 'js-tab-scroll'] - ); - // WRAPPING THE ICONS AND TABSBAR - $(this).wrap('
    '); - // ADDING THE ICONS BEFORE AND AFTER THE TABSBAR - $(this).before(overflowTouchIconLeft); - $(this).after(overflowTouchIconRight); - $(this).before(overflowScrollIconLeft); - $(this).after(overflowScrollIconRight); - // TOGGLING NECESSARY ICONS - toggleTouchIcon(); - toggleScrollIcon(); - } - // DEFINING SCROLL FUNCTIONS - function scrollIconLeft() { - $(this).parent().find('.mui-tabs__bar').animate({ scrollLeft: '-=80' }, 100); - setTimeout(toggleScrollIcon, 200); - } - function scrollIconRight() { - $(this).parent().find('.mui-tabs__bar').animate({ scrollLeft: '+=80' }, 100); - setTimeout(toggleScrollIcon, 200); + ); + }); + }, + wrapAndAddIcons(tablist) { + const icons = Tabs.helpers.createIconset(); + // Wrap the tabs bar with a container, to allow introduction of + // tabs navigation arrow icons. + const $leftIcons = $('
    ').html( + Object.values(icons.left) + ); + const $rightIcons = $('
    ').html( + Object.values(icons.right) + ); + $(tablist) + .wrap('
    ') + .before($leftIcons) + .after($rightIcons); + $(icons.left.touch).click(function previousTab() { + tablist.dispatchEvent(new Event('previous-tab')); + }); + $(icons.right.touch).click(function nextTab() { + tablist.dispatchEvent(new Event('next-tab')); + }); + $(icons.left.scroll).click(function scrollLeft() { + tablist.dispatchEvent(new Event('scroll-left')); + }); + $(icons.right.scroll).click(function scrollRight() { + tablist.dispatchEvent(new Event('scroll-right')); + }); + }, + checkScrollability() { + // Function to update no-scroll-left and no-scroll-right + // classes for tabs bar wrapper. + if (!Tabs.helpers.hasLeftOverflow(this)) + $(this).parent().addClass('no-scroll-left'); + else $(this).parent().removeClass('no-scroll-left'); + if (!Tabs.helpers.hasRightOverflow(this)) + $(this).parent().addClass('no-scroll-right'); + else $(this).parent().removeClass('no-scroll-right'); + }, + getLeftScrollIndex(tablist, $tabs) { + const tablistWidth = tablist.clientWidth; + // Find the first visible tab. + let firstVisible = 0; + while ( + firstVisible < $tabs.length - 1 && + !$($tabs.get(firstVisible)).data('isIntersecting') + ) + firstVisible += 1; + // Calculate the tab to switch to. + let switchTo = firstVisible; + const end = tablist.scrollLeft; + while ( + switchTo >= 0 && + end - $tabs.get(switchTo).parentElement.offsetLeft < tablistWidth + ) + switchTo -= 1; + return switchTo + 1; + }, + getRightScrollIndex($tabs) { + // Calculate tab to switch to. + let switchTo = $tabs.length - 1; + while (switchTo > 0 && !$($tabs[switchTo]).data('isIntersecting')) switchTo -= 1; + return switchTo; + }, + addScrollListeners(tablist, $tabs) { + function scrollTo(i) { + tablist.scrollLeft = $tabs.get(i).offsetLeft - tablist.offsetLeft; + } + tablist.addEventListener('scroll-left', function scrollLeft() { + scrollTo(Tabs.getLeftScrollIndex(tablist, $tabs)); + }); + tablist.addEventListener('scroll-right', function scrollRight() { + scrollTo(Tabs.getRightScrollIndex($tabs)); + }); + $(tablist).scroll(Utils.debounce(Tabs.checkScrollability, 500)); + }, + addNavListeners(tablist, $tabs) { + let index = 0; + function activateCurrent() { + window.mui.tabs.activate($($tabs.get(index)).data('mui-controls')); + } + tablist.addEventListener('previous-tab', function previousTab() { + if (index > 0) index -= 1; + else index = $tabs.length - 1; + activateCurrent(); + }); + tablist.addEventListener('next-tab', function nextTab() { + if (index < $tabs.length - 1) index += 1; + else index = 0; + activateCurrent(); + }); + $tabs.each(function addTabListeners(tabIndex, tab) { + tab.addEventListener('mui.tabs.showend', function tabActivated(ev) { + index = tabIndex; + ev.srcElement.scrollIntoView(); + }); + }); + }, + enhanceARIA(tablist, $tabs) { + $tabs.on('keydown', function addArrowNav(event) { + const [LEFT, UP, RIGHT, DOWN] = [37, 38, 39, 40]; + const k = event.which || event.keyCode; + if (k >= LEFT && k <= DOWN) { + switch (k) { + case LEFT: + case UP: + tablist.dispatchEvent(new Event('previous-tab')); + break; + case RIGHT: + case DOWN: + tablist.dispatchEvent(new Event('next-tab')); + break; + default: } - // CREATING OVERFLOW TOUCH ICONS - $(this).parent().find('.overflow-icon-left.js-tab-touch').click(previous); - $(this).parent().find('.overflow-icon-right.js-tab-touch').click(next); - // CREATING OVERFLOW SCROLL ICONS - $(this) - .parent() - .find('.overflow-icon-left.js-tab-scroll') - .click(scrollIconLeft); - $(this) - .parent() - .find('.overflow-icon-right.js-tab-scroll') - .click(scrollIconRight); + event.preventDefault(); + } + }); + $tabs.each(function addTabListeners(tabIndex, tab) { + tab.addEventListener('mui.tabs.showend', function tabActivated(ev) { + $(ev.srcElement).attr({ tabindex: 0, 'aria-selected': 'true' }).focus(); }); - - // parentElement.find('[data-mui-controls^="md-tab-"]').each(function attach() { - // this.addEventListener('mui.tabs.showend', function showingTab(ev) { - // console.log(ev); - // }); - // }); - - $(this).removeClass('activating').addClass('activated'); + tab.addEventListener('mui.tabs.hideend', function tabDeactivated(ev) { + $(ev.srcElement).attr({ tabindex: -1, 'aria-selected': 'false' }).focus(); + }); + }); + }, + async processTablist(index, tablist) { + const $tablist = $(tablist); + const $tabs = $tablist.find('[role=tab]'); + const isMarkdown = $tablist.parent().hasClass('md-tabset'); + let visibilityObserver; + let $tablistContainer; + Tabs.addNavListeners(tablist, $tabs); + if (isMarkdown) { + $tablist.addClass('mui-tabs__bar'); + Tabs.addScrollListeners(tablist, $tabs); + Tabs.wrapAndAddIcons(tablist); + $tablistContainer = $tablist.parent(); + Tabs.overflowObserver.observe(tablist); + visibilityObserver = Tabs.getIntersectionObserver(tablist); + Tabs.checkScrollability.bind(tablist)(); + } + $tabs.each(function processTab(tabIndex, tab) { + if (isMarkdown) { + $(tab) + .attr('data-mui-toggle', 'tab') + .attr('data-mui-controls', $(tab).attr('aria-controls')); + visibilityObserver.observe(tab); + const $panel = $(`#${$(tab).attr('aria-controls')}`); + $panel.mouseenter( + $tablistContainer.addClass.bind($tablistContainer, 'has-panel-hover') + ); + $panel.mouseleave( + $tablistContainer.removeClass.bind($tablistContainer, 'has-panel-hover') + ); + } + }); + Tabs.enhanceARIA(tablist, $tabs); + $tablist.addClass('activated').removeClass('activating'); + }, + process($parentElement, $tablists) { + $parentElement.find('.md-tabset [role=tabpanel]').addClass('mui-tabs__pane'); + $parentElement.find('.md-tabset .md-tab-active').addClass('mui--is-active'); + $tablists.each(this.processTablist); + }, + async init(container) { + const $parentElement = $(container || 'body'); + const $tablists = $parentElement.find( + '[role=tablist]:not(.activating):not(.activated)' + ); + $tablists.addClass('activating'); + this.process($parentElement, $tablists); + }, + helpers: { + createIconset() { + return { + left: { + touch: this.createIcon('touch', 'left'), + scroll: this.createIcon('scroll', 'left'), + }, + right: { + touch: this.createIcon('touch', 'right'), + scroll: this.createIcon('scroll', 'right'), + }, + }; + }, + createIcon(mode, direction) { + return Utils.getFaiconHTML(`angle-${direction}`, 'body', true, [ + `tabs-nav-icon-${direction}`, + `js-tabs-${mode}`, + ]); + }, + hasOverflow(el) { + return el.scrollLeft + el.scrollWidth > el.clientWidth; + }, + hasLeftOverflow(el) { + return Boolean(el.scrollLeft); + }, + hasRightOverflow(el) { + return ( + el.scrollLeft + el.clientWidth + el.offsetLeft < + el.children[el.children.length - 1].offsetLeft + + el.children[el.children.length - 1].clientWidth + ); + }, }, }; -export default MUITabs; +export default Tabs; diff --git a/funnel/assets/sass/base/_variable.scss b/funnel/assets/sass/base/_variable.scss index 9a492e584..c69482172 100644 --- a/funnel/assets/sass/base/_variable.scss +++ b/funnel/assets/sass/base/_variable.scss @@ -38,3 +38,10 @@ $xFormLabelLineHeight: 15px; $mui-base-font-size: 14px; $mui-base-line-height: 1.5; $mui-box-shadow-grey: rgba(158, 158, 158, 0.12); + +// MUI Tabs +$mui-tab-font-color: $mui-text-accent; +$mui-tab-font-color-active: $mui-primary-color; +$mui-tab-border-color-active: $mui-primary-color; +$mui-tab-font-color-hover: $mui-neutral-color; +$mui-tab-border-color-hover: $mui-neutral-color; diff --git a/funnel/assets/sass/components/_markdown.scss b/funnel/assets/sass/components/_markdown.scss index 43cd22be3..70645979c 100644 --- a/funnel/assets/sass/components/_markdown.scss +++ b/funnel/assets/sass/components/_markdown.scss @@ -5,8 +5,8 @@ .markdown { overflow-wrap: break-word; overflow: auto; - margin: 0 -16px; - padding: 0 16px; + margin: 0 -$mui-grid-padding; + padding: 0 $mui-grid-padding; h1, h2, diff --git a/funnel/assets/sass/components/_tabs.scss b/funnel/assets/sass/components/_tabs.scss index 9c7b5f92e..5fc963918 100644 --- a/funnel/assets/sass/components/_tabs.scss +++ b/funnel/assets/sass/components/_tabs.scss @@ -1,3 +1,138 @@ +.mui-tabs__bar:not(.mui-tabs__bar--pills) { + border-bottom: 1px solid $mui-tab-font-color; + scroll-behavior: smooth; + > li { + transition: transform 150ms ease; + > a { + text-transform: capitalize; + height: auto; + line-height: 21px; + padding: 6px 0 2px; + text-decoration: none; + cursor: pointer; + &:hover { + border-bottom: 2px solid $mui-tab-border-color-hover; + } + } + &:not(.mui--is-active) > a:hover { + color: $mui-tab-font-color-hover; + } + &:not(:last-child) { + margin-right: 12px; + } + &.mui--is-active > a { + border-bottom: none; + } + } + + &::-webkit-scrollbar { + -ms-overflow-style: none; /* Internet Explorer 10+ */ + scrollbar-width: none; /* Firefox */ + position: relative; + display: none; /* Safari and Chrome */ + } +} + +.md-tablist-wrapper { + display: flex; + margin: 0 -16px; + align-items: center; + + > .mui-tabs__bar:not(.mui-tabs__bar--pills) { + display: inline-block; + width: calc(100% - 28px); + } + + > [class*='tabs-nav-icons-'] { + width: 14px; + height: 16px; + display: inline-flex; + visibility: hidden; + + > [class*='tabs-nav-icon-'] { + display: none; + height: 100%; + width: auto; + cursor: pointer; + color: $mui-tab-font-color; + + &:hover { + color: $mui-tab-font-color-hover; + } + } + } + + > .tabs-nav-icons-left > [class*='tabs-nav-icon-']:hover { + padding-right: 3px; + } + + > .tabs-nav-icons-right > [class*='tabs-nav-icon-']:hover { + padding-left: 3px; + } + + &:hover > [class*='tabs-nav-icons-'] { + visibility: visible; + } + + &.has-overflow > [class*='tabs-nav-icons-'] > [class*='tabs-nav-icon-'] { + &.js-tabs-scroll { + display: inline; + } + + &.js-tabs-touch { + display: none; + } + + @media (any-pointer: coarse) { + &.js-tabs-scroll { + display: none; + } + + &.js-tabs-touch { + display: inline; + } + } + } + &.no-scroll-left > .tabs-nav-icons-left, + &.no-scroll-right > .tabs-nav-icons-right { + .js-tabs-scroll { + visibility: hidden !important; + } + } + + // Uncomment to enable hiding of nav on + // non-touch devices, when first / last tab + // is activated. + + // &.tabs-active-first > .tabs-nav-icons-left, + // &.tabs-active-last > .tabs-nav-icons-right { + // .js-tabs-touch { + // visibility: hidden !important; + // } + // } + + @media (any-pointer: coarse) { + > [class*='tabs-nav-icons-'] { + visibility: visible; + } + } + + &.has-panel-hover > [class*='tabs-nav-icons-'] { + visibility: visible; + } +} + +.mui-tabs__pane { + .mui-tabs__bar--wrapper { + margin: 0 -5px; + } + + .mui-tabs__pane { + padding-left: 9px; + padding-right: 9px; + } +} + .tab-container { display: flex; padding: 0; @@ -183,3 +318,15 @@ border: 1px solid transparent; background: transparentize($mui-primary-color, 0.85); } + +.md-tabset { + ul[role='tablist'] { + @extend .mui-tabs__bar; + a[role='tab'] { + @extend .mui--text-body2; + } + } + [role='tabpanel'] { + @extend .mui-tabs__pane, .top-padding; + } +} diff --git a/funnel/assets/sass/mui/_custom.scss b/funnel/assets/sass/mui/_custom.scss index 191b977b9..781d0873b 100644 --- a/funnel/assets/sass/mui/_custom.scss +++ b/funnel/assets/sass/mui/_custom.scss @@ -95,3 +95,9 @@ $mui-grid-gutter-width: 32px !default; // ============================================================================ $mui-panel-padding: 16px !default; + +// ============================================================================ +// TABS +// ============================================================================ + +$mui-tab-font-color: $mui-text-accent !default; diff --git a/funnel/assets/sass/mui/_tabs.scss b/funnel/assets/sass/mui/_tabs.scss index b03871420..0b74a1183 100644 --- a/funnel/assets/sass/mui/_tabs.scss +++ b/funnel/assets/sass/mui/_tabs.scss @@ -1,41 +1,34 @@ -/** - * MUI Tabs module - */ - .mui-tabs__bar { - display: block; - position: relative; list-style: none; padding-left: 0; margin-bottom: 0; + background-color: transparent; white-space: nowrap; overflow-x: auto; - border-bottom: 1px solid $mui-tab-font-color; - scroll-behavior: smooth; > li { display: inline-block; > a { - display: flex; + display: block; white-space: nowrap; + text-transform: uppercase; font-weight: 500; font-size: 14px; color: $mui-tab-font-color; cursor: default; - line-height: 21px; - padding: 12px 0; + height: 48px; + line-height: 48px; + padding-left: 24px; + padding-right: 24px; user-select: none; &:hover { text-decoration: none; - color: $mui-tab-border-color-hover; - border-bottom: 2px solid $mui-tab-font-color-hover; } } &.mui--is-active { - text-decoration: none; border-bottom: 2px solid $mui-tab-border-color-active; > a { @@ -43,17 +36,11 @@ color: $mui-tab-font-color; } @else { color: $mui-tab-font-color-active; - border-bottom: none; - text-decoration: none; } } } } - > li:not(:last-child) { - margin-right: 12px; - } - &.mui-tabs__bar--justified { display: table; width: 100%; @@ -69,20 +56,6 @@ } } } - - &::-webkit-scrollbar { - -ms-overflow-style: none; /* Internet Explorer 10+ */ - scrollbar-width: none; /* Firefox */ - position: relative; - } - - &::-webkit-scrollbar { - display: none; /* Safari and Chrome */ - } -} - -.tabpanel__body__padding { - padding: 8px 0 16px 0 !important; } .mui-tabs__pane { @@ -92,49 +65,3 @@ display: block; } } - -/* - OVERFLOW ARROWS STYLING -*/ - -.tabs__icon-wrapper { - display: flex; - position: relative; - margin: 0 -10px; - align-items: center; - - > .overflow-icon { - position: relative; - display: none; - width: 14px; - height: 14px; - align-items: center; - cursor: pointer; - color: #4d5763; - - &:hover { - color: #1f2d3d; - } - - &.js-tab-scroll { - display: flex; - } - - &.js-tab-touch { - display: none; - } - - &.hidden-overflowIcon { - visibility: hidden; - } - - @media (max-width: 768px) { - &.js-tab-scroll { - display: none; - } - &.js-tab-touch { - display: flex; - } - } - } -} diff --git a/funnel/assets/sass/mui/_variables.scss b/funnel/assets/sass/mui/_variables.scss index c3ae41d8d..177233b8b 100644 --- a/funnel/assets/sass/mui/_variables.scss +++ b/funnel/assets/sass/mui/_variables.scss @@ -213,7 +213,7 @@ $mui-table-border-color: $mui-divider-color !default; // TABS // ============================================================================ -$mui-tab-font-color: $mui-text-accent !default; +$mui-tab-font-color: $mui-base-font-color !default; $mui-tab-font-color-active: $mui-primary-color !default; $mui-tab-border-color-active: $mui-primary-color !default; $mui-tab-font-color-hover: $mui-text-light !default; diff --git a/funnel/assets/sass/pages/submission.scss b/funnel/assets/sass/pages/submission.scss index 3a7d2008d..9ad0bab12 100644 --- a/funnel/assets/sass/pages/submission.scss +++ b/funnel/assets/sass/pages/submission.scss @@ -149,8 +149,6 @@ .proposal-content { min-height: 100px; - margin: 0 -16px; - padding: 0 16px; img { max-width: 100%; } diff --git a/funnel/utils/markdown/tabs.py b/funnel/utils/markdown/tabs.py index 3696c1624..74314f432 100644 --- a/funnel/utils/markdown/tabs.py +++ b/funnel/utils/markdown/tabs.py @@ -3,41 +3,16 @@ from dataclasses import dataclass, field from functools import reduce -from typing import ClassVar, Dict, List, Optional, Tuple - -__all__ = ['render_tab'] +from typing import Any, ClassVar, Dict, List, Optional, Tuple +from markdown_it.token import Token -def get_tab_tokens(tokens): - return [ - { - 'index': i, - 'nesting': token.nesting, - 'info': token.info, - 'key': '-'.join([token.markup, str(token.level)]), - } - for i, token in enumerate(tokens) - if token.type in ('container_tab_open', 'container_tab_close') - ] - - -def get_pair(tab_tokens, start=0) -> Optional[Tuple[int, int]]: - i = 1 - while i < len(tab_tokens): - if ( - tab_tokens[i]['nesting'] == -1 - and tab_tokens[0]['key'] == tab_tokens[i]['key'] - ): - break - i += 1 - if i >= len(tab_tokens): - return None - return (start, start + i) +__all__ = ['render_tab'] -def render_tab(self, tokens, idx, _options, env): +def render_tab(self, tokens: List[Token], idx, _options, env): if 'manager' not in env: - env['manager'] = TabsManager(get_tab_tokens(tokens)) + env['manager'] = TabsManager(tokens) node = env['manager'].index(idx) if node is None: @@ -52,9 +27,7 @@ class TabsetNode: start: int parent: Optional[TabNode] = None children: List[TabNode] = field(default_factory=list) - _html_tabs: ClassVar[ - str - ] = '
      {items_html}
    ' + _html_tabs: ClassVar[str] = '
      {items_html}
    ' html_close: ClassVar[str] = '
    ' _tabset_id: str = '' @@ -94,15 +67,12 @@ class TabNode: _opening: ClassVar[str] = ( '
    ' - + '
    ' ) - _closing: ClassVar[str] = '
    ' + _closing: ClassVar[str] = '
    ' _item_html: ClassVar[str] = ( '
  • ' - + '{title}
  • ' + + '{title}' ) def _class_attr(self, classes=None): @@ -128,7 +98,7 @@ def flatten(self) -> List[TabsetNode]: @property def _active_class(self): - return ['mui--is-active'] if self.is_first else [] + return ['md-tab-active'] if self.is_first else [] @property def title(self): @@ -154,7 +124,8 @@ def is_last(self) -> bool: @property def html_open(self) -> str: opening = self._opening.format( - tab_id=self.tab_id, class_attr=self._class_attr(['mui-tabs__pane', 'grid']) + tab_id=self.tab_id, + class_attr=self._class_attr(), ) if self.is_first: opening = self.parent.html_open + opening @@ -179,18 +150,23 @@ class TabsManager: tabsets: List[TabsetNode] _index: Dict[int, TabNode] - def __init__(self, tab_tokens) -> None: + def __init__(self, tokens: List[Token]) -> None: + tab_tokens = self._get_tab_tokens(tokens) self.tabsets: List[TabsetNode] = self.make(tab_tokens) self._index = {} self.index() - def make(self, tab_tokens, parent: Optional[TabNode] = None) -> List[TabsetNode]: + def make( + self, tab_tokens: List[Dict[str, Any]], parent: Optional[TabNode] = None + ) -> List[TabsetNode]: open_index, close_index = 0, len(tab_tokens) - 1 nodes: List[TabNode] = [] tabsets: List[TabsetNode] = [] previous: Optional[TabNode] = None while True: - pairs = get_pair(tab_tokens[open_index : close_index + 1], start=open_index) + pairs = self._tab_token_pair( + tab_tokens[open_index : close_index + 1], start=open_index + ) if pairs is None: break open_index, close_index = pairs @@ -221,6 +197,33 @@ def make(self, tab_tokens, parent: Optional[TabNode] = None) -> List[TabsetNode] return tabsets + def _get_tab_tokens(self, tokens: List[Token]) -> List[Dict[str, Any]]: + return [ + { + 'index': i, + 'nesting': token.nesting, + 'info': token.info, + 'key': '-'.join([token.markup, str(token.level)]), + } + for i, token in enumerate(tokens) + if token.type in ('container_tab_open', 'container_tab_close') + ] + + def _tab_token_pair( + self, tab_tokens: List[Dict[str, Any]], start=0 + ) -> Optional[Tuple[int, int]]: + i = 1 + while i < len(tab_tokens): + if ( + tab_tokens[i]['nesting'] == -1 + and tab_tokens[0]['key'] == tab_tokens[i]['key'] + ): + break + i += 1 + if i >= len(tab_tokens): + return None + return (start, start + i) + def index(self, start: Optional[int] = None) -> Optional[TabNode]: if start is not None: try: diff --git a/tests/unit/utils/markdown/data/tabs.toml b/tests/unit/utils/markdown/data/tabs.toml index 4d0ea613f..dbe14a8ac 100644 --- a/tests/unit/utils/markdown/data/tabs.toml +++ b/tests/unit/utils/markdown/data/tabs.toml @@ -482,17 +482,17 @@ This tab is going to have a table!
    """ document = """

    Tabs using containers plugin #

    Let us see if we can use the containers plugin to render tabs.

    -

    The next tab has a blank title.
    +

    The next tab has a blank title.
    The tab for it should render in the format “Tab <n>”.

    This tab contains code!

    -
    let x = 10000;
    +
    let x = 10000;
     sleep(x);
     
    -
    def sum(a, b):
    +
    def sum(a, b):
         return a['quantity'] + b['quantity']
     print(sum({'quantity': 5}, {'quantity': 10}))
     
    -
    **Here is bold markdown.**
    +
    **Here is bold markdown.**
     ### Heading
     \\::: should render three `:` characters.
     \\``` should render three \\` characters.
    @@ -500,8 +500,8 @@ There's a list below:
     - Item 1
     - Item 2
     
    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    -
    Mindmap
    +

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    +
    Mindmap
     # Digital Identifiers and Rights
     
     ## Community and Outreach
    @@ -597,7 +597,7 @@ There's a list below:
     - Public health services
     - Records (birth, death, land etc)
     
    -
    Visualization
    {
    +
    Visualization
    {
     "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
     "description": "A population pyramid for the US in 2000.",
     "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    @@ -668,13 +668,13 @@ There's a list below:
     }
     
     
    -
    Visualization
    sequenceDiagram
    +
    Visualization
    sequenceDiagram
      Alice->>+John: Hello John, how are you?
      Alice->>+John: John, can you hear me?
      John-->>-Alice: Hi Alice, I can hear you!
      John-->>-Alice: I feel great!
     
    -

    This tab is going to have a table!

    +

    This tab is going to have a table!

    @@ -704,20 +704,20 @@ There's a list below:
  • Finally, the list ends at top level.
  • -""" +""" tabs = """

    Tabs using containers plugin

    Let us see if we can use the containers plugin to render tabs.

    -

    The next tab has a blank title. +

    The next tab has a blank title. The tab for it should render in the format "Tab <n>".

    This tab contains code!

    -
    let x = 10000;
    +
    let x = 10000;
     sleep(x);
     
    -
    def sum(a, b):
    +
    def sum(a, b):
         return a['quantity'] + b['quantity']
     print(sum({'quantity': 5}, {'quantity': 10}))
     
    -
    **Here is bold markdown.**
    +
    **Here is bold markdown.**
     ### Heading
     \\::: should render three `:` characters.
     \\``` should render three \\` characters.
    @@ -725,8 +725,8 @@ There's a list below:
     - Item 1
     - Item 2
     
    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    -

    What to do with tabs without titles? I presume, we should be ignoring them completely.

    +
    
     # Digital Identifiers and Rights
     
     ## Community and Outreach
    @@ -822,7 +822,7 @@ There's a list below:
     - Public health services
     - Records (birth, death, land etc)
     
    -
    {
    +
    {
       "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
       "description": "A population pyramid for the US in 2000.",
       "data": { "url": "https://vega.github.io/vega-lite/examples/data/population.json"},
    @@ -893,13 +893,13 @@ There's a list below:
     }
     
     
    -
    sequenceDiagram
    +
    sequenceDiagram
         Alice->>+John: Hello John, how are you?
         Alice->>+John: John, can you hear me?
         John-->>-Alice: Hi Alice, I can hear you!
         John-->>-Alice: I feel great!
     
    -

    This tab is going to have a table!

    +

    This tab is going to have a table!

    @@ -929,4 +929,4 @@ There's a list below:
  • Finally, the list ends at top level.
  • -""" +""" From 60674a62b106f235d22cd71e9493d05b2bafbc12 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Mon, 6 Mar 2023 11:17:11 +0530 Subject: [PATCH 062/281] Change external tickets button txt to `Register` (#1655) --- funnel/templates/project_layout.html.jinja2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index 317f2dc72..f7f823588 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -182,7 +182,7 @@ {% elif project.buy_tickets_url.url -%} - {{ faicon(icon='arrow-up-right-from-square', baseline=true, css_class="mui--text-white fa-icon--right-margin") }}{% trans %}Get Tickets{% endtrans %} + {{ faicon(icon='arrow-up-right-from-square', baseline=true, css_class="mui--text-white fa-icon--right-margin") }}{% trans %}Register{% endtrans %} {% endif %} {% if project.features.tickets() %}
    From 839bbf1753d2f91566ac72342ad6e68a47482674 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Mon, 6 Mar 2023 15:07:04 +0530 Subject: [PATCH 063/281] Verify type annotations for test fixtures; upgrade deps (#1656) --- .pre-commit-config.yaml | 6 ++-- package-lock.json | 60 +++++++++++++++---------------- requirements/base.txt | 21 ++++++----- requirements/dev.txt | 8 ++--- requirements/test.in | 1 + requirements/test.txt | 6 ++-- tests/conftest.py | 8 +++++ tests/unit/models/test_session.py | 10 +++--- 8 files changed, 67 insertions(+), 53 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5885d5329..541aa6001 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -105,7 +105,7 @@ repos: - id: flake8 additional_dependencies: *flake8deps - repo: https://github.com/PyCQA/pylint - rev: v2.16.2 + rev: v2.16.3 hooks: - id: pylint args: [ @@ -158,13 +158,13 @@ repos: - id: trailing-whitespace args: ['--markdown-linebreak-ext=md'] - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.0.0-alpha.4 + rev: v3.0.0-alpha.6 hooks: - id: prettier args: ['--single-quote', '--trailing-comma', 'es5'] exclude: funnel/templates/js/ - repo: https://github.com/Riverside-Healthcare/djLint - rev: v1.19.15 + rev: v1.19.16 hooks: - id: djlint-jinja files: \.html\.(jinja2|j2)$ diff --git a/package-lock.json b/package-lock.json index 675f404a1..86f4c8eb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2553,9 +2553,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", - "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==" + "version": "18.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", + "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -2886,13 +2886,13 @@ } }, "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", + "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", "dev": true, "dependencies": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "engines": { @@ -3665,9 +3665,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001458", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz", - "integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==", + "version": "1.0.30001460", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001460.tgz", + "integrity": "sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ==", "funding": [ { "type": "opencollective", @@ -4141,9 +4141,9 @@ } }, "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "version": "14.18.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.37.tgz", + "integrity": "sha512-7GgtHCs/QZrBrDzgIJnQtuSvhFSwhyYSI2uafSwZoNt1iOGhEN5fwNrQMjtONyHm9+/LoA4453jH0CMYcr06Pg==", "dev": true }, "node_modules/cypress/node_modules/ansi-styles": { @@ -4943,12 +4943,12 @@ "dev": true }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/dir-glob": { @@ -5004,9 +5004,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.315", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.315.tgz", - "integrity": "sha512-ndBQYz3Eyy3rASjjQ9poMJGoAlsZ/aZnq6GBsGL4w/4sWIAwiUHVSsMuADbxa8WJw7pZ0oxLpGbtoDt4vRTdCg==" + "version": "1.4.320", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.320.tgz", + "integrity": "sha512-h70iRscrNluMZPVICXYl5SSB+rBKo22XfuIS1ER0OQxQZpKTnFpuS6coj7wY9M/3trv7OR88rRMOlKmRvDty7Q==" }, "node_modules/elkjs": { "version": "0.8.2", @@ -5852,9 +5852,9 @@ } }, "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dependencies": { "estraverse": "^5.1.0" }, @@ -6847,9 +6847,9 @@ "dev": true }, "node_modules/htmx.org": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-1.8.5.tgz", - "integrity": "sha512-3U9xraoaqNFCIUcpxD0EmF266ZS7DddTiraD9lqFORnsVnzmddAzi24ilaNyS4I9nhSj8tqiWbOf+ulKrU8bag==" + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-1.8.6.tgz", + "integrity": "sha512-88U8qwaIs4sZjzZvHgAX62B6qZoEdQNSYCRHARtYhSrk+iCUd3al8/0CrLwD8Tephsoodsf0gN9NbRrrmlJIfw==" }, "node_modules/http-cache-semantics": { "version": "4.1.1", @@ -7110,13 +7110,13 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "get-intrinsic": "^1.2.0", "is-typed-array": "^1.1.10" }, "funding": { diff --git a/requirements/base.txt b/requirements/base.txt index 8d82bd6c0..7544898bc 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -17,7 +17,7 @@ aiohttp==3.8.4 # tuspy aiosignal==1.3.1 # via aiohttp -alembic==1.9.4 +alembic==1.10.0 # via # -r requirements/base.in # flask-migrate @@ -84,7 +84,7 @@ click==8.1.3 # rq crontab==1.0.0 # via rq-scheduler -cryptography==39.0.1 +cryptography==39.0.2 # via # -r requirements/base.in # paramiko @@ -250,7 +250,7 @@ marshmallow-enum==1.5.1 # via dataclasses-json maxminddb==2.2.0 # via geoip2 -mdit-py-plugins==0.3.4 +mdit-py-plugins==0.3.5 # via -r requirements/base.in mdurl==0.1.2 # via markdown-it-py @@ -284,7 +284,7 @@ paramiko==2.12.0 # via fabric3 passlib==1.7.4 # via -r requirements/base.in -phonenumbers==8.13.6 +phonenumbers==8.13.7 # via -r requirements/base.in premailer==3.10.0 # via -r requirements/base.in @@ -322,7 +322,7 @@ pyjsparser==2.7.1 # via js2py pyjwt==2.6.0 # via twilio -pymdown-extensions==9.9.2 +pymdown-extensions==9.10 # via # -r requirements/base.in # coaster @@ -360,7 +360,9 @@ pytz-deprecation-shim==0.1.0.post0 pyvimeo==1.1.0 # via -r requirements/base.in pyyaml==6.0 - # via flask-flatpages + # via + # flask-flatpages + # pymdown-extensions qrcode==7.4.2 # via -r requirements/base.in redis==4.5.1 @@ -391,7 +393,7 @@ requests-mock==1.10.0 # via baseframe requests-oauthlib==1.3.1 # via tweepy -rich==13.3.1 +rich==13.3.2 # via -r requirements/base.in rq==1.13.0 # via @@ -427,7 +429,7 @@ six==1.16.0 # requests-mock # sqlalchemy-json # tuspy -sqlalchemy==2.0.4 +sqlalchemy==2.0.5.post1 # via # -r requirements/base.in # alembic @@ -452,7 +454,7 @@ tldextract==3.4.0 # mxsniff toml==0.10.2 # via -r requirements/base.in -tqdm==4.64.1 +tqdm==4.65.0 # via nltk tuspy==1.0.0 # via pyvimeo @@ -463,6 +465,7 @@ twilio==7.16.4 typing-extensions==4.5.0 # via # -r requirements/base.in + # alembic # baseframe # coaster # qrcode diff --git a/requirements/dev.txt b/requirements/dev.txt index e07ec3413..520fd76c3 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -12,7 +12,7 @@ # via # -r requirements/base.in # baseframe -astroid==2.14.2 +astroid==2.15.0 # via pylint bandit==1.7.4 # via -r requirements/dev.in @@ -119,7 +119,7 @@ pip-compile-multi==2.6.2 # via -r requirements/dev.in pip-tools==6.12.3 # via pip-compile-multi -platformdirs==3.0.0 +platformdirs==3.1.0 # via # black # pylint @@ -134,7 +134,7 @@ pydocstyle==6.3.0 # via flake8-docstrings pyflakes==3.0.1 # via flake8 -pylint==2.16.2 +pylint==2.16.3 # via # -r requirements/dev.in # pylint-pytest @@ -188,7 +188,7 @@ types-redis==4.5.1.4 # via -r requirements/dev.in types-requests==2.28.11.15 # via -r requirements/dev.in -types-setuptools==67.4.0.3 +types-setuptools==67.5.0.0 # via -r requirements/dev.in types-six==1.16.21.6 # via -r requirements/dev.in diff --git a/requirements/test.in b/requirements/test.in index 1e2666d2a..89610cda1 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -14,3 +14,4 @@ pytest-rerunfailures pytest-splinter requests-mock tomlkit +typeguard diff --git a/requirements/test.txt b/requirements/test.txt index a69305b7e..3ba3bb7d7 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,4 +1,4 @@ -# SHA1:c5a71eb216230dce54d598cfeb833afe50a4af40 +# SHA1:fe0464a2a1d80b8227dac39f195c3d7c980e00b4 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -49,7 +49,7 @@ pluggy==1.0.0 # via pytest pysocks==1.7.1 # via urllib3 -pytest==7.2.1 +pytest==7.2.2 # via # -r requirements/test.in # pytest-bdd @@ -95,6 +95,8 @@ trio==0.22.0 # trio-websocket trio-websocket==0.9.2 # via selenium +typeguard==2.13.3 + # via -r requirements/test.in urllib3[socks]==1.26.14 # via # geoip2 diff --git a/tests/conftest.py b/tests/conftest.py index 43ce303e6..048f1bcad 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -19,6 +19,7 @@ import sqlalchemy as sa import pytest +import typeguard if t.TYPE_CHECKING: from flask import Flask @@ -67,6 +68,13 @@ def sort_key(item) -> t.Tuple[int, str]: items.sort(key=sort_key) +# Adapted from https://github.com/untitaker/pytest-fixture-typecheck +def pytest_runtest_call(item): + for attr, type_ in item.obj.__annotations__.items(): + if attr in item.funcargs: + typeguard.check_type(attr, item.funcargs[attr], type_) + + # --- Import fixtures ------------------------------------------------------------------ diff --git a/tests/unit/models/test_session.py b/tests/unit/models/test_session.py index 2e38ad40e..d42478a5e 100644 --- a/tests/unit/models/test_session.py +++ b/tests/unit/models/test_session.py @@ -3,7 +3,7 @@ from datetime import datetime, timedelta from types import SimpleNamespace -from typing import Dict, List, Optional, Tuple +from typing import Dict, List, Optional from sqlalchemy.exc import IntegrityError import sqlalchemy as sa @@ -297,11 +297,11 @@ def test_next_session_at_property( db_session, project_expo2010, project_expo2011, - project_dates: Optional[Tuple[datetime, datetime]], - session_dates: List[Tuple[datetime, datetime]], + project_dates: Optional[tuple], + session_dates: List[tuple], expected_session: Optional[int], - project2_dates: Optional[Tuple[datetime, datetime]], - session2_dates: List[Tuple[datetime, datetime]], + project2_dates: Optional[tuple], + session2_dates: List[tuple], expected2_session: Optional[int], ) -> None: """Test next_session_at to work for projects with sessions and without.""" From 74d0e08cbd32e89f434d5c3b0f39fd5754a2e971 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 21:59:09 +0530 Subject: [PATCH 064/281] [pre-commit.ci] pre-commit autoupdate (#1657) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/PyCQA/pylint: v2.16.3 → v2.16.4](https://github.com/PyCQA/pylint/compare/v2.16.3...v2.16.4) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 541aa6001..7d9a9732d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -105,7 +105,7 @@ repos: - id: flake8 additional_dependencies: *flake8deps - repo: https://github.com/PyCQA/pylint - rev: v2.16.3 + rev: v2.16.4 hooks: - id: pylint args: [ From 9846736700bbee880cf524467a56a8fe475f4d65 Mon Sep 17 00:00:00 2001 From: Amogh M Aradhya Date: Tue, 7 Mar 2023 22:27:43 +0530 Subject: [PATCH 065/281] Add browser testing using Selenium and BDD (#1423) Co-authored-by: Kiran Jonnalagadda Co-authored-by: Mitesh Ashar Co-authored-by: Zainab Bawa Co-authored-by: anish --- .gitattributes | 2 +- .github/workflows/pytest.yml | 4 +- .github/workflows/telegram.yml | 2 +- .pre-commit-config.yaml | 3 +- .prettierrc.js | 1 + Makefile | 12 +- funnel/devtest.py | 4 +- funnel/loginproviders/github.py | 2 +- funnel/loginproviders/linkedin.py | 2 +- funnel/loginproviders/zoom.py | 2 +- funnel/models/notification.py | 300 +++++++++++------- funnel/models/organization_membership.py | 8 +- funnel/models/proposal.py | 2 +- funnel/pages/about/policy/privacy.md | 2 +- funnel/signals.py | 4 +- .../static/translations/hi_IN/messages.json | 4 +- funnel/templates/layout.html.jinja2 | 2 +- .../templates/password_login_form.html.jinja2 | 6 +- funnel/templates/project_layout.html.jinja2 | 2 +- .../hi_IN/LC_MESSAGES/messages.po | 8 +- funnel/translations/messages.pot | 4 +- funnel/views/account.py | 1 + funnel/views/notification.py | 2 +- .../organization_membership_notification.py | 52 ++- .../project_crew_notification.py | 116 ++++--- funnel/views/otp.py | 2 +- instance/testing.py | 1 + package-lock.json | 6 +- pyproject.toml | 6 +- requirements/test.in | 3 +- requirements/test.txt | 28 +- tests/conftest.py | 131 ++++---- tests/e2e/account/test_register.py | 211 ++++++++++++ tests/e2e/basic/test_live_server.py | 34 ++ tests/{features => e2e}/conftest.py | 0 .../follow/test_account_follow.py} | 0 tests/features/account/delete_confirm.feature | 26 ++ tests/features/account/register.feature | 67 ++++ tests/features/comments/comment_reply.feature | 16 + tests/features/follow/account_follow.feature | 39 +++ .../features/follow/account_unfollow.feature | 21 ++ .../follow/follower_notifications.feature | 47 +++ tests/features/follow/follower_stats.feature | 28 ++ ...ganization_membership_notification.feature | 75 +++++ .../project_crew_notification.feature | 167 ++++++++++ .../project_registration_on_behalf_of.feature | 36 +++ .../project_registration_temp_account.feature | 50 +++ ...ject_registration_verified_account.feature | 64 ++++ .../project/project_status_crew.feature | 16 + .../project/project_status_user.feature | 17 + tests/features/test_live_server.py | 26 -- tests/integration/views/conftest.py | 27 ++ .../integration/views/test_account_delete.py | 57 ++++ tests/unit/tests/test_conftest.py | 9 + tests/unit/utils/markdown/data/headings.toml | 8 +- ...ganization_membership_notification.feature | 75 ----- .../project_crew_notification.feature | 167 ---------- ...st_organization_membership_notification.py | 68 ++-- .../test_project_crew_notification.py | 53 ++-- 59 files changed, 1510 insertions(+), 618 deletions(-) create mode 100644 tests/e2e/account/test_register.py create mode 100644 tests/e2e/basic/test_live_server.py rename tests/{features => e2e}/conftest.py (100%) rename tests/{features/__init__.py => e2e/follow/test_account_follow.py} (100%) create mode 100644 tests/features/account/delete_confirm.feature create mode 100644 tests/features/account/register.feature create mode 100644 tests/features/comments/comment_reply.feature create mode 100644 tests/features/follow/account_follow.feature create mode 100644 tests/features/follow/account_unfollow.feature create mode 100644 tests/features/follow/follower_notifications.feature create mode 100644 tests/features/follow/follower_stats.feature create mode 100644 tests/features/notifications/organization_membership_notification.feature create mode 100644 tests/features/notifications/project_crew_notification.feature create mode 100644 tests/features/project/project_registration_on_behalf_of.feature create mode 100644 tests/features/project/project_registration_temp_account.feature create mode 100644 tests/features/project/project_registration_verified_account.feature create mode 100644 tests/features/project/project_status_crew.feature create mode 100644 tests/features/project/project_status_user.feature delete mode 100644 tests/features/test_live_server.py create mode 100644 tests/integration/views/conftest.py create mode 100644 tests/integration/views/test_account_delete.py create mode 100644 tests/unit/tests/test_conftest.py delete mode 100644 tests/unit/views/notifications/organization_membership_notification.feature delete mode 100644 tests/unit/views/notifications/project_crew_notification.feature diff --git a/.gitattributes b/.gitattributes index b9025d79a..ef4d50569 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ -* text=auto +* text=auto eol=lf *.py text eol=lf *.js text eol=lf diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 3311f9faa..b2f223782 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -33,6 +33,8 @@ permissions: jobs: test: runs-on: ubuntu-latest + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} strategy: fail-fast: false matrix: @@ -111,7 +113,7 @@ jobs: psql -h localhost -U postgres geoname_testing -c "grant all privileges on schema public to $(whoami); grant all privileges on all tables in schema public to $(whoami); grant all privileges on all sequences in schema public to $(whoami);" - name: Test with pytest run: | - pytest -vv --showlocals --splinter-headless --cov=funnel + pytest -vv --showlocals --cov=funnel - name: Prepare coverage report run: | mkdir -p coverage diff --git a/.github/workflows/telegram.yml b/.github/workflows/telegram.yml index 39a384113..c46b48d1f 100644 --- a/.github/workflows/telegram.yml +++ b/.github/workflows/telegram.yml @@ -47,7 +47,7 @@ jobs: "StephanieBr": {"tguser": "@stephaniebrne"}, "vidya-ram": {"tguser": "@vidya_ramki"}, "zainabbawa": {"tguser": "@Saaweoh"}, - "anishtp": {"tguser": "@anishtp"}, + "anishTP": {"tguser": "@anishtp"}, ".*": {"tguser": "Unknown"} } export_to: env diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7d9a9732d..a942c7c5f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -161,7 +161,8 @@ repos: rev: v3.0.0-alpha.6 hooks: - id: prettier - args: ['--single-quote', '--trailing-comma', 'es5'] + args: + ['--single-quote', '--trailing-comma', 'es5', '--end-of-line', 'lf'] exclude: funnel/templates/js/ - repo: https://github.com/Riverside-Healthcare/djLint rev: v1.19.16 diff --git a/.prettierrc.js b/.prettierrc.js index a425d3f76..c90450753 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,4 +1,5 @@ module.exports = { + endOfLine: 'lf', singleQuote: true, trailingComma: 'es5', }; diff --git a/Makefile b/Makefile index c16269425..7a5b7dd13 100644 --- a/Makefile +++ b/Makefile @@ -83,13 +83,16 @@ install-npm: install-npm-ci: npm clean-install -install-python-dev: deps-editable +install-python-pip: + pip install --upgrade pip setuptools + +install-python-dev: install-python-pip deps-editable pip install -r requirements/dev.txt -install-python-test: deps-editable +install-python-test: install-python-pip deps-editable pip install -r requirements/test.txt -install-python: deps-editable +install-python: install-python-pip deps-editable pip install -r requirements/base.txt install-dev: deps-editable install-python-dev install-npm assets @@ -103,3 +106,6 @@ assets: debug-markdown-tests: pytest -v -m debug_markdown_output + +tests-bdd: + pytest --generate-missing --feature tests tests diff --git a/funnel/devtest.py b/funnel/devtest.py index 44b221339..69a9457fb 100644 --- a/funnel/devtest.py +++ b/funnel/devtest.py @@ -146,7 +146,7 @@ def _signature_without_annotations(func) -> inspect.Signature: ) -def install_mock(func: Callable, mock: Callable): +def install_mock(func: Callable, mock: Callable) -> None: """ Patch all existing references to :attr:`func` with :attr:`mock`. @@ -157,7 +157,7 @@ def install_mock(func: Callable, mock: Callable): msig = _signature_without_annotations(mock) if fsig != msig: raise TypeError( - f"Mock function's signature does not match original's:\n" + f"Mock function’s signature does not match original’s:\n" f"{mock.__name__}{msig} !=\n" f"{func.__name__}{fsig}" ) diff --git a/funnel/loginproviders/github.py b/funnel/loginproviders/github.py index 7feac9be2..59ffc5770 100644 --- a/funnel/loginproviders/github.py +++ b/funnel/loginproviders/github.py @@ -42,7 +42,7 @@ def callback(self) -> LoginProviderData: if request.args['error'] == 'redirect_uri_mismatch': # TODO: Log this as an exception for the server admin to look at raise LoginCallbackError( - _("This server's callback URL is misconfigured") + _("This server’s callback URL is misconfigured") ) raise LoginCallbackError(_("Unknown failure")) code = request.args.get('code', None) diff --git a/funnel/loginproviders/linkedin.py b/funnel/loginproviders/linkedin.py index 97b499f98..a5a601ed5 100644 --- a/funnel/loginproviders/linkedin.py +++ b/funnel/loginproviders/linkedin.py @@ -58,7 +58,7 @@ def callback(self) -> LoginProviderData: if request.args['error'] == 'redirect_uri_mismatch': # TODO: Log this as an exception for the server admin to look at raise LoginCallbackError( - _("This server's callback URL is misconfigured") + _("This server’s callback URL is misconfigured") ) raise LoginCallbackError(_("Unknown failure")) code = request.args.get('code', None) diff --git a/funnel/loginproviders/zoom.py b/funnel/loginproviders/zoom.py index 290dc0548..3aaec6424 100644 --- a/funnel/loginproviders/zoom.py +++ b/funnel/loginproviders/zoom.py @@ -46,7 +46,7 @@ def callback(self) -> LoginProviderData: dict(request.args), ) raise LoginCallbackError( - _("This server's callback URL is misconfigured") + _("This server’s callback URL is misconfigured") ) raise LoginCallbackError(_("Unknown failure")) code = request.args.get('code', None) diff --git a/funnel/models/notification.py b/funnel/models/notification.py index d2c92bc29..48d285549 100644 --- a/funnel/models/notification.py +++ b/funnel/models/notification.py @@ -4,14 +4,17 @@ Notification models and support classes for implementing notifications, best understood using examples: -Scenario: Project P's editor E posts an update U -Where: User A is a participant on the project -Result: User A receives a notification about a new update on the project +Scenario: Notification about an update + Given: User A is a participant in project P When: Project P's editor E posts an + update U Then: User A receives a notification about update U And: The notification + is attributed to editor E And: User A is informed of being a recipient for being a + participant in project P And: User A can choose to unsubscribe from notifications + about updates How it works: -1. View handler that creates the Update triggers an UpdateNotification on it. This is - a subclass of Notification. The UpdateNotification class specifies the roles that +1. The view handler that creates the Update triggers an UpdateNotification on it. This + is a subclass of Notification. The UpdateNotification class specifies the roles that must receive the notification. 2. Roles? Yes. UpdateNotification says it should be delivered to users possessing the @@ -21,60 +24,65 @@ such as in language: "the project you're a crew member of had an update", versus "the project you're a participant of had an update". -3. An UpdateNotification instance (a polymorphic class on top of Notification) is - created referring to the Update instance. It is then dispatched from the view by - calling the dispatch method on it, an iterator. This returns UserNotification - instances. - -4. To find users with the required roles, `Update.actors_for({roles})` is called. The - default implementation in RoleMixin is aware that these roles are inherited from - Project (using granted_via declarations), and so calls `Update.project.actors_for`. - -5. UserNotification.dispatch is now called from the view. User preferences are obtained - from the User model along with transport address (email, phone, etc). - -6. For each user in the filtered list, a UserNotification db instance is created. - -7. For notifications (not this one) where both a document and a fragment are present, - like ProposalReceivedNotication with Project+Proposal, a scan is performed for - previous unread instances of UserNotification referring to the same document, - determined from UserNotification.notification.document_uuid, and those are revoked - to remove them from the user's feed. A rollup is presented instead, showing all - freshly submitted proposals. - -8. A separate render view class named RenderNewUpdateNotification contains methods named +3. The view calls `dispatch_notification` with an instance of UpdateNotification + referring to the Update instance. The dispatcher can process multiple such + notifications at once, tagging them with a common eventid. It queues a background + worker in RQ to process the notifications. + +4. The background worker calls `UpdateNotification.dispatch` to find all recipients and + create `UserNotification` instances for each of them. The worker can be given + multiple notifications linked to the same event. If a user is identified as a + recipient to more than one notification, only the first match is used. To find + these recipients, the default notification-level dispatch method calls + `Update.actors_for({roles})`. The default implementation in RoleMixin is aware that + these roles are inherited from Project (using granted_via declarations), and so + it calls `Update.project.actors_for`. The obtained UserNotification instances are + batched and handed off to a second round of background workers. + +5. Each second background worker receives a batch of UserNotification instances and + discovers user preferences for the particular notification. Some notifications are + defined as being for a fragment of a larger document, like for an individual + comment in a large comment thread. In such a case, a scan is performed for previous + unread instances of UserNotification referring to the same document, determined + from `UserNotification.notification.document_uuid`, and those are revoked to remove + them from the user's feed. A rollup is presented instead, showing all fragments + since the last view or last day, whichever is greater. The second background worker + now queues a third series of background workers, for each of the supported + transports if at least one recipient in that batch wants to use that transport. + +6. A separate render view class named RenderNewUpdateNotification contains methods named like `web`, `email`, `sms` and others. These are expected to return a rendered message. The `web` render is used for the notification feed page on the website. -9. Views are registered to the model, so the dispatch mechanism only needs to call +7. Views are registered to the model, so the dispatch mechanism only needs to call ``view.email()`` etc to get the rendered content. The dispatch mechanism then calls the appropriate transport helper (``send_email``, etc) to do the actual sending. The - message id returned by these functions is saved to the messageid columns in - UserNotification, as record that the notification was sent. If the transport doesn't - support message ids, a random non-None value is used. Accurate message ids are only - required when user interaction over the same transport is expected, such as reply - emails. + message id returned by these functions is saved to the ``messageid_*`` columns in + UserNotification, as a record that the notification was sent. If the transport + doesn't support message ids, a random non-None value is used. Accurate message ids + are only required when user interaction over the same transport is expected, such + as reply emails. -10. The notifications endpoint on the website shows a feed of UserNotification items and - handles the ability to mark each as read. This marking is not yet automatically - performed in the links in the rendered templates that were sent out, but should be. +10. The ``/updates`` endpoint on the website shows a feed of UserNotification items and + handles the ability to mark each as read. It is possible to have two separate notifications for the same event. For example, a comment replying to another comment will trigger a CommentReplyNotification to the user being replied to, and a ProjectCommentNotification or ProposalCommentNotification for the project or proposal. The same user may be a recipient of both notifications. To de-duplicate this, a random "eventid" is shared across both notifications, and is -required to be unique per user, so that the second notification will be skipped. This -is supported using an unusual primary and foreign key structure the in -:class:`Notification` and :class:`UserNotification`: +required to be unique per user, so that the second notification will be skipped. This is +supported using an unusual primary and foreign key structure in :class:`Notification` +and :class:`UserNotification`: 1. Notification has pkey ``(eventid, id)``, where `id` is local to the instance 2. UserNotification has pkey ``(eventid, user_id)`` combined with a fkey to Notification - using ``(eventid, notification_id)``. + using ``(eventid, notification_id)`` """ from __future__ import annotations from dataclasses import dataclass +from datetime import datetime from types import SimpleNamespace from typing import ( Any, @@ -88,6 +96,7 @@ Tuple, Type, Union, + cast, ) from uuid import UUID, uuid4 @@ -97,6 +106,8 @@ from werkzeug.utils import cached_property +from typing_extensions import Protocol + from baseframe import __ from coaster.sqlalchemy import ( Query, @@ -118,6 +129,7 @@ 'SMS_STATUS', 'notification_categories', 'SmsMessage', + 'NotificationType', 'Notification', 'PreviewNotification', 'NotificationPreferences', @@ -214,13 +226,23 @@ class SmsMessage(PhoneNumberMixin, BaseMixin, db.Model): # type: ignore[name-de __phone_is_exclusive__ = False phone_number_reference_is_active: bool = False - transactionid = immutable(sa.Column(sa.UnicodeText, unique=True, nullable=True)) + transactionid: Mapped[Optional[str]] = immutable( + sa.orm.mapped_column(sa.UnicodeText, unique=True, nullable=True) + ) # The message itself - message = immutable(sa.Column(sa.UnicodeText, nullable=False)) + message: Mapped[str] = immutable( + sa.orm.mapped_column(sa.UnicodeText, nullable=False) + ) # Flags - status = sa.Column(sa.Integer, default=SMS_STATUS.QUEUED, nullable=False) - status_at = sa.Column(sa.TIMESTAMP(timezone=True), nullable=True) - fail_reason = sa.Column(sa.UnicodeText, nullable=True) + status: Mapped[int] = sa.orm.mapped_column( + sa.Integer, default=SMS_STATUS.QUEUED, nullable=False + ) + status_at: Mapped[Optional[datetime]] = sa.orm.mapped_column( + sa.TIMESTAMP(timezone=True), nullable=True + ) + fail_reason: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.UnicodeText, nullable=True + ) def __init__(self, **kwargs): phone = kwargs.pop('phone', None) @@ -232,6 +254,21 @@ def __init__(self, **kwargs): # --- Notification models -------------------------------------------------------------- +class NotificationType(Protocol): + """Protocol for :class:`Notification` and :class:`PreviewNotification`.""" + + type: str # noqa: A003 + eventid: UUID + id: UUID # noqa: A003 + eventid_b58: str + document: Any + document_uuid: UUID + fragment: Any + fragment_uuid: Optional[UUID] + user_id: Optional[int] + user: Optional[User] + + class Notification(NoIdMixin, db.Model): # type: ignore[name-defined] """ Holds a single notification for an activity on a document object. @@ -249,35 +286,35 @@ class Notification(NoIdMixin, db.Model): # type: ignore[name-defined] #: Flag indicating this is an active notification type. Can be False for draft #: and retired notification types to hide them from preferences UI - active = True + active: ClassVar[bool] = True #: Random identifier for the event that triggered this notification. Event ids can #: be shared across notifications, and will be used to enforce a limit of one #: instance of a UserNotification per-event rather than per-notification - eventid = immutable( - sa.Column( + eventid: Mapped[UUID] = immutable( + sa.orm.mapped_column( UUIDType(binary=False), primary_key=True, nullable=False, default=uuid4 ) ) #: Notification id - id = immutable( # noqa: A003 - sa.Column( + id: Mapped[UUID] = immutable( # noqa: A003 + sa.orm.mapped_column( UUIDType(binary=False), primary_key=True, nullable=False, default=uuid4 ) ) #: Default category of notification. Subclasses MUST override - category: NotificationCategory = notification_categories.none + category: ClassVar[NotificationCategory] = notification_categories.none #: Default description for notification. Subclasses MUST override - title: str = __("Unspecified notification type") + title: ClassVar[str] = __("Unspecified notification type") #: Default description for notification. Subclasses MUST override - description: str = '' + description: ClassVar[str] = '' #: Type of Notification subclass (auto-populated from subclass's `type=` parameter) - cls_type: str = '' + cls_type: ClassVar[str] = '' #: Type for user preferences, in case a notification type is a shadow of #: another type (auto-populated from subclass's `shadow=` parameter) - pref_type: str = '' + pref_type: ClassVar[str] = '' #: Document model, must be specified in subclasses document_model: ClassVar[Type[UuidModelType]] @@ -291,24 +328,26 @@ class Notification(NoIdMixin, db.Model): # type: ignore[name-defined] #: Roles to send notifications to. Roles must be in order of priority for situations #: where a user has more than one role on the document. - roles: Sequence[str] = [] + roles: ClassVar[Sequence[str]] = [] #: Exclude triggering actor from receiving notifications? Subclasses may override - exclude_actor = False + exclude_actor: ClassVar[bool] = False #: If this notification is typically for a single recipient, views will need to be #: careful about leaking out recipient identifiers such as a utm_source tracking tag - for_private_recipient = False + for_private_recipient: ClassVar[bool] = False #: The preference context this notification is being served under. Users may have #: customized preferences per account (nee profile) or project preference_context: ClassVar[db.Model] = None # type: ignore[name-defined] #: Notification type (identifier for subclass of :class:`NotificationType`) - type_: Mapped[str] = immutable(sa.Column('type', sa.Unicode, nullable=False)) + type_: Mapped[str] = immutable( + sa.orm.mapped_column('type', sa.Unicode, nullable=False) + ) #: Id of user that triggered this notification - user_id: Mapped[Optional[int]] = sa.Column( + user_id: Mapped[Optional[int]] = sa.orm.mapped_column( sa.Integer, sa.ForeignKey('user.id', ondelete='SET NULL'), nullable=True ) #: User that triggered this notification. Optional, as not all notifications are @@ -318,14 +357,14 @@ class Notification(NoIdMixin, db.Model): # type: ignore[name-defined] #: UUID of document that the notification refers to document_uuid: Mapped[UUID] = immutable( - sa.Column(UUIDType(binary=False), nullable=False, index=True) + sa.orm.mapped_column(UUIDType(binary=False), nullable=False, index=True) ) #: Optional fragment within document that the notification refers to. This may be #: the document itself, or something within it, such as a comment. Notifications for #: multiple fragments are collapsed into a single notification fragment_uuid: Mapped[Optional[UUID]] = immutable( - sa.Column(UUIDType(binary=False), nullable=True) + sa.orm.mapped_column(UUIDType(binary=False), nullable=True) ) __table_args__ = ( @@ -384,37 +423,38 @@ class Notification(NoIdMixin, db.Model): # type: ignore[name-defined] # for particular transports. #: This notification class may be seen on the website - allow_web = True + allow_web: ClassVar[bool] = True #: This notification class may be delivered by email - allow_email = True + allow_email: ClassVar[bool] = True #: This notification class may be delivered by SMS - allow_sms = True + allow_sms: ClassVar[bool] = True #: This notification class may be delivered by push notification - allow_webpush = True + allow_webpush: ClassVar[bool] = True #: This notification class may be delivered by Telegram message - allow_telegram = True + allow_telegram: ClassVar[bool] = True #: This notification class may be delivered by WhatsApp message - allow_whatsapp = True + allow_whatsapp: ClassVar[bool] = True # Flags to set defaults for transports, in case the user has not made a choice #: By default, turn on/off delivery by email - default_email = True + default_email: ClassVar[bool] = True #: By default, turn on/off delivery by SMS - default_sms = True + default_sms: ClassVar[bool] = True #: By default, turn on/off delivery by push notification - default_webpush = True + default_webpush: ClassVar[bool] = True #: By default, turn on/off delivery by Telegram message - default_telegram = True + default_telegram: ClassVar[bool] = True #: By default, turn on/off delivery by WhatsApp message - default_whatsapp = True + default_whatsapp: ClassVar[bool] = True #: Ignore transport errors? If True, an error will be ignored silently. If False, #: an error report will be logged for the user or site administrator. TODO - ignore_transport_errors = False + ignore_transport_errors: ClassVar[bool] = False #: Registry of per-class renderers ``{cls_type: CustomNotificationView}`` - renderers: Dict[str, Type] = {} # Can't import RenderNotification from views here + renderers: ClassVar[Dict[str, Type]] = {} + # Can't import RenderNotification from views here, so it's typed to just Type def __init_subclass__( cls, @@ -469,11 +509,11 @@ def eventid_b58(self) -> str: """URL-friendly UUID representation, using Base58 with the Bitcoin alphabet.""" return uuid_to_base58(self.eventid) - @eventid_b58.setter + @eventid_b58.setter # type: ignore[no-redef] def eventid_b58(self, value: str) -> None: self.eventid = uuid_from_base58(value) - @eventid_b58.comparator + @eventid_b58.comparator # type: ignore[no-redef] def eventid_b58(cls): # noqa: N805 # pylint: disable=no-self-argument """Return SQL comparator for Base58 rendering.""" return SqlUuidB58Comparator(cls.eventid) @@ -538,9 +578,11 @@ def dispatch(self) -> Generator[UserNotification, None, None]: """ Create :class:`UserNotification` instances and yield in an iterator. - This is a heavy method and must be called from a background job. When making - new notifications, it will revoke previous notifications issued against the - same document. + This is a heavy method and must be called from a background job. It creates + instances of :class:`UserNotification` for each discovered recipient and yields + them, skipping over pre-existing instances (typically caused by a second + dispatch on the same event, such as when a background job fails midway and is + restarted). Subclasses wanting more control over how their notifications are dispatched should override this method. @@ -589,7 +631,7 @@ def dispatch(self) -> Generator[UserNotification, None, None]: type: Mapped[str] = sa.orm.synonym('type_') # noqa: A003 -class PreviewNotification: +class PreviewNotification(NotificationType): """ Mimics a Notification subclass without instantiating it, for providing a preview. @@ -598,19 +640,24 @@ class PreviewNotification: NotificationFor(PreviewNotification(NotificationType), user) """ - def __init__( + def __init__( # pylint: disable=super-init-not-called self, cls: Type[Notification], document: UuidModelType, fragment: Optional[UuidModelType] = None, + user: Optional[User] = None, ) -> None: - self.eventid = self.eventid_b58 = self.id = 'preview' # May need to be a UUID + self.eventid = uuid4() + self.id = uuid4() + self.eventid_b58 = uuid_to_base58(self.eventid) self.cls = cls self.type = cls.cls_type self.document = document self.document_uuid = document.uuid self.fragment = fragment self.fragment_uuid = fragment.uuid if fragment is not None else None + self.user = user + self.user_id = cast(int, user.id) if user is not None else None def __getattr__(self, attr: str) -> Any: """Get an attribute.""" @@ -699,7 +746,7 @@ class UserNotification( #: Id of user being notified user_id: Mapped[int] = immutable( - sa.Column( + sa.orm.mapped_column( sa.Integer, sa.ForeignKey('user.id', ondelete='CASCADE'), primary_key=True, @@ -714,12 +761,18 @@ class UserNotification( #: Random eventid, shared with the Notification instance eventid: Mapped[UUID] = with_roles( - immutable(sa.Column(UUIDType(binary=False), primary_key=True, nullable=False)), + immutable( + sa.orm.mapped_column( + UUIDType(binary=False), primary_key=True, nullable=False + ) + ), read={'owner'}, ) #: Id of notification that this user received (fkey in __table_args__ below) - notification_id: Mapped[UUID] = sa.Column(UUIDType(binary=False), nullable=False) + notification_id: Mapped[UUID] = sa.orm.mapped_column( + UUIDType(binary=False), nullable=False + ) #: Notification that this user received notification = with_roles( @@ -735,11 +788,13 @@ class UserNotification( #: Note: This column represents the first instance of a role shifting from being an #: entirely in-app symbol (i.e., code refactorable) to being data in the database #: (i.e., requiring a data migration alongside a code refactor) - role = with_roles(immutable(sa.Column(sa.Unicode, nullable=False)), read={'owner'}) + role: Mapped[str] = with_roles( + immutable(sa.orm.mapped_column(sa.Unicode, nullable=False)), read={'owner'} + ) #: Timestamp for when this notification was marked as read - read_at = with_roles( - sa.Column(sa.TIMESTAMP(timezone=True), default=None, nullable=True), + read_at: Mapped[Optional[datetime]] = with_roles( + sa.orm.mapped_column(sa.TIMESTAMP(timezone=True), default=None, nullable=True), read={'owner'}, ) @@ -748,26 +803,37 @@ class UserNotification( #: 2. A new notification has been raised for the same document and this user was #: a recipient of the new notification #: 3. The underlying document or fragment has been deleted - revoked_at = with_roles( - sa.Column(sa.TIMESTAMP(timezone=True), nullable=True, index=True), + revoked_at: Mapped[Optional[datetime]] = with_roles( + sa.orm.mapped_column(sa.TIMESTAMP(timezone=True), nullable=True, index=True), read={'owner'}, ) #: When a roll-up is performed, record an identifier for the items rolled up - rollupid = with_roles( - sa.Column(UUIDType(binary=False), nullable=True, index=True), read={'owner'} + rollupid: Mapped[Optional[UUID]] = with_roles( + sa.orm.mapped_column(UUIDType(binary=False), nullable=True, index=True), + read={'owner'}, ) #: Message id for email delivery - messageid_email = sa.Column(sa.Unicode, nullable=True) + messageid_email: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.Unicode, nullable=True + ) #: Message id for SMS delivery - messageid_sms = sa.Column(sa.Unicode, nullable=True) + messageid_sms: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.Unicode, nullable=True + ) #: Message id for web push delivery - messageid_webpush = sa.Column(sa.Unicode, nullable=True) + messageid_webpush: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.Unicode, nullable=True + ) #: Message id for Telegram delivery - messageid_telegram = sa.Column(sa.Unicode, nullable=True) + messageid_telegram: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.Unicode, nullable=True + ) #: Message id for WhatsApp delivery - messageid_whatsapp = sa.Column(sa.Unicode, nullable=True) + messageid_whatsapp: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.Unicode, nullable=True + ) __table_args__ = ( sa.ForeignKeyConstraint( @@ -816,11 +882,11 @@ def eventid_b58(self) -> str: """URL-friendly UUID representation, using Base58 with the Bitcoin alphabet.""" return uuid_to_base58(self.eventid) - @eventid_b58.setter + @eventid_b58.setter # type: ignore[no-redef] def eventid_b58(self, value: str): self.eventid = uuid_from_base58(value) - @eventid_b58.comparator + @eventid_b58.comparator # type: ignore[no-redef] def eventid_b58(cls): # noqa: N805 # pylint: disable=no-self-argument """Return SQL comparator for Base58 representation.""" return SqlUuidB58Comparator(cls.eventid) @@ -832,7 +898,7 @@ def is_read(self) -> bool: """Whether this notification has been marked as read.""" return self.read_at is not None - @is_read.setter + @is_read.setter # type: ignore[no-redef] def is_read(self, value: bool) -> None: if value: if not self.read_at: @@ -840,7 +906,7 @@ def is_read(self, value: bool) -> None: else: self.read_at = None - @is_read.expression + @is_read.expression # type: ignore[no-redef] def is_read(cls): # noqa: N805 # pylint: disable=no-self-argument """Test if notification has been marked as read, as a SQL expression.""" return cls.read_at.isnot(None) @@ -852,7 +918,7 @@ def is_revoked(self) -> bool: # pylint: disable=invalid-overridden-method """Whether this notification has been marked as revoked.""" return self.revoked_at is not None - @is_revoked.setter + @is_revoked.setter # type: ignore[no-redef] def is_revoked(self, value: bool) -> None: if value: if not self.revoked_at: @@ -862,7 +928,7 @@ def is_revoked(self, value: bool) -> None: # PyLint complains because the hybrid property doesn't resemble the mixin's property # pylint: disable=no-self-argument,arguments-renamed,invalid-overridden-method - @is_revoked.expression + @is_revoked.expression # type: ignore[no-redef] def is_revoked(cls): # noqa: N805 return cls.revoked_at.isnot(None) @@ -1132,7 +1198,7 @@ class NotificationPreferences(BaseMixin, db.Model): # type: ignore[name-defined __allow_unmapped__ = True #: Id of user whose preferences are represented here - user_id = sa.Column( + user_id: Mapped[int] = sa.orm.mapped_column( sa.Integer, sa.ForeignKey('user.id', ondelete='CASCADE'), nullable=False, @@ -1147,13 +1213,25 @@ class NotificationPreferences(BaseMixin, db.Model): # type: ignore[name-defined # Notification type, corresponding to Notification.type (a class attribute there) # notification_type = '' holds the veto switch to disable a transport entirely - notification_type = immutable(sa.Column(sa.Unicode, nullable=False)) + notification_type: Mapped[str] = immutable( + sa.orm.mapped_column(sa.Unicode, nullable=False) + ) - by_email = with_roles(sa.Column(sa.Boolean, nullable=False), rw={'owner'}) - by_sms = with_roles(sa.Column(sa.Boolean, nullable=False), rw={'owner'}) - by_webpush = with_roles(sa.Column(sa.Boolean, nullable=False), rw={'owner'}) - by_telegram = with_roles(sa.Column(sa.Boolean, nullable=False), rw={'owner'}) - by_whatsapp = with_roles(sa.Column(sa.Boolean, nullable=False), rw={'owner'}) + by_email: Mapped[bool] = with_roles( + sa.orm.mapped_column(sa.Boolean, nullable=False), rw={'owner'} + ) + by_sms: Mapped[bool] = with_roles( + sa.orm.mapped_column(sa.Boolean, nullable=False), rw={'owner'} + ) + by_webpush: Mapped[bool] = with_roles( + sa.orm.mapped_column(sa.Boolean, nullable=False), rw={'owner'} + ) + by_telegram: Mapped[bool] = with_roles( + sa.orm.mapped_column(sa.Boolean, nullable=False), rw={'owner'} + ) + by_whatsapp: Mapped[bool] = with_roles( + sa.orm.mapped_column(sa.Boolean, nullable=False), rw={'owner'} + ) __table_args__ = (sa.UniqueConstraint('user_id', 'notification_type'),) diff --git a/funnel/models/organization_membership.py b/funnel/models/organization_membership.py index b169d5eda..4ec186219 100644 --- a/funnel/models/organization_membership.py +++ b/funnel/models/organization_membership.py @@ -83,12 +83,12 @@ class OrganizationMembership( } #: Organization that this membership is being granted on - organization_id = sa.Column( + organization_id: Mapped[int] = sa.orm.mapped_column( sa.Integer, sa.ForeignKey('organization.id', ondelete='CASCADE'), nullable=False, ) - organization = with_roles( + organization: Mapped[Organization] = with_roles( sa.orm.relationship( Organization, backref=sa.orm.backref( @@ -102,7 +102,9 @@ class OrganizationMembership( parent: Mapped[Organization] = sa.orm.synonym('organization') # Organization roles: - is_owner = immutable(sa.Column(sa.Boolean, nullable=False, default=False)) + is_owner: Mapped[bool] = immutable( + sa.orm.mapped_column(sa.Boolean, nullable=False, default=False) + ) @cached_property def offered_roles(self) -> Set[str]: diff --git a/funnel/models/proposal.py b/funnel/models/proposal.py index ee149d297..b7dce1be4 100644 --- a/funnel/models/proposal.py +++ b/funnel/models/proposal.py @@ -385,7 +385,7 @@ def cancel(self): state.CANCELLED, state.SUBMITTED, title=__("Undo cancel"), - message=__("This proposal's cancellation has been reversed"), + message=__("This proposal’s cancellation has been reversed"), type='success', ) def undo_cancel(self): diff --git a/funnel/pages/about/policy/privacy.md b/funnel/pages/about/policy/privacy.md index 889b69361..496549e7a 100644 --- a/funnel/pages/about/policy/privacy.md +++ b/funnel/pages/about/policy/privacy.md @@ -64,7 +64,7 @@ We collect and store information from our Users for the following purposes inclu - To contact the User with regards to the services they have availed of - To contact you for promotional offers or market research purposes, with the User’s consent - To syndicate User’s publicly available data -- To syndicate User’s pesonally identifiable information with Hasgeek and it’s partners +- To syndicate User’s pesonally identifiable information with Hasgeek and its partners ### Disclosure diff --git a/funnel/signals.py b/funnel/signals.py index 141a8834b..50fda1aad 100644 --- a/funnel/signals.py +++ b/funnel/signals.py @@ -40,11 +40,11 @@ emailaddress_refcount_dropping = model_signals.signal( 'emailaddress-refcount-dropping', - doc="Signal indicating that an EmailAddress's refcount is about to drop", + doc="Signal indicating that an EmailAddress’s refcount is about to drop", ) phonenumber_refcount_dropping = model_signals.signal( 'phonenumber-refcount-dropping', - doc="Signal indicating that an PhoneNumber's refcount is about to drop", + doc="Signal indicating that a PhoneNumber’s refcount is about to drop", ) # Higher level signals diff --git a/funnel/static/translations/hi_IN/messages.json b/funnel/static/translations/hi_IN/messages.json index 4f81516b3..a5c1a7c27 100644 --- a/funnel/static/translations/hi_IN/messages.json +++ b/funnel/static/translations/hi_IN/messages.json @@ -521,7 +521,7 @@ "You denied the GitHub login request": [ "आपने GitHub लॉग इन अनुरोध को ख़ारिज कर दिया है" ], - "This server's callback URL is misconfigured": [ + "This server’s callback URL is misconfigured": [ "सर्वर की कॉलबैक URL की विन्यास गलत है" ], "Unknown failure": ["अज्ञात समस्या"], @@ -689,7 +689,7 @@ "Cancel": ["रद्द करें"], "This proposal has been cancelled": ["इस प्रस्ताव को रद्द कर दिया गया"], "Undo cancel": ["रद्द किए को स्वीकारें"], - "This proposal's cancellation has been reversed": [ + "This proposal’s cancellation has been reversed": [ "इस प्रस्ताव को रद्द किए से स्वीकारा जा चुका है" ], "Awaiting details for this proposal": ["इस प्रस्ताव की जानकारी का इंतज़ार है"], diff --git a/funnel/templates/layout.html.jinja2 b/funnel/templates/layout.html.jinja2 index 69c4a2c90..70b80c7c5 100644 --- a/funnel/templates/layout.html.jinja2 +++ b/funnel/templates/layout.html.jinja2 @@ -218,7 +218,7 @@
    {%- elif request.endpoint != 'login' %} {% trans %}Login{% endtrans %} + class="mui-btn mui-btn--primary mui-btn--small mui-btn--raised header__button" id="login-nav">{% trans %}Login{% endtrans %} {%- else %} {# On the login page, remove the login button but occupy the spot -#}
    diff --git a/funnel/templates/password_login_form.html.jinja2 b/funnel/templates/password_login_form.html.jinja2 index d58ea7c37..060262a9a 100644 --- a/funnel/templates/password_login_form.html.jinja2 +++ b/funnel/templates/password_login_form.html.jinja2 @@ -28,7 +28,7 @@

    {% else %}

    - +

    @@ -47,7 +47,7 @@ @@ -55,7 +55,7 @@ diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index f7f823588..a9e10fc95 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -132,7 +132,7 @@ {%- endif %}

    {%- if current_auth.is_anonymous %} - + {% elif project.features.rsvp_unregistered() -%} {{ project.views.register_button_text() }}
    + {% if rsvp_form_fields -%} + {% for field_name in rsvp_form_fields %} + + {% endfor %} + {%- endif %} @@ -26,6 +31,11 @@ {%- endwith %} + {% if rsvp_form_fields -%} + {% for field_name in rsvp_form_fields %} + + {% endfor %} + {%- endif %} {%- else %} diff --git a/funnel/templates/rsvp_modal.html.jinja2 b/funnel/templates/rsvp_modal.html.jinja2 new file mode 100644 index 000000000..0a374fdf9 --- /dev/null +++ b/funnel/templates/rsvp_modal.html.jinja2 @@ -0,0 +1,31 @@ +{% from "macros.html.jinja2" import faicon, csrf_tag %} +{%- from "js/json_form.js.jinja2" import json_form_template %} + + + + + + + diff --git a/funnel/views/project.py b/funnel/views/project.py index aec102f66..180db0878 100644 --- a/funnel/views/project.py +++ b/funnel/views/project.py @@ -3,6 +3,7 @@ import csv import io from dataclasses import dataclass +from json import JSONDecodeError from types import SimpleNamespace from flask import Response, abort, current_app, flash, render_template, request @@ -33,6 +34,7 @@ ProjectForm, ProjectLivestreamForm, ProjectNameForm, + ProjectRegisterForm, ProjectTransitionForm, ) from ..models import ( @@ -237,10 +239,16 @@ def project_register_button_text(obj: Project) -> str: custom_text = ( obj.boxoffice_data.get('register_button_txt') if obj.boxoffice_data else None ) + rsvp = obj.rsvp_for(current_auth.user) + if custom_text and (rsvp is None or not rsvp.state.YES): + return custom_text + if obj.features.follow_mode(): + if rsvp is not None and rsvp.state.YES: + return _("Following") return _("Follow") - if custom_text: - return custom_text + if rsvp is not None and rsvp.state.YES: + return _("Registered") return _("Register") @@ -303,6 +311,7 @@ def view(self) -> ReturnRenderWith: _p.current_access(datasets=('without_parent', 'related')) for _p in self.obj.proposals.filter_by(featured=True) ], + 'rsvp': self.obj.rsvp_for(current_auth.user), } @route('sub') @@ -522,6 +531,7 @@ def edit_boxoffice_data(self) -> ReturnView: item_collection_id=boxoffice_data.get('item_collection_id', ''), allow_rsvp=self.obj.allow_rsvp, is_subscription=boxoffice_data.get('is_subscription', True), + register_form_schema=boxoffice_data.get('register_form_schema'), register_button_txt=boxoffice_data.get('register_button_txt', ''), ), model=Project, @@ -531,6 +541,9 @@ def edit_boxoffice_data(self) -> ReturnView: self.obj.boxoffice_data['org'] = form.org.data self.obj.boxoffice_data['item_collection_id'] = form.item_collection_id.data self.obj.boxoffice_data['is_subscription'] = form.is_subscription.data + self.obj.boxoffice_data[ + 'register_form_schema' + ] = form.register_form_schema.data self.obj.boxoffice_data[ 'register_button_txt' ] = form.register_button_txt.data @@ -588,16 +601,43 @@ def cfp_transition(self) -> ReturnView: 'error_description': _("Invalid form submission"), } + @route('rsvp_modal', methods=['GET']) + @render_with('rsvp_modal.html.jinja2') + @requires_login + def rsvp_modal(self) -> ReturnRenderWith: + """Edit project banner.""" + form = ProjectRegisterForm( + schema=self.obj.boxoffice_data.get('register_form_schema', {}) + ) + return { + 'project': self.obj.current_access(datasets=('primary',)), + 'form': form, + 'json_schema': self.obj.boxoffice_data.get('register_form_schema'), + } + @route('register', methods=['POST']) @requires_login def register(self) -> ReturnView: """Register for project as a participant.""" - form = forms.Form() - if form.validate_on_submit(): + try: + formdata = ( + request.json.get('form', {}) # type: ignore[union-attr] + if request.is_json + else app.json.loads(request.form.get('form', '{}')) + ) + except JSONDecodeError: + abort(400) + rsvp_form = ProjectRegisterForm( + obj=SimpleNamespace(form=formdata), + schema=self.obj.boxoffice_data.get('register_form_schema', {}), + ) + if rsvp_form.validate_on_submit(): rsvp = Rsvp.get_for(self.obj, current_auth.user, create=True) - if not rsvp.state.YES: - rsvp.rsvp_yes() - db.session.commit() + new_registration = not rsvp.state.YES + rsvp.rsvp_yes() + rsvp.form = rsvp_form.form.data + db.session.commit() + if new_registration: project_role_change.send( self.obj, actor=current_auth.user, user=current_auth.user ) @@ -607,7 +647,7 @@ def register(self) -> ReturnView: ) else: flash(_("Were you trying to register? Try again to confirm"), 'error') - return render_redirect(get_next_url(referrer=request.referrer)) + return render_redirect(self.obj.url_for()) @route('deregister', methods=['POST']) @requires_login @@ -631,7 +671,7 @@ def deregister(self) -> ReturnView: _("Were you trying to cancel your registration? Try again to confirm"), 'error', ) - return render_redirect(get_next_url(referrer=request.referrer)) + return render_redirect(self.obj.url_for()) @route('rsvp_list') @render_with('project_rsvp_list.html.jinja2') @@ -645,6 +685,13 @@ def rsvp_list(self) -> ReturnRenderWith: _r.current_access(datasets=('without_parent', 'related', 'related')) for _r in self.obj.rsvps_with(RSVP_STATUS.YES) ], + 'rsvp_form_fields': [ + field.get('name', '') + for field in self.obj.boxoffice_data['register_form_schema']['fields'] + ] + if self.obj.boxoffice_data['register_form_schema'] + and 'fields' in self.obj.boxoffice_data['register_form_schema'] + else None, } def get_rsvp_state_csv(self, state): diff --git a/package-lock.json b/package-lock.json index 11d27fb9f..013132dfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@codemirror/autocomplete": "^6.3.0", "@codemirror/commands": "^6.1.2", + "@codemirror/lang-css": "^6.1.1", "@codemirror/lang-html": "^6.1.3", "@codemirror/lang-markdown": "^6.0.2", "@codemirror/language": "^6.2.1", diff --git a/package.json b/package.json index a9a72b650..7a814229b 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "dependencies": { "@codemirror/autocomplete": "^6.3.0", "@codemirror/commands": "^6.1.2", + "@codemirror/lang-css": "^6.1.1", "@codemirror/lang-html": "^6.1.3", "@codemirror/lang-markdown": "^6.0.2", "@codemirror/language": "^6.2.1", diff --git a/requirements/base.txt b/requirements/base.txt index fedbfeb67..1c417e97a 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -64,9 +64,9 @@ blinker==1.6.2 # -r requirements/base.in # baseframe # coaster -boto3==1.26.156 +boto3==1.26.163 # via -r requirements/base.in -botocore==1.29.156 +botocore==1.29.163 # via # boto3 # s3transfer @@ -115,7 +115,7 @@ dnspython==2.3.0 # baseframe # mxsniff # pyisemail -emoji==2.5.1 +emoji==2.6.0 # via baseframe exceptiongroup==1.1.1 # via anyio @@ -163,7 +163,7 @@ flask-redis==0.4.0 # via -r requirements/base.in flask-rq2==18.3 # via -r requirements/base.in -flask-sqlalchemy==3.0.4 +flask-sqlalchemy==3.0.5 # via # -r requirements/base.in # coaster @@ -245,7 +245,7 @@ jmespath==1.0.1 # via # boto3 # botocore -joblib==1.2.0 +joblib==1.3.0 # via nltk linkify-it-py==2.0.2 # via -r requirements/base.in @@ -277,7 +277,7 @@ marshmallow==3.19.0 # marshmallow-enum marshmallow-enum==1.5.1 # via dataclasses-json -maxminddb==2.3.0 +maxminddb==2.4.0 # via geoip2 mdit-py-plugins==0.3.5 # via -r requirements/base.in @@ -309,7 +309,7 @@ packaging==23.1 # via marshmallow passlib==1.7.4 # via -r requirements/base.in -phonenumbers==8.13.14 +phonenumbers==8.13.15 # via -r requirements/base.in premailer==3.10.0 # via -r requirements/base.in @@ -382,7 +382,7 @@ pyyaml==6.0 # pymdown-extensions qrcode==7.4.2 # via -r requirements/base.in -redis==4.5.5 +redis==4.6.0 # via # baseframe # flask-redis @@ -415,7 +415,7 @@ requests-oauthlib==1.3.1 # via tweepy rich==13.4.2 # via -r requirements/base.in -rq==1.15.0 +rq==1.15.1 # via # -r requirements/base.in # baseframe @@ -434,7 +434,7 @@ semantic-version==2.10.0 # via # baseframe # coaster -sentry-sdk==1.25.1 +sentry-sdk==1.26.0 # via baseframe six==1.16.0 # via @@ -454,7 +454,7 @@ sniffio==1.3.0 # anyio # httpcore # httpx -sqlalchemy==2.0.16 +sqlalchemy==2.0.17 # via # -r requirements/base.in # alembic @@ -485,9 +485,9 @@ tuspy==1.0.1 # via pyvimeo tweepy==4.14.0 # via -r requirements/base.in -twilio==8.3.0 +twilio==8.4.0 # via -r requirements/base.in -typing-extensions==4.6.3 +typing-extensions==4.7.0 # via # -r requirements/base.in # alembic diff --git a/requirements/dev.txt b/requirements/dev.txt index 33a722ef9..314cb3520 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -61,7 +61,7 @@ flake8-logging-format==0.9.0 # via -r requirements/dev.in flake8-mutable==1.2.0 # via -r requirements/dev.in -flake8-plugin-utils==1.3.2 +flake8-plugin-utils==1.3.3 # via flake8-pytest-style flake8-print==5.0.0 # via -r requirements/dev.in @@ -90,7 +90,7 @@ mccabe==0.7.0 # via # flake8 # pylint -mypy==1.4.0 +mypy==1.4.1 # via -r requirements/dev.in mypy-json-report==1.0.4 # via -r requirements/dev.in @@ -106,7 +106,7 @@ pip-compile-multi==2.6.3 # via -r requirements/dev.in pip-tools==6.13.0 # via pip-compile-multi -platformdirs==3.6.0 +platformdirs==3.8.0 # via # black # pylint @@ -131,7 +131,7 @@ pyupgrade==3.7.0 # via -r requirements/dev.in reformat-gherkin==3.0.1 # via -r requirements/dev.in -ruff==0.0.272 +ruff==0.0.275 # via -r requirements/dev.in smmap==5.0.0 # via gitdb @@ -149,13 +149,13 @@ types-ipaddress==1.0.8 # via types-maxminddb types-maxminddb==1.5.0 # via types-geoip2 -types-pyopenssl==23.2.0.0 +types-pyopenssl==23.2.0.1 # via types-redis types-python-dateutil==2.8.19.13 # via -r requirements/dev.in types-pytz==2023.3.0.0 # via -r requirements/dev.in -types-redis==4.5.5.2 +types-redis==4.6.0.0 # via -r requirements/dev.in types-requests==2.31.0.1 # via -r requirements/dev.in diff --git a/requirements/test.in b/requirements/test.in index 3d5612615..28f7bb9b3 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -16,6 +16,7 @@ pytest-selenium>=4.0.1 pytest-socket requests-mock respx +selenium<4.10 # Selenium 4.10.0 breaks pytest-selenium 4.0.1 sttable tomlkit typeguard diff --git a/requirements/test.txt b/requirements/test.txt index d82ea439d..ece75b650 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,4 +1,4 @@ -# SHA1:4acb164f314e8087c9b429568f0005b6e65c5b88 +# SHA1:f1dd8d59a43608d547da08b1d958365a3ca6e564 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -37,11 +37,11 @@ parse==1.19.1 # pytest-bdd parse-type==0.6.0 # via pytest-bdd -pluggy==1.0.0 +pluggy==1.2.0 # via pytest py==1.11.0 # via pytest-html -pytest==7.3.2 +pytest==7.4.0 # via # -r requirements/test.in # pytest-asyncio @@ -85,7 +85,9 @@ requests-mock==1.11.0 respx==0.20.1 # via -r requirements/test.in selenium==4.9.1 - # via pytest-selenium + # via + # -r requirements/test.in + # pytest-selenium sortedcontainers==2.4.0 # via trio soupsieve==2.4.1 diff --git a/tests/cypress/e2e/08_addSubmission.cy.js b/tests/cypress/e2e/08_addSubmission.cy.js index 5e61ef9d9..f76474967 100644 --- a/tests/cypress/e2e/08_addSubmission.cy.js +++ b/tests/cypress/e2e/08_addSubmission.cy.js @@ -28,9 +28,9 @@ describe('Add a new submission', () => { cy.get('#field-video_url').type(proposal.preview_video); cy.get('a[data-cy="save"]:visible').click(); cy.get('a[data-cy="add-label"]').click(); - cy.wait(1000); + cy.wait(2000); cy.get('fieldset').find('.listwidget').eq(0).find('input').eq(0).click(); - + cy.wait(2000); cy.get('fieldset').find('.listwidget').eq(1).find('input').eq(0).click(); cy.wait(2000); cy.get('a[data-cy="save"]:visible').click(); diff --git a/tests/cypress/e2e/11_respondToAttend.cy.js b/tests/cypress/e2e/11_respondToAttend.cy.js index 26586aadf..dc2e67882 100644 --- a/tests/cypress/e2e/11_respondToAttend.cy.js +++ b/tests/cypress/e2e/11_respondToAttend.cy.js @@ -24,6 +24,7 @@ describe('Responding yes to attend a project', () => { cy.get('a#rsvp-btn:visible').click(); cy.wait(2000); cy.get('button[data-cy="confirm"]:visible').click(); + cy.wait(2000); cy.get('button[data-cy="bookmark"]').click(); cy.wait('@bookmark-project'); cy.get('button[data-cy="bookmarked"]').should('exist'); diff --git a/tests/e2e/account/register_test.py b/tests/e2e/account/register_test.py index 4bfba8dee..8c6e4caca 100644 --- a/tests/e2e/account/register_test.py +++ b/tests/e2e/account/register_test.py @@ -1,6 +1,5 @@ """Test account registration.""" -import time import pytest from pytest_bdd import given, parsers, scenarios, then, when @@ -17,8 +16,24 @@ TWOFLOWER_PASSWORD = 'te@pwd3289' # nosec +def check_recaptcha_loaded(selenium): + wait = WebDriverWait(selenium, 10) + recaptcha_frame = wait.until( + ec.presence_of_element_located( + ( + By.CSS_SELECTOR, + "#form-passwordlogin > div.g-recaptcha > div > div.grecaptcha-logo > iframe", + ) + ) + ) + selenium.switch_to.frame(recaptcha_frame) + wait.until(ec.presence_of_element_located((By.CLASS_NAME, "rc-anchor-pt"))) + selenium.switch_to.default_content() + + @given("Anonymous visitor is on the home page") def given_anonuser_home_page(live_server, selenium, db_session): + selenium.implicitly_wait(10) selenium.get(live_server.url) @@ -34,12 +49,10 @@ def when_anonuser_navigates_login_and_submits( ): assert selenium.current_url == live_server.url wait = WebDriverWait(selenium, 10) - time.sleep(2) - # Ideally wait.until() should wait until the element is clickable, - # but the test is failing when used without time.sleep wait.until(ec.element_to_be_clickable((By.CLASS_NAME, 'header__button'))).send_keys( Keys.RETURN ) + check_recaptcha_loaded(selenium) if phone_or_email == "a phone number": username = '8123456789' elif phone_or_email == "an email address": @@ -47,7 +60,6 @@ def when_anonuser_navigates_login_and_submits( else: pytest.fail("Unknown username type") wait.until(ec.element_to_be_clickable((By.NAME, 'username'))).send_keys(username) - time.sleep(2) # TODO: Why sleep? wait.until( ec.element_to_be_clickable((By.CSS_SELECTOR, '#form-passwordlogin button')) ).send_keys(Keys.ENTER) @@ -56,8 +68,8 @@ def when_anonuser_navigates_login_and_submits( @then("they are prompted for their name and the OTP, which they provide") def then_anonuser_prompted_name_and_otp(live_server, selenium, anon_username): - time.sleep(2) - selenium.find_element(By.NAME, 'fullname').send_keys('Twoflower') + wait = WebDriverWait(selenium, 10) + wait.until(ec.element_to_be_clickable((By.NAME, 'fullname'))).send_keys('Twoflower') if anon_username['phone_or_email'] == "a phone number": otp = live_server.transport_calls.sms[-1].vars['otp'] elif anon_username['phone_or_email'] == "an email address": @@ -70,11 +82,21 @@ def then_anonuser_prompted_name_and_otp(live_server, selenium, anon_username): @then("they get an account and are logged in") def then_they_are_logged_in(selenium): - time.sleep(2) + wait = WebDriverWait(selenium, 10) + wait.until( + ec.text_to_be_present_in_element( + (By.CLASS_NAME, "alert__text"), "You are now one of us. Welcome aboard!" + ) + ) assert ( - selenium.find_element(By.CLASS_NAME, 'alert__text').text - == "You are now one of us. Welcome aboard!" + wait.until( + ec.text_to_be_present_in_element( + (By.CLASS_NAME, "alert__text"), "You are now one of us. Welcome aboard!" + ) + ) + is True ) + selenium.close() @given("Twoflower visitor is on the home page") @@ -89,7 +111,6 @@ def when_twoflower_visits_homepage(live_server, selenium, db_session, user_twofl @when("they navigate to the login page") def when_navigate_to_login_page(app, live_server, selenium): wait = WebDriverWait(selenium, 10) - time.sleep(2) wait.until(ec.element_to_be_clickable((By.CLASS_NAME, 'header__button'))).send_keys( Keys.RETURN ) @@ -98,30 +119,39 @@ def when_navigate_to_login_page(app, live_server, selenium): @when("they submit the email address with password") @when("submit an email address with password") def when_submit_email_password(selenium): - WebDriverWait(selenium, 10) - time.sleep(2) + wait = WebDriverWait(selenium, 10) + check_recaptcha_loaded(selenium) + wait.until(ec.element_to_be_clickable((By.NAME, 'username'))) selenium.find_element(By.NAME, 'username').send_keys('twoflower@example.org') selenium.find_element(By.ID, 'use-password-login').click() + wait.until(ec.element_to_be_clickable((By.ID, 'login-btn'))) selenium.find_element(By.NAME, 'password').send_keys('te@pwd3289') selenium.find_element(By.ID, 'login-btn').send_keys(Keys.ENTER) @then("they are logged in") def then_logged_in(selenium): - time.sleep(2) + wait = WebDriverWait(selenium, 10) assert ( - selenium.find_element(By.CLASS_NAME, "alert__text").text - == "You are now logged in" + wait.until( + ec.text_to_be_present_in_element( + (By.CLASS_NAME, "alert__text"), "You are now logged in" + ) + ) + is True ) + selenium.close() @when("they submit the phone number with password") @when("submit a phone number with password") def when_submit_phone_password(app, live_server, selenium): - WebDriverWait(selenium, 10) - time.sleep(2) + wait = WebDriverWait(selenium, 10) + check_recaptcha_loaded(selenium) + wait.until(ec.element_to_be_clickable((By.NAME, 'username'))) selenium.find_element(By.NAME, 'username').send_keys(TWOFLOWER_PHONE) selenium.find_element(By.ID, 'use-password-login').click() + wait.until(ec.element_to_be_clickable((By.ID, 'login-btn'))) selenium.find_element(By.NAME, 'password').send_keys(TWOFLOWER_PASSWORD) selenium.find_element(By.ID, 'login-btn').send_keys(Keys.ENTER) @@ -136,13 +166,15 @@ def given_anonymous_project_page(live_server, selenium, db_session, new_project) @when("they click on follow") def when_they_click_follow(selenium): - time.sleep(2) + wait = WebDriverWait(selenium, 10) + wait.until(ec.element_to_be_clickable((By.ID, 'register-nav'))) selenium.find_element(By.ID, 'register-nav').send_keys(Keys.ENTER) @then("a register modal appears") def then_register_modal_appear(selenium): - time.sleep(2) + wait = WebDriverWait(selenium, 10) + wait.until(ec.element_to_be_clickable((By.ID, 'get-otp-btn'))) assert ( # FIXME: Don't use xpath selenium.find_element(By.XPATH, '//*[@id="passwordform"]/p[2]').text @@ -156,7 +188,7 @@ def then_register_modal_appear(selenium): ) def when_they_enter_email(selenium, phone_or_email): wait = WebDriverWait(selenium, 10) - time.sleep(2) + check_recaptcha_loaded(selenium) if phone_or_email == "a phone number": username = '8123456789' elif phone_or_email == "an email address": @@ -164,10 +196,7 @@ def when_they_enter_email(selenium, phone_or_email): else: pytest.fail("Unknown username type") wait.until(ec.element_to_be_clickable((By.NAME, 'username'))).send_keys(username) - time.sleep(2) - wait.until( - ec.element_to_be_clickable((By.CSS_SELECTOR, '#form-passwordlogin button')) - ).send_keys(Keys.ENTER) + wait.until(ec.element_to_be_clickable((By.ID, 'get-otp-btn'))).click() return {'phone_or_email': phone_or_email, 'username': username} @@ -206,7 +235,6 @@ def when_twoflower_visits_login_page_recaptcha(app, live_server, selenium): @then("they submit and Recaptcha validation passes") def then_submit_recaptcha_validation_passes(live_server, selenium): WebDriverWait(selenium, 10) - time.sleep(2) selenium.find_element(By.NAME, 'username').send_keys(TWOFLOWER_PHONE) selenium.find_element(By.ID, 'use-password-login').click() selenium.find_element(By.NAME, 'password').send_keys(TWOFLOWER_PASSWORD) diff --git a/tests/unit/forms/rsvp_json_test.py b/tests/unit/forms/rsvp_json_test.py new file mode 100644 index 000000000..11a16e03e --- /dev/null +++ b/tests/unit/forms/rsvp_json_test.py @@ -0,0 +1,87 @@ +"""Test custom rsvp forms.""" + +import json + +from funnel import forms + +valid_schema = { + 'fields': [ + { + 'description': "An explanation for this field", + 'name': 'field_name', + 'title': "Field label shown to user", + 'type': 'string', + }, + { + 'name': 'has_checked', + 'title': "I accept the terms", + 'type': 'boolean', + }, + { + 'name': 'choice', + 'title': "Choose one", + 'choices': ["First choice", "Second choice", "Third choice"], + }, + ] +} + +rsvp_excess_json = { + 'choice': 'First choice', + 'field_name': 'Twoflower', + 'has_checked': 'on', + 'company': 'MAANG', # This is not in the form +} + + +def test_valid_boxoffice_form(app) -> None: + """Valid schema is accepted by the schema form validator.""" + with app.test_request_context( + method='POST', + data={'register_form_schema': json.dumps(valid_schema)}, + ): + form = forms.ProjectBoxofficeForm(meta={'csrf': False}) + assert form.validate() is True + + +def test_invalid_boxoffice_form(app) -> None: + """Invalid schema is rejected by the schema form validator.""" + with app.test_request_context( + method='POST', + data={ + 'register_form_schema': "This is an invalid json", + }, + ): + form = forms.ProjectBoxofficeForm(meta={'csrf': False}) + assert form.validate() is False + assert form.errors == {'register_form_schema': ['Invalid JSON']} + + +def test_valid_json_register_form(app) -> None: + with app.test_request_context( + method='POST', + data={'form': '{"field_name":"Vetinari","has_checked":"on"}'}, + ): + form = forms.ProjectRegisterForm(meta={'csrf': False}, schema=valid_schema) + assert form.validate() is True + + +def test_invalid_json_register_form(app) -> None: + with app.test_request_context( + method='POST', + data={'form': 'This is an invalid json'}, + ): + form = forms.ProjectRegisterForm(meta={'csrf': False}, schema=valid_schema) + assert form.validate() is False + assert 'form' in form.errors # Field named 'form' has an error + assert form.form.errors == ['Invalid JSON'] + + +def test_excess_json_register_form(app) -> None: + with app.test_request_context( + method='POST', + data={'form': json.dumps(rsvp_excess_json)}, + ): + form = forms.ProjectRegisterForm(meta={'csrf': False}, schema=valid_schema) + assert form.validate() is False + assert 'form' in form.errors # Field named 'form' has an error + assert form.form.errors == ["The form is not expecting these fields: company"] diff --git a/tests/unit/views/rsvp_test.py b/tests/unit/views/rsvp_test.py new file mode 100644 index 000000000..a4ccdf58b --- /dev/null +++ b/tests/unit/views/rsvp_test.py @@ -0,0 +1,190 @@ +"""Test custom rsvp form views.""" +# pylint: disable=redefined-outer-name + +import datetime + +import pytest +from werkzeug.datastructures import MultiDict + +from funnel import models + +valid_schema = { + 'fields': [ + { + 'description': "An explanation for this field", + 'name': 'field_name', + 'title': "Field label shown to user", + 'type': 'string', + }, + { + 'name': 'has_checked', + 'title': "I accept the terms", + 'type': 'boolean', + }, + { + 'name': 'choice', + 'title': "Choose one", + 'choices': ["First choice", "Second choice", "Third choice"], + }, + ] +} + + +valid_json_rsvp = { + 'field_name': 'Twoflower', + 'has_checked': 'on', + 'choice': 'First choice', +} + +rsvp_excess_json = { + 'choice': 'First choice', + 'field_name': 'Twoflower', + 'has_checked': 'on', + 'company': 'MAANG', # This is extra +} + + +@pytest.fixture() +def project_expo2010(project_expo2010: models.Project) -> models.Project: + """Project fixture with a registration form.""" + project_expo2010.start_at = datetime.datetime.now() + datetime.timedelta(days=1) + project_expo2010.end_at = datetime.datetime.now() + datetime.timedelta(days=2) + project_expo2010.boxoffice_data = { + "org": "", + "is_subscription": False, + "item_collection_id": "", + "register_button_txt": "Follow", + "register_form_schema": { + "fields": [ + { + "name": "field_name", + "type": "string", + "title": "Field label shown to user", + }, + { + "name": "has_checked", + "type": "boolean", + "title": "I accept the terms", + }, + { + "name": "choice", + "type": "select", + "title": "Choose one", + "choices": ["First choice", "Second choice", "Third choice"], + }, + ] + }, + } + return project_expo2010 + + +# Organizer side testing +def test_valid_registration_form_schema( + app, + client, + login, + csrf_token: str, + user_vetinari: models.User, + project_expo2010: models.Project, +) -> None: + """A project can have a registration form provided it is valid JSON.""" + login.as_(user_vetinari) + endpoint = project_expo2010.url_for('edit_boxoffice_data') + rv = client.post( + endpoint, + data=MultiDict( + { + 'org': '', + 'item_collection_id': '', + 'allow_rsvp': True, + 'is_subscription': False, + 'register_button_txt': 'Follow', + 'register_form_schema': app.json.dumps(valid_schema), + 'csrf_token': csrf_token, + } + ), + ) + assert rv.status_code == 303 + + +def test_invalid_registration_form_schema( + client, + login, + csrf_token: str, + user_vetinari: models.User, + project_expo2010: models.Project, +) -> None: + """Registration form schema must be JSON or will be rejected.""" + login.as_(user_vetinari) + endpoint = project_expo2010.url_for('edit_boxoffice_data') + rv = client.post( + endpoint, + data={ + 'register_form_schema': 'This is invalid JSON', + 'csrf_token': csrf_token, + }, + ) + # Confirm no redirect on success + assert not 300 <= rv.status_code < 400 + assert 'Invalid JSON' in rv.data.decode() + + +def test_valid_json_register( + app, + client, + login, + csrf_token: str, + user_twoflower: models.User, + project_expo2010: models.Project, +) -> None: + """A user can register when the submitted form matches the form schema.""" + login.as_(user_twoflower) + endpoint = project_expo2010.url_for('register') + rv = client.post( + endpoint, + data=app.json.dumps( + { + 'form': valid_json_rsvp, + 'csrf_token': csrf_token, + } + ), + headers={'Content-Type': 'application/json'}, + ) + assert rv.status_code == 303 + assert project_expo2010.rsvp_for(user_twoflower).form == valid_json_rsvp + + +def test_valid_encoded_json_register( + app, + client, + login, + csrf_token: str, + user_twoflower: models.User, + project_expo2010: models.Project, +) -> None: + """A form submission can use non-JSON POST provided the form itself is JSON.""" + login.as_(user_twoflower) + endpoint = project_expo2010.url_for('register') + rv = client.post( + endpoint, + data={ + 'form': app.json.dumps(valid_json_rsvp), + 'csrf_token': csrf_token, + }, + ) + assert rv.status_code == 303 + assert project_expo2010.rsvp_for(user_twoflower).form == valid_json_rsvp + + +def test_invalid_json_register( + client, login, user_twoflower: models.User, project_expo2010: models.Project +) -> None: + """If a registration form is not JSON, it is rejected.""" + login.as_(user_twoflower) + endpoint = project_expo2010.url_for('register') + rv = client.post( + endpoint, + data="This is not JSON", + headers={'Content-Type': 'application/json'}, + ) + assert rv.status_code == 400 diff --git a/webpack.config.js b/webpack.config.js index 0aed24faa..bd4e20c3d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -55,6 +55,7 @@ module.exports = { submission_form: path.resolve(__dirname, 'funnel/assets/js/submission_form.js'), labels_form: path.resolve(__dirname, 'funnel/assets/js/labels_form.js'), cfp_form: path.resolve(__dirname, 'funnel/assets/js/cfp_form.js'), + rsvp_form_modal: path.resolve(__dirname, 'funnel/assets/js/rsvp_form_modal.js'), app_css: path.resolve(__dirname, 'funnel/assets/sass/app.scss'), form_css: path.resolve(__dirname, 'funnel/assets/sass/form.scss'), index_css: path.resolve(__dirname, 'funnel/assets/sass/pages/index.scss'), From 08016a66e55a78db287474efb067c184d02f8e55 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Fri, 30 Jun 2023 00:39:51 +0530 Subject: [PATCH 172/281] Replace ProjectTemplateMixin with a nicer TemplateVarMixin (#1773) --- funnel/views/notifications/mixins.py | 94 ++++++++++++++++--- .../project_starting_notification.py | 8 +- .../notifications/proposal_notification.py | 16 ++-- .../views/notifications/rsvp_notification.py | 14 +-- tests/unit/views/notification_test.py | 52 ++++++++++ 5 files changed, 152 insertions(+), 32 deletions(-) diff --git a/funnel/views/notifications/mixins.py b/funnel/views/notifications/mixins.py index 9295924bc..5e5df3ec2 100644 --- a/funnel/views/notifications/mixins.py +++ b/funnel/views/notifications/mixins.py @@ -1,19 +1,87 @@ """Notification helpers and mixins.""" -from ...models import Project +from typing import Callable, Generic, Optional, Type, TypeVar, Union, overload +from typing_extensions import Self +from ...models import Project, User -class ProjectTemplateMixin: - """Mixin class for SMS templates mentioning a project.""" +_T = TypeVar('_T') # Host type for SetVar +_I = TypeVar('_I') # Input type for SetVar's setter +_O = TypeVar('_O') # Output type for SetVar's setter + + +class SetVar(Generic[_T, _I, _O]): + """Decorator for template variable setters.""" + + name: str + + def __init__(self, fset: Callable[[_T, _I], _O]) -> None: + self.fset = fset + + def __set_name__(self, owner: Type[_T], name: str) -> None: + if getattr(self, 'name', None) is None: + self.name = name + else: + # We're getting cloned, so make a copy in the owner + copy = SetVar(self.fset) + setattr(owner, name, copy) + copy.__set_name__(owner, name) + + @overload + def __get__(self, instance: None, owner: Type[_T]) -> Self: + ... + + @overload + def __get__(self, instance: _T, owner: None = None) -> _O: + ... + + @overload + def __get__(self, instance: _T, owner: Type[_T]) -> _O: + ... + + def __get__( + self, instance: Optional[_T], owner: Optional[Type[_T]] = None + ) -> Union[Self, _O]: + if instance is None: + return self + try: + return instance.__dict__[self.name] + except KeyError: + raise AttributeError(self.name) from None + + def __set__(self, instance: _T, value: _I) -> None: + instance.__dict__[self.name] = self.fset(instance, value) + + def __delete__(self, instance: _T) -> None: + try: + instance.__dict__.pop(self.name) + except KeyError: + raise AttributeError(self.name) from None + + +class TemplateVarMixin: + """Mixin class for common variables in SMS templates.""" var_max_length: int - project: Project - - @property - def project_title(self) -> str: - """Return project joined title or title, truncated to fit the length limit.""" - if len(self.project.joined_title) <= self.var_max_length: - return self.project.joined_title - if len(self.project.title) <= self.var_max_length: - return self.project.title - return self.project.title[: self.var_max_length - 1] + '…' + + @SetVar + def project(self, project: Project) -> str: + """Set project joined title or title, truncated to fit the length limit.""" + if len(project.joined_title) <= self.var_max_length: + return project.joined_title + if len(project.title) <= self.var_max_length: + return project.title + return project.title[: self.var_max_length - 1] + '…' + + @SetVar + def user(self, user: User) -> str: + """Set user's display name, truncated to fit.""" + pickername = user.pickername + if len(pickername) <= self.var_max_length: + return pickername + fullname = user.fullname + if len(fullname) <= self.var_max_length: + return fullname + return fullname[: self.var_max_length - 1] + '…' + + actor = user diff --git a/funnel/views/notifications/project_starting_notification.py b/funnel/views/notifications/project_starting_notification.py index 18251ca36..7d417e4c1 100644 --- a/funnel/views/notifications/project_starting_notification.py +++ b/funnel/views/notifications/project_starting_notification.py @@ -13,10 +13,10 @@ from ...transports.sms import SmsTemplate from ..helpers import shortlink from ..notification import RenderNotification -from .mixins import ProjectTemplateMixin +from .mixins import TemplateVarMixin -class ProjectStartingTemplate(ProjectTemplateMixin, SmsTemplate): +class ProjectStartingTemplate(TemplateVarMixin, SmsTemplate): """DLT registered template for project starting notification.""" registered_template = ( @@ -24,10 +24,10 @@ class ProjectStartingTemplate(ProjectTemplateMixin, SmsTemplate): '\n\nhttps://bye.li to stop - Hasgeek' ) template = ( - "Reminder: {project_title} is starting soon. Join at {url}" + "Reminder: {project} is starting soon. Join at {url}" "\n\nhttps://bye.li to stop - Hasgeek" ) - plaintext_template = "Reminder: {project_title} is starting soon. Join at {url}" + plaintext_template = "Reminder: {project} is starting soon. Join at {url}" project_only: str url: str diff --git a/funnel/views/notifications/proposal_notification.py b/funnel/views/notifications/proposal_notification.py index 3f3dcc03b..71200bfc8 100644 --- a/funnel/views/notifications/proposal_notification.py +++ b/funnel/views/notifications/proposal_notification.py @@ -16,10 +16,10 @@ from ...transports.sms import SmsTemplate from ..helpers import shortlink from ..notification import RenderNotification -from .mixins import ProjectTemplateMixin +from .mixins import TemplateVarMixin -class ProposalReceivedTemplate(ProjectTemplateMixin, SmsTemplate): +class ProposalReceivedTemplate(TemplateVarMixin, SmsTemplate): """DLT registered template for RSVP without a next session.""" registered_template = ( @@ -27,18 +27,18 @@ class ProposalReceivedTemplate(ProjectTemplateMixin, SmsTemplate): " Read it here: {#var#}\n\nhttps://bye.li to stop -Hasgeek" ) template = ( - "There's a new submission from {actor} in {project_title}." + "There's a new submission from {actor} in {project}." " Read it here: {url}\n\nhttps://bye.li to stop -Hasgeek" ) plaintext_template = ( - "There's a new submission from {actor} in {project_title}. Read it here: {url}" + "There's a new submission from {actor} in {project}. Read it here: {url}" ) actor: str url: str -class ProposalSubmittedTemplate(ProjectTemplateMixin, SmsTemplate): +class ProposalSubmittedTemplate(TemplateVarMixin, SmsTemplate): """DLT registered template for RSVP without a next session.""" registered_template = ( @@ -46,11 +46,11 @@ class ProposalSubmittedTemplate(ProjectTemplateMixin, SmsTemplate): "\n\nhttps://bye.li to stop -Hasgeek" ) template = ( - "{project_title} has received your submission. Here's the link to share: {url}" + "{project} has received your submission. Here's the link to share: {url}" "\n\nhttps://bye.li to stop -Hasgeek" ) plaintext_template = ( - "{project_title} has received your submission. Here's the link to share: {url}" + "{project} has received your submission. Here's the link to share: {url}" ) url: str @@ -97,7 +97,7 @@ def email_content(self) -> str: def sms(self) -> ProposalReceivedTemplate: return ProposalReceivedTemplate( project=self.project, - actor=self.proposal.user.pickername, + actor=self.proposal.user, url=shortlink( self.proposal.url_for(_external=True, **self.tracking_tags('sms')), shorter=True, diff --git a/funnel/views/notifications/rsvp_notification.py b/funnel/views/notifications/rsvp_notification.py index fa25ce13e..b16444760 100644 --- a/funnel/views/notifications/rsvp_notification.py +++ b/funnel/views/notifications/rsvp_notification.py @@ -20,10 +20,10 @@ from ..helpers import shortlink from ..notification import RenderNotification from ..schedule import schedule_ical -from .mixins import ProjectTemplateMixin +from .mixins import TemplateVarMixin -class RegistrationConfirmationTemplate(ProjectTemplateMixin, SmsTemplate): +class RegistrationConfirmationTemplate(TemplateVarMixin, SmsTemplate): """DLT registered template for RSVP without a next session.""" registered_template = ( @@ -31,16 +31,16 @@ class RegistrationConfirmationTemplate(ProjectTemplateMixin, SmsTemplate): '\n\nhttps://bye.li to stop - Hasgeek' ) template = ( - "You have registered for {project_title}. For more information, visit {url}." + "You have registered for {project}. For more information, visit {url}." "\n\nhttps://bye.li to stop - Hasgeek" ) - plaintext_template = "You have registered for {project_title} {url}" + plaintext_template = "You have registered for {project} {url}" datetime: str url: str -class RegistrationConfirmationWithNextTemplate(ProjectTemplateMixin, SmsTemplate): +class RegistrationConfirmationWithNextTemplate(TemplateVarMixin, SmsTemplate): """DLT registered template for RSVP with a next session.""" registered_template = ( @@ -49,12 +49,12 @@ class RegistrationConfirmationWithNextTemplate(ProjectTemplateMixin, SmsTemplate '\n\nhttps://bye.li to stop - Hasgeek' ) template = ( - "You have registered for {project_title}, scheduled for {datetime}." + "You have registered for {project}, scheduled for {datetime}." " For more information, visit {url}." "\n\nhttps://bye.li to stop - Hasgeek" ) plaintext_template = ( - "You have registered for {project_title}, scheduled for {datetime}. {url}" + "You have registered for {project}, scheduled for {datetime}. {url}" ) datetime: str diff --git a/tests/unit/views/notification_test.py b/tests/unit/views/notification_test.py index 36fb034b5..3d1ff6261 100644 --- a/tests/unit/views/notification_test.py +++ b/tests/unit/views/notification_test.py @@ -1,12 +1,15 @@ """Test Notification views.""" # pylint: disable=redefined-outer-name +from types import SimpleNamespace +from typing import cast from urllib.parse import urlsplit import pytest from flask import url_for from funnel import models +from funnel.views.notifications.mixins import TemplateVarMixin @pytest.fixture() @@ -130,3 +133,52 @@ def test_unsubscribe_sms_view( assert rv.status_code == 200 # And the user's preferences will be turned off assert user_vetinari.main_notification_preferences.by_sms is False + + +def test_template_var_mixin() -> None: + """Test TemplateVarMixin for common variables.""" + assert TemplateVarMixin.actor.name != TemplateVarMixin.user.name + t1 = TemplateVarMixin() + t1.var_max_length = 40 + + p1 = SimpleNamespace( + title='Ankh-Morpork 2010', joined_title='Ankh-Morpork / Ankh-Morpork 2010' + ) + u1 = SimpleNamespace( + pickername='Havelock Vetinari (@vetinari)', fullname='Havelock Vetinari' + ) + u2 = SimpleNamespace(pickername='Twoflower', fullname='Twoflower') + t1.project = cast(models.Project, p1) + t1.user = cast(models.User, u2) + t1.actor = cast(models.User, u1) + assert isinstance(t1.project, str) + assert isinstance(t1.actor, str) + assert isinstance(t1.user, str) + assert t1.project == 'Ankh-Morpork / Ankh-Morpork 2010' + assert t1.actor == 'Havelock Vetinari (@vetinari)' + assert t1.user == 'Twoflower' + + # Do this again to confirm truncation at a smaller size + t1.var_max_length = 20 + t1.project = cast(models.Project, p1) + t1.user = cast(models.User, u2) + t1.actor = cast(models.User, u1) + assert t1.project == 'Ankh-Morpork 2010' + assert t1.actor == 'Havelock Vetinari' + assert t1.user == 'Twoflower' + + # Again, even smaller + t1.var_max_length = 15 + t1.project = cast(models.Project, p1) + t1.user = cast(models.User, u2) + t1.actor = cast(models.User, u1) + assert t1.project == 'Ankh-Morpork 2…' + assert t1.actor == 'Havelock Vetin…' + assert t1.user == 'Twoflower' + + # Confirm deletion works + del t1.project + with pytest.raises(AttributeError): + t1.project # pylint: disable=pointless-statement + with pytest.raises(AttributeError): + del t1.project From 49dfe5a139b51ec38a6badc8961abe48d0329c19 Mon Sep 17 00:00:00 2001 From: anishTP <119032387+anishTP@users.noreply.github.com> Date: Fri, 30 Jun 2023 02:28:55 +0530 Subject: [PATCH 173/281] Visually revised email templates (#1693) Co-authored-by: Kiran Jonnalagadda Co-authored-by: Vidya Ramakrishnan --- .github/workflows/pytest.yml | 1 + .testenv | 14 +- funnel/__init__.py | 5 + .../img/email/chars-v1/access-granted.png | Bin 0 -> 17493 bytes .../img/email/chars-v1/access-revoked.png | Bin 0 -> 15472 bytes .../img/email/chars-v1/admin-report.png | Bin 0 -> 12144 bytes funnel/static/img/email/chars-v1/comment.png | Bin 0 -> 10723 bytes .../img/email/chars-v1/new-submission.png | Bin 0 -> 13961 bytes funnel/static/img/email/chars-v1/password.png | Bin 0 -> 13408 bytes .../email/chars-v1/registration-cancelled.png | Bin 0 -> 10037 bytes .../email/chars-v1/registration-confirmed.png | Bin 0 -> 11661 bytes .../img/email/chars-v1/sent-submission.png | Bin 0 -> 11777 bytes .../img/email/chars-v1/session-starting.png | Bin 0 -> 14416 bytes funnel/static/img/email/chars-v1/update.png | Bin 0 -> 13911 bytes funnel/static/img/email/logo-puzzle.png | Bin 0 -> 914 bytes .../templates/email_account_reset.html.jinja2 | 36 +- .../email_account_verify.html.jinja2 | 28 +- funnel/templates/email_login_otp.html.jinja2 | 26 +- funnel/templates/email_sudo_otp.html.jinja2 | 14 +- .../comment_received_email.html.jinja2 | 35 +- .../comment_report_received_email.html.jinja2 | 20 +- .../notifications/layout_email.html.jinja2 | 568 ++++++++++++++++-- .../notifications/macros_email.html.jinja2 | 74 ++- ...ation_membership_granted_email.html.jinja2 | 20 +- ...ation_membership_revoked_email.html.jinja2 | 20 +- ..._crew_membership_granted_email.html.jinja2 | 20 +- ..._crew_membership_revoked_email.html.jinja2 | 20 +- .../project_starting_email.html.jinja2 | 23 +- .../proposal_received_email.html.jinja2 | 18 +- .../proposal_submitted_email.html.jinja2 | 18 +- .../notifications/rsvp_no_email.html.jinja2 | 15 +- .../notifications/rsvp_yes_email.html.jinja2 | 23 +- .../update_new_email.html.jinja2 | 32 +- .../user_password_set_email.html.jinja2 | 24 +- funnel/templates/rsvp_modal.html.jinja2 | 4 +- funnel/views/index.py | 10 +- funnel/views/notification.py | 12 +- .../notifications/account_notification.py | 4 +- .../notifications/comment_notification.py | 4 + .../organization_membership_notification.py | 4 + .../project_crew_notification.py | 4 + .../project_starting_notification.py | 2 + .../notifications/proposal_notification.py | 4 + .../views/notifications/rsvp_notification.py | 4 + .../notifications/update_notification.py | 2 + 45 files changed, 910 insertions(+), 198 deletions(-) create mode 100644 funnel/static/img/email/chars-v1/access-granted.png create mode 100644 funnel/static/img/email/chars-v1/access-revoked.png create mode 100644 funnel/static/img/email/chars-v1/admin-report.png create mode 100644 funnel/static/img/email/chars-v1/comment.png create mode 100644 funnel/static/img/email/chars-v1/new-submission.png create mode 100644 funnel/static/img/email/chars-v1/password.png create mode 100644 funnel/static/img/email/chars-v1/registration-cancelled.png create mode 100644 funnel/static/img/email/chars-v1/registration-confirmed.png create mode 100644 funnel/static/img/email/chars-v1/sent-submission.png create mode 100644 funnel/static/img/email/chars-v1/session-starting.png create mode 100644 funnel/static/img/email/chars-v1/update.png create mode 100644 funnel/static/img/email/logo-puzzle.png diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index c5aab7d55..39fb165ac 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -110,6 +110,7 @@ jobs: psql -h localhost -U postgres -c "create user $(whoami);" psql -h localhost -U postgres -c "create database funnel_testing;" psql -h localhost -U postgres -c "create database geoname_testing;" + set -a; source .testenv; set +a FLASK_ENV=testing flask dbconfig | psql -h localhost -U postgres funnel_testing FLASK_ENV=testing flask dbconfig | psql -h localhost -U postgres geoname_testing psql -h localhost -U postgres -c "grant all privileges on database funnel_testing to $(whoami);" diff --git a/.testenv b/.testenv index cbb9ba311..28914c7de 100644 --- a/.testenv +++ b/.testenv @@ -14,11 +14,11 @@ FLASK_RQ_DASHBOARD_REDIS_URL=redis://${REDIS_HOST}:6379/9 FLASK_CACHE_REDIS_URL=redis://${REDIS_HOST}:6379/9 # Disable logging in tests FLASK_SQLALCHEMY_ECHO=false -FLASK_LOGFILE=/dev/null -FLASK_ADMINS='[]' -FLASK_TELEGRAM_ERROR_CHATID=null -FLASK_TELEGRAM_ERROR_APIKEY=null -FLASK_SLACK_LOGGING_WEBHOOKS='[]' +FLASK_LOG_FILE=null +FLASK_LOG_EMAIL_TO='[]' +FLASK_LOG_TELEGRAM_CHATID=null +FLASK_LOG_TELEGRAM_APIKEY=null +FLASK_LOG_SLACK_WEBHOOKS='[]' # Run RQ jobs inline in tests FLASK_RQ_ASYNC=false # Recaptcha keys from https://developers.google.com/recaptcha/docfaq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do @@ -33,8 +33,8 @@ FLASK_SECRET_KEYS='["testkey"]' FLASK_LASTUSER_SECRET_KEYS='["testkey"]' FLASK_LASTUSER_COOKIE_DOMAIN='.funnel.test:3002' FLASK_SITE_TITLE='Test Hasgeek' -FLASK_SITE_SUPPORT_EMAIL=test-support-email -FLASK_SITE_SUPPORT_PHONE=test-support-phone +FLASK_SITE_SUPPORT_EMAIL='support@hasgeek.com' +FLASK_SITE_SUPPORT_PHONE='+917676332020' FLASK_MAIL_DEFAULT_SENDER="Funnel " DB_HOST=localhost FLASK_SQLALCHEMY_DATABASE_URI='postgresql+psycopg://${DB_HOST}/funnel_testing' diff --git a/funnel/__init__.py b/funnel/__init__.py index f8501b47c..e7dd82550 100644 --- a/funnel/__init__.py +++ b/funnel/__init__.py @@ -8,6 +8,7 @@ from email.utils import parseaddr import geoip2.database +import phonenumbers from flask import Flask from flask_babel import get_locale from flask_executor import Executor @@ -115,6 +116,10 @@ each_app.config['MAIL_DEFAULT_SENDER_ADDR'] = parseaddr( app.config['MAIL_DEFAULT_SENDER'] )[1] + each_app.config['SITE_SUPPORT_PHONE_FORMATTED'] = phonenumbers.format_number( + phonenumbers.parse(each_app.config['SITE_SUPPORT_PHONE']), + phonenumbers.PhoneNumberFormat.INTERNATIONAL, + ) proxies.init_app(each_app) manifest.init_app(each_app) db.init_app(each_app) diff --git a/funnel/static/img/email/chars-v1/access-granted.png b/funnel/static/img/email/chars-v1/access-granted.png new file mode 100644 index 0000000000000000000000000000000000000000..2d1927a777e5fecf1bfa3d7317dbb020211a3299 GIT binary patch literal 17493 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 My85}Sb4q9e0RQgN>Hq)$ literal 0 HcmV?d00001 diff --git a/funnel/static/img/email/chars-v1/access-revoked.png b/funnel/static/img/email/chars-v1/access-revoked.png new file mode 100644 index 0000000000000000000000000000000000000000..20cfdb1e478b2766a6391205d2ab8ee8640f24ad GIT binary patch literal 15472 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 literal 0 HcmV?d00001 diff --git a/funnel/static/img/email/chars-v1/admin-report.png b/funnel/static/img/email/chars-v1/admin-report.png new file mode 100644 index 0000000000000000000000000000000000000000..00a9182b7a856aeea4b18c66b968e70919f7f377 GIT binary patch literal 12144 zcmZ{~18`+c^e=j1O>AQ(wmq3}Vw)$nZQGgPWMbR4lL=;G+qQkrci*de|9h)m?dtC8 z-b>xRyVtMR?np)XpU8*=hyVZpSxQn&8C-UOQz|?xIFIg(90C{6=E8Eq06<+l(wiX+ zxK3s)sVoNocu@fW0U-du3%DuZ2mo+p0RT>b0018d0Kj#~Y*!KhzkoH8`6&kY{O`%_ zD)|L&L2!`Nas~iU2L4MBBle{x;6^wXDLHYtLs()=G@^2tQUw5j;g6JAh&*2)ItGioMl6rkRBQAan{RP(&UItE5!WMx12Zjg+896XQN>(4 zd@%13j|Gj8Ww>jXX;i(=OQ)(?uH!uOG2Z#-Z#~=etn~SbvD;T4_20{F-iK?>{)cUo zo^&o#!f?d@J0sFSt9sd4a}7>O8xL#<2<_G1A|VsHDeG3Bl!F_g)s}lv>-C39gTzsU z{eXSK`VszgORCn-2vry$aPYn5>|+dPaug{L2|(BYQ0Wy9nB8%7oq`?=aSv#L+=R7* z_`u}pI=MAQ=@`0o0^kiKbOn)IC?akNVV9{s_k+V)v6CZr~x|AH>WLDk)96(SSG{ zs^JFsL;GNAS9CXL-l^e!LSISs!Ynj;=@N6qFkG3DA=p4|AiSYPXm=S{H{HXs48|7? zxCf*`l>mh7?_2pmg5`y8;=TKLr)%K>2K{#!enE0Vv3193W-lGf`DKOiaOXy6wb6mT zcvTd0B7EU>YEdy#t=%uuVBJ&+ve zufA@TfJT0UMhR3n$>WVP@rWl37y$ZT1fbsNhh=#w%UiF_wnzgiSiJ)mjk9s&hIC80 z=~Alu@u6Bngal9yy{&Aiwi}?!-(BI<_1S*GdwvNqE?U=s3i{drR@v}zLA-r)8 z(>iMWR1oS$-&{q*OTTEPgJ^|+;@{F9hWmlT@)}s|ZJ$A4%DXM%2Y35N8>ti81Erv$ zs^)hlN_KeZ&ZyNEX74FazH1Bs73vda4LbSv-xOXX#_IN3XfyU3a-h(#FzXEY`z@wg zClA!q7YVYU>2>>lP!%bJgrQx?Zsy3Wf+UV7^RTevh_0R@+<7br)jE)n)f4M0$am`# z>H@02?O=#ih9Z)=8OeBrGz8^1$3B7=2=xj1MoT4gLCPBU#~4R%wSJ-uCELFg!-uqY zPtFJP7loHB3{WS8+~ulMgyg9Q4=LVmX!fHu@vaUF9TaNA>N{qL_X!XSI4RYhB%Pq2 z(Xfr0#k0S}0K%C4>V(GZm=2W^nvi!crx-?I;7KYaG9qb1#Dr4KH2dcS`a#3|{Q|8P z&N$V!d_GSaRe$J?e96f!g%}k zP$_}9>@qqnrbW z(P@&0Q9o)kR*m`F+}+c;Yff*x_+vp3UIko);PqckfLgRKt6Abju~d=aO6r{&dd4BJ z(^bP5LpG_3WcAAv>=l<)JVVyS3-MM1-lhb9LBweI6V8>O5%Y;njeq~IH^`XaTegW` z_piMMkV6uYn{I^5E5o zIY5`T9HXT6o(Qd2JHhE>HGgNuE7A#t{&>SE{8-LoAI~k^s_s(0g#J#Z~hA*cnpCl7c`(Ra@++MT_?bXaXp^0Z;xmiBFWYvd1P zOsj29NA^dGEwde)de4YY7(db_q4~_g#Wui`psb$@Ndd1#%$4_-foLassm$2o00Z(6$zi z6%g+r-6(I%4XPfyInF@V>v7Px4N~Bru9PKjjl)<2jY|*hFQH1~C=)}Y)bQ!nk(37l zgX1hOF9+(Vg?33pgAXhjF%pSeM{?IbeN;OXjn0)d7XvoQlg01EF24*Z%~V#LW?DM? zwPF}PjAICRNw;8qfOF9ozucDj;8G|kJpaK=YGKu^&k~NdokdnL<^+o-m=Zn79yH^fO#7vH1lsSZ zOL37lnemb{uvIB5p?5N?77Pu2er7aUi?XWo$!$4b^Zwo<;Mh9k=zI^rlhGCo;8QB( ze7W~3mUpr=H?f2oR{>ko&1Gnz)_Ut>E1@xJWlgIs{ZhV^v;b!^7Y@@X@l#NJA>Zt4 z@bzdT);ZbnFA%WdIRaCg;{og3@zN|B<=FTe%P&^aI?&4QP)4M*+k#K9IN{o<8~M9W zXCM%APv2{z`z(Ub1K$?-QUQfCt5L>7Wq~`>;&aa(puy^!5@fb3CL6ZmBRa-Y{e5riV?;`V%ufT4o%l;)i&_O=1CPx6YjVl%sT_3tLA<$5C0 zB$5fp4?uDMqIRjjvyR%rIRRJSwQ8;@+W+FOdnT}vpnbK3?%nFQC;1F_40!X@3upVU91BZ zf#2Tni3}hiwp4rn>2YfwqXG?~L;s=&OAy@7F*tww%`phQ>^W#Se_tNwda9we|Ng>~ z*C)d|owQC=_WC`miYA@M0jGTlDZcS+8kA5FnF<{9rrpybyR#LQP;f^L2E9@MQwVKCo&GX z?i9mw>X`6vIIqm*Eag$3t0OyxZ)%kh8+TG>zD)6~n*M5f9+T|y(hFLE8%}0;SwW;g zgJgse2NF6^7sosb4i1f&X#+SDyQ9vShXvdWB5ChjGzn;JnF?W{MXoZj)?zJdo=-vA z;lxCTr4EBlN=WQ%y0g^pvuWDf_|!{%W$&r_)AR%4TI5M_iUiJ;xK_NHQ(l)5NeX9i zXB{oj7ow{JgW2f&VTk0&!6PhcwBK<*g>3BuETx1DRqo|uvOEw5&uOqEAuKhZWxzI% zA^JP2d&xM@Nb#Bpiy``w)x7lu;q3ny?<|=OhG7KvK@El03RyYHvW>VRm{(XlpW0?F zN*_P7XXTp7z}ow;y0O5N7vB_9BtmQLjV$OqoWk++rT6`!!0+XH-LO9DZ2uq{L^MU{%O6ujsX2ggU> zrs`T`FOao}8| zBy;X>`y`YnW%o;N&QpKa{#iBo{_vm%=;q)OjwHMwQi%4rVlJKA5Wa`#%d)pJMWi+J}$F3O{)&DW@OMzrr@QTpzm zLQIv_)>cN~Vc~7z`!q6i=BqPsf>&)|IMLM;bUi3!^-T@q1C_Oj4%Y%%IhR@2IBmn* zlkns))`Ai zqOPg_S+D;tso}e;hxhARok!%&@oV|awm+tdmsj0Ff?Mdzdo)IYzoU44W2?+REx%$| zJAbO$?=H@Dhh<$#`J!*n!DF!Zv4@n1i#-A<1`F)$3Z074>jTnuYoxp#;VA;DQ}tWc z2wR#W%oiBbE8^;nc9GZ*?xPk|O%{u_7?;oTY89C;eKgL?#_Ejoif?OiPy_cnwr#e5!Ri6Epp zcT+<6HW;6Sm=u43xE}1uC=-Y?9U}cbHN-~b$W)N6b5Cs5|D88-#*^N5GkrLv&CuZ6 z=0l3lWSFlK+krf~iu}hou<(6bNI~C65N~9LI&j<=fpq;U3T%eKZ-$PAI^#_Q-ZF*L zmUn(GxPOvTs}0NR?hZD2tQa4H8if*@{%ZA^za_G!2`)A;S{MC$K(Fx~KVfAH^mU}~_?e{Qx*x|(MtQ?RYJlQ3b8Ur+?lvfxei3JAJ#u-| zi`lA$>?VmZfO#u0_GvLmu~t?LesNJ5B{UN2Su@dfG}RqF!9 zshJw77#m$@MDT5wa7XW7QLGVVSiIf`Mx$%E3*(F4l($rR>58^*n&gjnYvc}{%a)hZ zC`?_N5;2@w3r*2h6&cAvjE)NDE%}U4i5^z=$wvv@@3|bA-E%kJ?{$t7Kky&CHa!Mq ze2)%{?8s^uWfpKhm9+rg5>2j`3oMQ|6!Zd?)6;`3jKW;xbD!0yNp+2Bpol3bk7X5t#%> zAD9J4uf1pUi}_*@bgrt$e+_jshl~mijGd$P_~r%{274` zRe_7y+c?ZRrxTh5tf~%+2V{=B@A@wrjKVuW;qift#HTt_5ljlZO{{O-Zvj)_E$z)+ z_cuf5jZ4ef9GcE^zG?GI6Z_gs&!(Cif2KVt4GeCLqjZhnY*uq8uy1yU-95R1KP-7( zwjhLZ`?xFd_PJv$U7?eS-AF-EvL2yNt%PqwPp6+FEJ_emec-N!;*0L!CqCA*-6^)5 zEnI=mVDaqUg4OY{Rq?!$L2|1CHOdar3o>p;P7Z2ZP~d)*zQ4U4huK=RjCn<|y&y-r45uTJ3}pDZ1HP}au*=^y&%tp^AB`5DE& zh2UQ@FBi#*^j=j~$cC)7nnqCx)$;^6h2jp|R@9jnGIoA!l7747%muE-_}$9Ay`a>b zo{r2>Z}tja+{)$x8xb+$g%%ubQFrCiaryf9^tg4-!pilpR{xMU_JK}x#YE((F3~4? zZroFptYNQ3(gP>oWvVVRR*alWOZWZPHRR({?<@O-OM;ReHl6ccx0)S>5zQ-b{#aPb z!xDFOH%u&@e<`W99y2PP*2R7AU3iD5bq%5p457q%Yf<)L$F7 z@2XR55qCV#rJQ%}<3}sbYdfTRNi>;FYY&9;crP6$RqMcSQ?^j!03CSEb?TD&Y5z7_ zNh}}6-_M;h1lentyhT5vli8andz+@-_3CL>$TB{jzaWG4upLjlRpzwPHHPhXvAxWl zvJGg|I1A7McR&94ji=opab3ipEnm2CQgNAEwq!a%loxEqskaA6LNJU;N7Jg_2h|L{ z_$IEORTZMux{GPS8UH$T(M-lJ-_5mRgg(-hPPXQ4X8xLN963N>S-4$9&A)GL)DKmu zPgbCYWTJOqQI*Hdn9qq+CH0t>7nC^D`fem9>je?!Gb>mh7Nw1X(>QN4gAfB%a5UMP zjvd`mxEk4R!x-{|+J<$P3I}M}5`)3jPC-)?5Z)YqQP2?w!fPQ?T^N2>(i0BV9-xh` za*%oie_Suxmn76*>qbal;ZGa0Xl&K>3SL@`o4UWP-4bhml@6>f6WyvO zDSPSIGh7%viMg%Qk=D~el~^d~5IMB>S3cX|Ei|iI31AJ;Z5@6nQI7s8t$jgAjN8oy z|3&>QL&W;)-;$Rg>Doyf@_^Zws;%T9_11Sq6QM3{r#K4#*h95;;}UyLj)=r0x4;?M z5wPn$s@!+0H8j{$y{N--cx@2Axi^?t^;C%VEx1qTXbKzBWAj=r`Lai zo#h4r_f2At9+?PFgJZLWPAhzsA?IlNBp)G-vs$sYI+bLFiWVkjBbm zMIrT71@Xt1sY(WBW|&Jq^yjs8N`iTV&}z?tdn9!KY&-xSqoZ;D{}9JDFfXbrRh$6> z>D`rzJ??(_dn>$kR3QLr_ z>t{3E6_3F9aSDWSXJ*joH@jKQo9%u`%1d&u%jx0^8%6DWkui)qI>S>|(Vy72w)J;R zi?LE;4GBoBPvw5A1--^j#xp)WRTWh`v2181I)!vM!lpgs-EaoIwNiN&magj(%O@WZW@fyZOA zJPfq$OCA!`ubo4w;aR>mV|Re~g4^U{Vty2tJbbJnhA6MaFo2{nDf_ZMpnXA-{mK)E zVl`kp88UhZt0vbnP`BmFEVIAq1MpinXC%s@=GCe>b=3Q; z#~hu9kA_98XFIGA5Y8Ey7PtybZarqLF|*wKh4E5QBNgBMN;z7W-KdyYp7l01r?>Ol zRsPx8{trq{(^@uH;qz+G4Mqm+a2b~ZWDm3ovapeE!zSEtVL*6Gc;txtPn83Xtd=p9 zkG&a_?}psXB{5i;9WxI#f+Jbeci6P8=GF;!1IG3xi>zF%f`Ca}V%k!qOdHHE#`xNg08^JaB$3$tZwlZ*p7hD&4x9Fv`2}fUY2C1p237@dvqwzL76|&J5{TW@kEd6v+_?V#JK##Cm|IhSRDkmIi;Z7*0_F8CM^wHf*q`yX8)DMUANrx@6|mjvArP9lwi9VqpD1{*@& z=RwLbt4zNJ$<@sMmBaiJex7V+Nc+dh-jZ60T-R&$FmZ;c`Jv*i^t&2nCp~RHb{CuW z!q;f)7lyW0nFt$^5PS`fxX=rE1jbOuBL36_LCbAPh<(6)FtyKP1*(@GX(u12)3UbC z-@+S8;=Bd~<06b)y=Y14yIxT9$Cb6G->$6t-8nAxfTSErQXT|zA&c^ydM?MhR30Pk z-LP-s(-tb?a`M;89v@FDhuT~WIHVQEXYCL~!2}Jz!U>~WkwHnRNaY_^m6hkgo<(6Y zD+tMDzYVNAj#{P;~J(KENHmuMK>NzD+ksWoPySqyngAYK;jNh1Eev=9vQwPB>OE#@W z@g+DZ>Pew{kn4Iz?e^@>h&irf=(tjc)>lb|GviH$4!oGGP=dcUytftn>X!DJ>OO=Y zccxQdNRn@z_sV8e42d7Laoraz(;lilO)n@DaaWUbY=j^%fm}1u6?ZC2fGr|i=;{du z9NkJ)To*{|q(a!=?7X=o567EEG!SyJEKV_n=v|q|B;VT`^lC`j_Es#6?Q0Cm-(5tv zd`_C3+-axg5stWxL!Mh9tLIaH3-+c3G=%iFy9VcUUw>cqew0btQ2mwQ80vSpKiVH^ zZS#rr=#jq4^)edRnQGNp9)Km0)pmn5^7?BWBa}UDRk$k6edJ)O&0Ys&^({%@aupf9T1rN_MI;LBo%#oul1(1z^m#3USFd~zH!dPK$bsZ^|{;SdGiq%k4P zYBBX9M@iu|Y0(6ykdwz`^@yKp0^*oPk-WN+MG&F@sw2Z6R=nk79R}WYnNhy zcdq91Ki?#-#^nN?-yf0Mx^|I1zeD*D;iYSqufjGU8d-h{ZZSgsyA|2%`KVuWmF~gT zZ?HRYB2(`5q(9$^!8}VGai>Ofw?o0uflU@vRh>x{0moXJz$a_n+F^u+d!0U;a$?jN z+UsS0>EpWk>I$C_SewZ11J#nNj|$~bFwhQ<4tOX=JzaF&EC}`_hNPPY#ws9FL^Kl9 zipV}$>(Rh!CqpvQ(aqT;)NZdhW9(;;JpQ6)Y|M{+{d(GGYuK*7b4jT7?|zecFD%+? z@9$xUeu1;{Y^P=Gd3x`2uUzQbL2!Bd%^unn`quR5haCmXBhV#xQcBq96Xaz7WLQU? zHW35HGudv7nYGi0HTA)_8q31sDW%Y5^UlwH&^c`dnVs&|pz5@%II*txB$JO|jS@t` zvae!OE8mK_`Hn>?iw1s=ssCkBNA^@Ozs-JNK|V1<4rJvGk8021lY*PhNWJOjY<6EC zSAG_Hbrarf^URDBpezi4GG6(Z`a6_O{Sfl}sGmp&2Hne&O3c!M2dAjd7eeoq$*cV3 z<@5>%fj!3k2d-a>vGTCz@^Nij+4;PTK(mKA>GIu<)q4Onx(ieF zH$^eW{$YSadAG_g$Np0;dJI!zlM^}NkUEgdS#DfJIqKvF0(vG4zm8%mO z?MMz?r+mG)iVBtIQIh+eE1}qYUYr{;w&)Q{u^QZ<&XNMui zsD?OF))gMm1MxvZqp)aUONac5KJj(OAb^P$I2qye`4T>~0hf)0=ggKWS#(m5i;FMcHCNlkl z-Kxs4u#leoU}sDvb880kd?r2{vE2+4iXxVIpxxXW7Em8H#Gj8~e}lwvc4{Ou7W(Xa7eD2l7e zU?3T;4MGx(09C;8i_31XY@c^tyZ;u&#%MGnrwT%^B{lvMfBt`HCz9~;ku3v7j47XM zyw60jm-BROM`nSq0Wr854(v68;gt{@9V(aYNl@dpGN@eguRSWmfKszG%>U@I0a8D& zZd|MVPs4sFV7q;P=OtJE!w9ElbQ_TN^shj_nV&Yli1(OzT&jYbaSXxS=f$uvp@1@L zgFSzVx3DrV->I`z*W2~nOO|5%FW%ohgmMCBg>WfKUs)g0Cv(}rOn0c!s7Jez1Sg^Q z==$5gKYczat+Q^%7kM|@=+8=fbdFS!1;diVwv)^THvYUUOKf(T`X+ci{75dfiq*vB zn99PMzRc9oaa@wv4kr*2gGMGKM4gl=D4q-h%1E{yb(YwcS4x&JH@y{p4a%=EuT2M?U zC!p9##Iz_mGl>{X~Z?zGhED{aRACjg5hYZ zC7HBP7j@DkvP9%|QgZ~-9ruZ&8X|Zf+;`THx3?@0A>lw|4q;XJx&Na=f(xN;RuacY zc~GxL2ZlC;?uAc0#hE@0OKAmLsc%+J>4*-etNc}OTVWl{o`2`Q*T9&rM?0lY2eK2s%~+DMnN&G4#}0m`876M8bOV$)^OPtBpZL?jLxt)# z>6c9pHRrojuwq4D5Tcd9xyvTCbho;GDfR@>DH}0Igyei`EJxZODw=beBPJn^E*OB9 za{q}O(rK^euZK@gIXF`w))J%u%v$WSwOy=G2In$8Xj%;mQ)o~?f@J6}^<8g^qc^lX zx9ABWx2djyUFsfMSgmT0YEpTIiqCm@qV8F`;5`8!3SG$Q5-7Aeq|3TUc-h^tHTk$K5Z}ZU<9cl?Rk(9 zETweVT@iwS*`}ZcDh(q(!Ack>j;GcfMveqGao#ixa?U?rM?~6@HFX2Vh9^)c7~-mp zG}wdC_F+oN_>x#yPxIh+_ihL#c#kfV+-RrNc?Fz43x8xbPFbm^jVQ(3-cIRac=OGz zKk}0}K%f25<8Foe71spdf#D(K!7PAegk%E|BqQ!}62fvBQQ#OTU}j?w9F0q+l#y5S z&up#qk5R=uc5hssNy8U$Hsb=F#jNJxAfRBdL(o^6bTsD5nZNdvQRv(>=?QX=dz*d} zGp>_ny}?TW>ywU zhq0{w{tXIVgz*i5vg#B+Zbmb26jbglAV^C)6E_tM!+C+Ql!dj@1U=*>pt_4bbEHxy z+_)mf_2s@}V-+SAHY!C_j29e&``5jCflgC31X^4&YvpD%(NK;Mg%P}Qq zrO60X|J7X<-@cvHUn4AviaitWa1QIO`HU`t*dLR`44vXM_5ooYRLKk_(xJH6ce!E*@(pb?N?_j;e8M zVG-rDR7qWzFihNh?tqGDE`iRURI$fmam}j{4Jtn;_v8qd_dpvpPy^np_O#Uu97yqC zm|3hhPE={foG=)FSCsCg6Dt<|o52FY2nNNpM+G9X;@y4B=>D&~9o#S2UMw|)GigOE z>qK2!@O|9KVml>-)-@JfP!gqM>~=7}yA!i0At%h5X(LpK8cGXHAkiS9wC727!4-kHuyynnh-%v9e8B2hHrT47sWK{ojR@m_fl zWyCcxnfisncWKG1JJSp+F=kbs%PF|dLw6;L$3R29`+M_}SZ&9+C7DeJHI6=e4&Fzb z;ao?~OB_>*8ODYrBI)u?UB7cTX>W;M-aTkvFtwg>7g#peLdry^bk#(_V3Ft)S`OV& z=Fw0*Erxg;8j)WkzAhV<)>RFXOQh9DnYrMpFN|9mtBE3|SQ> zqaB7mYiHl}qhminjCRiGvlN5UfL{ki;-<>r-}pQd17qm%n8sZb!L19PL~(a4e{z?bT zW;8+CyiPQd74#_YmM}eIYRwP-H5GZkR}H_D#B;->gV6Pu8KbQ3BJmrehW$+dsqKMh z3an0k>iwUq!BBNeCG`+r{Npcasw}#50^FrDtEgpzlKqz4hP!p15NbxKsc82DJ+*lNz8hLs%^VnaTyq57zNq2<5Ibsc}oUtY&r zcM{g6LDktF|9G|(RNtV1%A6IOi>Kt-usH)E<%?La-*GLP3gNyUXW)*B$^M94^OI~_ zg`HR8^P|K!-2I@bGu*t3s{;|aaiYiZ!O}5NPFv6!QC@Va%TAd6M$6ZGKTd`zocgIA z0^0MD8>V5DPql=bi3gIn$9lcQ^~*y4X6)m$Km^~6f*Lausi@*kk+LXj$PYG#m5UZd z%N3Lq5(&SX#0>$pR;1<=OA5*US96gh9VmztHYaZ6SG;Xv300f4ZQnKEcNNrhi3cZ#jSRh)IG_sKJ|MzYu_j(ObUm<6q;qF^vRrR z_PWH%K_lKkV_%mY+|27a3;KO-J3`5-Ac(NOON0NvcW>5@$=SA|BlT=?m({Uk@ z7!zd*BeG=&M!t;>(S@AWl@x3u0+5i=QtJyxFbwe*>?Q&x+K#QnF>md-WEYMD%j58s zNDh&*uiI$YH4cQ;kr2JsMaGEQvM;U0^1T8o_C~aXMY`xFy5vQ^2FcL+C3l=TSOYujmG5J8HtQJP19DIsfsQyfBTCM3^3L4)&MF&Q|d++Q>3pQT)`?^90qfKLa64X5U%g}ze z#DWNXzkyROrcnSV0mBp_pQWGfS({E06(`xlj-@^_T2BqmPYzD$o&p7c#2D#hE8H(p zNJNg=JcU5Wyc?Cv&3L!NbbMC`BS?#Gf|=jhDpTqzqf33P7=Z;|jAum3UgJOZzy&x6 zmqNrq3nRA-Ju0s~)SeAwEUHVPB@^$q z>CZG?!t`E5oKnuULDH3hUlrlOp)-tj8pfvErBIHmb*3d3p)9C#`iAw#jKjYa>Nm>q zh@rmJi`4|SH`V<3P+_=MVo?4J73ELkz<;U>KTY%CS*g)~H3Sw9Io@G6A{}QWQNQ|x zfv!Y|?uEz6BP;Y<2+n~ea4LwMnEuW_14yJ z`10KrLvx9#P)PEZbfC*rGhTt*7o2mE7p0ZK%=x~|Z8Y1ROe@@(G}fXHejdNNbgsIY zCZuD|D;`_Lo2p>m0X>&WZdkRxpYbzPNx8wr#@tuV7Pi0jmQ_6lu1@-i6RGJ^dSBL>;U?)mQxG=O6Pax>>!JmOF4x7 zzC4i>r@Vu8bpu`(1#-ca$6a|7D-3%`tBL7`x+j;A_s5F5;RlCWbDi ze8x_u-~zzL!p6?X!o|qOrOL|2$HK$M$xY9~!pFiQt4^Hve=ykEn^>B8{{J%wA{7yX z8RY)c;B0T^;%?|<3XrljG&hwqG`BRiCgWn_Vd7=vB~xPMBJ<$kGT`DM`+u}^FtT!x zS-7}3@G&#HySp=4{>KDPU?wJeCv(t8l^R$u-hYBsEnIDl`1r)^ja_X`?Ogcy6v3p< z0M?Sv4(9)h=6|c^k9Cod1_b!_vgX0>Ht^kx+-Q0w%%# zA0%>?wx%wg4yJ(rZ56YFow-oGy8QnoM@|(?1z_dk;pXOHWoPH+ivI2kCc*q4a#Sq6 zz!aQJtTG}ZUPJ=+;Mc(a@mft;3SeewV+tMuW;a8p|HgsY($?J6^#916T?}0;jhS5? zZ0rq9oSDs7I5>Gsc}z^XIE^?AjSYFYx!Bo_IKUNF7E^9BBPOu5f}K7oU|j$yae1+7 I5n#~&0u9(a*8l(j literal 0 HcmV?d00001 diff --git a/funnel/static/img/email/chars-v1/comment.png b/funnel/static/img/email/chars-v1/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..9f2c028604cf1c2703806c9bb6c7e78d797c0da2 GIT binary patch literal 10723 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 Nd1+;-Itk;D{{`6XTUG!7 literal 0 HcmV?d00001 diff --git a/funnel/static/img/email/chars-v1/new-submission.png b/funnel/static/img/email/chars-v1/new-submission.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ce00b109d7499dc4fc035c342a05da89accc95 GIT binary patch literal 13961 zcmZ|0byOTp&^J1Z6C_x0_u%fbxCIRk!QF!d4J;bm-66pV5=d}ZT!IA&4vV`7x4X}K z?;r2?opaBgnK?6EUDZ=v(_Qte+9(Y*1*})3uK)nRQc{%Ff?s>#M>-k`{A?*Eb^^a3 z*-EKO0YH5M#-lkh{GQrUQA-s7{1^cM5(WVG@JEn60Px}hfCDoC5Xl4pBDdUDO)+=_ ziiL`TEb#K*udt&m1^xuxP0_#u0I=a=uzNv+uH{znhp3)Ps&c5iD5TgttYUOBaF)F5 zO0rVgK8weneFJj!d`~>ao5o9%*nE@PMb(bxqw>UQ&}qmL!NJm;W6lOs()RZLG~snW z+1UTNpCXUw7CxmB8Y1w41(Fl%tW5KS>htE$S&UY#e^1$ET`i6Ko>JKkkRH?7Z@F4c zTt28;D6IwjzFXbRy=iBaq0mvdxSokz!wTr|9T+zq^C%de?ClJmCP0D2fMh}Kuc-Mu zrsJX+0d(LCNMrtWfC%KvXT-9%*`P;Mh$+G?3q(I{qKh0FL{!Vobo531g9cOYC=?YY zJ+|ES8urLi@bUq0L8wD;xT^U2syxNqW)c;K3Xn5<*<9H@MB1DAp1({W3gKS&=5zel zN)1{D!At=(0He}tgSG;*yrV}_<~!I+8|1|^3Pk_SV}k^RO&#wdnCZ03Vng)+r%I#b z$}b`$HfVA*$EasbfC*5jbN){6g)f{demK4Sz}9aKqsY2NT^ zN7{?D%KkjDtVAjoJz$jQznY&W zrAt5rxE)@4pN2;Zg4M>{+=p*?%uslJEmVsb`G^KZ1yzS;o9`mnL9(~4?}B?36Or7+ zA>N41C}6UIwW|I81T2OjXTSs%hNuz$s|` zKWg;YNO{E4*k4M&Pemq04MV!W&^qPRpiiSq|EQFL7t1RbuSs2`8#MtI-aH7)q=oZ9 zh?X@2R$sw#09|ZJc|0hPodN4+P`T>iXY~sDkaNQBy3XdpZSFulKwuySO8=y|G{=5+ zplL3#aFSz$jjGF{AaCDKjBEr7Acmq8szp}76=+}VB-f0~vS71+W=RinRyyhM=*W8L zjd|zoT*Wb_l*#c*!u(LP=;_FMF3>E8=x{uFTp`F~33w!d#DVj0QsnY5r)85ccR{yr zQ%m;gBY_X00n;t=C-{Q0?nE4a843m>G0?@<)*WB|W#R`_t|UzD#q>1*s~9k|Jj@gs zcyDkLno_xJz9jPt87>Zg*6pF-{C+}vHwQi4EZM;cTYas#R^;QJTvPXX)N4y5sqY$8 z;mRB$Q6j7$_xWLHHx7ufVu8HubOuLAiTL&$Q#LSOh;}&==QBHq;T%m*?D+Z%L;YI1q~dhja}j^yrrpRM?xK6ZX|llq{G?8Zhwh>YTta?K@3p8b8phrOBL3K z1rAC*+Ns6?IlQxYFPm%sram4l0W!h60SpMc0>b89Jal=E?jIP>v9856Pv#4p?htA~d{_nSw#`E2|6Nlf&Z;C`JaQEj#i z#2HE&2b;YS#X`hpOz1=5XqrlqO~C@t`V^t~vg;C0FhHX3XH#3yc6<_`@__!Qk3@gC z3rze^LPwmTkZA*mvD{98{MU2Q%l4i#)AQ4SflQEtDlG=vn zEjkR78X~?x+4sD2V!WYIOMclXg8F=`RW*rcD>3^?*AoG13N~2N4R?AZ4xSv=5TMSG zW@rtO9dEQL{`$#U=D^e? z>MDP(RG6XYuTY(N5YE$_ZEhs7!nsJ7YDxy@G=;&E74y1$IdyNzPuWPgkUlw$U*~gQ zKGVII>kA9mbm*NPpwwLS6mlzYdY$erA#{=+538-MZ)T-D2n_1je>%>gC0Q~n zepj>5yVS8)Bq6-Bz@E1rSEZ^q*TY?)1`-5r`G6{2G+Y*v=uocL(3gI$(_<$D+)2F6 zRbS`D<~LlFYsXCP9Q`Wy*q}&aHvQ$kF9EJ{F*`;gk5d!5pgcsaHD58}ISv1H3-(NW z>mLI;C3wUT$&iura`dnc9=CG+Y_cB8$bB$gU9sF(WUPR9+?e!R`S`_Khd|*sn#1I~ zf2-7ZLn*t(3f^~qe;FDAQeYToonmohe;U6jeN7j-u|*{Um>X^$K$+%iXgC(7Mjv&A zFrWp+t;oOBgwdcOC_4kA^-be0V8w0uO5qS_*PTz%N4<=p+Uzo6RKM^$m;fgueZ&`o zcYBF3S&0}a%PSw>$vOJN$d@!QraSFoL*@-95aiAbZaF!7+kpT~|)j|=bdU?>fJ>3jq+MU`=3 z(RI2gD6?aXN8&0vVBm0EE6naOYC(Wl;%PwfWU9o^L>q>ch$M@d{&J+6w0gPN*e5&K z2Kti}XfTE_SoR7%Hkrn!5|@yKEf-P zCAuhCUx@@b8uH&gNyfhpIRE}9_$r2vvzRwo4gmmLrVi))CBCC-XIg#9sBOv`XZ2Tq zXk`#hN=i|RDt}`K?0h+n!d6jLlAa|JXNP98oc`F?DE#g`%kt`rT{O@A(9cinD@0i* z1EIkSfzo>h8T0K(8Ha=i&&U}3k~a0+sz1M)Z+1h;-4t`eSrH3qafzj!pm>BNJ7D&> zGOTvsG3i6+=imM5uBsN=M0{>{*O#hg7p}4K)ha$#8Meyk0vKaekV@04qE^)pjNx?= z-*L-GNQ4jtJa4amjZ+i&-$gtHpO2X1t~aEhL6W01K4Y0`IEiC36Zj04~cRFk^{X^Rkj&GIe*Zfzr0zXb#(;ng|a(?zP-S`9~c*RwuN{-w=TCBV$n*V`V< zHT!KEFBe4i8YPKS+&J=P+g^VAQda&4C*0GW_cfkx2+#piOU=|D*ruUxnPmQ?2P`Io zG~R5Vu5JuS-k3?`kBni`#A7L5XFXijuO0vUS_Z-ebb6QsjvL+~nrG?CeBOHxk}~t| zJQ|qBUiT1`bFbRb+X*U1swKyLjCs9_uYPp?Rp|4~*yQZD%H$&H*R+H7c!h$L(c32T zPevWLCmiO1{|rShuf0koHO=eKCv%uS-Pp`Mu1>231SuPq4M%H86VRlXFZK$ffRsxp ze$#O8eSmu?Mm+&%@1rcBdF>W0CbzvYqmMsr$)t>u-!tS}&;<8BC5v}137#w-4VZ`! z=$jPcLDYD0w9CGVmR)Q+(4(mODt^)F%t4*)aOc;4Wy(5pWV)ELRWyP{8O$Pli(4K| zY>SBoNrjZiaJc?yk0Cr9XHenu)s5L{WNi6MU~OfG=>o16RPbbD-|nO|cNN32%Xy7_ zy)I$zBhB!VJJ3u~+2KZ@97qV3W90)o*Qt0JqZTeA+<@OOidKZEeIZC;?5#ry%#cd6 z=pqa)p<QyTIIFVeUNOoeNQ52*E~nejbh zSN<94*U%h`(|AxJ8$p%QD0z#aK`-oa!^e)YdEtN!n@`$~QIF#2@99ic}ohv6R%C;N)AAB!^~#s5>O>H=q{n&l?2j0%@C zCYXk6eH~!v%iPeX4?%`)0urG=V6AwLWOQuJZuKX|-tp_5E-jR7dA)MW76jbHtf!JN zl(1aXgK@>r)9Vn)&ZVaO6(ZTzDJ{hJ0v1{F_SekP`|V5Cpv_>VR0HJ|5fI2VPfRX^D*&Q91VYT+LkP4Id& znYaiOvH$7UUPQ7b?}4w7fxEw5wvzG!zcqpHnTILfGD`jmq=|#&<7Uep;MAG6$ zKLD*h^(O(3D5968vo>aGyrb%Pb=z*xuJdO6hZQx>9b`II^|_DtMSBKce`oBE54uKL z)kqGau{h(3QMLm<#Vd1N=lV3A=U|*9I-;mRAP7|sjXM{I&ZWEaVj4Jm(D2j!;dv?Y z<*_%WdQ|X*I=#cQf};|bu9tW+ed}N8Yy=Uv0X*I*A_^G&tHtD{4bVboXx2O`(w-MZ zEn6^%^c2zo9Z%nFW7XB>5w}Z;sN=yf?&`)aEZ8f60{GNS)+zGuVOx?wFPtBEM(!VT zk3tJ_56^qPSo(VBi*9n&Dv&|!=eYGefY>wI+VJaIonjM$7McBS_0tFXr@I`w zyB+;2YjgllpqJm4th0!_e!q_Ei#@q!dC1(vyk1~yRW1(Gum-&}Qf0{unM&6#u;Le< z_WY$u{u1kYREgOZx+w5rT!rgp;dAi*j9%pQDH5w~&c z3>q4mi5QN4NJO8=c=#)X$M2uF%R2CA)RK$JDLW9A%XmN~(_OxCNiYAs`@qns3L~Q1 z3Bm`SfxWw@PKI)q&*C4Tpw=sQ)~AIW+Pg^Zi|-;5^?LDWn{%Q856|E8pZX}*7MIvP z0lWB*Q)Pw9_TsJo<(E1P&wX0|GlSeGPM*Go0N|EB`i z68AopV}D`9Y|D46&5NEcZGXpW>}N~0oloZ>R!yr(s-14s#QB_^AgCzF^FLfi(P=79 zgF+hsN>T3C=av@iaf(u#xa|AbBN9GP4Rg9|oUrXX8V?dvBkc5Ny<`b4EUe3(A)obP zx%@+v92Z!5h$h+}#zQ4QSC(E%VffF$|8bs-3UmZ8XKKaN{G~5TSTVCr!4+ut@0SBs zjqjxpfrk2X*}GeH~V@LlG$Na_}awYcGWxU7|V1!=sub3u1Dt1Nw&}I zpDbcOPX5O3JYX*xkG_dzOXgzfdEvXIlHI(##6JH^P4i@A8bl0Gx(No%&c(1ywE#67 z6y{`!O(y2M*(~jLt8|}UbSIwA&y66X-YZu z+k8+nJnVVuC!7;?yJzSsz)eJguTM`mrY^$0V`WPs;m>h{7*W9pAIE22S=bf!s~Xcg z$%`9o3{GjK@Xc4bOs_*96L$0FiPlI})&G(^?qkAN4Whud-h}IIB~H4&H^5&;S9NE$ zybBiKQss4>P4LNT-N+ehiz17{Bk#>FnZzgc&hxB};Moi&4tlc#u+m;zLtnunnSMbt z=iKd|HutzMe%5jv=?$r4%@Ca5sdL=o%k2ZBwYj3&vxIoJ>nKcr|Il6G;qLThKK2+D z@0&i$$s81QIqbDO$VAONa5lL|2;81TK^~g?l0J)DD4(px5ISyLSo@i09;{$8yudV6 z`e%u?<@N?wn)r()cPbPtmUXs?iXa@L0AoBq@7V2xgtwYHZ1j-0HJUo8pJJ72m(2+fyBJ!w zZX<;zKd^#`$ypT4y%rFM;G$WSD+AqfY+syGh|>7VPuX*NLxTdnt6zHcmRiX4$WFf0 z{J4C%TlHC^GPT(D)#MDYDsv6m_73;yE@)m{ZVflAbHcu{v0m!rB~FIuT=Jc^3w*$Q zS#lgi*i`JARHo$!YdKK~R0?IaRH4G_Gnwzl+DZZz>CotHSbrlKvbSJ&R|1K{vP95*}xq z>ax+P*D-|e&uDYIEHt>NJ64-w{x_Jzu-JcCll&*D-?yC@sjrIE!PhQDF+Wg}k|AY_ zpD)wsf`ykC8k>yvo{+P(a0ZhZ)l_!fY%|4vB4pOer1?Z;xR|L{F|vHDqfk_G9^^L1 z?E3RTi&8L5D;K&nrfy#-MNUIA#Y9zo=9R z;h)J5vFLb+sEMa#C(vdUbm5Hbvi$Xa82(O$-+EaAY47$Rz!`J@yr&YFw&!yHrr&(O+Hk z<9kHhU|+d?lFl_VAOJ)dS&_9wf@mb5kP?gaR^=y z$f!I}oFvFIn^w|PR^c0r5!~2B{JuR;bwh85Rb1Fku`0E5LE^&0-sJfAvR0Y++chP; zYd1rcM*5CaNYI&ef%(y1W{KiEbPj%r`4s|UV+Q4eY5mfF7A$*>8=j=JqwAOmp(V+D zfV1BMXW_?)yQq->j9=IrxxsxJ(uxRyZPQH!3q<-JoA0d1H=d9;Wa+4&L}sY|Oadtk zPKok_cog}d4Au)fCjjOC5>xqSi;zfi_ z?W=W64Md=D+SErsVqB6nN0Ju)Y5Y762~j^XtDSkcaQMngnu5+kV@b;eRF8)kguAO> zxaH0kBYz*3vK+Chw+Y^vh&q3pBBj`4heCo4+Zs>xP|UNGR>1?<9CwQOhx_%t`?${C zOFhh_+z(#sD8z+;;?` z6yMM78sfi)`E6z!b<58PB*+PjxI20Z^JfUs4^j0Do6**-H=Vz$bH{^~boFBkb< z-n%w7OxxemqBqtWP1QNx1K1zS1JMnZH-{u~~?>&YhX4M)-)n+sX0 zX=wPxeI81&pAx|-{8SS)W+?-U>2!Gt6^&pK-U!xIN; zPT??7M+Wty>Hg$B9GN(zO-k!%2mMm}%cE-7u{%iYR94UvNjE6Cxv+aXf!Av}S)Ova zalrHWk%hI(-No8K#W$huusL#4oAqW6_Z2ZB_P1{>=0SyBhX@{{N}Mj-_meuh&lHE4 zwwLDSjRiPCwies3}OwOTv{zOG|NC8I#~J3RE7y~<}wcbM2^we zDOSW_(y|5juFTW^ixEzo4+-vfdjAKKs38BC7rK~ioZkk%>@`57UpnfxDuA^3g$MAfmhNtp7r{g<;GihOo@{ROL2uoq@B zgZQH_(1B?uG08f1Jcw`%cP>(FEN84d?|4?a0v7)LYjqd&EtWX=;w-TunAB+p{#D(byzCKg=uIIZLBG#(DM#B^ztiJ}FKFPJ$O%avLYDfMrye2(ak-={8BSOPP?6 zf9zdSnew?+o2!!u0j8}xg=JwoJ6Ko|l!_{Y75ho`;x{@2V@HuenVM6$X$u(BU+>7<;j&aVfrZ)kz zEf7^(ju;{0+Vg=Q@@c%TwZka$rhOx;>4WV==Cc4U&k1#ktp#AuWemqK>nPN&C2Wmx;wBh+fyluD~;uL!(?U?+#Uv)W?$ab|I$(w3nn<=pU zk81miJL^q_;9@*~a~xYmU%O{T%g6XN(TOt?alF3L2Xg6 z7Uj^KM-t>3sP$2T3V*BM-6Q7`lI^oHnX;K7-}K|@DetzqOBcdeByIV#2u+IRs(m{W zBCJ^>C{Ju4lG2LehEnDk_2rj;@Bj^`akY|4ftvz2SXO6M+!D;9aK9Ur=4uyp`CO&D zr_+F~8b6pk|k=MncaoxFVe^Z7nH-DVtKje%K+P^vNb1_05q4Io-Wq2rZEd8W*-eiQmbpYRs4!&RCTM00%>ZM6I@_u+POm z@bEB=^j+*k$(R9kh;N7K-|Cc+S_V=xd{^?w@T z5jIH;*7ki)#_XS6r-lTfoPFS$@0#CY7w=6$bYfE zOA=hIA~eH9J4^084sp)wxzB04j9Y{Ip+QeQQPVMH(K4TtgHE~wHiEyKc+Ly80MF=^ zn!A$^WZPn0fZJ=t#LLK+E;t@(+OdQ>^uDUVIt30g{&X<1LxWyY1YZ{w*pQv9!IQQB^3tx+ zU!pZh(=l-)H>h|uREDZ@K}iUY!wR<(|0;6_RpKO zmvN_EbUBaPx)Vb}@BO#%Nrs;fk>?%@BuDAH9&@DM??T8a{Rx0uQ0lv~frEX4{QFDM z@<5lh4a~78->I%^yQ1^Ecj4-62;*|tf3G#Wpnn{dPV^vQ{wZJ*o~{o; zL>|7!_y*t4vK;bn_8>Fy*oq#r0b_YYyB5WRilSi@gMDxPnMe^YB<$f9XgP6o`Bhbu zu-fkLqxINw!5TF0+nD~Sg`sKw<7)1V2&z@}SA}8^u%Z1Iq38?V=-Da?Xa?vJ6C$cf zwa2X&K}&-Kp_1}aeq@2nk|OeO?02o6Fu`+jgM|F&u;sf}k8TT94*QMpU-IL4grZ7V zG{Gm;{}QfMJa#{tJ4vvOeirW`W=_No!%zQUTpU`BVZXnLfwBu8wO9m8A@GhyoL~;e z%2<4Se^tx}g8ftrZj=caLtwY7WBMBqUsm!rkHLQ@-;-XsKRgPmWx&(Q8+_gag7ESY zP{h8&E8p|9D$x$+-eSUdqj~NH)FQyE08j_?QbzP5QH$IupFz+u%t?N1B)s;o3fT{> z;+I9oka66E?AR=86)_O=ZDPE-F~K3_M@knL1jNZa2JvGY*Z8XpNXEqnV z;LZse{iwA^a|DaM4U!o=-op>ho2&Fqb3zdDL%P~!2)~M-pEP*h>JrMSj4PeF#F#S8fFkVIYL*oq1C;`Q=&upVzpo2E$p!V0@M?q+x z#K9r}62gWFGkfi!10CRPdgdb97by~&dmsQG>I!OqU5Pxoz}%ob76G!t9BPyGZwn7t zxrq8wm|7+}{b{yiMY^%CnJxXIc0}=$b>ykKlA|U*(eIo=-7fM1xG&dvzEYMuztby4 z|Lumk2x%dNc*}DkPh|&3^8;@eIy_kk%K_=6{Gg_l?MK!FyhJT#sczd z&ntsg|89#9jRI~zISDCIctTi5&;IuUAaWoe?af1S~w(eXN&BV%v z-%=RK%j!gtw!N&sQ$QNb?|&=E{R|5dDis$^_+;6S`Zo4F&G@`Xh5?bw?x!1~9jaf+ zFUjro^k| z6|k?+S1<}c-@Gjw&WL{e7!!55*z7%~-0M5t5)t&rLfo#7cn^Qe9drxPl@=urB!t10R_aLBPRO>tWr5@pEi4>GhC zT(YXS?A(;_teXJSK>HoKiT=#c6*5+?pnPUVT~P>qUfHu7R6J( zrDgnjp?WfW-~4T(;u}4oVqK$5br-mpQ-Lil*Pbj)Y%;8RR8jAA$Osm!cm4%hay*_dtb!>FwVsz#Jm{XD__r8 z-hM2yWH2*?p@2${UHYy5J1?}8l4N0t9S-)9+JA|SQjk*dS^sgq=WIK zQ)K#ZqZHy-i3-XG~3!Fo?S+6Ek zWjy**_B42NJMc@*Jp2elxoA|xvl17Dgg$x}tp~*ttY=6%ae@&m**0~dJ2qYCkiXNl zZ;S{$Hp=j6P(K@gaSgoBxGVk7#AMIlQ~jM&J*iV{I2eIjJ&{J|j}0vXhO%l0vgaUE zhoot`(|5P2$I+3KaBi4s!ACVi*vOb}iEObJH-B9Bq>z~%&KNEsyilQg%60MJE$h`;gNE`rUY+Ys`cCqe%@hlB3 zQ(G|bmOuO*y<+faGz$#5iy`G-#WDXu@apoY6H<0zW!$dsy_CGEC+zFgp($K_loZX-`b=b#*hU7-Uu3Lzl4{9Lm+R0Wk-jf;|GkeQ^{R<-gS{B zWlL|H@0fCA?nJ4fC4TZ(Z>7Bw=%4cS#2$(n`~n+cd@6dgj9S9NNeh=-P0q6e744WF zEoa!>t1jc6@X)jU&bZh2x1mS%rq60D1G zOvX1=Mn+#|@=N^_jyXiUaV6%{zevr&-WiYzDi8LUV*JFqgiWf>`tPrmms;0l^JM(B%JDLCc0=9Ae@`J~z?xrA)RBlpv6#R95Uo{; zzrK~Cly9*kN;32$U^uSBot~JRF?}3|pZIsH)flwIK1i9?o|nm7uM7?9LD6|~3)5qp zLv)OVM*Ew7{NC2&^KnM4=!GqHnw>99E`r>lZ_dq~n%K<~OuF`YBxAP@Yo zIr;8PVesuxvCFE!pKERM53h&ZVreA4M$X=UsxzLUB>@NmraJF@XzKShxca945^T@p zWONc~d*iPZWTcKL)z>BI^%tIP1cOz!72Dv+UH-v{&ec`&`U&yO1j#1O$Qfc>KrZ6F zZm1Xhol$~G-P_YbdClM@83muYsNndUx=7?MLuUHN@?yr5lx}b^^9SnOS)Qj?e!+nF z+<5bhc5@%1L#qtTGzsu|_oMVd6Dh*QJo?49&sM z38d^Tl?ndTtbRbmHq}w$q0OcRw?3*TIf3*4;kZI@1%TBvi-^I^6&ZONWTjbLdb$`# z&)-dGPjQ2O8}j}Jx|kI7g`50{=GR!cnMQsJ|JfgYi+cu7s=lJXg~PpibN^*Go?>1T z;pJdgAia<>AQWCF78w!s(#s6b;k@?8VFVslI3%A(aLq*|G+9_bYb(`6LM#z^7RfCw zswWSWKeDkez$4k&^sVkY=j@jWb&4J3?34bHhI6=4b@w`TZ3atI|F5E(IKdx*x2v9c8N(# zrH}*xxRDA{P(5nYHr|xc3t==ltXq9S;KxbAVI*Hb5G_(RdLN$jOoRdt<${SQ#yCix$s&t9R;W?<&9y!ChI!&^l&r@#X`zcyD zk8t-Oi5dxSCMP9e_hWa#AzCba8XkVCnU{W;@^yAiWa`k9D}!b4+9nV%Sd1&WE6Id}YMPMO>a)7^Vf_wT}&6b}>0VzLwHH zAdNGnozEK;Z2J`A(v992{)d`y^f_v%NTOofc#5H-*tEgQl#BA7JCphisWhF8fs9;~ zTVBw#e8sIhbrHo;+G21jAJx)v?<9_E9mxjaWlr&EP65pDeQG^?d7p%xo+K}Vga4h1 zAG^sQPP7tuA)Y;p6|vHVYU>^tWK_puu-tybt$21VnXm_k;Ash^3~R^|X`9G=&(UL* z_tkNyDZ1K0t01>W^*6_l>XzSis@uK1$^W!dJnsz<>(T>E33;=AlSo3r@2AP_jl)zU z2xjnn7Zc5eB81xHU-2Rqz5;SPLnLs~pnvK*Ccw7`O0W2}G^*n#VTeLF*Q&sJ3QZ_! z9p@Y_%aq3Uwv58O6;63ArmYC}SNV5G<|#CgSMybyqy1{kUc#O;2qYpslwl&$pkZ=fwaLeFer*R;};6n_xG+&byb_m7<&d_G$E8}?)AAkU4@Go6$ z`a+Z;4f0qCU`=``-1bn2K?nhs0tn3F;X+8MWk>=sV4`R(m4+0&(ayj#o-%ul@XR|O z{rV3sbdVP;*o4NC4(~xZIg&Mf3o5h=aUMBrdhrwO3?>OAB`i{EjIs%&PjD?h#uJ;C zz|Pfa`I~C94ReH>@ZH(UQQc{qhBGQQFpma92ijtGE0t(dDSwq}&?BL`p+jy!&A3o4 zAc^IJG`NHqJLnF{`VXlpvsi3Rr&6pl@^1^P*U`ytSC*b2{Qj;erRO-VPn6uDJeD@x z_Yah(?GU^pz5&KXJ4+mbTEQ*}`Di|2r_Bz4n85Q2kGWhpUaJx4FADpyX_BYprT- zYj5dDEx;kfA$D!@nm|4Qd$=jNlf^YnBR;pFu8_U5qvuM_-$cj9n$ zx6OS1t^;RG{2ya&J1=Jo5fNEeOD|_@7f%rp4LGR>z+Lvz#`%BI{Eui65k+fzTRTsH zSAdH}eSRKJL-fD+{C_lh_Ew&D0H1&$Z5qZ`I0?!BB2l$>w)XUOvj+ZWRGe-uwvs<| z)&4I&s@iZWfLlOFP*8|lNLZLDiU1c*g8#qxytns*QwVWzt4K=^gmBiwo6Y`LvyPS$ zU}NuO4Oao@Cv*4z^uTHFY-?@(f1Eu$%{}ccIlbJRT+OXKI0bAhtc3Z6EqScDEcgVu o`GvSGEiL%W`M7v^1h~2RxjEpY#cDg~gUbSxa6$;~PH=)laF+ykce(p}zx&7g z-E;2QGt)cW)v~iaPt{XZ6Qiag_Xdp^4FG^Q3i8q#u(B6+M4%wS&O58p;6RPY(dlZ~%CKRYCUvz>6IK4$J^RFcSa>-M+P|3&R?aEEMIW zf!F^&c^yB}U^S?2^7y`R!cl1nE*ti!^b!S}VwBumvs~4G=|}ha#{Oq3}~3Nh%G}>pOe*Mq<^H z47x|YQCP6X?ZJ*mMejxmTn6R#+|n)9(&?wlHSHW7ww10u7yiodFB0&V<;qgk5bHEm z3>uri)}Gb8o(sTHQODy0&*ZWqx=}&lfgA)iL}&_|&zKLcW=v!-6VQy)#Q?NpK;g~! zpki=mQX4aeQjWh!*nit0pJ@ZG$m|FkAb=14PUb_exEPd({~F1w)s7O1Xa<4u0ltJ# zUC>+JKraqx5_~g!*I-~%K;wtfv`r;I7gPjyfLgf@TX?-RVNt-05Gn_(7_P9Nu|tmm zSQH7~FCfUccqi<)0nG zf{Qjo0lMO?f~sRSlJ)m>;F}4$D4~QPVT_HGzmcJ~z*TRw9(J-yN~wAJXZG445-4jX z>My*m_W)Ds>t}{j!Y>lnFIWgSP8uD~MLOO?d+CZ+o@+Qv!XBYp6RYYYYgbwe^oT$n zLLTq>tuP^MN;fPUYFiN3o-_GRi^wi8E8=K6v_db8TM9*z540-XObUf#2YcA9z-wWdT+zx|BCZy|vi6E#f+^^jm4`Ye|}F(r_w4oTO0wV?r)? zLbfJ{+^2@oy(Oj*%5;UjTI{~UoQR_gT=!8H@Vtl~urKUO`B0sZKH7u=mBO_P#NGM z^|qEBH-`wg%Un$oK`%|FIvI*Pi+34v^p6Np$?Y!-ux_uHa_gpP?CZ^&*M zR1x@gV1)we15+L*ueqh`{&J|OIH0IJ0ae3+03G5@w}cv3t&s|3d{?28b{1s3PT``C z4w@_^Cgx`%9W0NpQ*QzOe`i%#;y~Jc2M|u_N8Xc6t&*ebRz7+RH%K?(G35ATQ#~Z% z;lLzh4QQmRcf__P4e#*l?r@f5JH_i}@~6}Bj@yWLQRr}{cDapaM&+$=Ax>CdP1L+v zannf4m+-`5FLOY$Nv}8S`+S*vgk~&&Hg~H}HIR!yi#VB1~l;4M^yTQn4SP?4t*Zpq9V9MIl=|?4_qfsA>V>j6%I-wTV z+$zdFuY*fOq#ET$_BFgqzk^Uy?xcB4gQ`56h~aaq|qrRqm{uF+*TVDA|H~RC&q7!8jMiT@37znTkrmuVAt+tE02>UGgwZz;iPX=FsO1iZCi4i4&@54d zaG~gC7_rVnwwgV4l+36-%+BZ1P#TFu+AY$(L}rjBLoO1Q(uXfYO9j6l7q?uSH?NJt zq8v#bk#IxJ9-d~?>itl<>HrsbH;)g!T?D{^6{U>BP;xTV>}rz&;mn0-xhsBYH0o6W zU!~6~=MDF=2b}Ep0L0NAFA-=6=qv$-2ZW)Xr+CU0r3}QV*h^-Dmp_0Pyn!rX8fq-i zHdGs{E@x;x_heF-W(p^M*ase(3p8Uu=iSB?$uwjlVci9>3E=L~plrQINWVKiK45zm zX*BbFLm>LevH#_k6r_i_aSA-C0v+~r(xrpRdGK9?pg;s!F3%N8U^aOuNtL*URymKI zybS*<)ddht(KQb++w0wFgw1?|5RaqG!~0U$=;vVIFNZ>AGD^6WwWNGk*vUs_mBB=X zCeLAgJwbYDYV+>1>y&kOzX+i=1E;-2Y?@&+$yD6}fT$qhaV)+Sk8sdn7g)Gi#5-pZ zcX|HX=}haTh3stwQAs2-an*9p_q&hZb(%{JXIkB<35I?&B-=L+=nUDqRuA**%{dee zBvN!&%9KB6<|{L;9WTwiMmEg-h!KN#NsURwxU*yK$W~2%)G(U1ldqd2|z89fZGdg5}>hx>-lMMutG-3RsR$rTR^bgVm^DX7@iSo zd((IG8bmp$04hIDSJ%zCvTXZQ=b>i!5lRNX1P6S_G_3zBTap)5N(yhI+wAmR`_}`r zP=P}EqBPVNSD0i5^jAivuS?HTSc!Jk0r>i3Im#n~J0(Aw(K`ZZLXiML9(1fIi$~0oQEKq0f6;)0Y0T;mpWk!v%NDnbA~l4L$rjP-xnxSt_>nB#=u6?j z=g`_;zPc61CoCz;V&xSbGzMsJ53xlA1mUrGgBjDB^Egl@o#k#irt&l7q=-c+YZg{x z`zSGg>cJz@nYoCOayLOM0K6&Y8Dkja@8cA5nNK<2e1Qv^I8wjyc>J`QP598>&xtdg z_o0OHIhqVeMu0sU4gt4(?@#;`%a`wJ&7|HzM>s z^)FG9j!|n5T2auBCKN>4ki`Pa_Lr3L*Y2o!%jx4LjmHt+ESsoFxBqCX^ zb~5;9@Ipns)viVRmuG~rkZp<QXr8%j4u% z{ibq*0=%zk({-Sbk}|o#If+qA!O9cL??h^7c#MrBpstMvTbvj<8ipuA#! z51x172ic``X^O+>=A?L>-)JugYME2P9uwW+=>TkYQnnS9Xz$A)9%q$quxE}ZE^ zJfZkH!lAnaM`u$Mv(xAd)l+p|&|UUO$MAKP7Zc=bvxwBu;xukIvpEU~FcwgJy|H%L zu4|e_Qxpn6aQ^zGn`NI%*WSa15;*0bM>T2biw#9x-TZMx_(A&m9mvz~Ml0ll1^cO$ zyoF&ofIsMqMUTj1N7|}${}(3p(``tuUETFWT;vV z82_zM*kB|bndI|xL(8UmuD$sOf9lacgS2HY-(fI)?dbHnzdEcx%@rUGKrJHgZcW94 zl;{7vMOM0YPDZ)AkrivQS3R;K?Zudv-7vtz7x|mRYks{Iv&4nxZ6&jk%}^%7RBtO0 z!25?^0U2e0LzBHO$JMa6J#F*cn1fm2r4_OERnv6{j4Ek#h0@{Nb1<$6Q*J9cRD+f> zY3JZEAhp-!qO|HQ5j#Ajk5bHnlB-U|bcJ>1uYS9aAsj_Og6?9iX#_eN*Shl#7EF~^ ze^?aLvN_!SS}@?3_7gV(M^%_HkCXQ&%+ejFo6X5LQ&%5cip<)zhOaV`8W- zP^@QTMj>Pz?B_nU^6fQ19wptB---5Lr*QVox&g0oY9Xgrb^w-C6#Wv5_6JgX zIyfMHe6pqHPsC%1b$n*1JSg8n_)25t{%9?hYyB3r2nt4Z2mGlK$x9uUOfAUE?F7`! z18$>rCQda^=EB~Cwf!XZa|INpEj$;DQ1v*8G5oE*Z8`io52(yxH3L#|+Mp%U#v{G6 zo(PoVLJ)5Z2P-nXlSLes$9*pKlm4(_QLQ;G481<$j488puzVepopG?p!{Pg|zgnmY z`%yNdM)(+58u{-sN4kIyrF=A%gcyp+ts?u&Qmb5GnJ z7RGVij+`_FHgL0bY)pp!V@^rxgJiF>Spa-R5ir)v@qt?Sx5bnJ@CqpgcTtnZ*fZku zf#Z8<1<1pPUOF(lOfsdd>rBKf*L)%o7-&&+xJpPzncwbuhO@+wIgU>sTA8^sF%r4X z7ZNh5h{l;~Y<7apXrLi1E=0b7IJ;qy{79c&#oP}*6ief)-;bkVAGX?2iue8|0fC^p z%qT_{tIR_wVxVxKEaF>i@6r%7b%LmLoH=_9Ra{7kyjT_9%{C0Hj-H-Oo1->U_@JNn zplF)i&=^9mc!?7K{a!joVS%TpFwDAwOd(Z?l&9Su;ST_%;P~mkMhT?A@fBBsE!4g> zE7$os*F=i{-8Dtkn<>~yb7Th?yAYG~Vq4}siBaIl*B~Riw@i+L<^>Ey2piA93xyKm z{J-ICf1@JT!Q>8re)ms5d*#B2`P2a6q?#&=1d1l%5tb5u=C0ZM3X?!;|0*WAU|W^F zk8(PxTF^RPp3Wx@wS-KJWl`Xcbu73owGyRJnPd`PYv@mdTT}#CE|>D@Do2J%MRq zYG&R3q<4r|Y`(+8Nk|omo|XvVj0<=LOC{p4ca*OyuRFq{a5x67iH%^1F#H-UA^BbtGH6ZG{H>4U?I@+9=gb`R=S# zmbkOVcMx$R_;hFsF@(lJqxE)gRRHb`59->5WjUN}@t%`bdJwq7f{KM=N71*V0$2zv zhi$ZjA`=&7V+3aW>CXxpi=r8kZ zCQBwftIKCk%$;4A%C8 zoNnPjBZAL146QXwxLReZYZYV1N$>qWYmHM?MksAVx7E@+$ilLk$TV)oLC$2Qc0%#W z{F|Pd?;71M3PnR=A+Zyt4iUOlP0za7<}zh%-yJTC`KTPQ|9uCsz@B6QJ`pm1)tlcY zSW?`hOh{)QL_ckq*hQ)6pJu~R;>^J$^VA9%`s*P73q0e-shjoYaST>{7nu=3#9h)X z?l*BZZY&lD6jN8yAx`TZbnfI!!&Y$Fey^#2VLA=fpZQJK$H8L9|MnKRGXzd0sLMFugAlPh{u%vv zc!~SAv>24(o!F~^?P&HJio+*H)+**JJnFPqweqQG)yW(q58}qW$27mtu-?{F)_wpM z^0p}i5A!eZmF^$j-hXiw#oLl|aN=RE7mHvFsIJoI+yVj_?`iTOXUuy|ImcSB8`mb= zEBzT+&Y082VOcNsg{MKco0K7Wecq0r`5W@mBCf zUK%{+U_0|{c|8cmdze+EU|AZ>m`OiM0lDxS4oC#`F?PM$YkOXwTP5bcw0)ffue9;h zzC5xtG|Kt(uW5ZbHQ*P>gYf&LfJGk@kM<7d7XHML&wS0n$bP*@b9h{%2`}ls;|s#& zr)DKvDoLgB#!iH(81E#r!?nID`A*TJ~R_$ZG z8#g!n=gR8R5Fh8@t-sqDSxMbSP2#1Mq%yZI39FQmlpo*x6AZ?LN_9(_0&eAnCWO#e zq`WGV@7qkL;|cB79YK#lFv*f5ihR_NpFtfPCO?e&n~o93WX zM3=jK#T6W~A^0|ouHPWN>jZJY(mTQt)Sd%*>suuHJg2m;e0b!Cnqs7d_tfuWqgZ8N zubo7rZHIn|FxJ)cG5Y1=c+nm=6jBnd)E3ncXfHnW8R^rC=@fOe-$06N1|a$(Sk?GT z73t08J~5H0;AM8?DO>1=nrexS_4Wl8)64fhOER=inf7_3f5jEzLeb*nIa=K%*_hEf z@|5j-h`Xs3g%Cm>Di$xIIt?3d!MZ&*_K(9aQ~OMt zSYztwg~tTA4bYpYVfnAZK{_75OzocE@mVu%Fc!a)eXMHhV+py~DeWCVX~&W^e31Xp z3zV4a-Vs4Nr@=6ieHC(+(wM)UUGOu;5F?X(5whGF$l;#5R&iu3wIrxDN3BIKm&nph zrauKUa|_n_C(c8Tm6q9j$J(evHpjDWb$w<8`5P*)S-2(bH(*5R`jNtgWPe;$WPBUC zFQ*#*#nl;H`}JnPn}t}6WMNND5>#lAHmU`usF>iA1SEfj+ zHM`a8z%ApN0koH`u`e2R+gZVv7JPR@n&xLmCfg0(QCGcn`TvnpUa9b)LW8G%mWH0B z9581C7HwaOVBl{`NPw7)f2rx>*BhNUJ~3RIm*pz!_pZJXWZWK=#&e8Ut%#f}BIU7uCd}a9g-7$+@UM zai@xCNipP;S(9@u@m#r-+)}v~0;-#h&)UX)N^$YK?Wja1!R7lY-CySxHOKQ)h^KSc zj96CA?2>uWqF2r+Zu?IIU;ieDcS5gU=LO7t zO!_>sOY zc$%6kPt(rTb8vS-gQ!G~m)kHWy0~f0K-R_N(^%BUqb9zG7QL|*FG)1BOB3tYS+a(w z5-~6C*({U%2_t@4+(}8aP5HeMT?0+>tlagg^8a>7ieLr`jBa;&{WQE^3h_O#s(ytGKn=%6L)S8XB)0_=2;Dwxi0C8QQLRKFrEt z-9NR=D|a#?)%wR4WwaP$VEq@L*i~ocP{Pwrzsqq4EW}dPE+lku<8icPr4fqP1!Gy4 z{}_51cQxcP{8**DLLnLGD8^U#@}t7JJYpK zj6v5~D`ym)9GZfzHKa6hIPrsCy@e8uq)IJ9lcnSkJ!)gdZ9{%Iq{%P1GugSq5#m@} zBF!T1v-~vop>Zn*hU2wiky6~&WK&h9mdJB>FK#t(E~}(|nq%KT%E2g7t$Beh2#*;S zMv>|4Lv+_HGjV^#WjT7&LKc!;WZV#X517OX8|@jE)`a?&b& zPvNMy$W>sC#nqBVdlifCq4@Qa%O`lvVxlx=W53S}DSg6?bAkvU!yBf@G(O$9`OZ0} z<&SQcT=}=pa$!y^e~Y<4YXB#B)?tdGhbhE-{*xIXF!@?4%El1Jj}!~y>lQ}%v&OI` z;>w!6(W%TsXMwzO;*lKyOPey+WhQ8y*)KM2g4WPo32~ zy+ceJf&JsqWMFsa>6y|wAYTzEt!Xh_`zK zTc4v+fq{rmO}ucM!2Dq=W@;WyQVb=co6hFsd09$R>+EPe?WGUj zWrLDqEa9jw2i}L z@Q3d2;>;d9$?>!`6FpxuN0`r>(zzI_ZAw50slLOyGt0drVs ztT6ZPE^|hjpwBFIv9VMuH(ZC#=>9-|K3ABy>VgX`pf?P{!3>8;baBDp9 zsZd8Y&$5v7MkU5wCDsPvCe;{2KDounCJfLWsu`yhN+wrN$H%})X1-6p^6tz_`R_9Hkoxk6n9&RxDewdA=FiE+Rh=TCfJ0H_S?Uz&6ov2C! z$4AIlz5STg#>10Ug&wqP2G{ZU;1|AHn$?ye9{H@$Q&Cc@hp2&Y%yoE8J#2uoL-$#? zOH1qNT0Z|R;#H^6Z&U`s8PDB_@rAzs?96J^iCG1SE|>{C`+DY3C7Ax}`sKJL=wG3P zNz*v^Co(p>-t5JwD3frRtAnbgMAtCu&o%dqf4Q>^G*nP_n^?R7ya;TBdRzIbFe}h=CWifX;0V)uDZ*eqZ5#7T2 zex>KU_YOrOa93C2X6*2&I@8`|G8XdJCujH0RcQJAHZgOQs7@rgU=W!zvnbc%>%UKMyU{C9g`6%DM&hp+Q%?L0NXFp<^BCjA)o>Ln5J zzc@LoZ&BwBx>%>{4F9QegW`-Ou{-N|0L+jH@%JjOuV(jRzdbQmzI9HpVdOc!Vz2aA zP^YS3Aw_3|Ca}q@y#`Qwid~fMTkF@*Rl{hab@tz8e0qt|yQ$USo0kgp;!qSJ;OPy} z$`QtY4LPx7OPk<4QIM9 zch^yrc_NArwdvk>rt9ArgZ`pbO{F-qJ`N=1g0o2|&@cEyEB(Qgj%og{{Vw+jj>m4+ zO;>~j(iK8%%`}RGf<;B*(vSbSq!WJ-7Z7f&Oc5^RMaugv~XV=NwfZ zcn$HMT%KFeo1mvg3_Sk)>-P2*sb8LA?gSZlK~4?x5cx_zIr*$GoY@4rvmJYD(%MrR zbSQPd*?+9L9!|j_(qyVnVj7#hd&_vJ79qo9HQd&xK_uX+Touoz=OAOtma6`BIWQ|z z3cvU^q;BTd`FDP<<)K7|Fq@55#nnG-olJ(_EFW#$%AtB(v(&K2Rm+y6F$U!bXc?w1 z!|=)8%w{Tzj=-GwJXY!n;=S5rh#bwN?2K=)`;O?sWZr*OkH+`FQWbNHLHSgpzz!d# ztz7d_9+#0D9>%;!LPDH>%_ud-FG`j`JD(#?gU%}rYKUu{_R>zft)@t_+0lI@kqBWi z;wNOJyH>@OsofA7!yJ`bb66-vt%#_Rw(|4m?ESmIXVLZN8Pzhf_qokkv!mjs>e8M=L&NN#1%)h}z-V8HfTL3?!aERsT3=pEG$+4(MD^-NyP3`z9zlyf%c zX(dJprqj=149Hz9h<=o;LGc%q@!f5_05yYcloWu0eP;7L#qY^_8wC`!slimMVs?8% zHe0{>d$y6`L3>BK${q4`CbF!3Y6Y7hi7Am#t!l^B3n21Vn{5>u5B@tLREb)6QTBF~&3-P#tr2Am8op zYkL$w)3wXi@VBLWLhW~cY_V8J%aZqD@mo2DX4xs6-UZ z;2YQpdjGUhGx@x7-0&nON>uN>SY?!8c>w2vaMqS-A;-Vc7$Yi=F(U%J5Gs}Wt5+?a zrRcV#W19SZK(|phF6MSSof~{Pa&CB{5&Ab8=papsYVwD!H{F;TcHjN1KZA8{Q4W}5 zON1ColBqJ_zRgL#gQ?QHLJI9zAJ-U_=4b)3xBm?L(3hkG$1Nb=I{VP(ZxtGfj45|D z?C2J+s1Z4gW^WYX4PeP|EvnbQ=Pn=9h1AS{)(=hi&p0Ci!3Z1EKqIJ54Nrus4-N=H z-Dm<9vOtQ^31cV3)6T)4?c2-@MoXfX*^*zI?anI_BzB^bkXxkEiwU9yqFk!q=;18Y zp*WLApf5%HFH1KUN%f5gMd;~a1)EBoef)@pnDnYEp(QCwzXCYH@(B8KUF5`-@I z-Ylj9mcJy@PUC$NC_3yURP-&af3?FUjT)|vV8fuuIc6}m&w$I~4fZ>Ji9S-sLhWyT zgO51SD&USc>uva2v`t(Ap*dQ?tEiIT`x%9r0>wxe_qca8+C|u9NhuYQJ5o_Ud8gAQ zu04&*#^eWcmvsave%hy);!R$ApZo1;dM_`tBtd(C-pWaBpg504v6O+W+#*toN~)of z`Ge}$YN6UbzbK1|;cJ)B@y+}7a`~R zV6A#VH4727KPP4p*&;LsWbYh(`fNAlWW!P;5x0FG{lUd+k;vv?`w;jIdtikbl{nbK zfqQ{67`<5hq4vS{8lU?x*<^;bfJcPdU#2QP!#mo}Tte>{GNl0&ipEJ<>$FAI`<_GH z`A#+GMx>T15o9p~-+|Z6Er^XDwph*;{`K^Q%wxwbnF1$<%p*m5L&44AO2MZ)fxAp>NoPjHFJVdg}g zBwaQ{v&YM!xVzEwk_TsCC?EWS&s5r`9XDxX9s9Bgwz!CH0upGB(?}Hhaom0H1 z6a%p<^_YK*sNQ&o0%OJfVq<^yDAL0NdusChFaFES+l1K}cQCq6G%%Xm-m(OF*Qf$_ z*nnARknK|x3KkuuYC|N&{zk&(06?)e;+0$XQcjp+?X;8BV4TzKSyHiTAOC}?y4xHT zR#%9hA&Zc~zcjkXJj{Pqe5dm05Df-;0URZ1(!O}wvSkj|7`=*WM%{ zti>T~9Z;{(cfXA<5k8fNhj7PNQ1MU#uGMw?$XF| zY97CFnu*9OW}HOC8z&2e$&9?dI-k)Z43aF4ij6#&Z~3AP^J`!|12$w>J~RO&j|qv~ zX~RySgv0o>`0~&ZeA3?E^2Z+sfl*uoE7j=G=xl(tKkGf$@2<>t`8q*k3 zOvguBYB;m;xSy0##9C$I!-GJkUfgmHdfj>et$dJjG^I`8ex->#6mmQ; zJ;5b7kA-lB>A0K5r;P^7>G|oQaBDfR{#20h3^QZ%2|kp%m#e_jT&_X|r)s&tG<1gB zf3OgQ8w~wk&!f`+ragafK;cj`58SbBSb+t<(HqW+=-`s6JL_RtO!x;4=aeYEPP#`y zN0ILzoxjpJ@}di?5P~<(KU?1aAsOy}y@Z;csjiVxdBL_*WU>V(5Q#N$tb6j?mDwk7 zbKGD@?ThLip0M8B)oeiEsnq&ApSAnIPh|``{6p$lr${p?8DZwA457QFlxBH7H-snU z4X=MAN^aV!F5kHtILfsMR5E&&ldRw_qj6uy7Qz${Bdl(KT%P?7eE?g=#{G@8NT`-MpPbKw+v7Sc>@#B}gl#jkHxfi^r+G{?+ z_(PtoUxL<#CZX`KKYg)l^V^R%WddApb*gFlEq~45Jx}{yt0w$mQMQto zsh>9bdzF2fM$MChY`+wLOM?i(G2q{{OED(}Q+{WKu#7@9@JCYVIl+ba=s~Siva#_M z_SC&t23Gv5YErS1!PByl7lC{Q5xB9O8bunaxRAh14=MB?n2{+39Iz|NZ`6&E1X%+* z^?gMju=8Xhr{5&e$e5JbQ^QYE_wI*d1GjLOxt0xyu#BF3t{Z9@*-U~Ryjyr*r(Yz0 zqG6RFRZ5wq2!b6j4e%=zPo@R5Pt&W(PM2W7?}ZJ2CkQnRy^59>e;C|=zoS;_J|s{P znE{?ypsz7_*8L?k+KHduXiKdF8?I&tN=4YDIP9_0dB({{Nk*u>ethaMMJes%Ue?&-^Rb6+P0ew|6ptMSlC2q%K;k_2`E zU+at4*sYG6Ee`d@HndUkbTge&^~`Pvw8oJ%Jmx!5IAkDREaqGP72`t(1LkpU)9?Rjm9y^cqq4V#4rT zl==cuc=!-9mGqb@$GG35MV9=d=M}keY0I-6M^P5`S_hq{jGm{Jxu> zxmehFSvYyMI5-8_`2@MSnb_F{+1bS@jM)CK4$iJt_BMY1{~b6axBh#ZMESoNJX~!& zeazjh0R?AsTWe)=TYF1KN?uleRsj|PN_7riN?(3nQ(kV$|1&!`3kNr)ou{XpARC*H zj}NQ;f1O|ltP`uNyKUx6g*I$pqW=cgvh#Ab5EPVlwe)hfcJUMxRD+3n031JF+x}ba z|CafmsRae)t?g~?JOM6V_IIia3oseN|25A4E2C>~E~t*{LiY`++1wMYIRipKjSEC!K45VUVc74ehyAv?rFaB2ABx${~AZr-XA8x&&sbT zDcKflCIo9X`(Mr48VZ1oy^}TU7O;7nyZ?6|*zBEct*!sBvxld-r@bYcmz$HTxs?YS zpE)}(KQ|Aj0G|y9HwUkU1vl)Qg{1|j6$dXLrvNuAY_+YQc#mOo0SYoI(v^~CAO9al ChTx6> literal 0 HcmV?d00001 diff --git a/funnel/static/img/email/chars-v1/registration-cancelled.png b/funnel/static/img/email/chars-v1/registration-cancelled.png new file mode 100644 index 0000000000000000000000000000000000000000..9cb3e4afb73af35358ffc607ebcb9559553d500f GIT binary patch literal 10037 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 literal 0 HcmV?d00001 diff --git a/funnel/static/img/email/chars-v1/sent-submission.png b/funnel/static/img/email/chars-v1/sent-submission.png new file mode 100644 index 0000000000000000000000000000000000000000..0fbedc7ee289ebc3d95e3a9c21290cc6fb60d6e4 GIT binary patch literal 11777 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 Kx>nLO*211a4ZQ5A$; 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 literal 0 HcmV?d00001 diff --git a/funnel/static/img/email/chars-v1/update.png b/funnel/static/img/email/chars-v1/update.png new file mode 100644 index 0000000000000000000000000000000000000000..0b283a6aa98cd0af985ec25c2f3a40faa4163a9a GIT binary patch literal 13911 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 literal 0 HcmV?d00001 diff --git a/funnel/static/img/email/logo-puzzle.png b/funnel/static/img/email/logo-puzzle.png new file mode 100644 index 0000000000000000000000000000000000000000..6ca01c57561f4e8b6aec417fe6e6d1bac2a28ac0 GIT binary patch literal 914 zcmV;D18w|?P)zZqr>NY?I?R=Zm5=y*I*pAq$1`+{fS8P^Om3Y{Lxy; zt&1L3fsjZtqrjSozPk)YMBlCnDw1qTL{E3T$i|YbEz=^R9qpZHj=s zLm$|VOE5zl+7RHn{6j#XV?qS*?(YMa{$D-DE4tu|Kvw|F=mpG0lEDgbj4|;UkiFJb zpal5LMvgVohy_n;7!O)?O%h;ML8W46v4+>|=dVK=IfufIxaZ| zK~tNvb;~eC^g1O(IMm&g_}?8LEZ#dx!kFWVVrYCYgqZxq=lP4&jSlSB5$>l ze=|kUK+tM-Vt0`hJs0Zw=CfdO5|4S`S#WC)5|HUX$m0wti%wAg`t^Vsat zyi}$_C6`r6R`Z`$a^YDWk^?f^ zCO1Kw%#%-zkQLxEInQVisu3)Vx3wvBC<2KB4Vqd3Rz*?_AG3oaR~rJFJ{J3U9@uT$ z5a1(_%k{d?F&wT+vmwA|NzT!l9r`@J`rJqUmlcqDx+j}TQJ*y3&Za+1z**+VwT|}( zQo_n@Tmzx!Jkx`Au!;ov#U~~BLRDCl%O5~9df~QZ7q!K5d7VEuQZ9ds7>>g&kRd1r o0$LzLPz(gLK!%{`HvvTS2V?2}1Kgw^a{vGU07*qoM6N<$f;MBIfdBvi literal 0 HcmV?d00001 diff --git a/funnel/templates/email_account_reset.html.jinja2 b/funnel/templates/email_account_reset.html.jinja2 index 9660924fa..a7e75cc79 100644 --- a/funnel/templates/email_account_reset.html.jinja2 +++ b/funnel/templates/email_account_reset.html.jinja2 @@ -1,16 +1,26 @@ {% extends "notifications/layout_email.html.jinja2" %} -{% block content -%} - -

    {% trans %}Hello {{ fullname }},{% endtrans %}

    - -

    {% trans %}You – or someone claiming to be you – asked for your password to be reset. This OTP is valid for 15 minutes.{% endtrans %}

    - -

    {% trans %}OTP:{% endtrans %} {{ otp }}

    - -

    {% trans %}You can also use this link:{% endtrans %}

    - -

    {% trans %}Reset your password{% endtrans %}

    - -

    {% trans %}If you did not ask for this, you may safely ignore this email.{% endtrans %}

    +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} +{% block content -%} +
    + + + {# Button : BEGIN #} + {{ cta_button(url, gettext("Reset your password") )}} + {# Button : END #} + + + + + + + + + {%- endblock content %} diff --git a/funnel/templates/email_account_verify.html.jinja2 b/funnel/templates/email_account_verify.html.jinja2 index c8b6d0203..6834dbaf0 100644 --- a/funnel/templates/email_account_verify.html.jinja2 +++ b/funnel/templates/email_account_verify.html.jinja2 @@ -1,10 +1,24 @@ {% extends "notifications/layout_email.html.jinja2" %} -{% block content -%} - -

    {% trans %}Hello {{ fullname }},{% endtrans %}

    - -

    {% trans %}Confirm your email address{% endtrans %}

    - -

    {% trans %}If you did not ask for this, you may safely ignore this email.{% endtrans %}

    +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} +{% block content -%} +
    + + + {# Button : BEGIN #} + {{ cta_button(url, gettext("Confirm your email address") )}} + {# Button : END #} + + + + + + + + + {%- endblock %} diff --git a/funnel/templates/email_login_otp.html.jinja2 b/funnel/templates/email_login_otp.html.jinja2 index 0b41b05c2..672f3ba2e 100644 --- a/funnel/templates/email_login_otp.html.jinja2 +++ b/funnel/templates/email_login_otp.html.jinja2 @@ -1,15 +1,19 @@ {% extends "notifications/layout_email.html.jinja2" %} {% block content -%} - {%- if fullname %} -

    {% trans %}Hello {{ fullname }},{% endtrans %}

    - {%- else %} -

    {% trans %}Hello!{% endtrans %}

    - {%- endif %} -

    {% trans %}This login OTP is valid for 15 minutes.{% endtrans %}

    - -

    {% trans %}OTP:{% endtrans %} {{ otp }}

    - -

    {% trans %}If you did not ask for this, you may safely ignore this email.{% endtrans %}

    - +
    + + + + + + + + {%- endblock %} diff --git a/funnel/templates/email_sudo_otp.html.jinja2 b/funnel/templates/email_sudo_otp.html.jinja2 index e513c4bb3..061caf8a1 100644 --- a/funnel/templates/email_sudo_otp.html.jinja2 +++ b/funnel/templates/email_sudo_otp.html.jinja2 @@ -1,10 +1,10 @@ {% extends "notifications/layout_email.html.jinja2" %} {% block content -%} - -

    {% trans %}Hello {{ fullname }},{% endtrans %}

    - -

    {% trans %}You are about to perform a critical action. This OTP serves as your confirmation to proceed and is valid for 15 minutes.{% endtrans %}

    - -

    {% trans %}OTP:{% endtrans %} {{ otp }}

    - +
    + + {%- endblock %} diff --git a/funnel/templates/notifications/comment_received_email.html.jinja2 b/funnel/templates/notifications/comment_received_email.html.jinja2 index e8b456ae0..2084f8cab 100644 --- a/funnel/templates/notifications/comment_received_email.html.jinja2 +++ b/funnel/templates/notifications/comment_received_email.html.jinja2 @@ -1,19 +1,30 @@ {%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} {%- block content -%} - {%- if view.notification.document_type == 'project' -%} -

    {{ view.document.joined_title }}

    - {%- elif view.notification.document_type == 'proposal' -%} -

    {{ view.document.title }}

    - {%- elif view.notification.document_type == 'comment' -%} -

    {% trans %}You wrote:{% endtrans %}

    -
    {{ view.document.message }}
    - {%- endif %} +
    + + + + + +
    -
    {{ view.comment.message }}
    - -

    {% trans %}View comment{% endtrans %}

    + {# Button : BEGIN #} + {{ cta_button(view.comment.url_for(_external=true, **view.tracking_tags()), gettext("View comment") )}} + {# Button : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/comment_report_received_email.html.jinja2 b/funnel/templates/notifications/comment_report_received_email.html.jinja2 index 43b131d43..517acd649 100644 --- a/funnel/templates/notifications/comment_report_received_email.html.jinja2 +++ b/funnel/templates/notifications/comment_report_received_email.html.jinja2 @@ -1,14 +1,16 @@ -{%- extends "notifications/layout_email.html.jinja2" %} +{%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} {%- block content -%} -

    - {%- trans %}A comment has been reported as spam{% endtrans -%} -

    +
    + + +
    -

    - - {%- trans %}Review comment{% endtrans -%} - -

    + {# Button : BEGIN #} + {{ cta_button(url_for('siteadmin_review_comment', report=view.report.uuid_b58), gettext("Review comment") )}} + {# Button : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/layout_email.html.jinja2 b/funnel/templates/notifications/layout_email.html.jinja2 index 1319a4ee9..1c5a92003 100644 --- a/funnel/templates/notifications/layout_email.html.jinja2 +++ b/funnel/templates/notifications/layout_email.html.jinja2 @@ -1,45 +1,537 @@ +{%- from "notifications/macros_email.html.jinja2" import hero_image -%} - - + + + {# utf-8 works for most cases #} + + + + {# What it does: Makes background images in 72ppi Outlook render at correct size. #} + + + {# Outlook / @font-face : BEGIN #} + + {# Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. #} + + + {# Outlook / @font-face : END #} + {% block stylesheet -%} - + {# CSS Reset : BEGIN #} + + {# CSS Reset : END #} + + {# Progressive Enhancements : BEGIN #} + + {# Progressive Enhancements : END #} {%- endblock stylesheet %} - - + + {# Element styles : BEGIN #} + + + + + {# + The email background color (#f0f0f0) is defined in three places: + 1. body tag: for most email clients + 2. center tag: for Gmail and Inbox mobile apps and web versions of Gmail, GSuite, Inbox, Yahoo, AOL, Libero, Comcast, freenet, Mail.ru, Orange.fr + 3. mso conditional: For Windows 10 Mail + #} + {%- block jsonld %}{%- if jsonld %} - + {%- endif %}{%- endblock jsonld %} -
    {% block content %}{% endblock content %}
    -
    {% block footer %} - {%- if view %} -
    -

    - {{ view.reason_email }} - • - {% trans %}Unsubscribe or manage preferences{% endtrans %} -

    - {%- endif %} - {% endblock footer %}
    - + +
    + + + {# + Set the email width. Defined in two places: + 1. max-width for all clients except Desktop Windows Outlook, allowing the email to squish on narrow but never go wider than 600px. + 2. MSO tags for Desktop Windows Outlook enforce a 600px width. + #} +
    {% trans %}Name{% endtrans %} {% trans %}Email/Phone{% endtrans %} {% trans %}Responded at{% endtrans %}{{ field_name }}
    {{ rsvp.updated_at|datetime }}{{ rsvp.form.get(field_name, '') }}
    {% trans %}No users{% endtrans %}
    +

    {{ otp }}

    +
    +

    {% trans %}This OTP to reset your password is valid for 15 minutes.
    Or use this link:{% endtrans %}


    +
    + +
    +

    {% trans %}Hello {{ fullname }}{% endtrans %}


    +

    +

    {{ otp }}

    +
    +

    {% trans %}This login OTP is valid for 15 minutes.{% endtrans %}

    +
    + +

    +

    {{ otp }}

    +
    +

    {% trans %}You are about to perform a critical action. This OTP serves as your confirmation to proceed and is valid for 15 minutes.{% endtrans %}

    +
    + {%- if view.notification.document_type == 'project' -%} +

    {{ view.document.joined_title }}

    + {%- elif view.notification.document_type == 'proposal' -%} +

    {{ view.document.title }}

    + {%- elif view.notification.document_type == 'comment' -%} +

    {% trans %}You wrote:{% endtrans %}

    +
    {{ view.document.message }}
    + {%- endif %} -

    {{ view.activity_html() }}

    +

    {{ view.activity_html() }}

    +
    +
    {{ view.comment.message }}
    +
    +

    {%- trans %}A comment has been reported as spam{% endtrans -%}

    +
    + + + +
    + +
    + {# Email Header : END #} + + {# Email Header : BODY #} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + +
    + + +
    + {# Email Footer : BEGIN #} + {% block footer %} + + + + {% endblock footer %}
    + {# Email Footer : END #} + + + diff --git a/funnel/templates/notifications/macros_email.html.jinja2 b/funnel/templates/notifications/macros_email.html.jinja2 index 6c398fdee..01246f536 100644 --- a/funnel/templates/notifications/macros_email.html.jinja2 +++ b/funnel/templates/notifications/macros_email.html.jinja2 @@ -1,14 +1,68 @@ {%- macro pinned_update(view, project) -%} - {%- with update=project.pinned_update -%} - {%- if update -%} + {%- with update=project.pinned_update -%} + {%- if update -%} + + + + + + + + +

    + {%- trans number=update.number|numberformat -%}Update #{{ number }}{%- endtrans %} • {% trans age=update.published_at|age, editor=update.user.pickername -%}Posted by {{ editor }} {{ age }}{%- endtrans -%} +

    +

    {{ update.title }}

    + {{ update.body }} + + + {%- endif -%} + {%- endwith -%} +{%- endmacro -%} -

    - {%- trans number=update.number|numberformat -%}Update #{{ number }}{%- endtrans %} • {% trans age=update.published_at|age, editor=update.user.pickername -%}Posted by {{ editor }} {{ age }}{%- endtrans -%} -

    -

    {{ update.title }}

    +{%- macro hero_image(img_url, alt_text) -%} + + + {{ alt_text }} + + +{%- endmacro -%} - {{ update.body }} +{% macro cta_button(btn_url, btn_text) %} + + +
    + + + + + + +
    + +
    + +
    + + +{% endmacro %} - {%- endif -%} - {%- endwith -%} -{%- endmacro -%} +{% macro rsvp_footer(view, rsvp_linktext) %} + {%- if view %} + + + + + + + + + {%- endif %} +{% endmacro %} diff --git a/funnel/templates/notifications/organization_membership_granted_email.html.jinja2 b/funnel/templates/notifications/organization_membership_granted_email.html.jinja2 index 7a4dfbe7f..985b141c5 100644 --- a/funnel/templates/notifications/organization_membership_granted_email.html.jinja2 +++ b/funnel/templates/notifications/organization_membership_granted_email.html.jinja2 @@ -1,10 +1,16 @@ {%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} {%- block content -%} -

    {{ view.activity_html() }}

    -

    - - {%- trans %}See all admins{% endtrans -%} - -

    + + + +

    {{ view.activity_html() }}

    + + +
    + + {# Button : BEGIN #} + {{ cta_button(view.organization.profile.url_for('members', _external=true, **view.tracking_tags()), gettext("See all admins") )}} + {# Button : END #} + {%- endblock content -%} diff --git a/funnel/templates/notifications/organization_membership_revoked_email.html.jinja2 b/funnel/templates/notifications/organization_membership_revoked_email.html.jinja2 index 7a4dfbe7f..985b141c5 100644 --- a/funnel/templates/notifications/organization_membership_revoked_email.html.jinja2 +++ b/funnel/templates/notifications/organization_membership_revoked_email.html.jinja2 @@ -1,10 +1,16 @@ {%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} {%- block content -%} -

    {{ view.activity_html() }}

    -

    - - {%- trans %}See all admins{% endtrans -%} - -

    + + + +

    {{ view.activity_html() }}

    + + +
    + + {# Button : BEGIN #} + {{ cta_button(view.organization.profile.url_for('members', _external=true, **view.tracking_tags()), gettext("See all admins") )}} + {# Button : END #} + {%- endblock content -%} diff --git a/funnel/templates/notifications/project_crew_membership_granted_email.html.jinja2 b/funnel/templates/notifications/project_crew_membership_granted_email.html.jinja2 index f48dbe234..5ebccc8be 100644 --- a/funnel/templates/notifications/project_crew_membership_granted_email.html.jinja2 +++ b/funnel/templates/notifications/project_crew_membership_granted_email.html.jinja2 @@ -1,10 +1,16 @@ {%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} {%- block content -%} -

    {{ view.activity_html() }}

    -

    - - {%- trans %}See all crew members{% endtrans -%} - -

    + + + +

    {{ view.activity_html() }}

    + + +
    + + {# Button : BEGIN #} + {{ cta_button(view.project.url_for('crew', _external=true, **view.tracking_tags()), gettext("See all crew members") )}} + {# Button : END #} + {%- endblock content -%} diff --git a/funnel/templates/notifications/project_crew_membership_revoked_email.html.jinja2 b/funnel/templates/notifications/project_crew_membership_revoked_email.html.jinja2 index 364066eb7..eab37592d 100644 --- a/funnel/templates/notifications/project_crew_membership_revoked_email.html.jinja2 +++ b/funnel/templates/notifications/project_crew_membership_revoked_email.html.jinja2 @@ -1,10 +1,16 @@ {%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} {%- block content -%} -

    {{ view.activity_html() }}

    -

    - - {%- trans %}See all admins{% endtrans -%} - -

    + + + +

    {{ view.activity_html() }}

    + + +
    + + {# Button : BEGIN #} + {{ cta_button(view.project.profile.url_for('members', _external=true, **view.tracking_tags()), gettext("See all crew members") )}} + {# Button : END #} + {%- endblock content -%} diff --git a/funnel/templates/notifications/project_starting_email.html.jinja2 b/funnel/templates/notifications/project_starting_email.html.jinja2 index 4aeb13471..00cf90f19 100644 --- a/funnel/templates/notifications/project_starting_email.html.jinja2 +++ b/funnel/templates/notifications/project_starting_email.html.jinja2 @@ -1,15 +1,22 @@ {%- extends "notifications/layout_email.html.jinja2" -%} -{%- from "notifications/macros_email.html.jinja2" import pinned_update -%} +{%- from "notifications/macros_email.html.jinja2" import pinned_update, cta_button, rsvp_footer -%} {%- block content -%} -

    - {%- trans project=view.project.joined_title, start_time=(view.session or view.project).start_at_localized|time -%} - {{ project }} starts at {{ start_time }} - {%- endtrans -%} -

    + + +

    {%- trans project=view.project.joined_title, start_time=(view.session or view.project).start_at_localized|time -%}{{ project }} starts at {{ start_time }}{%- endtrans -%}

    + + +
    -

    {% trans %}Join now{% endtrans %}

    + {# Button : BEGIN #} + {{ cta_button(view.project.url_for(_external=true, **view.tracking_tags()), gettext("Join now") )}} + {# Button : END #} -{{ pinned_update(view, view.project) }} + {{ pinned_update(view, view.rsvp.project) }} + + {# Email body footer : BEGIN #} + {{ rsvp_footer(view, gettext("Cancel registration")) }} + {# Email body footer : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/proposal_received_email.html.jinja2 b/funnel/templates/notifications/proposal_received_email.html.jinja2 index 49d40d6ad..97aada475 100644 --- a/funnel/templates/notifications/proposal_received_email.html.jinja2 +++ b/funnel/templates/notifications/proposal_received_email.html.jinja2 @@ -1,8 +1,16 @@ -{% extends "notifications/layout_email.html.jinja2" %} -{% block content -%} +{%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} +{%- block content -%} -

    {% trans project=project.joined_title, proposal=proposal.title %}Your project {{ project }} has a new submission: {{ proposal }}{% endtrans %}

    + + +

    {% trans project=project.joined_title, proposal=proposal.title %}Your project {{ project }} has a new submission: {{ proposal }}{% endtrans %}

    + + +
    -

    {% trans %}Submission page{% endtrans %}

    + {# Button : BEGIN #} + {{ cta_button(proposal.url_for(_external=true, **view.tracking_tags()), gettext("Submission page") )}} + {# Button : END #} -{%- endblock content %} +{%- endblock content -%} diff --git a/funnel/templates/notifications/proposal_submitted_email.html.jinja2 b/funnel/templates/notifications/proposal_submitted_email.html.jinja2 index b856dc0e6..d34e25c4d 100644 --- a/funnel/templates/notifications/proposal_submitted_email.html.jinja2 +++ b/funnel/templates/notifications/proposal_submitted_email.html.jinja2 @@ -1,8 +1,16 @@ -{% extends "notifications/layout_email.html.jinja2" %} -{% block content -%} +{%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} +{%- block content -%} -

    {% trans project=project.joined_title, proposal=proposal.title %}You have submitted {{ proposal }} to the project {{ project }}{% endtrans %}

    + + +

    {% trans project=project.joined_title, proposal=proposal.title %}You have submitted {{ proposal }} to the project {{ project }}{% endtrans %}

    + + +
    -

    {% trans %}View submission{% endtrans %}

    + {# Button : BEGIN #} + {{ cta_button(proposal.url_for(_external=true, **view.tracking_tags()), gettext("View submission") )}} + {# Button : END #} -{%- endblock content %} +{%- endblock content -%} diff --git a/funnel/templates/notifications/rsvp_no_email.html.jinja2 b/funnel/templates/notifications/rsvp_no_email.html.jinja2 index 967f10861..db1a82d0c 100644 --- a/funnel/templates/notifications/rsvp_no_email.html.jinja2 +++ b/funnel/templates/notifications/rsvp_no_email.html.jinja2 @@ -1,8 +1,19 @@ {% extends "notifications/layout_email.html.jinja2" %} +{%- from "notifications/macros_email.html.jinja2" import cta_button, rsvp_footer -%} {% block content -%} -

    {% trans project=view.rsvp.project.joined_title %}You have cancelled your registration for {{ project }}. If this was accidental, you can register again.{% endtrans %}

    + + +

    {% trans project=view.rsvp.project.joined_title %}You have cancelled your registration for {{ project }}{% endtrans %}

    + + -

    {% trans %}Project page{% endtrans %}

    + {# Button : BEGIN #} + {{ cta_button(view.rsvp.project.url_for(_external=true, **view.tracking_tags()), view.rsvp.project.joined_title )}} + {# Button : END #} + + {# Email body footer : BEGIN #} + {{ rsvp_footer(view, gettext("Register again")) }} + {# Email body footer : END #} {%- endblock content %} diff --git a/funnel/templates/notifications/rsvp_yes_email.html.jinja2 b/funnel/templates/notifications/rsvp_yes_email.html.jinja2 index 9528aec75..3dcb6ff13 100644 --- a/funnel/templates/notifications/rsvp_yes_email.html.jinja2 +++ b/funnel/templates/notifications/rsvp_yes_email.html.jinja2 @@ -1,15 +1,24 @@ {% extends "notifications/layout_email.html.jinja2" -%} -{%- from "notifications/macros_email.html.jinja2" import pinned_update -%} +{%- from "notifications/macros_email.html.jinja2" import pinned_update, cta_button, rsvp_footer -%} {%- block content -%} -

    {% trans project=view.rsvp.project.joined_title %}You have registered for {{ project }}{% endtrans %}

    + + +

    {% trans project=view.rsvp.project.joined_title %}You have registered for {{ project }}{% endtrans %}

    + {% with next_session_at=view.rsvp.project.next_session_at %}{% if next_session_at -%} +

    {% trans date_and_time=next_session_at|datetime(view.datetime_format) %}The next session in the schedule starts {{ date_and_time }}{% endtrans %}


    + {%- endif %}{% endwith %} + + -{% with next_session_at=view.rsvp.project.next_session_at %}{% if next_session_at -%} -

    {% trans date_and_time=next_session_at|datetime(view.datetime_format) %}The next session in the schedule starts {{ date_and_time }}{% endtrans %}

    -{%- endif %}{% endwith %} + {# Button : BEGIN #} + {{ cta_button(view.rsvp.project.url_for(_external=true, **view.tracking_tags()), view.rsvp.project.joined_title )}} + {# Button : END #} -

    {% trans %}Project page{% endtrans %}

    + {{ pinned_update(view, view.rsvp.project) }} -{{ pinned_update(view, view.rsvp.project) }} + {# Email body footer : BEGIN #} + {{ rsvp_footer(view, gettext("Cancel registration")) }} + {# Email body footer : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/update_new_email.html.jinja2 b/funnel/templates/notifications/update_new_email.html.jinja2 index 8a5a2a3a1..b33cd1e91 100644 --- a/funnel/templates/notifications/update_new_email.html.jinja2 +++ b/funnel/templates/notifications/update_new_email.html.jinja2 @@ -1,12 +1,26 @@ -{% extends "notifications/layout_email.html.jinja2" %} -{% block content %} +{%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} +{%- block content -%} -

    {% trans actor=view.actor.pickername, project=view.update.project.joined_title, project_url=view.update.project.url_for() %}{{ actor }} posted an update in {{ project }}:{% endtrans %}

    + + +

    {% trans actor=view.actor.pickername, project=view.update.project.joined_title, project_url=view.update.project.url_for(_external=true, **view.tracking_tags()) %}{{ actor }} posted an update in {{ project }}:{% endtrans %}

    + + + + + +
    + + +

    {% trans update_title=view.update.title %}{{ update_title }}{% endtrans %}

    + {% trans update_body=view.update.body %}{{ update_body }}{% endtrans %} + + +
    -

    {{ view.update.title }}

    + {# Button : BEGIN #} + {{ cta_button(view.update.url_for(_external=true, **view.tracking_tags()), gettext("Read on the website") )}} + {# Button : END #} -{{ view.update.body }} - -

    {% trans %}Read on the website{% endtrans %}

    - -{% endblock content %} +{%- endblock content -%} diff --git a/funnel/templates/notifications/user_password_set_email.html.jinja2 b/funnel/templates/notifications/user_password_set_email.html.jinja2 index e8e01b380..73c9eb527 100644 --- a/funnel/templates/notifications/user_password_set_email.html.jinja2 +++ b/funnel/templates/notifications/user_password_set_email.html.jinja2 @@ -1,17 +1,17 @@ -{%- extends "notifications/layout_email.html.jinja2" %} - +{%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import cta_button -%} {%- block content -%} -

    - {%- trans %}Your password has been updated. If you did this, no further action is necessary.{% endtrans -%} -

    -

    - {%- trans %}If this was not authorized, consider resetting with a more secure password. Contact support if further assistance is required.{% endtrans -%} -

    + + + {% if view.email_heading %}

    {{ view.email_heading }}

    {% endif %} +

    {%- trans support_email=config['SITE_SUPPORT_EMAIL'] %}Your password has been updated. If you did this, no further action is necessary, but if this was not authorized, consider resetting with a more secure password. Contact support if further assistance is required.{% endtrans -%}

    + + +
    -

    - {% trans %}Reset password{% endtrans %} - {% trans %}Contact support{% endtrans %} -

    + {# Button : BEGIN #} + {{ cta_button(url_for('reset'), gettext("Reset password") )}} + {# Button : END #} {%- endblock content -%} diff --git a/funnel/templates/rsvp_modal.html.jinja2 b/funnel/templates/rsvp_modal.html.jinja2 index 0a374fdf9..aacc94ef7 100644 --- a/funnel/templates/rsvp_modal.html.jinja2 +++ b/funnel/templates/rsvp_modal.html.jinja2 @@ -1,7 +1,7 @@ {% from "macros.html.jinja2" import faicon, csrf_tag %} {%- from "js/json_form.js.jinja2" import json_form_template %} - + - + {% endblock footerscripts %} diff --git a/funnel/templates/profile_layout.html.jinja2 b/funnel/templates/profile_layout.html.jinja2 index 8fc9c6ba0..f70485830 100644 --- a/funnel/templates/profile_layout.html.jinja2 +++ b/funnel/templates/profile_layout.html.jinja2 @@ -1,7 +1,257 @@ {% extends "layout.html.jinja2" %} -{%- from "macros.html.jinja2" import img_size %} +{%- from "macros.html.jinja2" import img_size, saveprojectform, calendarwidget, projectcard %} {% block title %}{{ profile.title }}{% endblock title %} +{% macro featured_section(featured_project, heading=true) %} + {% if featured_project %} +
    + {% with current_sessions = featured_project.current_sessions() if + featured_project is not none else none %} + {% if current_sessions and current_sessions.sessions|length > 0 %} +
    +
    +
    +
    +

    + {% if not featured_project.livestream_urls and current_sessions.sessions|length > 0 %} + {% trans %}Live schedule{% endtrans %} + {% elif featured_project.livestream_urls and not current_sessions.sessions|length > 0 %} + {% trans %}Livestream{% endtrans %} + {% elif featured_project.livestream_urls and current_sessions.sessions|length > 0 %} + {% trans %}Livestream and schedule{% endtrans %} + {% endif %} +

    +
    +
    +
    +
    + {% if featured_project.bg_image.url %} + {{ featured_project.title }} + {% else %} + {{ featured_project.title }} +

    {{ featured_project.title }}

    + {% endif %} +
    +
    +

    + {{ featured_project.title }} +

    +

    {% trans %}Live{% endtrans %}

    + {% if current_sessions.sessions|length > 0 %} +

    {{ faicon(icon='clock') }} {% trans session=current_sessions.sessions[0].start_at_localized|time %}Session starts at {{ session }}{% endtrans %}

    + {% endif %} +
    + {%- if featured_project.livestream_urls %} + {% trans %}Livestream{% endtrans %} + {%- endif %} + {%- if current_sessions.sessions|length > 0 %} + {% trans %}Schedule{% endtrans %} + {%- endif %} +
    +
    +
    +
    +
    +
    +
    + {% endif %} + {% endwith %} + +
    +
    + {% if heading %} +
    +
    +
    +

    {% trans %}Spotlight{% endtrans %}

    +
    +
    +
    + {% endif %} + +
    +
    +
    +
    + + {%- if not current_auth.is_anonymous %} + {% set save_form_id = "spotlight_spfm_desktop_" + featured_project.uuid_b58 %} +
    {{ saveprojectform(featured_project, formid=save_form_id) }}
    + {% endif %} +
    +

    {{ featured_project.title }}

    +

    {{ featured_project.tagline }}

    +
    {% if featured_project.primary_venue %}{{ faicon(icon='map-marker-alt', icon_size='caption', baseline=false) }} {% if featured_project.primary_venue.city %}{{ featured_project.primary_venue.city }}{% else %}{{ featured_project.primary_venue.title }}{% endif %}{% elif featured_project.location %}{{ faicon(icon='map-marker-alt', icon_size='caption', baseline=false) }} {{ featured_project.location }}{% endif %}
    + {% trans %}Learn more{% endtrans %} +
    +
    +
    +
    +
    +
    +
    + + {%- if featured_project.profile.logo_url.url %} + {{ featured_project.profile.title }} + {% else %} + {{ featured_project.profile.title }} + {% endif %} + + {{ featured_project.profile.title }} +
    + {%- if not current_auth.is_anonymous and add_bookmark %} + {% set save_form_id = save_form_id_prefix + project.uuid_b58 %} +
    {{ saveprojectform(featured_project, formid=save_form_id) }}
    + {% endif %} +
    + + {%- if (featured_project.start_at is not none and featured_project.calendar_weeks_full.weeks and featured_project.calendar_weeks_full.weeks|length > 0) %} +
    + {% if calendarwidget_compact and featured_project.start_at and featured_project.calendar_weeks_compact.weeks and featured_project.calendar_weeks_compact.weeks|length > 0 %} +
    + {{ calendarwidget(featured_project.calendar_weeks_compact) }} +
    + {% elif featured_project.start_at and featured_project.calendar_weeks_full.weeks and featured_project.calendar_weeks_full.weeks|length > 0 %} +
    + {{ calendarwidget(featured_project.calendar_weeks_full, compact=false) }} +
    + {% endif %} + +
    +
    {% if featured_project.primary_venue %}{{ faicon(icon='map-marker-alt', icon_size='caption', baseline=false) }} {% if featured_project.primary_venue.city %}{{ featured_project.primary_venue.city }}{% else %}{{ featured_project.primary_venue.title }}{% endif %}{% elif featured_project.location %}{{ faicon(icon='map-marker-alt', icon_size='caption', baseline=false) }} {{ featured_project.location }}{% endif %}
    + {% if featured_project.features.tickets() %} +
    + +
    +
    +
    + {{ faicon(icon='times', baseline=false, icon_size='title') }} +

    {% trans %}Loading…{% endtrans %}

    +
    +
    +
    +
    + {%- endif %} +
    +
    + {% endif %} +
    +
    +
    +
    +
    +
    +
    + {% endif %} +{% endmacro %} + +{% macro upcoming_section(upcoming_projects, heading=true) %} + {% if upcoming_projects|length > 0 %} +
    +
    + {% if heading %} +
    +
    +

    {% trans %}Upcoming{% endtrans %}

    +
    +
    + {% endif %} +
      + {% for project in upcoming_projects %} +
    • + {{ projectcard(project, save_form_id_prefix='upcoming_spf_') }} +
    • + {%- endfor -%} +
    +
    +
    + {% endif %} +{% endmacro %} + +{% macro open_cfp_section(open_cfp_projects, heading=true) %} + {% if open_cfp_projects %} +
    +
    + {% if heading %} +
    +
    +

    {% trans %}Accepting submissions{% endtrans %}

    +
    +
    + {% endif %} +
      + {% for project in open_cfp_projects %} +
    • + {{ projectcard(project, include_calendar=false, save_form_id_prefix='open_spf_') }} +
    • + {%- endfor -%} +
    + {% if open_cfp_projects|length > 4 %} + + {% endif %} +
    +
    + {% endif %} +{% endmacro %} + +{% macro all_projects_section(all_projects, heading=true) %} + {% if all_projects %} +
    +
    + {% if heading %} +
    +
    +

    {% trans %}All projects{% endtrans %}

    +
    +
    + {% endif %} +
      + {% for project in all_projects %} +
    • + {{ projectcard(project, save_form_id_prefix='all_spf_') }} +
    • + {%- endfor -%} +
    +
    +
    + {% endif %} +{% endmacro %} + {% macro profile_admin_buttons(profile) %} {% endmacro %} +{% macro past_projects_section(profile) %} +
    +
    +
    +
    +

    {% trans %}Past sessions{% endtrans %}

    +
    +
    + + + + + + + + + + +
    {% trans %}Date{% endtrans %}{% trans %}Project{% endtrans %}{% trans %}Location{% endtrans %}
    +
    +
    +
    +
    +{% endmacro %} + {% macro profile_header(profile, class="", current_page='profile', title="") %}
    diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index e6fb0367b..339749325 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -107,7 +107,7 @@
    {%- if project.profile.logo_url.url %} - + {% endif %} @@ -398,14 +398,14 @@ {% if not project.state.PAST and project.features.tickets() -%}
    -
    + diff --git a/tests/cypress/e2e/10_updateSchedule.cy.js b/tests/cypress/e2e/10_updateSchedule.cy.js index 7aa393732..ec071ea4c 100644 --- a/tests/cypress/e2e/10_updateSchedule.cy.js +++ b/tests/cypress/e2e/10_updateSchedule.cy.js @@ -86,10 +86,7 @@ describe('Add schedule and livestream', () => { cy.wait(1000); cy.get('input#featured-project').click({ force: true }); cy.get('a[data-cy="home-desktop"]').click(); - cy.get('[data-cy="spotlight-project"]:visible') - .find('.card--upcoming') - .contains(project.title) - .click(); + cy.get('[data-cy="spotlight-project"]:visible').contains(project.title).click(); cy.get('a[data-cy="site-editor-menu"]').click(); cy.wait(1000); cy.get('input#featured-project').click({ force: true }); From 22fcaebfc451f59ea6c4499a30dffe40b29e3692 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 09:53:50 +0530 Subject: [PATCH 185/281] [pre-commit.ci] pre-commit autoupdate (#1788) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 37c65e739..9c1a3a66c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -43,8 +43,8 @@ repos: 'PYSEC-2023-73', # https://github.com/RedisLabs/redisraft/issues/608 ] files: ^requirements/.*\.txt$ - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.275 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.0.277 hooks: - id: ruff args: ['--fix', '--exit-non-zero-on-fix'] @@ -62,7 +62,7 @@ repos: '--remove-duplicate-keys', ] - repo: https://github.com/asottile/pyupgrade - rev: v3.8.0 + rev: v3.9.0 hooks: - id: pyupgrade args: @@ -178,7 +178,7 @@ repos: - id: trailing-whitespace args: ['--markdown-linebreak-ext=md'] - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.0.0-alpha.9-for-vscode + rev: v3.0.0 hooks: - id: prettier args: From 9059989a85c22ae31c576abbd5629c02b05f5bb7 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Tue, 11 Jul 2023 19:58:58 +0530 Subject: [PATCH 186/281] Make MarkdownString comprehensive and fix Mustache escaping (#1791) --- funnel/models/helpers.py | 41 ++- funnel/utils/markdown/__init__.py | 1 + funnel/utils/markdown/base.py | 169 ++++------ funnel/utils/markdown/escape.py | 310 ++++++++++++++++++ funnel/utils/mustache.py | 79 ++++- tests/unit/utils/markdown/data/vega-lite.toml | 4 +- tests/unit/utils/markdown_escape_test.py | 15 + tests/unit/utils/mustache_test.py | 18 +- 8 files changed, 490 insertions(+), 147 deletions(-) create mode 100644 funnel/utils/markdown/escape.py create mode 100644 tests/unit/utils/markdown_escape_test.py diff --git a/funnel/models/helpers.py b/funnel/models/helpers.py index b80ea0547..1f1f6166c 100644 --- a/funnel/models/helpers.py +++ b/funnel/models/helpers.py @@ -34,7 +34,7 @@ from .. import app from ..typing import T -from ..utils import MarkdownConfig, markdown_escape +from ..utils import MarkdownConfig, MarkdownString, markdown_escape from . import Model, UrlType, sa __all__ = [ @@ -341,7 +341,7 @@ def pgquote(identifier: str) -> str: return f'"{identifier}"' if identifier in POSTGRESQL_RESERVED_WORDS else identifier -def quote_autocomplete_like(prefix, midway=False) -> str: +def quote_autocomplete_like(prefix: str, midway: bool = False) -> str: """ Construct a LIKE query string for prefix-based matching (autocomplete). @@ -521,17 +521,25 @@ def __init__(self, text: str, tag: Optional[str] = None) -> None: self.text = text self.tag = tag - def __markdown__(self) -> str: + def __markdown__(self) -> MarkdownString: """Return Markdown source (for escaper).""" return markdown_escape(self.text) - def __html__(self) -> str: + def __markdown_format__(self, format_spec: str) -> str: + """Implement format_spec support as required by MarkdownString.""" + return self.__markdown__().__markdown_format__(format_spec) + + def __html__(self) -> Markup: """Return HTML version of string.""" # Localize lazy string on demand tag = self.tag if tag: - return f'

    <{tag}>{html_escape(self.text)}

    ' - return f'

    {html_escape(self.text)}

    ' + return Markup(f'

    <{tag}>{html_escape(self.text)}

    ') + return Markup(f'

    {html_escape(self.text)}

    ') + + def __html_format__(self, format_spec: str) -> str: + """Implement format_spec support as required by Markup.""" + return self.__html__().__html_format__(format_spec) @property def html(self) -> Markup: @@ -565,7 +573,7 @@ class ImgeeType(UrlType): # pylint: disable=abstract-method url_parser = ImgeeFurl cache_ok = True - def process_bind_param(self, value, dialect): + def process_bind_param(self, value: Any, dialect: Any): value = super().process_bind_param(value, dialect) if value: allowed_domains = app.config.get('IMAGE_URL_DOMAINS', []) @@ -596,9 +604,8 @@ def __init__(self, text: Optional[str], html: Optional[str] = None) -> None: self._text = text self._html: Optional[str] = html - # Return column values for SQLAlchemy to insert into the database def __composite_values__(self) -> Tuple[Optional[str], Optional[str]]: - """Return composite values.""" + """Return composite values for SQLAlchemy.""" return (self._text, self._html) # Return a string representation of the text (see class decorator) @@ -610,11 +617,18 @@ def __markdown__(self) -> str: """Return source Markdown (for escaper).""" return self._text or '' - # Return a HTML representation of the text + def __markdown_format__(self, format_spec: str) -> str: + """Implement format_spec support as required by MarkdownString.""" + return self.__markdown__().__format__(format_spec) + def __html__(self) -> str: """Return HTML representation.""" return self._html or '' + def __html_format__(self, format_spec: str) -> str: + """Implement format_spec support as required by Markup.""" + return self.__html__().__format__(format_spec) + # Return a Markup string of the HTML @property def html(self) -> Optional[Markup]: @@ -637,11 +651,12 @@ def __json__(self) -> Dict[str, Optional[str]]: """Return JSON-compatible rendering of composite.""" return {'text': self._text, 'html': self._html} - # Compare text value def __eq__(self, other: Any) -> bool: """Compare for equality.""" - return isinstance(other, self.__class__) and ( - self.__composite_values__() == other.__composite_values__() + return ( + isinstance(other, self.__class__) + and (self.__composite_values__() == other.__composite_values__()) + or self._text == other ) def __ne__(self, other: Any) -> bool: diff --git a/funnel/utils/markdown/__init__.py b/funnel/utils/markdown/__init__.py index 65c6cac0f..d7a1fbcca 100644 --- a/funnel/utils/markdown/__init__.py +++ b/funnel/utils/markdown/__init__.py @@ -2,3 +2,4 @@ # flake8: noqa from .base import * +from .escape import * diff --git a/funnel/utils/markdown/base.py b/funnel/utils/markdown/base.py index 03388d08b..d4e675c4c 100644 --- a/funnel/utils/markdown/base.py +++ b/funnel/utils/markdown/base.py @@ -2,7 +2,6 @@ from __future__ import annotations -import re from dataclasses import dataclass from typing import ( Any, @@ -15,7 +14,7 @@ Union, overload, ) -from typing_extensions import Literal +from typing_extensions import Literal, Self from markdown_it import MarkdownIt from markupsafe import Markup @@ -38,72 +37,7 @@ ) from .tabs import render_tab -__all__ = ['MarkdownPlugin', 'MarkdownConfig', 'MarkdownString', 'markdown_escape'] - -# --- Markdown escaper and string ------------------------------------------------------ - -#: Based on the ASCII punctuation list in the CommonMark spec at -#: https://spec.commonmark.org/0.30/#backslash-escapes -markdown_escape_re = re.compile(r"""([\[\\\]{|}\(\)`~!@#$%^&*=+;:'"<>/,.?_-])""") - - -def markdown_escape(text: str) -> MarkdownString: - """ - Escape all Markdown formatting characters and strip whitespace at ends. - - As per the CommonMark spec, all ASCII punctuation can be escaped with a backslash - and compliant parsers will then render the punctuation mark as a literal character. - However, escaping any other character will cause the backslash to be rendered. This - escaper therefore targets only ASCII punctuation characters listed in the spec. - - Edge whitespace is significant in Markdown and must be stripped when escaping: - - * Four spaces at the start will initiate a code block - * Two spaces at the end will cause a line-break in non-GFM Markdown - - Replacing these spaces with   is not suitable because non-breaking spaces - affect HTML rendering, specifically the CSS ``white-space: normal`` sequence - collapsing behaviour. - - :returns: Escaped text as an instance of :class:`MarkdownString`, to avoid - double-escaping - """ - if hasattr(text, '__markdown__'): - return MarkdownString(text.__markdown__()) - return MarkdownString(markdown_escape_re.sub(r'\\\1', text).strip()) - - -class MarkdownString(str): - """Markdown string, implements a __markdown__ method.""" - - __slots__ = () - - def __new__( - cls, base: Any = '', encoding: Optional[str] = None, errors: str = 'strict' - ) -> MarkdownString: - if hasattr(base, '__markdown__'): - base = base.__markdown__() - - if encoding is None: - return super().__new__(cls, base) - - return super().__new__(cls, base, encoding, errors) - - def __markdown__(self) -> MarkdownString: - """Return a markdown source string.""" - return self - - @classmethod - def escape(cls, text: str) -> MarkdownString: - """Escape a string.""" - rv = markdown_escape(text) - - if rv.__class__ is not cls: - return cls(rv) - - return rv - - # TODO: Implement other methods supported by markupsafe +__all__ = ['MarkdownPlugin', 'MarkdownConfig'] # --- Markdown dataclasses ------------------------------------------------------------- @@ -118,17 +52,19 @@ class MarkdownPlugin: #: Registry of instances registry: ClassVar[Dict[str, MarkdownPlugin]] = {} - #: Optional name for this config, for adding to the registry - name: str + #: Optional name for this config + name: Optional[str] func: Callable config: Optional[Dict[str, Any]] = None - def __post_init__(self) -> None: - # If this plugin+configuration has a name, add it to the registry - if self.name is not None: - if self.name in self.registry: - raise NameError(f"Plugin {self.name} has already been registered") - self.registry[self.name] = self + @classmethod + def register(cls, name: str, *args, **kwargs) -> Self: + """Create a new instance and add it to the registry.""" + if name in cls.registry: + raise NameError(f"MarkdownPlugin {name} has already been registered") + obj = cls(name, *args, **kwargs) + cls.registry[name] = obj + return obj @dataclass @@ -171,11 +107,14 @@ def __post_init__(self) -> None: except KeyError as exc: raise TypeError(f"Unknown Markdown plugin {exc.args[0]}") from None - # If this plugin+configuration has a name, add it to the registry - if self.name is not None: - if self.name in self.registry: - raise NameError(f"Config {self.name} has already been registered") - self.registry[self.name] = self + @classmethod + def register(cls, name: str, *args, **kwargs) -> Self: + """Create a new instance and add it to the registry.""" + if name in cls.registry: + raise NameError(f"MarkdownConfig {name} has already been registered") + obj = cls(name, *args, **kwargs) + cls.registry[name] = obj + return obj @overload def render(self, text: None) -> None: @@ -219,10 +158,10 @@ def render(self, text: Optional[str]) -> Optional[Markup]: # --- Markdown plugins ----------------------------------------------------------------- -MarkdownPlugin('abbr', abbr_plugin) -MarkdownPlugin('deflists', deflist.deflist_plugin) -MarkdownPlugin('footnote', footnote.footnote_plugin) -MarkdownPlugin( +MarkdownPlugin.register('abbr', abbr_plugin) +MarkdownPlugin.register('deflists', deflist.deflist_plugin) +MarkdownPlugin.register('footnote', footnote.footnote_plugin) +MarkdownPlugin.register( 'heading_anchors', anchors.anchors_plugin, { @@ -234,43 +173,45 @@ def render(self, text: Optional[str]) -> Optional[Markup]: 'permalinkSpace': False, }, ) -MarkdownPlugin( +# The heading_anchors_fix plugin modifies the token stream output of heading_anchors +# plugin to make the heading a permalink instead of a separate permalink. It eliminates +# the extra character and strips any links inside the heading that may have been +# introduced by the author. +MarkdownPlugin.register('heading_anchors_fix', heading_anchors_fix_plugin) + +MarkdownPlugin.register( 'tasklists', tasklists.tasklists_plugin, {'enabled': True, 'label': True, 'label_after': False}, ) -MarkdownPlugin('ins', ins_plugin) -MarkdownPlugin('del', del_plugin) -MarkdownPlugin('sub', sub_plugin) -MarkdownPlugin('sup', sup_plugin) -MarkdownPlugin('mark', mark_plugin) +MarkdownPlugin.register('ins', ins_plugin) +MarkdownPlugin.register('del', del_plugin) +MarkdownPlugin.register('sub', sub_plugin) +MarkdownPlugin.register('sup', sup_plugin) +MarkdownPlugin.register('mark', mark_plugin) -MarkdownPlugin( +MarkdownPlugin.register( 'tab_container', container.container_plugin, {'name': 'tab', 'marker': ':', 'render': render_tab}, ) -MarkdownPlugin('markmap', embeds_plugin, {'name': 'markmap'}) -MarkdownPlugin('vega-lite', embeds_plugin, {'name': 'vega-lite'}) -MarkdownPlugin('mermaid', embeds_plugin, {'name': 'mermaid'}) -MarkdownPlugin('block_code_ext', block_code_extend_plugin) -MarkdownPlugin('footnote_ext', footnote_extend_plugin) -# The heading_anchors_fix plugin modifies the token stream output of heading_anchors plugin to -# make the heading a permalink instead of a separate permalink. It eliminates the extra -# character and strips any links inside the heading that may have been introduced by the -# author. -MarkdownPlugin('heading_anchors_fix', heading_anchors_fix_plugin) -# MarkdownPlugin('toc', toc_plugin) +MarkdownPlugin.register('markmap', embeds_plugin, {'name': 'markmap'}) +MarkdownPlugin.register('vega_lite', embeds_plugin, {'name': 'vega-lite'}) +MarkdownPlugin.register('mermaid', embeds_plugin, {'name': 'mermaid'}) +MarkdownPlugin.register('block_code_ext', block_code_extend_plugin) +MarkdownPlugin.register('footnote_ext', footnote_extend_plugin) +# The TOC plugin isn't yet working +# MarkdownPlugin.register('toc', toc_plugin) # --- Markdown configurations ---------------------------------------------------------- -MarkdownConfig( +markdown_basic = MarkdownConfig.register( name='basic', options_update={'html': False, 'breaks': True}, plugins=['block_code_ext'], ) -MarkdownConfig( +markdown_document = MarkdownConfig.register( name='document', preset='gfm-like', options_update={ @@ -295,13 +236,27 @@ def render(self, text: Optional[str]) -> Optional[Markup]: 'sup', 'mark', 'markmap', - 'vega-lite', + 'vega_lite', 'mermaid', # 'toc', ], enable_rules={'smartquotes'}, ) +markdown_mailer = MarkdownConfig.register( + name='mailer', + preset='gfm-like', + options_update={ + 'html': True, + 'linkify': True, + 'typographer': True, + 'breaks': True, + }, + plugins=markdown_document.plugins, + enable_rules={'smartquotes'}, + linkify_fuzzy_email=True, +) + #: This profile is meant for inline fields (like Title) and allows for only inline #: visual markup: emphasis, code, ins/underline, del/strikethrough, superscripts, #: subscripts and smart quotes. It does not allow hyperlinks, images or HTML tags. @@ -310,7 +265,7 @@ def render(self, text: Optional[str]) -> Optional[Markup]: #: Unicode characters for bold/italic/sub/sup, but found this unsuitable as these #: character ranges are not comprehensive. Instead, plaintext use will include the #: Markdown formatting characters as-is. -MarkdownConfig( +markdown_inline = MarkdownConfig.register( name='inline', preset='zero', options_update={'html': False, 'breaks': False, 'typographer': True}, diff --git a/funnel/utils/markdown/escape.py b/funnel/utils/markdown/escape.py new file mode 100644 index 000000000..aaba3d63a --- /dev/null +++ b/funnel/utils/markdown/escape.py @@ -0,0 +1,310 @@ +"""Markdown escaper.""" + +from __future__ import annotations + +import re +import string +import sys +from functools import wraps +from typing import ( + Any, + Callable, + Iterable, + List, + Mapping, + Optional, + Tuple, + TypeVar, + Union, +) +from typing_extensions import Concatenate, ParamSpec, Protocol, Self, SupportsIndex + +__all__ = ['HasMarkdown', 'MarkdownString', 'markdown_escape'] + + +_P = ParamSpec('_P') +_ListOrDict = TypeVar('_ListOrDict', list, dict) + + +class HasMarkdown(Protocol): + """Protocol for a class implementing :meth:`__markdown__`.""" + + def __markdown__(self) -> str: + """Return a Markdown string.""" + + +#: Based on the ASCII punctuation list in the CommonMark spec at +#: https://spec.commonmark.org/0.30/#backslash-escapes +markdown_escape_re = re.compile(r"""([\[\\\]{|}\(\)`~!@#$%^&*=+;:'"<>/,.?_-])""") +#: Unescape regex has a `\` prefix and the same characters +markdown_unescape_re = re.compile(r"""\\([\[\\\]{|}\(\)`~!@#$%^&*=+;:'"<>/,.?_-])""") + + +class _MarkdownEscapeFormatter(string.Formatter): + """Support class for :meth:`MarkdownString.format`.""" + + __slots__ = ('escape',) + + def __init__(self, escape: Callable[[Any], MarkdownString]) -> None: + self.escape = escape + super().__init__() + + def format_field(self, value: Any, format_spec: str) -> str: + if hasattr(value, '__markdown_format__'): + rv = value.__markdown_format__(format_spec) + elif hasattr(value, '__markdown__'): + if format_spec: + raise ValueError( + f"Format specifier {format_spec} given, but {type(value)} does not" + " define __markdown_format__. A class that defines __markdown__" + " must define __markdown_format__ to work with format specifiers." + ) + rv = value.__markdown__() + else: + # We need to make sure the format spec is str here as + # otherwise the wrong callback methods are invoked. + rv = string.Formatter.format_field(self, value, str(format_spec)) + return str(self.escape(rv)) + + +class _MarkdownEscapeHelper: + """Helper for :meth:`MarkdownString.__mod__`.""" + + __slots__ = ('obj', 'escape') + + def __init__(self, obj: Any, escape: Callable[[Any], MarkdownString]) -> None: + self.obj = obj + self.escape = escape + + def __getitem__(self, item: Any) -> Self: + return self.__class__(self.obj[item], self.escape) + + def __str__(self) -> str: + return str(self.escape(self.obj)) + + def __repr__(self) -> str: + return str(self.escape(repr(self.obj))) + + def __int__(self) -> int: + return int(self.obj) + + def __float__(self) -> float: + return float(self.obj) + + +def _escape_argspec( + obj: _ListOrDict, iterable: Iterable[Any], escape: Callable[[Any], MarkdownString] +) -> _ListOrDict: + """Escape all arguments.""" + for key, value in iterable: + if isinstance(value, str) or hasattr(value, '__markdown__'): + obj[key] = escape(value) + + return obj + + +def _simple_escaping_wrapper( + func: Callable[Concatenate[str, _P], str] +) -> Callable[Concatenate[MarkdownString, _P], MarkdownString]: + @wraps(func) + def wrapped( + self: MarkdownString, *args: _P.args, **kwargs: _P.kwargs + ) -> MarkdownString: + arg_list = _escape_argspec(list(args), enumerate(args), self.escape) + _escape_argspec(kwargs, kwargs.items(), self.escape) + return self.__class__(func(self, *arg_list, **kwargs)) + + return wrapped + + +class MarkdownString(str): + """Markdown string, implements a __markdown__ method.""" + + __slots__ = () + + def __new__( + cls, base: Any = '', encoding: Optional[str] = None, errors: str = 'strict' + ) -> MarkdownString: + if hasattr(base, '__markdown__'): + base = base.__markdown__() + + if encoding is None: + return super().__new__(cls, base) + + return super().__new__(cls, base, encoding, errors) + + def __markdown__(self) -> Self: + """Return a markdown embed-compatible string.""" + return self + + def __markdown_format__(self, format_spec: str) -> Self: + if format_spec: + # MarkdownString cannot support format_spec because any manipulation may + # remove an escape char, causing downstream damage with unwanted formatting + raise ValueError("Unsupported format specification for MarkdownString.") + + return self + + def unescape(self) -> str: + """Unescape the string.""" + return markdown_unescape_re.sub(r'\1', str(self)) + + @classmethod + def escape(cls, text: Union[str, HasMarkdown], silent: bool = True) -> Self: + """Escape a string, for internal use only. Use :func:`markdown_escape`.""" + if silent and text is None: + return cls('') # type: ignore[unreachable] + if hasattr(text, '__markdown__'): + return cls(text.__markdown__()) + return cls(markdown_escape_re.sub(r'\\\1', text)) + + # These additional methods are borrowed from the implementation in markupsafe + + def __add__(self, other: Union[str, HasMarkdown]) -> Self: + if isinstance(other, str) or hasattr(other, '__markdown__'): + return self.__class__(super().__add__(self.escape(other))) + + return NotImplemented + + def __radd__(self, other: Union[str, HasMarkdown]) -> Self: + if isinstance(other, str) or hasattr(other, '__markdown__'): + return self.escape(other).__add__(self) + + return NotImplemented + + def __mul__(self, num: SupportsIndex) -> Self: + if isinstance(num, int): + return self.__class__(super().__mul__(num)) + + return NotImplemented + + __rmul__ = __mul__ + + def __mod__(self, arg: Any) -> Self: + """Apply legacy `str % arg(s)` formatting.""" + if isinstance(arg, tuple): + # a tuple of arguments, each wrapped + arg = tuple(_MarkdownEscapeHelper(x, self.escape) for x in arg) + elif hasattr(type(arg), '__getitem__') and not isinstance(arg, str): + # a mapping of arguments, wrapped + arg = _MarkdownEscapeHelper(arg, self.escape) + else: + # a single argument, wrapped with the helper and a tuple + arg = (_MarkdownEscapeHelper(arg, self.escape),) + + return self.__class__(super().__mod__(arg)) + + def __repr__(self) -> str: + return f'{self.__class__.__name__}({super().__repr__()})' + + def join(self, iterable: Iterable[Union[str, HasMarkdown]]) -> Self: + return self.__class__(super().join(map(self.escape, iterable))) + + join.__doc__ = str.join.__doc__ + + def split( # type: ignore[override] + self, sep: Optional[str] = None, maxsplit: SupportsIndex = -1 + ) -> List[Self]: + return [self.__class__(v) for v in super().split(sep, maxsplit)] + + split.__doc__ = str.split.__doc__ + + def rsplit( # type: ignore[override] + self, sep: Optional[str] = None, maxsplit: SupportsIndex = -1 + ) -> List[Self]: + return [self.__class__(v) for v in super().rsplit(sep, maxsplit)] + + rsplit.__doc__ = str.rsplit.__doc__ + + def splitlines( # type: ignore[override] + self, keepends: bool = False + ) -> List[Self]: + return [self.__class__(v) for v in super().splitlines(keepends)] + + splitlines.__doc__ = str.splitlines.__doc__ + + __getitem__ = _simple_escaping_wrapper(str.__getitem__) # type: ignore[assignment] + capitalize = _simple_escaping_wrapper(str.capitalize) # type: ignore[assignment] + title = _simple_escaping_wrapper(str.title) # type: ignore[assignment] + lower = _simple_escaping_wrapper(str.lower) # type: ignore[assignment] + upper = _simple_escaping_wrapper(str.upper) # type: ignore[assignment] + replace = _simple_escaping_wrapper(str.replace) # type: ignore[assignment] + ljust = _simple_escaping_wrapper(str.ljust) # type: ignore[assignment] + rjust = _simple_escaping_wrapper(str.rjust) # type: ignore[assignment] + lstrip = _simple_escaping_wrapper(str.lstrip) # type: ignore[assignment] + rstrip = _simple_escaping_wrapper(str.rstrip) # type: ignore[assignment] + center = _simple_escaping_wrapper(str.center) # type: ignore[assignment] + strip = _simple_escaping_wrapper(str.strip) # type: ignore[assignment] + translate = _simple_escaping_wrapper(str.translate) # type: ignore[assignment] + expandtabs = _simple_escaping_wrapper(str.expandtabs) # type: ignore[assignment] + swapcase = _simple_escaping_wrapper(str.swapcase) # type: ignore[assignment] + zfill = _simple_escaping_wrapper(str.zfill) # type: ignore[assignment] + casefold = _simple_escaping_wrapper(str.casefold) # type: ignore[assignment] + + if sys.version_info >= (3, 9): + removeprefix = _simple_escaping_wrapper( # type: ignore[assignment] + str.removeprefix + ) + removesuffix = _simple_escaping_wrapper( # type: ignore[assignment] + str.removesuffix + ) + + def partition(self, sep: str) -> Tuple[Self, Self, Self]: + left, sep, right = super().partition(self.escape(sep)) + cls = self.__class__ + return cls(left), cls(sep), cls(right) + + partition.__doc__ = str.partition.__doc__ + + def rpartition(self, sep: str) -> Tuple[Self, Self, Self]: + left, sep, right = super().rpartition(self.escape(sep)) + cls = self.__class__ + return cls(left), cls(sep), cls(right) + + rpartition.__doc__ = str.rpartition.__doc__ + + def format(self, *args: Any, **kwargs: Any) -> Self: # noqa: A003 + formatter = _MarkdownEscapeFormatter(self.escape) + return self.__class__(formatter.vformat(self, args, kwargs)) + + format.__doc__ = str.format.__doc__ + + # pylint: disable=redefined-builtin + def format_map( + self, map: Mapping[str, Any] # type: ignore[override] # noqa: A002 + ) -> Self: + formatter = _MarkdownEscapeFormatter(self.escape) + return self.__class__(formatter.vformat(self, (), map)) + + format_map.__doc__ = str.format_map.__doc__ + + +def markdown_escape(text: str) -> MarkdownString: + """ + Escape all Markdown formatting characters and strip whitespace at ends. + + As per the CommonMark spec, all ASCII punctuation can be escaped with a backslash + and compliant parsers will then render the punctuation mark as a literal character. + However, escaping any other character will cause the backslash to be rendered. This + escaper therefore targets only ASCII punctuation characters listed in the spec. + + Edge whitespace is significant in Markdown: + + * Four spaces at the start will initiate a code block + * Two spaces at the end will cause a line-break in non-GFM Markdown + + The space and tab characters cannot be escaped, and replacing spaces with   is + not suitable because non-breaking spaces affect HTML rendering, specifically the + CSS ``white-space: normal`` sequence collapsing behaviour. Since there is no way to + predict adjacent whitespace when this escaped variable is placed in a Markdown + document, it is safest to strip all edge whitespace. + + ..note:: + This function strips edge whitespace and calls :meth:`MarkdownString.escape`, + and should be preferred over calling :meth:`MarkdownString.escape` directly. + That classmethod is internal to :class:`MarkdownString`. + + :returns: Escaped text as an instance of :class:`MarkdownString`, to avoid + double-escaping + """ + return MarkdownString.escape(text.strip()) diff --git a/funnel/utils/mustache.py b/funnel/utils/mustache.py index 36f9a2256..492f538df 100644 --- a/funnel/utils/mustache.py +++ b/funnel/utils/mustache.py @@ -3,36 +3,81 @@ import functools import types from copy import copy -from typing import Callable +from typing import Callable, Optional, Type, TypeVar +from typing_extensions import ParamSpec from chevron import render -from markupsafe import escape as html_escape +from markupsafe import Markup, escape as html_escape -from .markdown import markdown_escape +from .markdown import MarkdownString, markdown_escape __all__ = ['mustache_html', 'mustache_md'] +_P = ParamSpec('_P') +_T = TypeVar('_T', bound=str) + + def _render_with_escape( - name: str, escapefunc: Callable[[str], str] -) -> Callable[..., str]: - """Make a copy of Chevron's render function with a replacement HTML escaper.""" - _globals = copy(render.__globals__) - _globals['_html_escape'] = escapefunc + name: str, + renderer: Callable[_P, str], + escapefunc: Callable[[str], str], + recast: Type[_T], + doc: Optional[str] = None, +) -> Callable[_P, _T]: + """ + Make a copy of Chevron's render function with a replacement HTML escaper. + + Chevron does not allow the HTML escaper to be customized, so we construct a new + function using the same code, replacing the escaper in the globals. We also recast + Chevron's output to a custom sub-type of str like :class:`~markupsafe.Markup` or + :class:`~funnel.utils.markdown.escape.MarkdownString`. + + :param name: Name of the new function (readable as `func.__name__`) + :param renderer: Must be :func:`chevron.render` and must be explicitly passed for + mypy to recognise the function's parameters + :param escapefunc: Replacement escape function + :param recast: str subtype to recast Chevron's output to + :param doc: Optional replacement docstring + """ + _globals = copy(renderer.__globals__) + # Chevron tries `output += _html_escape(thing)`, which given Markup or + # MarkdownString will call `thing.__radd__(output)`, which will then escape the + # existing output. We must therefore recast the escaped string as a plain `str` + _globals['_html_escape'] = lambda text: str(escapefunc(text)) new_render = types.FunctionType( - render.__code__, + renderer.__code__, _globals, name=name, - argdefs=render.__defaults__, - closure=render.__closure__, + argdefs=renderer.__defaults__, + closure=renderer.__closure__, ) - new_render = functools.update_wrapper(new_render, render) + new_render = functools.update_wrapper(new_render, renderer) new_render.__module__ = __name__ - new_render.__kwdefaults__ = copy(render.__kwdefaults__) - return new_render + new_render.__kwdefaults__ = copy(renderer.__kwdefaults__) + new_render.__doc__ = renderer.__doc__ + + @functools.wraps(renderer) + def render_and_recast(*args: _P.args, **kwargs: _P.kwargs) -> _T: + # pylint: disable=not-callable + return recast(new_render(*args, **kwargs)) + + render_and_recast.__doc__ = doc if doc else renderer.__doc__ + return render_and_recast -mustache_html = _render_with_escape('mustache_html', html_escape) -mustache_md = _render_with_escape('mustache_md', markdown_escape) -# TODO: Add mustache_mdhtml for use with Markdown with HTML tags enabled +mustache_html = _render_with_escape( + 'mustache_html', + render, + html_escape, + Markup, + doc="Render a Mustache template in a HTML context.", +) +mustache_md = _render_with_escape( + 'mustache_md', + render, + markdown_escape, + MarkdownString, + doc="Render a Mustache template in a Markdown context.", +) diff --git a/tests/unit/utils/markdown/data/vega-lite.toml b/tests/unit/utils/markdown/data/vega-lite.toml index 57c9b6fd8..a2aed9168 100644 --- a/tests/unit/utils/markdown/data/vega-lite.toml +++ b/tests/unit/utils/markdown/data/vega-lite.toml @@ -354,9 +354,9 @@ markdown = """ [config] profiles = [ "basic", "document",] -[config.custom_profiles.vega-lite] +[config.custom_profiles.vega_lite] preset = "default" -plugins = [ "vega-lite",] +plugins = [ "vega_lite",] [expected_output] basic = """

    vega-lite tests

    diff --git a/tests/unit/utils/markdown_escape_test.py b/tests/unit/utils/markdown_escape_test.py new file mode 100644 index 000000000..6f85623ff --- /dev/null +++ b/tests/unit/utils/markdown_escape_test.py @@ -0,0 +1,15 @@ +"""Tests for MarkdownString and markdown_escape.""" + +from funnel.utils import MarkdownString, markdown_escape + + +def test_markdown_escape() -> None: + """Test that markdown_escape escapes Markdown punctuation (partial test).""" + assert isinstance(markdown_escape(''), MarkdownString) + assert markdown_escape('No escape') == 'No escape' + assert ( + markdown_escape('This _has_ Markdown markup') == r'This \_has\_ Markdown markup' + ) + mixed = 'This has **mixed** markup' + assert markdown_escape(mixed) == r'This \has\<\/em\> \*\*mixed\*\* markup' + assert markdown_escape(mixed).unescape() == mixed diff --git a/tests/unit/utils/mustache_test.py b/tests/unit/utils/mustache_test.py index 8ac6aaf82..e287edc62 100644 --- a/tests/unit/utils/mustache_test.py +++ b/tests/unit/utils/mustache_test.py @@ -1,11 +1,12 @@ +"""Tests for Mustache templates on Markdown documents.""" +# pylint: disable=not-callable # mypy: disable-error-code=index -"""Tests for the mustache template escaper.""" from typing import Dict, Tuple import pytest -from funnel.utils.markdown.base import MarkdownConfig +from funnel.utils.markdown import MarkdownConfig from funnel.utils.mustache import mustache_md test_data = { @@ -28,6 +29,7 @@ #: Dict of {test_name: (template, output)} templates_and_output: Dict[str, Tuple[str, str]] = {} +#: Dict of {test_name: (template, config_name, output)} config_template_output: Dict[str, Tuple[str, str, str]] = {} templates_and_output['basic'] = ( @@ -86,9 +88,8 @@ templates_and_output.values(), ids=templates_and_output.keys(), ) -def test_mustache_md(template, expected_output): - output = mustache_md(template, test_data) # pylint: disable=not-callable - assert expected_output == output +def test_mustache_md(template: str, expected_output: str) -> None: + assert mustache_md(template, test_data) == expected_output config_template_output['basic-basic'] = ( @@ -174,7 +175,8 @@ def test_mustache_md(template, expected_output): config_template_output.values(), ids=config_template_output.keys(), ) -def test_mustache_md_markdown(template, config, expected_output): - assert expected_output == MarkdownConfig.registry[config].render( - mustache_md(template, test_data) # pylint: disable=not-callable +def test_mustache_md_markdown(template: str, config: str, expected_output: str) -> None: + assert ( + MarkdownConfig.registry[config].render(mustache_md(template, test_data)) + == expected_output ) From 6b98b084c73700d06736e1590bfb8bc69134885a Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Tue, 11 Jul 2023 21:35:53 +0530 Subject: [PATCH 187/281] Fix the empty timezone cookie check (#1790) --- funnel/assets/js/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/funnel/assets/js/app.js b/funnel/assets/js/app.js index fe6c02939..f00fa790a 100644 --- a/funnel/assets/js/app.js +++ b/funnel/assets/js/app.js @@ -64,7 +64,7 @@ $(() => { } // Detect timezone for login - if ($.cookie('timezone') === null) { + if (!$.cookie('timezone')) { $.cookie('timezone', jstz.determine().name(), { path: '/' }); } From 39e1faa6ada3b2f0d0308fe9cbaab508baf2fc07 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Wed, 12 Jul 2023 12:23:27 +0530 Subject: [PATCH 188/281] Use grapheme-based truncation; pass deferred options correctly (#1793) --- .pre-commit-config.yaml | 1 + funnel/models/helpers.py | 27 +++++++++++++++++++++------ funnel/views/notifications/mixins.py | 15 ++++++++++----- pyproject.toml | 3 +-- requirements/base.in | 1 + requirements/base.txt | 6 ++++-- requirements/dev.in | 1 + requirements/dev.txt | 4 +++- 8 files changed, 42 insertions(+), 16 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9c1a3a66c..853c227bf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -113,6 +113,7 @@ repos: # - sqlalchemy # - toml # - tomli + # - types-chevron # - types-geoip2 # - types-python-dateutil # - types-pytz diff --git a/funnel/models/helpers.py b/funnel/models/helpers.py index 1f1f6166c..ba1a9e2f9 100644 --- a/funnel/models/helpers.py +++ b/funnel/models/helpers.py @@ -277,7 +277,6 @@ def new_property(self): This decorator is intended to aid legibility of bi-directional relationships in SQLAlchemy models, specifically where a basic backref is augmented with methods or properties that do more processing. - """ def decorator(temp_cls: TempType) -> ReopenedType: @@ -573,7 +572,7 @@ class ImgeeType(UrlType): # pylint: disable=abstract-method url_parser = ImgeeFurl cache_ok = True - def process_bind_param(self, value: Any, dialect: Any): + def process_bind_param(self, value: Any, dialect: Any) -> furl: value = super().process_bind_param(value, dialect) if value: allowed_domains = app.config.get('IMAGE_URL_DOMAINS', []) @@ -619,6 +618,8 @@ def __markdown__(self) -> str: def __markdown_format__(self, format_spec: str) -> str: """Implement format_spec support as required by MarkdownString.""" + # This call's MarkdownString's __format__ instead of __markdown_format__ as the + # content has not been manipulated from the source string return self.__markdown__().__format__(format_spec) def __html__(self) -> str: @@ -627,6 +628,8 @@ def __html__(self) -> str: def __html_format__(self, format_spec: str) -> str: """Implement format_spec support as required by Markup.""" + # This call's Markup's __format__ instead of __html_format__ as the + # content has not been manipulated from the source string return self.__html__().__format__(format_spec) # Return a Markup string of the HTML @@ -692,19 +695,31 @@ def create( cls: Type[_MC], name: str, deferred: bool = False, - group: Optional[str] = None, + deferred_group: Optional[str] = None, **kwargs, ) -> Tuple[sa.orm.Composite[_MC], Mapped[str], Mapped[str]]: """Create a composite column and backing individual columns.""" - col_text = sa.orm.mapped_column(name + '_text', sa.UnicodeText, **kwargs) - col_html = sa.orm.mapped_column(name + '_html', sa.UnicodeText, **kwargs) + col_text = sa.orm.mapped_column( + name + '_text', + sa.UnicodeText, + deferred=deferred, + deferred_group=deferred_group, + **kwargs, + ) + col_html = sa.orm.mapped_column( + name + '_html', + sa.UnicodeText, + deferred=deferred, + deferred_group=deferred_group, + **kwargs, + ) return ( composite( cls, col_text, col_html, deferred=deferred, - group=group or name, + group=deferred_group, ), col_text, col_html, diff --git a/funnel/views/notifications/mixins.py b/funnel/views/notifications/mixins.py index 5e5df3ec2..18f8e25b5 100644 --- a/funnel/views/notifications/mixins.py +++ b/funnel/views/notifications/mixins.py @@ -3,6 +3,8 @@ from typing import Callable, Generic, Optional, Type, TypeVar, Union, overload from typing_extensions import Self +import grapheme + from ...models import Project, User _T = TypeVar('_T') # Host type for SetVar @@ -69,9 +71,11 @@ def project(self, project: Project) -> str: """Set project joined title or title, truncated to fit the length limit.""" if len(project.joined_title) <= self.var_max_length: return project.joined_title - if len(project.title) <= self.var_max_length: - return project.title - return project.title[: self.var_max_length - 1] + '…' + title = project.title + if len(title) <= self.var_max_length: + return title + index = grapheme.safe_split_index(title, self.var_max_length - 1) + return title[:index] + '…' @SetVar def user(self, user: User) -> str: @@ -82,6 +86,7 @@ def user(self, user: User) -> str: fullname = user.fullname if len(fullname) <= self.var_max_length: return fullname - return fullname[: self.var_max_length - 1] + '…' + index = grapheme.safe_split_index(fullname, self.var_max_length - 1) + return fullname[:index] + '…' - actor = user + actor = user # This will trigger cloning in SetVar.__set_name__ diff --git a/pyproject.toml b/pyproject.toml index a46785644..a4e1b31d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -139,8 +139,7 @@ warn_redundant_casts = false check_untyped_defs = false [[tool.mypy.overrides]] -# This override doesn't seem to work -module = ['tests'] +module = 'tests.*' check_untyped_defs = true warn_unreachable = false diff --git a/requirements/base.in b/requirements/base.in index 407166028..cc2b7ba09 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -27,6 +27,7 @@ Flask-SQLAlchemy Flask-WTF furl geoip2 +grapheme greenlet html2text httpx[http2] diff --git a/requirements/base.txt b/requirements/base.txt index 1c417e97a..568d787e2 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:51f3881659eb976b76db524508d1115cdafc162d +# SHA1:5d746b010b56d8d9864db09ea2addc8c538f88ac # # This file is autogenerated by pip-compile-multi # To update, run: @@ -188,7 +188,9 @@ future==0.18.3 geoip2==4.7.0 # via -r requirements/base.in grapheme==0.6.0 - # via baseframe + # via + # -r requirements/base.in + # baseframe greenlet==2.0.2 # via -r requirements/base.in h11==0.14.0 diff --git a/requirements/dev.in b/requirements/dev.in index e4f2f440d..5a03a3d42 100644 --- a/requirements/dev.in +++ b/requirements/dev.in @@ -29,6 +29,7 @@ reformat-gherkin ruff toml tomli +types-chevron types-geoip2 types-python-dateutil types-pytz diff --git a/requirements/dev.txt b/requirements/dev.txt index 314cb3520..a0afb8181 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,4 +1,4 @@ -# SHA1:7323c3063d6e900d410c2edef3c3e03c6612f8e4 +# SHA1:069d1ed0c3c61acf9fc9949194ca3743a20c6d89 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -143,6 +143,8 @@ tokenize-rt==5.1.0 # via pyupgrade toposort==1.10 # via pip-compile-multi +types-chevron==0.14.2.4 + # via -r requirements/dev.in types-geoip2==3.0.0 # via -r requirements/dev.in types-ipaddress==1.0.8 From caa8b0aae79193418ac6700e57c1db818fd7b24a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 12:25:37 +0530 Subject: [PATCH 189/281] Bump semver from 6.3.0 to 6.3.1 (#1795) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 013132dfa..d43d65be7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4112,9 +4112,9 @@ } }, "node_modules/cypress/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -5563,9 +5563,9 @@ } }, "node_modules/eslint/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9927,9 +9927,9 @@ } }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" From 83f3ea144d5a2136bf981bb4766df7d98cb811bb Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Wed, 12 Jul 2023 15:30:28 +0530 Subject: [PATCH 190/281] Change unsubscribe app's index redirect destination and test it (#1796) --- funnel/views/shortlink.py | 10 +++++++--- tests/unit/views/unsubscribe_short_test.py | 13 +++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/funnel/views/shortlink.py b/funnel/views/shortlink.py index 9f120db24..cf854ab26 100644 --- a/funnel/views/shortlink.py +++ b/funnel/views/shortlink.py @@ -12,9 +12,8 @@ from .helpers import app_url_for -@shortlinkapp.route('/') -@unsubscribeapp.route('/') -def index() -> Response: +@shortlinkapp.route('/', endpoint='index') +def shortlink_index() -> Response: return redirect(app_url_for(app, 'index'), 301) @@ -41,6 +40,11 @@ def link(name: str) -> Response: return response +@unsubscribeapp.route('/', endpoint='index') +def unsubscribe_index() -> Response: + return redirect(app_url_for(app, 'notification_preferences', utm_medium='sms'), 301) + + @unsubscribeapp.route('/') def unsubscribe_short(token: str) -> Response: """Redirect to full length unsubscribe URL.""" diff --git a/tests/unit/views/unsubscribe_short_test.py b/tests/unit/views/unsubscribe_short_test.py index c24792253..c48ea3978 100644 --- a/tests/unit/views/unsubscribe_short_test.py +++ b/tests/unit/views/unsubscribe_short_test.py @@ -5,6 +5,19 @@ from flask import Flask +def test_unsubscribe_app_index(app: Flask, unsubscribeapp: Flask) -> None: + """Unsubscribe app redirects from index to main app's notification preferences.""" + with unsubscribeapp.test_client() as client: + rv = client.get('/') + assert rv.status_code == 301 + redirect_url: str = rv.location + assert redirect_url.startswith(('http://', 'https://')) + assert ( + app.url_for('notification_preferences', utm_medium='sms', _external=True) + == redirect_url + ) + + def test_unsubscribe_app_url_redirect(app: Flask, unsubscribeapp: Flask) -> None: """Unsubscribe app does a simple redirect to main app's unsubscribe URL.""" random_token = token_urlsafe(3) From 606c70c4210b134afb02537ab2eb25d678a7b48d Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Wed, 12 Jul 2023 17:09:38 +0530 Subject: [PATCH 191/281] Use Intl.DateTimeFormat() to set timezone cookie (#1794) * Use Intl.DateTimeFormat() to set timezone cookie * Fix timezone cookie check --- funnel/assets/js/app.js | 9 ++------- funnel/assets/js/utils/timezone.js | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 funnel/assets/js/utils/timezone.js diff --git a/funnel/assets/js/app.js b/funnel/assets/js/app.js index f00fa790a..92666baeb 100644 --- a/funnel/assets/js/app.js +++ b/funnel/assets/js/app.js @@ -1,7 +1,5 @@ import 'jquery-modal'; import 'trunk8'; -import jstz from 'jstz'; -import 'jquery.cookie'; import Utils from './utils/helper'; import WebShare from './utils/webshare'; import ScrollHelper from './utils/scrollhelper'; @@ -14,6 +12,7 @@ import updateParsleyConfig from './utils/update_parsley_config'; import ReadStatus from './utils/read_status'; import LazyLoadMenu from './utils/lazyloadmenu'; import './utils/getDevicePixelRatio'; +import setTimezoneCookie from './utils/timezone'; import 'muicss/dist/js/mui'; const pace = require('pace-js'); @@ -63,11 +62,7 @@ $(() => { document.head.appendChild(polyfill); } - // Detect timezone for login - if (!$.cookie('timezone')) { - $.cookie('timezone', jstz.determine().name(), { path: '/' }); - } - + setTimezoneCookie(); updateParsleyConfig(); }); diff --git a/funnel/assets/js/utils/timezone.js b/funnel/assets/js/utils/timezone.js new file mode 100644 index 000000000..500be97fc --- /dev/null +++ b/funnel/assets/js/utils/timezone.js @@ -0,0 +1,15 @@ +import 'jquery.cookie'; + +// Detect timezone for login +async function setTimezoneCookie() { + if (!$.cookie('timezone')) { + let timezone = Intl.DateTimeFormat()?.resolvedOptions()?.timeZone; + if (!timezone) { + const { default: jstz } = await import('jstz'); + timezone = jstz.determine().name(); + } + $.cookie('timezone', timezone, { path: '/' }); + } +} + +export default setTimezoneCookie; From 5716919e57b2cf0214fd36cc6d8a401e847c5e65 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Thu, 13 Jul 2023 12:28:45 +0530 Subject: [PATCH 192/281] Mailer models compatible with Hasmail, with no functionality yet (#1797) These models have multiple issues that should be resolved before they are used, but we're merging as is to get the migration out of the PR and into `main`. --- funnel/models/__init__.py | 2 + funnel/models/mailer.py | 455 ++++++++++++++++++ funnel/utils/markdown/base.py | 16 +- migrations/script.py.mako | 4 +- .../versions/c794b4a3a696_mailer_models.py | 137 ++++++ 5 files changed, 609 insertions(+), 5 deletions(-) create mode 100644 funnel/models/mailer.py create mode 100644 migrations/versions/c794b4a3a696_mailer_models.py diff --git a/funnel/models/__init__.py b/funnel/models/__init__.py index 71888c0e4..d8743e3b7 100644 --- a/funnel/models/__init__.py +++ b/funnel/models/__init__.py @@ -15,6 +15,7 @@ BaseIdNameMixin, BaseMixin, BaseNameMixin, + BaseScopedIdMixin, BaseScopedIdNameMixin, BaseScopedNameMixin, CoordinatesMixin, @@ -81,6 +82,7 @@ class GeonameModel(ModelBase, DeclarativeBase): from .shortlink import * # isort:skip from .venue import * # isort:skip from .video_mixin import * # isort:skip +from .mailer import * # isort:skip from .membership_mixin import * # isort:skip from .organization_membership import * # isort:skip from .project_membership import * # isort:skip diff --git a/funnel/models/mailer.py b/funnel/models/mailer.py new file mode 100644 index 000000000..ef8c71c78 --- /dev/null +++ b/funnel/models/mailer.py @@ -0,0 +1,455 @@ +"""Mailer models.""" + +from __future__ import annotations + +import re +from datetime import datetime +from enum import IntEnum +from typing import Any, Collection, Dict, Iterator, List, Optional, Set, Union +from uuid import UUID + +from flask import Markup, escape, request +from premailer import transform as email_transform +from sqlalchemy.orm import defer + +from coaster.utils import MARKDOWN_HTML_TAGS, buid, md5sum, newsecret + +from .. import __ +from ..utils.markdown import MarkdownString, markdown_mailer +from ..utils.mustache import mustache_md +from . import ( + BaseNameMixin, + BaseScopedIdMixin, + DynamicMapped, + Mapped, + Model, + db, + relationship, + sa, +) +from .helpers import reopen +from .types import jsonb +from .user import User + +__all__ = [ + 'MailerState', + 'User', + 'Mailer', + 'MailerDraft', + 'MailerRecipient', +] + +NAMESPLIT_RE = re.compile(r'[\W\.]+') + +EMAIL_TAGS = dict(MARKDOWN_HTML_TAGS) +for _key in EMAIL_TAGS: + EMAIL_TAGS[_key].append('class') + EMAIL_TAGS[_key].append('style') + + +class MailerState(IntEnum): + """Send state for :class:`Mailer`.""" + + DRAFT = 0 + QUEUED = 1 + SENDING = 2 + SENT = 3 + + __titles__ = { + DRAFT: __("Draft"), + QUEUED: __("Queued"), + SENDING: __("Sending"), + SENT: __("Sent"), + } + + def __init__(self, value: int) -> None: + self.title = self.__titles__[value] + + +class Mailer(BaseNameMixin, Model): + """A mailer sent via email to multiple recipients.""" + + __tablename__ = 'mailer' + + user_uuid: Mapped[UUID] = sa.orm.mapped_column(sa.ForeignKey('user.uuid')) + user: Mapped[User] = relationship(User, back_populates='mailers') + status: Mapped[int] = sa.orm.mapped_column( + sa.Integer, nullable=False, default=MailerState.DRAFT + ) + _fields: Mapped[str] = sa.orm.mapped_column( + 'fields', sa.UnicodeText, nullable=False, default='' + ) + trackopens: Mapped[bool] = sa.orm.mapped_column( + sa.Boolean, nullable=False, default=False + ) + stylesheet: Mapped[str] = sa.orm.mapped_column( + sa.UnicodeText, nullable=False, default='' + ) + _cc: Mapped[str] = sa.orm.mapped_column('cc', sa.UnicodeText, nullable=True) + _bcc: Mapped[str] = sa.orm.mapped_column('bcc', sa.UnicodeText, nullable=True) + + recipients: DynamicMapped[MailerRecipient] = relationship( + lazy='dynamic', + back_populates='mailer', + cascade='all, delete-orphan', + order_by='(MailerRecipient.draft_id, MailerRecipient._fullname,' + ' MailerRecipient._firstname, MailerRecipient._lastname)', + ) + drafts: Mapped[List[MailerDraft]] = relationship( + back_populates='mailer', + cascade='all, delete-orphan', + order_by='MailerDraft.url_id', + ) + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + if 'name' not in kwargs: # Use random name unless one was provided + self.name = buid() + + def __repr__(self) -> str: + return f'' + + @property + def fields(self) -> Collection[str]: + """Set or return template fields.""" + flist = self._fields.split(' ') + while '' in flist: + flist.remove('') + return tuple(flist) + + @fields.setter + def fields(self, value: Collection[str]) -> None: + self._fields = ' '.join(sorted(set(value))) + + @property + def cc(self) -> str: + """Set or return CC recipients on email.""" + return self._cc + + @cc.setter + def cc(self, value: Union[str, Collection[str]]) -> None: + if isinstance(value, str): + value = [ + _l.strip() + for _l in value.replace('\r\n', '\n').replace('\r', '\n').split('\n') + if _l + ] + self._cc = '\n'.join(sorted(set(value))) + + @property + def bcc(self) -> str: + """Set or return BCC recipients on email.""" + return self._bcc + + @bcc.setter + def bcc(self, value: Union[str, Collection[str]]) -> None: + if isinstance(value, str): + value = [ + _l.strip() + for _l in value.replace('\r\n', '\n').replace('\r', '\n').split('\n') + if _l + ] + self._bcc = '\n'.join(sorted(set(value))) + + def recipients_iter(self) -> Iterator[MailerRecipient]: + """Iterate through recipients.""" + ids = [ + i.id + for i in db.session.query(MailerRecipient.id) + .filter(MailerRecipient.mailer_id == self.id) + .order_by(MailerRecipient.id) + .all() + ] + for rid in ids: + recipient = MailerRecipient.query.get(rid) + if recipient: + yield recipient + + def permissions( + self, actor: Optional[User], inherited: Optional[Set[str]] = None + ) -> Set[str]: + perms = super().permissions(actor, inherited) + if actor is not None and actor == self.user: + perms.update(['edit', 'delete', 'send', 'new-recipient', 'report']) + return perms + + def draft(self) -> Optional[MailerDraft]: + if self.drafts: + return self.drafts[-1] + return None + + def render_preview(self, text: str) -> str: + if self.stylesheet is not None and self.stylesheet.strip(): + stylesheet = f'\n' + else: + stylesheet = '' + rendered_text = Markup(stylesheet) + markdown_mailer.render(text) + if rendered_text: + # email_transform uses LXML, which does not like empty strings + return email_transform(rendered_text, base_url=request.url_root) + return '' + + +class MailerDraft(BaseScopedIdMixin, Model): + """Revision-controlled draft of mailer text (a Mustache template).""" + + __tablename__ = 'mailer_draft' + + mailer_id: Mapped[int] = sa.orm.mapped_column( + sa.ForeignKey('mailer.id'), nullable=False + ) + mailer: Mapped[Mailer] = relationship(Mailer, back_populates='drafts') + parent: Mapped[Mailer] = sa.orm.synonym('mailer') + revision_id: Mapped[int] = sa.orm.synonym('url_id') + + subject: Mapped[str] = sa.orm.mapped_column( + sa.Unicode(250), nullable=False, default="", deferred=True + ) + + template: Mapped[str] = sa.orm.mapped_column( + sa.UnicodeText, nullable=False, default="", deferred=True + ) + + __table_args__ = (sa.UniqueConstraint('mailer_id', 'url_id'),) + + def __repr__(self) -> str: + return f'' + + def get_preview(self) -> str: + return self.mailer.render_preview(self.template) + + +class MailerRecipient(BaseScopedIdMixin, Model): + """Recipient of a mailer.""" + + __tablename__ = 'mailer_recipient' + + # Mailer this recipient is a part of + mailer_id: Mapped[int] = sa.orm.mapped_column(sa.ForeignKey('mailer.id')) + mailer: Mapped[Mailer] = relationship(Mailer, back_populates='recipients') + parent: Mapped[Mailer] = sa.orm.synonym('mailer') + + _fullname: Mapped[Optional[str]] = sa.orm.mapped_column( + 'fullname', sa.Unicode(80), nullable=True + ) + _firstname: Mapped[Optional[str]] = sa.orm.mapped_column( + 'firstname', sa.Unicode(80), nullable=True + ) + _lastname: Mapped[Optional[str]] = sa.orm.mapped_column( + 'lastname', sa.Unicode(80), nullable=True + ) + _nickname: Mapped[Optional[str]] = sa.orm.mapped_column( + 'nickname', sa.Unicode(80), nullable=True + ) + + _email: Mapped[str] = sa.orm.mapped_column( + 'email', sa.Unicode(80), nullable=False, index=True + ) + md5sum: Mapped[str] = sa.orm.mapped_column( + sa.String(32), nullable=False, index=True + ) + + data: Mapped[jsonb] = sa.orm.mapped_column() + + is_sent: Mapped[bool] = sa.orm.mapped_column(default=False) + + # Support email open tracking + opentoken: Mapped[str] = sa.orm.mapped_column( + sa.Unicode(44), nullable=False, default=newsecret, unique=True + ) + opened: Mapped[bool] = sa.orm.mapped_column( + sa.Boolean, nullable=False, default=False + ) + opened_ipaddr: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.Unicode(45), nullable=True + ) + opened_first_at: Mapped[Optional[datetime]] = sa.orm.mapped_column( + sa.TIMESTAMP(timezone=True), nullable=True + ) + opened_last_at: Mapped[Optional[datetime]] = sa.orm.mapped_column( + sa.TIMESTAMP(timezone=True), nullable=True + ) + opened_count: Mapped[int] = sa.orm.mapped_column( + sa.Integer, nullable=False, default=0 + ) + + # Support RSVP if the email requires it + rsvptoken: Mapped[str] = sa.orm.mapped_column( + sa.Unicode(44), nullable=False, default=newsecret, unique=True + ) + # Y/N/M response + rsvp: Mapped[Optional[str]] = sa.orm.mapped_column(sa.Unicode(1), nullable=True) + + # Customised template for this recipient + subject: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.Unicode(250), nullable=True + ) + template: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.UnicodeText, nullable=True, deferred=True + ) + + # Rendered version of user's template, for archival + rendered_text: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.UnicodeText, nullable=True, deferred=True + ) + rendered_html: Mapped[Optional[str]] = sa.orm.mapped_column( + sa.UnicodeText, nullable=True, deferred=True + ) + + # Draft of the mailer template that the custom template is linked to (for updating + # before finalising) + draft_id: Mapped[Optional[int]] = sa.orm.mapped_column( + sa.ForeignKey('mailer_draft.id') + ) + draft: Mapped[Optional[MailerDraft]] = relationship(MailerDraft) + + __table_args__ = (sa.UniqueConstraint('mailer_id', 'url_id'),) + + def __repr__(self) -> str: + return f'' + + @property + def fullname(self) -> Optional[str]: + """Recipient's fullname, constructed from first and last names if required.""" + if self._fullname: + return self._fullname + if self._firstname: + if self._lastname: + # FIXME: Cultural assumption of name. + return f"{self._firstname} {self._lastname}" + return self._firstname + if self._lastname: + return self._lastname + return None + + @fullname.setter + def fullname(self, value: Optional[str]) -> None: + self._fullname = value + + @property + def firstname(self) -> Optional[str]: + if self._firstname: + return self._firstname + if self._fullname: + return NAMESPLIT_RE.split(self._fullname)[0] + return None + + @firstname.setter + def firstname(self, value: Optional[str]) -> None: + self._firstname = value + + @property + def lastname(self) -> Optional[str]: + if self._lastname: + return self._lastname + if self._fullname: + return NAMESPLIT_RE.split(self._fullname)[-1] + return None + + @lastname.setter + def lastname(self, value: Optional[str]) -> None: + self._lastname = value + + @property + def nickname(self) -> Optional[str]: + return self._nickname or self.firstname + + @nickname.setter + def nickname(self, value: Optional[str]) -> None: + self._nickname = value + + @property + def email(self) -> str: + return self._email + + @email.setter + def email(self, value: str) -> None: + self._email = value.lower() + self.md5sum = md5sum(value) + + @property + def revision_id(self) -> Optional[int]: + return self.draft.revision_id if self.draft else None + + def is_latest_draft(self) -> bool: + if not self.draft: + return True + return self.draft == self.mailer.draft() + + def template_data(self) -> Dict[str, Any]: + tdata = { + 'fullname': self.fullname, + 'email': self.email, + 'firstname': self.firstname, + 'lastname': self.lastname, + 'nickname': self.nickname, + 'RSVP_Y': self.url_for('rsvp', status='Y', _external=True), + 'RSVP_N': self.url_for('rsvp', status='N', _external=True), + 'RSVP_M': self.url_for('rsvp', status='M', _external=True), + } + if self.data: + tdata.update(self.data) + return tdata + + def get_rendered(self) -> MarkdownString: + """Get Mustache-rendered Markdown text.""" + if self.draft: + return mustache_md(self.template or '', self.template_data()) + draft = self.mailer.draft() + if draft is not None: + return mustache_md(draft.template or '', self.template_data()) + return MarkdownString('') + + def get_preview(self) -> str: + """Get HTML preview.""" + return self.mailer.render_preview(self.get_rendered()) + + def openmarkup(self) -> Markup: + if self.mailer.trackopens: + return Markup( + f'\n' + ) + return Markup('') + + @property + def custom_draft(self) -> bool: + """Check if this recipient has a custom draft.""" + return self.draft is not None + + @classmethod + def custom_draft_in(cls, mailer: Mailer) -> List[MailerRecipient]: + return ( + cls.query.filter( + cls.mailer == mailer, + cls.draft.isnot(None), + ) + .options( + defer(cls.created_at), + defer(cls.updated_at), + defer(cls._email), + defer(cls.md5sum), + defer(cls._fullname), + defer(cls._firstname), + defer(cls._lastname), + defer(cls.data), + defer(cls.opentoken), + defer(cls.opened), + defer(cls.rsvptoken), + defer(cls.rsvp), + defer(cls._nickname), + ) + .all() + ) + + +@reopen(User) +class __User: + mailers: Mapped[List[Mailer]] = relationship( + Mailer, back_populates='user', order_by='Mailer.updated_at.desc()' + ) diff --git a/funnel/utils/markdown/base.py b/funnel/utils/markdown/base.py index d4e675c4c..8dae459e2 100644 --- a/funnel/utils/markdown/base.py +++ b/funnel/utils/markdown/base.py @@ -37,7 +37,14 @@ ) from .tabs import render_tab -__all__ = ['MarkdownPlugin', 'MarkdownConfig'] +__all__ = [ + 'MarkdownPlugin', + 'MarkdownConfig', + 'markdown_basic', + 'markdown_document', + 'markdown_mailer', + 'markdown_inline', +] # --- Markdown dataclasses ------------------------------------------------------------- @@ -129,8 +136,11 @@ def render(self, text: Optional[str]) -> Optional[Markup]: if text is None: return None - # Replace invisible characters with spaces - text = normalize_spaces_multiline(text) + # Recast MarkdownString as a plain string and normalize all space chars + text = normalize_spaces_multiline(str(text)) + # XXX: this also replaces a tab with a single space. This will be a problem if + # the tab char has semantic meaning, such as in an embedded code block for a + # tab-sensitive syntax like a Makefile md = MarkdownIt(self.preset, self.options_update or {}) diff --git a/migrations/script.py.mako b/migrations/script.py.mako index 42ee60f4f..fb600c43f 100644 --- a/migrations/script.py.mako +++ b/migrations/script.py.mako @@ -22,13 +22,13 @@ branch_labels: Optional[Union[str, Tuple[str, ...]]] = ${repr(branch_labels)} depends_on: Optional[Union[str, Tuple[str, ...]]] = ${repr(depends_on)} -def upgrade(engine_name='') -> None: +def upgrade(engine_name: str = '') -> None: """Upgrade all databases.""" # Do not modify. Edit `upgrade_` instead globals().get(f'upgrade_{engine_name}', lambda: None)() -def downgrade(engine_name='') -> None: +def downgrade(engine_name: str = '') -> None: """Downgrade all databases.""" # Do not modify. Edit `downgrade_` instead globals().get(f'downgrade_{engine_name}', lambda: None)() diff --git a/migrations/versions/c794b4a3a696_mailer_models.py b/migrations/versions/c794b4a3a696_mailer_models.py new file mode 100644 index 000000000..496633a67 --- /dev/null +++ b/migrations/versions/c794b4a3a696_mailer_models.py @@ -0,0 +1,137 @@ +"""Mailer models. + +Revision ID: c794b4a3a696 +Revises: f346a7cc783a +Create Date: 2023-07-12 12:47:04.719705 + +""" + +from typing import Optional, Tuple, Union + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = 'c794b4a3a696' +down_revision: str = 'f346a7cc783a' +branch_labels: Optional[Union[str, Tuple[str, ...]]] = None +depends_on: Optional[Union[str, Tuple[str, ...]]] = None + + +def upgrade(engine_name: str = '') -> None: + """Upgrade all databases.""" + # Do not modify. Edit `upgrade_` instead + globals().get(f'upgrade_{engine_name}', lambda: None)() + + +def downgrade(engine_name: str = '') -> None: + """Downgrade all databases.""" + # Do not modify. Edit `downgrade_` instead + globals().get(f'downgrade_{engine_name}', lambda: None)() + + +def upgrade_() -> None: + """Upgrade database bind ''.""" + op.create_table( + 'mailer', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('created_at', sa.TIMESTAMP(timezone=True), nullable=False), + sa.Column('updated_at', sa.TIMESTAMP(timezone=True), nullable=False), + sa.Column('name', sa.Unicode(length=250), nullable=False), + sa.Column('title', sa.Unicode(length=250), nullable=False), + sa.Column('user_uuid', sa.Uuid(), nullable=False), + sa.Column('status', sa.Integer(), nullable=False), + sa.Column('fields', sa.UnicodeText(), nullable=False), + sa.Column('trackopens', sa.Boolean(), nullable=False), + sa.Column('stylesheet', sa.UnicodeText(), nullable=False), + sa.Column('cc', sa.UnicodeText(), nullable=True), + sa.Column('bcc', sa.UnicodeText(), nullable=True), + sa.ForeignKeyConstraint( + ['user_uuid'], + ['user.uuid'], + ), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('name'), + ) + op.create_table( + 'mailer_draft', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('created_at', sa.TIMESTAMP(timezone=True), nullable=False), + sa.Column('updated_at', sa.TIMESTAMP(timezone=True), nullable=False), + sa.Column('url_id', sa.Integer(), nullable=False), + sa.Column('mailer_id', sa.Integer(), nullable=False), + sa.Column('subject', sa.Unicode(length=250), nullable=False), + sa.Column('template', sa.UnicodeText(), nullable=False), + sa.ForeignKeyConstraint( + ['mailer_id'], + ['mailer.id'], + ), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('mailer_id', 'url_id'), + ) + op.create_table( + 'mailer_recipient', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('created_at', sa.TIMESTAMP(timezone=True), nullable=False), + sa.Column('updated_at', sa.TIMESTAMP(timezone=True), nullable=False), + sa.Column('url_id', sa.Integer(), nullable=False), + sa.Column('mailer_id', sa.Integer(), nullable=False), + sa.Column('fullname', sa.Unicode(length=80), nullable=True), + sa.Column('firstname', sa.Unicode(length=80), nullable=True), + sa.Column('lastname', sa.Unicode(length=80), nullable=True), + sa.Column('nickname', sa.Unicode(length=80), nullable=True), + sa.Column('email', sa.Unicode(length=80), nullable=False), + sa.Column('md5sum', sa.String(length=32), nullable=False), + sa.Column( + 'data', + sa.JSON().with_variant( + postgresql.JSONB(astext_type=sa.Text()), 'postgresql' + ), + nullable=False, + ), + sa.Column('is_sent', sa.Boolean(), nullable=False), + sa.Column('opentoken', sa.Unicode(length=44), nullable=False), + sa.Column('opened', sa.Boolean(), nullable=False), + sa.Column('opened_ipaddr', sa.Unicode(length=45), nullable=True), + sa.Column('opened_first_at', sa.TIMESTAMP(timezone=True), nullable=True), + sa.Column('opened_last_at', sa.TIMESTAMP(timezone=True), nullable=True), + sa.Column('opened_count', sa.Integer(), nullable=False), + sa.Column('rsvptoken', sa.Unicode(length=44), nullable=False), + sa.Column('rsvp', sa.Unicode(length=1), nullable=True), + sa.Column('subject', sa.Unicode(length=250), nullable=True), + sa.Column('template', sa.UnicodeText(), nullable=True), + sa.Column('rendered_text', sa.UnicodeText(), nullable=True), + sa.Column('rendered_html', sa.UnicodeText(), nullable=True), + sa.Column('draft_id', sa.Integer(), nullable=True), + sa.ForeignKeyConstraint( + ['draft_id'], + ['mailer_draft.id'], + ), + sa.ForeignKeyConstraint( + ['mailer_id'], + ['mailer.id'], + ), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('mailer_id', 'url_id'), + sa.UniqueConstraint('opentoken'), + sa.UniqueConstraint('rsvptoken'), + ) + with op.batch_alter_table('mailer_recipient', schema=None) as batch_op: + batch_op.create_index( + batch_op.f('ix_mailer_recipient_email'), ['email'], unique=False + ) + batch_op.create_index( + batch_op.f('ix_mailer_recipient_md5sum'), ['md5sum'], unique=False + ) + + +def downgrade_() -> None: + """Downgrade database bind ''.""" + with op.batch_alter_table('mailer_recipient', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_mailer_recipient_md5sum')) + batch_op.drop_index(batch_op.f('ix_mailer_recipient_email')) + + op.drop_table('mailer_recipient') + op.drop_table('mailer_draft') + op.drop_table('mailer') From 5e7ac7af96ba72687f3480ae9f100e75c3985e91 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Thu, 13 Jul 2023 12:43:50 +0530 Subject: [PATCH 193/281] Add permalinks for notification preference tabs (#1798) Co-authored-by: Kiran Jonnalagadda --- funnel/assets/js/notification_settings.js | 24 ++++++ .../notification_preferences.html.jinja2 | 12 +-- funnel/views/api/oauth.py | 8 +- funnel/views/login.py | 4 +- funnel/views/login_session.py | 83 ++++++++++++------- funnel/views/notification_preferences.py | 4 +- funnel/views/shortlink.py | 8 +- tests/unit/views/unsubscribe_short_test.py | 4 +- 8 files changed, 99 insertions(+), 48 deletions(-) diff --git a/funnel/assets/js/notification_settings.js b/funnel/assets/js/notification_settings.js index 063ba6ac1..ab4b826f7 100644 --- a/funnel/assets/js/notification_settings.js +++ b/funnel/assets/js/notification_settings.js @@ -1,8 +1,32 @@ import toastr from 'toastr'; import Form from './utils/formhelper'; +import ScrollHelper from './utils/scrollhelper'; $(() => { window.Hasgeek.notificationSettings = (config) => { + let [tab] = config.tabs; + const headerHeight = + ScrollHelper.getPageHeaderHeight() + $('.tabs-wrapper').height(); + if (window.location.hash) { + const urlHash = window.location.hash.split('#').pop(); + config.tabs.forEach((tabVal) => { + if (urlHash.includes(tabVal)) { + tab = tabVal; + } + }); + } else { + window.location.hash = tab; + } + ScrollHelper.animateScrollTo($(`#${tab}`).offset().top - headerHeight); + $(`.js-pills-tab-${tab}`).addClass('mui--is-active'); + $(`.js-pills-tab-${tab}`).find('a').attr('tabindex', 1).attr('aria-selected', true); + $(`.js-tabs-pane-${tab}`).addClass('mui--is-active'); + + $('.js-tab-anchor').on('click', function scrollToTabpane() { + const tabPane = $('.js-tab-anchor').attr('href'); + ScrollHelper.animateScrollTo($(tabPane).offset().top - headerHeight); + }); + $('.js-toggle-switch').on('change', function toggleNotifications() { const checkbox = $(this); const transport = $(this).attr('id'); diff --git a/funnel/templates/notification_preferences.html.jinja2 b/funnel/templates/notification_preferences.html.jinja2 index 26827a962..b15242744 100644 --- a/funnel/templates/notification_preferences.html.jinja2 +++ b/funnel/templates/notification_preferences.html.jinja2 @@ -24,17 +24,16 @@
    {% for transport in transports %} -
    +
    {% if transport_details[transport]['available'] %}
    @@ -96,6 +95,7 @@ $(function() { var config = { url: {{ url_for('set_notification_preference')|tojson }}, + tabs: {{ transports|tojson }}, } window.Hasgeek.notificationSettings(config); }); diff --git a/funnel/views/api/oauth.py b/funnel/views/api/oauth.py index f85f602d6..9e26a4c09 100644 --- a/funnel/views/api/oauth.py +++ b/funnel/views/api/oauth.py @@ -25,11 +25,7 @@ from ...registry import resource_registry from ...typing import ReturnView from ...utils import abort_null, make_redirect_url -from ..login_session import ( - reload_for_cookies, - requires_client_login, - requires_login_no_message, -) +from ..login_session import reload_for_cookies, requires_client_login, requires_login from .resource import get_userinfo @@ -175,7 +171,7 @@ def oauth_auth_error( @app.route('/api/1/auth', methods=['GET', 'POST']) @reload_for_cookies -@requires_login_no_message +@requires_login('') def oauth_authorize() -> ReturnView: """Provide authorization endpoint for OAuth2 server.""" form = forms.Form() diff --git a/funnel/views/login.py b/funnel/views/login.py index e3d848e58..ef22781a7 100644 --- a/funnel/views/login.py +++ b/funnel/views/login.py @@ -661,7 +661,7 @@ def account_merge() -> ReturnView: # 3. Redirect user to `app` /login/hasjob?code={code} # 2. `app` /login/hasjob does: -# 1. Ask user to login if required (@requires_login_no_message) +# 1. Ask user to login if required (@requires_login('')) # 2. Verify signature of code # 3. Create a timestamped token using (nonce, user_session.buid) # 4. Redirect user to `hasjobapp` /login/callback?token={token} @@ -703,7 +703,7 @@ def hasjob_login(cookietest: bool = False) -> ReturnView: # @app.route('/login/hasjob') # @reload_for_cookies -# @requires_login_no_message # 1. Ensure user login +# @requires_login('') # 1. Ensure user login # @requestargs('code') # def login_hasjob(code): # """Process a request for login initiated from Hasjob.""" diff --git a/funnel/views/login_session.py b/funnel/views/login_session.py index 09a693507..448b78ea8 100644 --- a/funnel/views/login_session.py +++ b/funnel/views/login_session.py @@ -4,7 +4,7 @@ from datetime import timedelta from functools import wraps -from typing import Callable, Optional, Type, Union +from typing import Callable, Optional, Type, Union, overload import geoip2.errors import itsdangerous @@ -23,7 +23,7 @@ ) from furl import furl -from baseframe import _, statsd +from baseframe import _, __, statsd from baseframe.forms import render_form from coaster.auth import add_auth_attribute, current_auth, request_has_auth from coaster.utils import utcnow @@ -440,7 +440,7 @@ def decorator(f: Callable[P, T]) -> Callable[P, Union[T, ReturnResponse]]: def wrapper(*args: P.args, **kwargs: P.kwargs) -> Union[T, ReturnResponse]: """Validate user rights in a view.""" if not current_auth.is_authenticated: - flash(_("You need to be logged in for that page"), 'info') + flash(_("Confirm your phone number to continue"), 'info') return render_redirect( url_for('login', next=get_current_url()), 302 if request.method == 'GET' else 303, @@ -460,43 +460,64 @@ def wrapper(*args: P.args, **kwargs: P.kwargs) -> Union[T, ReturnResponse]: return decorator -def requires_login(f: Callable[P, T]) -> Callable[P, Union[T, ReturnResponse]]: - """Decorate a view to require login.""" +@overload +def requires_login( + __p: str, +) -> Callable[[Callable[P, T]], Callable[P, Union[T, ReturnResponse]]]: + ... - @wraps(f) - def wrapper(*args: P.args, **kwargs: P.kwargs) -> Union[T, ReturnResponse]: - add_auth_attribute('login_required', True) - if not current_auth.is_authenticated: - flash(_("You need to be logged in for that page"), 'info') - return render_redirect( - url_for('login', next=get_current_url()), - 302 if request.method == 'GET' else 303, - ) - return f(*args, **kwargs) - return wrapper +@overload +def requires_login(__p: Callable[P, T]) -> Callable[P, Union[T, ReturnResponse]]: + ... -def requires_login_no_message( - f: Callable[P, T] -) -> Callable[P, Union[T, ReturnResponse]]: +def requires_login( + __p: Union[str, Callable[P, T]] +) -> Union[ + Callable[[Callable[P, T]], Callable[P, Union[T, ReturnResponse]]], + Callable[P, Union[T, ReturnResponse]], +]: """ - Decorate a view to require login, without displaying a friendly message. + Decorate a view to require login, with a customisable message. - Used on views where the user is informed in advance that login is required. + Usage:: + + @requires_login + def view_requiring_login(): + ... + + @requires_login(__("Message to be shown")) + def view_requiring_login_with_custom_message(): + ... + + @requires_login('') + def view_requiring_login_with_no_message(): + ... """ + if callable(__p): + message = __("You need to be logged in for that page") + else: + message = __p - @wraps(f) - def wrapper(*args: P.args, **kwargs: P.kwargs) -> Union[T, ReturnResponse]: - add_auth_attribute('login_required', True) - if not current_auth.is_authenticated: - return render_redirect( - url_for('login', next=get_current_url()), - 302 if request.method == 'GET' else 303, - ) - return f(*args, **kwargs) + def decorator(f: Callable[P, T]) -> Callable[P, Union[T, ReturnResponse]]: + @wraps(f) + def wrapper(*args: P.args, **kwargs: P.kwargs) -> Union[T, ReturnResponse]: + add_auth_attribute('login_required', True) + if not current_auth.is_authenticated: + if message: # Setting an empty message will disable it + flash(message, 'info') + return render_redirect( + url_for('login', next=get_current_url()), + 302 if request.method == 'GET' else 303, + ) + return f(*args, **kwargs) - return wrapper + return wrapper + + if callable(__p): + return decorator(__p) + return decorator def save_sudo_preference_context() -> None: diff --git a/funnel/views/notification_preferences.py b/funnel/views/notification_preferences.py index 8081594a5..623e64318 100644 --- a/funnel/views/notification_preferences.py +++ b/funnel/views/notification_preferences.py @@ -66,7 +66,9 @@ class AccountNotificationView(ClassView): current_section = 'account' @route('', endpoint='notification_preferences') - @requires_login + @requires_login( + __("Your phone number or email address is required to change your preferences") + ) @render_with('notification_preferences.html.jinja2') def notification_preferences(self) -> ReturnRenderWith: """View for notification preferences.""" diff --git a/funnel/views/shortlink.py b/funnel/views/shortlink.py index cf854ab26..bb3f12cef 100644 --- a/funnel/views/shortlink.py +++ b/funnel/views/shortlink.py @@ -14,11 +14,13 @@ @shortlinkapp.route('/', endpoint='index') def shortlink_index() -> Response: + """Shortlink app doesn't have a page, so redirect to main app's index.""" return redirect(app_url_for(app, 'index'), 301) @shortlinkapp.route('/') def link(name: str) -> Response: + """Redirect from a shortlink to the full link.""" sl = Shortlink.get(name, True) if sl is None: abort(404) @@ -42,7 +44,11 @@ def link(name: str) -> Response: @unsubscribeapp.route('/', endpoint='index') def unsubscribe_index() -> Response: - return redirect(app_url_for(app, 'notification_preferences', utm_medium='sms'), 301) + """Redirect to SMS notification preferences.""" + return redirect( + app_url_for(app, 'notification_preferences', utm_medium='sms', _anchor='sms'), + 301, + ) @unsubscribeapp.route('/') diff --git a/tests/unit/views/unsubscribe_short_test.py b/tests/unit/views/unsubscribe_short_test.py index c48ea3978..0fbccdd99 100644 --- a/tests/unit/views/unsubscribe_short_test.py +++ b/tests/unit/views/unsubscribe_short_test.py @@ -13,7 +13,9 @@ def test_unsubscribe_app_index(app: Flask, unsubscribeapp: Flask) -> None: redirect_url: str = rv.location assert redirect_url.startswith(('http://', 'https://')) assert ( - app.url_for('notification_preferences', utm_medium='sms', _external=True) + app.url_for( + 'notification_preferences', utm_medium='sms', _anchor='sms', _external=True + ) == redirect_url ) From ad0668520d0d75c1763a09956c97cc1493da97b7 Mon Sep 17 00:00:00 2001 From: anishTP <119032387+anishTP@users.noreply.github.com> Date: Thu, 13 Jul 2023 13:38:53 +0530 Subject: [PATCH 194/281] Delete account card added to account settings (#1800) Co-authored-by: Kiran Jonnalagadda --- funnel/assets/sass/components/_card.scss | 6 +++++ funnel/templates/account.html.jinja2 | 28 ++++++++++++++---------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/funnel/assets/sass/components/_card.scss b/funnel/assets/sass/components/_card.scss index 711e4517b..63da0a41e 100644 --- a/funnel/assets/sass/components/_card.scss +++ b/funnel/assets/sass/components/_card.scss @@ -23,8 +23,14 @@ .card__header__title { width: 80%; + margin-top: 8px; + margin-bottom: 8px; } + .card__header--danger { + padding: $mui-grid-padding; + background: $mui-danger-color; + } .card__body { padding: $mui-grid-padding * 0.5 $mui-grid-padding; word-break: break-word; diff --git a/funnel/templates/account.html.jinja2 b/funnel/templates/account.html.jinja2 index 4398884e0..33b6c41f1 100644 --- a/funnel/templates/account.html.jinja2 +++ b/funnel/templates/account.html.jinja2 @@ -109,7 +109,7 @@
    -

    {% trans %}Connected accounts{% endtrans %}

    +

    {% trans %}Connected accounts{% endtrans %}

      @@ -145,7 +145,7 @@
      -

      {% trans %}Email addresses{% endtrans %}

      +

      {% trans %}Email addresses{% endtrans %}

      -

      {% trans %}Mobile numbers{% endtrans %}

      +

      {% trans %}Mobile numbers{% endtrans %}

      -

      +

      {% trans %}Connected apps{% endtrans %}

      @@ -306,7 +306,7 @@
      -

      +

      {% trans %}Login sessions{% endtrans %}

      @@ -369,20 +369,24 @@
      -
      - {# Disabled until feature is ready for public use
      -
      -

      {% trans %}Delete{% endtrans %}

      +
      +

      {% trans %}Delete account{% endtrans %}

      + {{ faicon(icon='exclamation-triangle', icon_size='subhead', baseline=true, css_class="mui--text-danger input-align-icon") }}
      -

      {%- trans %}{% endtrans %}

      - {% trans %}Delete my account{% endtrans %} +

      {% trans -%} + If you no longer need this account, you can delete it. If you have a duplicate account, you can merge it by adding the same phone number or email address here. No deletion necessary. + {%- endtrans %}

      +
      +
      +
      -#} +
      {%- endblock basecontent %} {% block footerscripts -%} From ffebac7e8b8961a6bca3956134096efc96b1464f Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Sat, 15 Jul 2023 01:44:03 +0530 Subject: [PATCH 195/281] Correction in checks for presence of Recaptcha field in login form (#1802) --- funnel/templates/account_formlayout.html.jinja2 | 2 +- funnel/templates/ajaxform.html.jinja2 | 2 +- funnel/templates/login.html.jinja2 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/funnel/templates/account_formlayout.html.jinja2 b/funnel/templates/account_formlayout.html.jinja2 index 226cbecc6..29cca39ee 100644 --- a/funnel/templates/account_formlayout.html.jinja2 +++ b/funnel/templates/account_formlayout.html.jinja2 @@ -81,7 +81,7 @@ }); {{ ajaxform(ref_id=ref_id, request=request, force=ajax) }} - {%- if form and form.recaptcha is defined %} + {%- if form and 'recaptcha' in form %} {% block recaptcha %}{{ recaptcha(ref_id=ref_id) }}{% endblock recaptcha %} {%- endif %} {% endblock footerscripts %} diff --git a/funnel/templates/ajaxform.html.jinja2 b/funnel/templates/ajaxform.html.jinja2 index eedd6daed..ae84b8fe7 100644 --- a/funnel/templates/ajaxform.html.jinja2 +++ b/funnel/templates/ajaxform.html.jinja2 @@ -31,7 +31,7 @@ {%- if with_chrome -%} {{ ajaxform(ref_id=ref_id, request=request, force=true) }} {%- endif -%} - {%- if form and form.recaptcha is defined %} + {%- if form and 'recaptcha' in form %} {% block recaptcha %}{% endblock recaptcha %} {%- endif %} {% endblock innerscripts %} diff --git a/funnel/templates/login.html.jinja2 b/funnel/templates/login.html.jinja2 index 31e528ce0..ca7090a4f 100644 --- a/funnel/templates/login.html.jinja2 +++ b/funnel/templates/login.html.jinja2 @@ -32,7 +32,7 @@ {% endblock afterloginbox %} {% block recaptcha %} - {%- if form and form.recaptcha is defined %} + {%- if form and 'recaptcha' in form %} {{ recaptcha(ref_id, formWrapperId='loginformwrapper', ajax=true) }} {%- endif %} {% endblock recaptcha %} From f649e211b11b6ca100b01ac4670efe00e83138e3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 22:39:37 +0530 Subject: [PATCH 196/281] [pre-commit.ci] pre-commit autoupdate (#1803) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.277 → v0.0.278](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.277...v0.0.278) - [github.com/psf/black: 23.3.0 → 23.7.0](https://github.com/psf/black/compare/23.3.0...23.7.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 853c227bf..d98e2fd06 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -44,7 +44,7 @@ repos: ] files: ^requirements/.*\.txt$ - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.277 + rev: v0.0.278 hooks: - id: ruff args: ['--fix', '--exit-non-zero-on-fix'] @@ -96,7 +96,7 @@ repos: additional_dependencies: - tomli - repo: https://github.com/psf/black - rev: 23.3.0 + rev: 23.7.0 hooks: - id: black # Mypy is temporarily disabled until the SQLAlchemy 2.0 migration is complete From 63907ac4bad3de8ddd7adcbd36edc6c463efc85b Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Tue, 18 Jul 2023 14:10:08 +0530 Subject: [PATCH 197/281] Grant ticket_participant role (#1805) --- funnel/models/sync_ticket.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/funnel/models/sync_ticket.py b/funnel/models/sync_ticket.py index 40a3afb40..bf1ced27c 100644 --- a/funnel/models/sync_ticket.py +++ b/funnel/models/sync_ticket.py @@ -591,7 +591,9 @@ class __Project: relationship( TicketParticipant, lazy='dynamic', cascade='all', back_populates='project' ), - grants_via={'user': {'participant'}}, + grants_via={ + 'user': {'participant', 'project_participant', 'ticket_participant'} + }, ) From d1e72eccde47f50325adcaf6da39112c4c920b89 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Tue, 18 Jul 2023 14:13:01 +0530 Subject: [PATCH 198/281] Change geonames download location and CLI prefix (#1806) --- .dockerignore | 3 ++- .gitignore | 3 ++- funnel/cli/geodata.py | 18 +++++++++--------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/.dockerignore b/.dockerignore index d8b7b6217..5f760dd00 100644 --- a/.dockerignore +++ b/.dockerignore @@ -25,7 +25,8 @@ funnel/static/img/fa5-packed.svg **/baseframe-packed.* # Download files -geoname_data +geoname_data/ +download/ # Dependencies build/dependencies diff --git a/.gitignore b/.gitignore index fa644f84a..ca291c340 100644 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,8 @@ node_modules baseframe-packed.* # Download files -geoname_data +geoname_data/ +download/ # Dependencies build/dependencies diff --git a/funnel/cli/geodata.py b/funnel/cli/geodata.py index b051650fc..25d0cc438 100644 --- a/funnel/cli/geodata.py +++ b/funnel/cli/geodata.py @@ -33,7 +33,7 @@ csv.field_size_limit(sys.maxsize) -geo = AppGroup('geoname', help="Process geoname data.") +geo = AppGroup('geonames', help="Process geonames data.") @dataclass @@ -412,7 +412,7 @@ def load_admin2_codes(filename: str) -> None: @geo.command('download') def download() -> None: """Download geoname data.""" - os.makedirs('geoname_data', exist_ok=True) + os.makedirs('download/geonames', exist_ok=True) for filename in ( 'countryInfo.txt', 'admin1CodesASCII.txt', @@ -422,19 +422,19 @@ def download() -> None: 'alternateNames.zip', ): downloadfile( - 'http://download.geonames.org/export/dump/', filename, 'geoname_data' + 'http://download.geonames.org/export/dump/', filename, 'download/geonames' ) @geo.command('process') def process() -> None: """Process downloaded geonames data.""" - load_country_info('geoname_data/countryInfo.txt') - load_admin1_codes('geoname_data/admin1CodesASCII.txt') - load_admin2_codes('geoname_data/admin2Codes.txt') - load_geonames('geoname_data/IN.txt') - load_geonames('geoname_data/allCountries.txt') - load_alt_names('geoname_data/alternateNames.txt') + load_country_info('download/geonames/countryInfo.txt') + load_admin1_codes('download/geonames/admin1CodesASCII.txt') + load_admin2_codes('download/geonames/admin2Codes.txt') + load_geonames('download/geonames/IN.txt') + load_geonames('download/geonames/allCountries.txt') + load_alt_names('download/geonames/alternateNames.txt') app.cli.add_command(geo) From 9336dc3fe9ce338c7e76ff7071c2995e0266c121 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Tue, 18 Jul 2023 16:21:21 +0530 Subject: [PATCH 199/281] Show the close button for ticket modal in bigger screen (#1804) --- funnel/assets/sass/components/_ticket-modal.scss | 13 +++++++++---- funnel/templates/project_layout.html.jinja2 | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/funnel/assets/sass/components/_ticket-modal.scss b/funnel/assets/sass/components/_ticket-modal.scss index 8aae71651..610772eb1 100644 --- a/funnel/assets/sass/components/_ticket-modal.scss +++ b/funnel/assets/sass/components/_ticket-modal.scss @@ -12,10 +12,6 @@ float: right; } - .tickets-wrapper__modal__body__close--hide { - display: none; - } - .tickets-wrapper__modal--show { position: fixed; top: 0; @@ -34,6 +30,9 @@ .tickets-wrapper__modal--project-page.tickets-wrapper__modal--show { top: 52px; // Below the header } + .tickets-wrapper__modal--project-page .tickets-wrapper__modal__body__close { + display: none; + } } @media (min-width: 768px) { @@ -44,6 +43,12 @@ height: 100%; background-color: rgba(0, 0, 0, 0.75); } + .tickets-wrapper__modal--project-page.tickets-wrapper__modal--show { + top: 0; + } + .tickets-wrapper__modal--project-page .tickets-wrapper__modal__body__close { + display: block; + } .tickets-wrapper__modal__body { max-width: 500px; diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index 339749325..9bbba0326 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -405,7 +405,7 @@
    From 2cc00dbadec58de8c72a7d62ea948ac47e2191f1 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Tue, 18 Jul 2023 21:31:53 +0530 Subject: [PATCH 200/281] Move geoip databases into an independent namespace (#1807) --- funnel/__init__.py | 43 +++++++++------------------- funnel/geoip.py | 54 +++++++++++++++++++++++++++++++++++ funnel/views/account.py | 35 ++++++++++++++--------- funnel/views/login_session.py | 38 +++++++++++------------- 4 files changed, 105 insertions(+), 65 deletions(-) create mode 100644 funnel/geoip.py diff --git a/funnel/__init__.py b/funnel/__init__.py index ea174f173..e912f1d61 100644 --- a/funnel/__init__.py +++ b/funnel/__init__.py @@ -3,11 +3,9 @@ from __future__ import annotations import logging -import os.path from datetime import timedelta from email.utils import parseaddr -import geoip2.database import phonenumbers from flask import Flask from flask_babel import get_locale @@ -71,14 +69,15 @@ # --- Import rest of the app ----------------------------------------------------------- from . import ( # isort:skip # noqa: F401 # pylint: disable=wrong-import-position - models, - signals, - forms, + geoip, + proxies, loginproviders, + signals, + models, transports, + forms, views, cli, - proxies, ) from .models import db, sa # isort:skip # pylint: disable=wrong-import-position @@ -88,11 +87,10 @@ # overridden with values from the environment. Python config is pending deprecation # All supported config values are listed in ``sample.env``. If an ``.env`` file is # present, it is loaded in debug and testing modes only -coaster.app.init_app(app, ['py', 'env'], env_prefix=['FLASK', 'APP_FUNNEL']) -coaster.app.init_app(shortlinkapp, ['py', 'env'], env_prefix=['FLASK', 'APP_SHORTLINK']) -coaster.app.init_app( - unsubscribeapp, ['py', 'env'], env_prefix=['FLASK', 'APP_UNSUBSCRIBE'] -) +for each_app in all_apps: + coaster.app.init_app( + each_app, ['py', 'env'], env_prefix=['FLASK', f'APP_{each_app.name.upper()}'] + ) # Legacy additional config for the main app (pending deprecation) coaster.app.load_config_from_file(app, 'hasgeekapp.py') @@ -144,33 +142,18 @@ redis_store.init_app(app) rq.init_app(app) executor.init_app(app) +geoip.geoip.init_app(app) + +# Baseframe is required for apps with UI ('funnel' theme is registered above) baseframe.init_app(app, requires=['funnel'], theme='funnel', error_handlers=False) +# Initialize available login providers from app config loginproviders.init_app(app) # Ensure FEATURED_ACCOUNTS is a list, not None if not app.config.get('FEATURED_ACCOUNTS'): app.config['FEATURED_ACCOUNTS'] = [] -# Load GeoIP2 databases -app.geoip_city = None -app.geoip_asn = None -if 'GEOIP_DB_CITY' in app.config: - if not os.path.exists(app.config['GEOIP_DB_CITY']): - app.logger.warning( - "GeoIP city database missing at %s", app.config['GEOIP_DB_CITY'] - ) - else: - app.geoip_city = geoip2.database.Reader(app.config['GEOIP_DB_CITY']) - -if 'GEOIP_DB_ASN' in app.config: - if not os.path.exists(app.config['GEOIP_DB_ASN']): - app.logger.warning( - "GeoIP ASN database missing at %s", app.config['GEOIP_DB_ASN'] - ) - else: - app.geoip_asn = geoip2.database.Reader(app.config['GEOIP_DB_ASN']) - # Turn on supported notification transports transports.init() diff --git a/funnel/geoip.py b/funnel/geoip.py new file mode 100644 index 000000000..f8612824b --- /dev/null +++ b/funnel/geoip.py @@ -0,0 +1,54 @@ +"""GeoIP databases.""" + +import os.path +from dataclasses import dataclass +from typing import Optional + +from flask import Flask +from geoip2.database import Reader +from geoip2.errors import AddressNotFoundError, GeoIP2Error +from geoip2.models import ASN, City + +__all__ = ['GeoIP', 'geoip', 'GeoIP2Error', 'AddressNotFoundError'] + + +@dataclass +class GeoIP: + """Wrapper for GeoIP2 Reader.""" + + city_db: Optional[Reader] = None + asn_db: Optional[Reader] = None + + def __bool__(self) -> bool: + return self.city_db is not None or self.asn_db is not None + + def city(self, ipaddr: str) -> Optional[City]: + if self.city_db: + return self.city_db.city(ipaddr) + return None + + def asn(self, ipaddr: str) -> Optional[ASN]: + if self.asn_db: + return self.asn_db.asn(ipaddr) + return None + + def init_app(self, app: Flask) -> None: + if 'GEOIP_DB_CITY' in app.config: + if not os.path.exists(app.config['GEOIP_DB_CITY']): + app.logger.warning( + "GeoIP city database missing at %s", app.config['GEOIP_DB_CITY'] + ) + else: + self.city_db = Reader(app.config['GEOIP_DB_CITY']) + + if 'GEOIP_DB_ASN' in app.config: + if not os.path.exists(app.config['GEOIP_DB_ASN']): + app.logger.warning( + "GeoIP ASN database missing at %s", app.config['GEOIP_DB_ASN'] + ) + else: + self.asn_db = Reader(app.config['GEOIP_DB_ASN']) + + +# Export a singleton +geoip = GeoIP() diff --git a/funnel/views/account.py b/funnel/views/account.py index abedbb966..cbb85e3b5 100644 --- a/funnel/views/account.py +++ b/funnel/views/account.py @@ -6,7 +6,6 @@ from types import SimpleNamespace from typing import TYPE_CHECKING, Dict, List, Optional, Union -import geoip2.errors import user_agents from flask import ( abort, @@ -43,6 +42,7 @@ supported_locales, timezone_identifiers, ) +from ..geoip import GeoIP2Error, geoip from ..models import ( AccountPasswordNotification, AuthClient, @@ -243,25 +243,32 @@ def user_agent_details(obj: UserSession) -> Dict[str, str]: @UserSession.views('location') def user_session_location(obj: UserSession) -> str: """Return user's location and ISP as determined from their IP address.""" - if not app.geoip_city or not app.geoip_asn: + if obj.ipaddr == '127.0.0.1': + return _("This device") + if not geoip: return _("Unknown location") try: - city_lookup = app.geoip_city.city(obj.ipaddr) - asn_lookup = app.geoip_asn.asn(obj.ipaddr) - except geoip2.errors.GeoIP2Error: + city_lookup = geoip.city(obj.ipaddr) + asn_lookup = geoip.asn(obj.ipaddr) + except GeoIP2Error: return _("Unknown location") # ASN is not ISP, but GeoLite2 only has an ASN database. The ISP db is commercial. - return ( - ((city_lookup.city.name + ", ") if city_lookup.city.name else '') - + ( - (city_lookup.subdivisions.most_specific.iso_code + ", ") - if city_lookup.subdivisions.most_specific.iso_code - else '' + if city_lookup: + result = ( + ((city_lookup.city.name + ", ") if city_lookup.city.name else '') + + ( + (city_lookup.subdivisions.most_specific.iso_code + ", ") + if city_lookup.subdivisions.most_specific.iso_code + else '' + ) + + ((city_lookup.country.name + "; ") if city_lookup.country.name else '') ) - + ((city_lookup.country.name + "; ") if city_lookup.country.name else '') - + (asn_lookup.autonomous_system_organization or _("Unknown ISP")) - ) + else: + result = '' + if asn_lookup: + result += asn_lookup.autonomous_system_organization or _("Unknown ISP") + return result @UserSession.views('login_service') diff --git a/funnel/views/login_session.py b/funnel/views/login_session.py index 448b78ea8..d19bdb9ba 100644 --- a/funnel/views/login_session.py +++ b/funnel/views/login_session.py @@ -6,7 +6,6 @@ from functools import wraps from typing import Callable, Optional, Type, Union, overload -import geoip2.errors import itsdangerous from flask import ( Response, @@ -31,6 +30,7 @@ from .. import app from ..forms import OtpForm, PasswordForm +from ..geoip import GeoIP2Error, geoip from ..models import ( USER_SESSION_VALIDITY_PERIOD, AuthClient, @@ -255,26 +255,24 @@ def session_mark_accessed( ipaddr = (request.remote_addr or '') if ipaddr is None else ipaddr # Attempt to save geonameid and ASN from IP address try: - if app.geoip_city is not None and ( - obj.geonameid_city is None or ipaddr != obj.ipaddr - ): - city_lookup = app.geoip_city.city(ipaddr) - obj.geonameid_city = city_lookup.city.geoname_id - obj.geonameid_subdivision = ( - city_lookup.subdivisions.most_specific.geoname_id - ) - obj.geonameid_country = city_lookup.country.geoname_id - except (ValueError, geoip2.errors.GeoIP2Error): + if obj.geonameid_city is None or ipaddr != obj.ipaddr: + city_lookup = geoip.city(ipaddr) + if city_lookup: + obj.geonameid_city = city_lookup.city.geoname_id + obj.geonameid_subdivision = ( + city_lookup.subdivisions.most_specific.geoname_id + ) + obj.geonameid_country = city_lookup.country.geoname_id + except (ValueError, GeoIP2Error): obj.geonameid_city = None obj.geonameid_subdivision = None obj.geonameid_country = None try: - if app.geoip_asn is not None and ( - obj.geoip_asn is None or ipaddr != obj.ipaddr - ): - asn_lookup = app.geoip_asn.asn(ipaddr) - obj.geoip_asn = asn_lookup.autonomous_system_number - except (ValueError, geoip2.errors.GeoIP2Error): + if obj.geoip_asn is None or ipaddr != obj.ipaddr: + asn_lookup = geoip.asn(ipaddr) + if asn_lookup: + obj.geoip_asn = asn_lookup.autonomous_system_number + except (ValueError, GeoIP2Error): obj.geoip_asn = None # Save IP address and user agent if they've changed if ipaddr != obj.ipaddr: @@ -287,10 +285,8 @@ def session_mark_accessed( if user_agent != obj.user_agent: obj.user_agent = user_agent - # Use integer id instead of uuid_b58 here because statsd documentation is - # unclear on what data types a set accepts. Applies to both etsy's and telegraf. - statsd.set('users.active_sessions', obj.id, rate=1) - statsd.set('users.active_users', obj.user.id, rate=1) + statsd.set('users.active_sessions', str(obj.uuid), rate=1) + statsd.set('users.active_users', str(obj.user.uuid), rate=1) # Also add future hasjob app here From 9a18fa44421cba0cb52d7a40dce122de92908f12 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Tue, 18 Jul 2023 23:40:12 +0530 Subject: [PATCH 201/281] Enable ajax post for login form when recaptcha is not present (#1809) --- funnel/templates/password_login_form.html.jinja2 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/funnel/templates/password_login_form.html.jinja2 b/funnel/templates/password_login_form.html.jinja2 index ab744fb9b..46a69175e 100644 --- a/funnel/templates/password_login_form.html.jinja2 +++ b/funnel/templates/password_login_form.html.jinja2 @@ -6,7 +6,9 @@ method="post" class="mui-form mui-form--margins" accept-charset="UTF-8" - action="{{ action }}"> + action="{{ action }}" + {%- if not 'recaptcha' in loginform %} hx-post="{{ action }}" hx-target="#loginformwrapper" {%- endif %} + > {{ loginform.hidden_tag() }} {% if loginform.csrf_token is defined %} From f2349e62c8430c5a5f3c723f2869d4d003de3221 Mon Sep 17 00:00:00 2001 From: Amogh M Aradhya Date: Thu, 20 Jul 2023 17:44:35 +0530 Subject: [PATCH 202/281] Added Matomo keys in sample.env (#1811) Co-authored-by: Kiran Jonnalagadda --- sample.env | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sample.env b/sample.env index fc617f623..f9c49b8d5 100644 --- a/sample.env +++ b/sample.env @@ -66,6 +66,15 @@ APP_FUNNEL_FEATURED_ACCOUNTS='["first", "second"]' # --- Analytics # Google Analytics code APP_FUNNEL_GA_CODE=null +# Matomo analytics (shared config across apps; URL must have trailing slash) +FLASK_MATOMO_URL=https://... +# MATOMO_JS and MATOMO_FILE have default values; override if your installation varies +# FLASK_MATOMO_JS=matomo.js +# FLASK_MATOMO_FILE=matomo.php +# Matomo API key, used in funnel.cli.periodic.stats +FLASK_MATOMO_TOKEN=null +# Matomo site id (app-specific) +APP_FUNNEL_MATOMO_ID= # --- Redis Queue and Redis cache (use separate dbs to isolate) # Redis server host From 83a081bef04b51115b05de24c19018651fc81911 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Thu, 20 Jul 2023 17:53:46 +0530 Subject: [PATCH 203/281] Upgrade dependencies, fix one UA detection test (#1814) Requirements for Python 3.7 are now built into separate files to avoid tedious version constraints as 3.7 support disappears across packages. These additional files and `make` targets can be removed when we drop support. --- .github/workflows/pytest.yml | 6 +- .pre-commit-config.yaml | 2 + Makefile | 17 +- package-lock.json | 3452 ++++++++++++++++-------------- package.json | 6 +- requirements/base.in | 18 +- requirements/base.py37.txt | 573 +++++ requirements/base.txt | 101 +- requirements/dev.in | 1 + requirements/dev.py37.txt | 183 ++ requirements/dev.txt | 28 +- requirements/test.py37.txt | 123 ++ requirements/test.txt | 18 +- tests/unit/views/account_test.py | 5 +- 14 files changed, 2881 insertions(+), 1652 deletions(-) create mode 100644 requirements/base.py37.txt create mode 100644 requirements/dev.py37.txt create mode 100644 requirements/test.py37.txt diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index ccd7b92ef..344f441e6 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -77,7 +77,11 @@ jobs: path: ${{ env.pythonLocation }} key: ${{ matrix.os }}-${{ env.pythonLocation }}-${{ hashFiles('requirements/base.txt') }}-${{ hashFiles('requirements.txt/test.txt') }} - name: Install Python dependencies + if: ${{ matrix.python-version != '3.7' }} run: make install-python-test + - name: Install Python dependencies (3.7) + if: ${{ matrix.python-version == '3.7' }} + run: make install-python-test-37 - name: Install Node uses: actions/setup-node@v3 with: @@ -123,7 +127,7 @@ jobs: psql -h localhost -U postgres geoname_testing -c "grant all privileges on schema public to $(whoami); grant all privileges on all tables in schema public to $(whoami); grant all privileges on all sequences in schema public to $(whoami);" - name: Test with pytest run: | - pytest --gherkin-terminal-reporter -vv --showlocals --cov=funnel + pytest --disable-warnings --gherkin-terminal-reporter -vv --showlocals --cov=funnel - name: Prepare coverage report run: | mkdir -p coverage diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d98e2fd06..fa4e1101b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -41,6 +41,8 @@ repos: 'PYSEC-2022-42969', # https://github.com/pytest-dev/pytest/issues/10392 '--ignore-vuln', 'PYSEC-2023-73', # https://github.com/RedisLabs/redisraft/issues/608 + '--ignore-vuln', + 'PYSEC-2023-101', # https://github.com/pytest-dev/pytest-selenium/issues/310 ] files: ^requirements/.*\.txt$ - repo: https://github.com/astral-sh/ruff-pre-commit diff --git a/Makefile b/Makefile index 4a7a1751d..baa3d003e 100644 --- a/Makefile +++ b/Makefile @@ -72,13 +72,19 @@ deps-editable: done; deps-python: deps-editable + pip install --upgrade pip pip-tools pip-compile-multi pip-compile-multi --backtracking --use-cache +deps-python-37: deps-editable + # pip 23.2 breaks pip-tools 6, but pip-tools 7 doesn't support Python 3.7 + pip install --upgrade 'pip<23.2' pip-tools pip-compile-multi + pip-compile-multi --backtracking --use-cache -o py37.txt + deps-python-noup: pip-compile-multi --backtracking --use-cache --no-upgrade deps-python-rebuild: deps-editable - pip-compile-multi --backtracking + pip-compile-multi --backtracking --live deps-python-base: deps-editable pip-compile-multi -t requirements/base.in --backtracking --use-cache @@ -117,6 +123,15 @@ install-python-test: install-python-pip deps-editable install-python: install-python-pip deps-editable pip install --use-pep517 -r requirements/base.txt +install-python-dev-37: install-python-pip deps-editable + pip install --use-pep517 -r requirements/dev.py37.txt + +install-python-test-37: install-python-pip deps-editable + pip install --use-pep517 -r requirements/test.py37.txt + +install-python-37: install-python-pip deps-editable + pip install --use-pep517 -r requirements/base.py37.txt + install-dev: deps-editable install-python-dev install-npm assets install-test: deps-editable install-python-test install-npm assets diff --git a/package-lock.json b/package-lock.json index d43d65be7..518518f5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,7 +35,7 @@ "leaflet": "^1.7.1", "markmap": "^0.6.1", "markmap-lib": "^0.14.4", - "markmap-view": "^0.14.4", + "markmap-view": "^0.15.0", "mermaid": "^9.3.0", "muicss": "^0.10.3", "pace-js": "^1.2.4", @@ -43,7 +43,7 @@ "po2json": "^1.0.0-beta-3", "prismjs": "^1.29.0", "ractive": "^0.8.0", - "select2": "4.0.3", + "select2": "^4.0.13", "sprintf-js": "^1.1.2", "timeago.js": "^4.0.2", "toastr": "^2.1.4", @@ -64,7 +64,7 @@ "babel-eslint": "^10.0.3", "babel-loader": "^8.2.2", "clean-webpack-plugin": "^3.0.0", - "cypress": "^10.6.0", + "cypress": "^4.2.0", "dayjs": "^1.10.6", "eslint": "^7.30.0", "eslint-config-airbnb": "^18.2.1", @@ -84,6 +84,14 @@ "workbox-webpack-plugin": "^6.1.5" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -110,35 +118,35 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", + "@babel/traverse": "^7.22.8", "@babel/types": "^7.22.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.2", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -149,9 +157,9 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", "dev": true, "dependencies": { "@babel/types": "^7.22.5", @@ -188,16 +196,16 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.5", + "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -207,9 +215,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz", - "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", + "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -217,10 +225,10 @@ "@babel/helper-function-name": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "semver": "^6.3.0" + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -230,14 +238,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz", - "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -247,17 +255,16 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", - "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz", + "integrity": "sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0-0" @@ -322,22 +329,22 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { @@ -362,15 +369,14 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", - "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-wrap-function": "^7.22.9" }, "engines": { "node": ">=6.9.0" @@ -380,20 +386,20 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", - "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { @@ -421,9 +427,9 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { "@babel/types": "^7.22.5" @@ -459,14 +465,13 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", - "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", + "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { @@ -474,13 +479,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dev": true, "dependencies": { "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", + "@babel/traverse": "^7.22.6", "@babel/types": "^7.22.5" }, "engines": { @@ -501,9 +506,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", "bin": { "parser": "bin/babel-parser.js" }, @@ -822,9 +827,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", - "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", + "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", @@ -920,19 +925,19 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz", - "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "engines": { @@ -1328,9 +1333,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", - "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", + "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1579,13 +1584,13 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz", - "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", + "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", @@ -1610,13 +1615,13 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.7", "@babel/plugin-transform-async-to-generator": "^7.22.5", "@babel/plugin-transform-block-scoped-functions": "^7.22.5", "@babel/plugin-transform-block-scoping": "^7.22.5", "@babel/plugin-transform-class-properties": "^7.22.5", "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", "@babel/plugin-transform-computed-properties": "^7.22.5", "@babel/plugin-transform-destructuring": "^7.22.5", "@babel/plugin-transform-dotall-regex": "^7.22.5", @@ -1641,7 +1646,7 @@ "@babel/plugin-transform-object-rest-spread": "^7.22.5", "@babel/plugin-transform-object-super": "^7.22.5", "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.6", "@babel/plugin-transform-parameters": "^7.22.5", "@babel/plugin-transform-private-methods": "^7.22.5", "@babel/plugin-transform-private-property-in-object": "^7.22.5", @@ -1659,11 +1664,11 @@ "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", "@babel/preset-modules": "^0.1.5", "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.3", - "babel-plugin-polyfill-corejs3": "^0.8.1", - "babel-plugin-polyfill-regenerator": "^0.5.0", - "core-js-compat": "^3.30.2", - "semver": "^6.3.0" + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1695,9 +1700,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", - "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -1720,18 +1725,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", + "@babel/generator": "^7.22.7", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" @@ -1760,9 +1765,9 @@ "integrity": "sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==" }, "node_modules/@codemirror/autocomplete": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.8.0.tgz", - "integrity": "sha512-nTimZYnTYaZ5skAt+zlk8BD41GvjpWgtDni2K+BritA7Ed9A0aJWwo1ohTvwUEfHfhIVtcFSLEddVPkegw8C/Q==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.9.0.tgz", + "integrity": "sha512-Fbwm0V/Wn3BkEJZRhr0hi5BhCo5a7eBL6LYaliPjOSwCyfOpnjXY59HruSxOUNV+1OYer0Tgx1zRNQttjXyDog==", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -1800,9 +1805,9 @@ } }, "node_modules/@codemirror/lang-html": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.4.tgz", - "integrity": "sha512-NbrqEp0GUOSvhZbG6BxVcS4SzM4SvN5vkkD2sEoETHIyHLZDb9pO1z+r1L2heb6LuF4bUeBCXKjHXoSeDJHO1w==", + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.5.tgz", + "integrity": "sha512-dUCSxkIw2G+chaUfw3Gfu5kkN83vJQN8gfQDp9iEHsIZluMJA0YJveT12zg/28BJx+uPsbQ6VimKCgx3oJrZxA==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", @@ -1830,10 +1835,11 @@ } }, "node_modules/@codemirror/lang-markdown": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.1.1.tgz", - "integrity": "sha512-n87Ms6Y5UYb1UkFu8sRzTLfq/yyF1y2AYiWvaVdbBQi5WDj1tFk5N+AKA+WC0Jcjc1VxvrCCM0iizjdYYi9sFQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.2.0.tgz", + "integrity": "sha512-deKegEQVzfBAcLPqsJEa+IxotqPVwWZi90UOEvQbfa01NTAw8jNinrykuYPTULGUj+gha0ZG2HBsn4s5d64Qrg==", "dependencies": { + "@codemirror/autocomplete": "^6.7.1", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.3.0", "@codemirror/state": "^6.0.0", @@ -1856,9 +1862,9 @@ } }, "node_modules/@codemirror/lint": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.2.2.tgz", - "integrity": "sha512-kHGuynBHjqinp1Bx25D2hgH8a6Fh1m9rSmZFzBVTqPIXDIcZ6j3VI67DY8USGYpGrjrJys9R52eLxtfERGNozg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.0.tgz", + "integrity": "sha512-6VZ44Ysh/Zn07xrGkdtNfmHCbGSHZzFBdzWi0pbd7chAQ/iUcpLGX99NYRZTa7Ugqg4kEHCqiHhcZnH0gLIgSg==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -1871,23 +1877,83 @@ "integrity": "sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==" }, "node_modules/@codemirror/view": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.13.2.tgz", - "integrity": "sha512-XA/jUuu1H+eTja49654QkrQwx2CuDMdjciHcdqyasfTVo4HRlvj87rD/Qmm4HfnhwX8234FQSSA8HxEzxihX/Q==", + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.15.3.tgz", + "integrity": "sha512-chNgR8H7Ipx7AZUt0+Kknk7BCow/ron3mHd1VZdM7hQXiI79+UlWqcxpCiexTxZQ+iSkqndk3HHAclJOcjSuog==", "dependencies": { "@codemirror/state": "^6.1.4", "style-mod": "^4.0.0", "w3c-keyname": "^2.2.4" } }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "node_modules/@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", "dev": true, - "optional": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, "engines": { - "node": ">=0.1.90" + "node": ">=4" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" } }, "node_modules/@cypress/request": { @@ -1991,6 +2057,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@gera2ld/jsx-dom": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@gera2ld/jsx-dom/-/jsx-dom-2.2.2.tgz", + "integrity": "sha512-EOqf31IATRE6zS1W1EoWmXZhGfLAoO9FIlwTtHduSrBdud4npYBxYAkv8dZ5hudDPwJeeSjn40kbCL4wAzr8dA==", + "dependencies": { + "@babel/runtime": "^7.21.5" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", @@ -2039,9 +2113,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -2072,9 +2146,9 @@ "integrity": "sha512-JH4wAXCgUOcCGNekQPLhVeUtIqjH0yPBs7vvUdSjyQama9618IOKFJwkv2kcqdhF0my8hQEgCTEJU0GIgnahvA==" }, "node_modules/@lezer/css": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.2.tgz", - "integrity": "sha512-5TKMAReXukfEmIiZprDlGfZVfOOCyEStFi1YLzxclm9H3G/HHI49/2wzlRT6bQw5r7PoZVEtjTItEkb/UuZQyg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.3.tgz", + "integrity": "sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==", "dependencies": { "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" @@ -2089,9 +2163,9 @@ } }, "node_modules/@lezer/html": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.4.tgz", - "integrity": "sha512-HdJYMVZcT4YsMo7lW3ipL4NoyS2T67kMPuSVS5TgLGqmaCjEU/D6xv7zsa1ktvTK5lwk7zzF1e3eU6gBZIPm5g==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.6.tgz", + "integrity": "sha512-Kk9HJARZTc0bAnMQUqbtuhFVsB4AnteR2BFUWfZV7L/x1H0aAKz6YabrfJ2gk/BEgjh9L3hg5O4y2IDZRBdzuQ==", "dependencies": { "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", @@ -2099,31 +2173,40 @@ } }, "node_modules/@lezer/javascript": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.3.tgz", - "integrity": "sha512-k7Eo9z9B1supZ5cCD4ilQv/RZVN30eUQL+gGbr6ybrEY3avBAL5MDiYi2aa23Aj0A79ry4rJRvPAwE2TM8bd+A==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.4.tgz", + "integrity": "sha512-0BiBjpEcrt2IXrIzEAsdTLylrVhGHRqVQL3baTBx1sf4qewjIvhG1/pTUumu7W/7YR0AASjLQOQxFmo5EvNmzQ==", "dependencies": { "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "node_modules/@lezer/lr": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.6.tgz", - "integrity": "sha512-IDhcWjfxwWACnatUi0GzWBCbochfqxo3LZZlS27LbJh8RVYYXXyR5Ck9659IhkWkhSW/kZlaaiJpUO+YZTUK+Q==", + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.9.tgz", + "integrity": "sha512-XPz6dzuTHlnsbA5M2DZgjflNQ+9Hi5Swhic0RULdp3oOs3rh6bqGZolosVqN/fQIT8uNiepzINJDnS39oweTHQ==", "dependencies": { "@lezer/common": "^1.0.0" } }, "node_modules/@lezer/markdown": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.0.2.tgz", - "integrity": "sha512-8CY0OoZ6V5EzPjSPeJ4KLVbtXdLBd8V6sRCooN5kHnO28ytreEGTyrtU/zUwo/XLRzGr/e1g44KlzKi3yWGB5A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.0.5.tgz", + "integrity": "sha512-J0LRA0l21Ec6ZroaOxjxsWWm+swCOFHcnOU85Z7aH9nj3eJx5ORmtzVkWzs9e21SZrdvyIzM1gt+YF/HnqbvnA==", "dependencies": { "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0" } }, + "node_modules/@nicolo-ribaudo/semver-v6": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", + "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2235,6 +2318,26 @@ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, + "node_modules/@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "dependencies": { + "any-observable": "^0.3.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + }, + "zen-observable": { + "optional": true + } + } + }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -2253,225 +2356,225 @@ "integrity": "sha512-BZIU34bSYye0j/BFcPraiDZ5ka6MJADjcDVELGf7glr9K+iE8NYVjFslJFVWzskSxkLLyCrSPScE82/UUoBSvg==" }, "node_modules/@types/d3": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-6.7.5.tgz", - "integrity": "sha512-TUZ6zuT/KIvbHSv81kwAiO5gG5aTuoiLGnWR/KxHJ15Idy/xmGUXaaF5zMG+UMIsndcGlSHTmrvwRgdvZlNKaA==", - "dependencies": { - "@types/d3-array": "^2", - "@types/d3-axis": "^2", - "@types/d3-brush": "^2", - "@types/d3-chord": "^2", - "@types/d3-color": "^2", - "@types/d3-contour": "^2", - "@types/d3-delaunay": "^5", - "@types/d3-dispatch": "^2", - "@types/d3-drag": "^2", - "@types/d3-dsv": "^2", - "@types/d3-ease": "^2", - "@types/d3-fetch": "^2", - "@types/d3-force": "^2", - "@types/d3-format": "^2", - "@types/d3-geo": "^2", - "@types/d3-hierarchy": "^2", - "@types/d3-interpolate": "^2", - "@types/d3-path": "^2", - "@types/d3-polygon": "^2", - "@types/d3-quadtree": "^2", - "@types/d3-random": "^2", - "@types/d3-scale": "^3", - "@types/d3-scale-chromatic": "^2", - "@types/d3-selection": "^2", - "@types/d3-shape": "^2", - "@types/d3-time": "^2", - "@types/d3-time-format": "^3", - "@types/d3-timer": "^2", - "@types/d3-transition": "^2", - "@types/d3-zoom": "^2" + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", + "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" } }, "node_modules/@types/d3-array": { - "version": "2.12.4", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-2.12.4.tgz", - "integrity": "sha512-w8eN6MT6R4si/C7XCr/No07PoYp2KZmewfznKPvZLbB1yWMASCZyU6rd0zhtiuhJGaQeRiQj5ucKRvOjFsCOUw==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.5.tgz", + "integrity": "sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==" }, "node_modules/@types/d3-axis": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-2.1.3.tgz", - "integrity": "sha512-QjXjwZ0xzyrW2ndkmkb09ErgWDEYtbLBKGui73QLMFm3woqWpxptfD5Y7vqQdybMcu7WEbjZ5q+w2w5+uh2IjA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.2.tgz", + "integrity": "sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==", "dependencies": { - "@types/d3-selection": "^2" + "@types/d3-selection": "*" } }, "node_modules/@types/d3-brush": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-2.1.2.tgz", - "integrity": "sha512-DnZmjdK1ycX1CMiW9r5E3xSf1tL+bp3yob1ON8bf0xB0/odfmGXeYOTafU+2SmU1F0/dvcqaO4SMjw62onOu6A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.2.tgz", + "integrity": "sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==", "dependencies": { - "@types/d3-selection": "^2" + "@types/d3-selection": "*" } }, "node_modules/@types/d3-chord": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-2.0.3.tgz", - "integrity": "sha512-koIqSNQLPRQPXt7c55hgRF6Lr9Ps72r1+Biv55jdYR+SHJ463MsB2lp4ktzttFNmrQw/9yWthf/OmSUj5dNXKw==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.2.tgz", + "integrity": "sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==" }, "node_modules/@types/d3-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz", - "integrity": "sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" }, "node_modules/@types/d3-contour": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-2.0.4.tgz", - "integrity": "sha512-WMac1xV/mXAgkgr5dUvzsBV5OrgNZDBDpJk9s3v2SadTqGgDRirKABb2Ek2H1pFlYVH4Oly9XJGnuzxKDduqWA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.2.tgz", + "integrity": "sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==", "dependencies": { - "@types/d3-array": "^2", + "@types/d3-array": "*", "@types/geojson": "*" } }, "node_modules/@types/d3-delaunay": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-5.3.1.tgz", - "integrity": "sha512-F6itHi2DxdatHil1rJ2yEFUNhejj8+0Acd55LZ6Ggwbdoks0+DxVY2cawNj16sjCBiWvubVlh6eBMVsYRNGLew==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", + "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==" }, "node_modules/@types/d3-dispatch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-2.0.1.tgz", - "integrity": "sha512-eT2K8uG3rXkmRiCpPn0rNrekuSLdBfV83vbTvfZliA5K7dbeaqWS/CBHtJ9SQoF8aDTsWSY4A0RU67U/HcKdJQ==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.2.tgz", + "integrity": "sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==" }, "node_modules/@types/d3-drag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-2.0.2.tgz", - "integrity": "sha512-m9USoFaTgVw2mmE7vLjWTApT9dMxMlql/dl3Gj503x+1a2n6K455iDWydqy2dfCpkUBCoF82yRGDgcSk9FUEyQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.2.tgz", + "integrity": "sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==", "dependencies": { - "@types/d3-selection": "^2" + "@types/d3-selection": "*" } }, "node_modules/@types/d3-dsv": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-2.0.3.tgz", - "integrity": "sha512-15sp4Z+ZVWuZuV0QEDu4cu/0C5vlD+JYXaUMDs8JTWpTJjcrAtjyR1vVwEfbgmU5kLNOOMRTlDCYyWWFx7eh/w==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==" }, "node_modules/@types/d3-ease": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-2.0.2.tgz", - "integrity": "sha512-29Y73Tg6o6aL+3/S/kEun84m5BO4bjRNau6pMWv9N9rZHcJv/O/07mW6EjqxrePZZS64fj0wiB5LMHr4Jzf3eQ==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" }, "node_modules/@types/d3-fetch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-2.0.2.tgz", - "integrity": "sha512-sllsCSWrNdSvzOJWN5RnxkmtvW9pCttONGajSxHX9FUQ9kOkGE391xlz6VDBdZxLnpwjp3I+mipbwsaCjq4m5A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.2.tgz", + "integrity": "sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==", "dependencies": { - "@types/d3-dsv": "^2" + "@types/d3-dsv": "*" } }, "node_modules/@types/d3-force": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.4.tgz", - "integrity": "sha512-1XVRc2QbeUSL1FRVE53Irdz7jY+drTwESHIMVirCwkAAMB/yVC8ezAfx/1Alq0t0uOnphoyhRle1ht5CuPgSJQ==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.4.tgz", + "integrity": "sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==" }, "node_modules/@types/d3-format": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-2.0.2.tgz", - "integrity": "sha512-OhQPuTeeMhD9A0Ksqo4q1S9Z1Q57O/t4tTPBxBQxRB4IERnxeoEYLPe72fA/GYpPSUrfKZVOgLHidkxwbzLdJA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", + "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==" }, "node_modules/@types/d3-geo": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-2.0.4.tgz", - "integrity": "sha512-kP0LcPVN6P/42hmFt0kZm93YTscfawZo6tioL9y0Ya2l5rxaGoYrIG4zee+yJoK9cLTOc8E8S5ExqTEYVwjIkw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.3.tgz", + "integrity": "sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==", "dependencies": { "@types/geojson": "*" } }, "node_modules/@types/d3-hierarchy": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-2.0.2.tgz", - "integrity": "sha512-6PlBRwbjUPPt0ZFq/HTUyOAdOF3p73EUYots74lHMUyAVtdFSOS/hAeNXtEIM9i7qRDntuIblXxHGUMb9MuNRA==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==" }, "node_modules/@types/d3-interpolate": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-2.0.2.tgz", - "integrity": "sha512-lElyqlUfIPyWG/cD475vl6msPL4aMU7eJvx1//Q177L8mdXoVPFl1djIESF2FKnc0NyaHvQlJpWwKJYwAhUoCw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", "dependencies": { - "@types/d3-color": "^2" + "@types/d3-color": "*" } }, "node_modules/@types/d3-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-2.0.2.tgz", - "integrity": "sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" }, "node_modules/@types/d3-polygon": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-2.0.1.tgz", - "integrity": "sha512-X3XTIwBxlzRIWe4yaD1KsmcfItjSPLTGL04QDyP08jyHDVsnz3+NZJMwtD4vCaTAVpGSjbqS+jrBo8cO2V/xMA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", + "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==" }, "node_modules/@types/d3-quadtree": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-2.0.2.tgz", - "integrity": "sha512-KgWL4jlz8QJJZX01E4HKXJ9FLU94RTuObsAYqsPp8YOAcYDmEgJIQJ+ojZcnKUAnrUb78ik8JBKWas5XZPqJnQ==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", + "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==" }, "node_modules/@types/d3-random": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-2.2.1.tgz", - "integrity": "sha512-5vvxn6//poNeOxt1ZwC7QU//dG9QqABjy1T7fP/xmFHY95GnaOw3yABf29hiu5SR1Oo34XcpyHFbzod+vemQjA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==" }, "node_modules/@types/d3-scale": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz", - "integrity": "sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", + "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", "dependencies": { - "@types/d3-time": "^2" + "@types/d3-time": "*" } }, "node_modules/@types/d3-scale-chromatic": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-2.0.1.tgz", - "integrity": "sha512-3EuZlbPu+pvclZcb1DhlymTWT2W+lYsRKBjvkH2ojDbCWDYavifqu1vYX9WGzlPgCgcS4Alhk1+zapXbGEGylQ==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" }, "node_modules/@types/d3-selection": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-2.0.1.tgz", - "integrity": "sha512-3mhtPnGE+c71rl/T5HMy+ykg7migAZ4T6gzU0HxpgBFKcasBrSnwRbYV1/UZR6o5fkpySxhWxAhd7yhjj8jL7g==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.5.tgz", + "integrity": "sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==" }, "node_modules/@types/d3-shape": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-2.1.3.tgz", - "integrity": "sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz", + "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==", "dependencies": { - "@types/d3-path": "^2" + "@types/d3-path": "*" } }, "node_modules/@types/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" }, "node_modules/@types/d3-time-format": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-3.0.1.tgz", - "integrity": "sha512-5GIimz5IqaRsdnxs4YlyTZPwAMfALu/wA4jqSiuqgdbCxUZ2WjrnwANqOtoBJQgeaUTdYNfALJO0Yb0YrDqduA==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", + "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==" }, "node_modules/@types/d3-timer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-2.0.1.tgz", - "integrity": "sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" }, "node_modules/@types/d3-transition": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-2.0.2.tgz", - "integrity": "sha512-376TICEykdXOEA9uUIYpjshEkxfGwCPnkHUl8+6gphzKbf5NMnUhKT7wR59Yxrd9wtJ/rmE3SVLx6/8w4eY6Zg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.3.tgz", + "integrity": "sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==", "dependencies": { - "@types/d3-selection": "^2" + "@types/d3-selection": "*" } }, "node_modules/@types/d3-zoom": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-2.0.4.tgz", - "integrity": "sha512-2AiNBuLGScHDORzjsLnnZTlVR+wMVIHWasAGkM6UQI8wKRhpix5njRfO+yysx1FULgaNYV1cby3TttVRo/ZT9A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.3.tgz", + "integrity": "sha512-OWk1yYIIWcZ07+igN6BeoG6rqhnJ/pYe+R1qWFM2DtW49zsoSjgb9G5xB0ZXA8hh2jAzey1XuRmMSoXdKw8MDA==", "dependencies": { - "@types/d3-interpolate": "^2", - "@types/d3-selection": "^2" + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, "node_modules/@types/eslint": { @@ -2530,9 +2633,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", - "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==" + "version": "20.4.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", + "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==" }, "node_modules/@types/resolve": { "version": "1.17.1", @@ -2544,9 +2647,9 @@ } }, "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", + "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", "dev": true }, "node_modules/@types/sizzle": { @@ -2616,16 +2719,6 @@ "node": ">= 8" } }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@vue/compiler-sfc": { "version": "2.7.14", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", @@ -2845,6 +2938,15 @@ "node": ">=8" } }, + "node_modules/aggregate-error/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2904,14 +3006,6 @@ "ajv": "^6.9.1" } }, - "node_modules/almond": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/almond/-/almond-0.3.3.tgz", - "integrity": "sha512-Eh5QhyxrKnTI0OuGpwTRvzRrnu1NF3F2kbQJRwpXj/uMy0uycwqw2/RhdDrD1cBTD1JFFHFrxGIU8HQztowR0g==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -2921,18 +3015,12 @@ } }, "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/ansi-regex": { @@ -2954,6 +3042,15 @@ "node": ">=4" } }, + "node_modules/any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -3001,9 +3098,9 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/aria-query": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.2.1.tgz", - "integrity": "sha512-7uFg4b+lETFgdaJyETnILsXgnnzVnkHcgRbwbPwevm5x/LmUlt3MjczMRe1zg824iBgXZNRPTBftNYyRSKLp2g==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "dependencies": { "dequal": "^2.0.3" @@ -3112,6 +3209,26 @@ "get-intrinsic": "^1.1.3" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -3267,39 +3384,39 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", - "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz", + "integrity": "sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.4.0", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.1", + "@nicolo-ribaudo/semver-v6": "^6.3.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", - "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz", + "integrity": "sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0", - "core-js-compat": "^3.30.1" + "@babel/helper-define-polyfill-provider": "^0.4.1", + "core-js-compat": "^3.31.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", - "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz", + "integrity": "sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.0" + "@babel/helper-define-polyfill-provider": "^0.4.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -3310,30 +3427,10 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "dependencies": { "tweetnacl": "^0.14.3" @@ -3357,12 +3454,6 @@ "node": ">=8" } }, - "node_modules/blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3420,30 +3511,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -3501,9 +3568,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001505", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001505.tgz", - "integrity": "sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A==", + "version": "1.0.30001517", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", + "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", "funding": [ { "type": "opencollective", @@ -3595,19 +3662,10 @@ } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true }, "node_modules/clean-stack": { "version": "2.2.0", @@ -3635,30 +3693,31 @@ } }, "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "dev": true, "dependencies": { - "string-width": "^4.2.0" + "object-assign": "^4.1.0", + "string-width": "^2.1.1" }, "engines": { - "node": "10.* || >= 12.*" + "node": ">=6" }, "optionalDependencies": { - "@colors/colors": "1.5.0" + "colors": "^1.1.2" } }, "node_modules/cli-truncate": { @@ -3734,6 +3793,32 @@ "node": ">=12" } }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -3756,6 +3841,15 @@ "node": ">=6" } }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -3775,6 +3869,16 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -3788,9 +3892,9 @@ } }, "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, "engines": { "node": ">= 6" @@ -3816,6 +3920,21 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "node_modules/concat-with-sourcemaps": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", @@ -3909,12 +4028,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.31.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", - "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", + "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", "dev": true, "dependencies": { - "browserslist": "^4.21.5" + "browserslist": "^4.21.9" }, "funding": { "type": "opencollective", @@ -3967,129 +4086,57 @@ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "node_modules/cypress": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", - "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-4.12.1.tgz", + "integrity": "sha512-9SGIPEmqU8vuRA6xst2CMTYd9sCFCxKSzrHt0wr+w2iAQMCIIsXsQ5Gplns1sT6LDbZcmLv6uehabAOl3fhc9Q==", "dev": true, "hasInstallScript": true, "dependencies": { - "@cypress/request": "^2.88.10", + "@cypress/listr-verbose-renderer": "^0.4.1", + "@cypress/request": "^2.88.5", "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", - "@types/sinonjs__fake-timers": "8.1.1", + "@types/sinonjs__fake-timers": "^6.0.1", "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", + "arch": "^2.1.2", "bluebird": "^3.7.2", - "buffer": "^5.6.0", "cachedir": "^2.3.0", - "chalk": "^4.1.0", + "chalk": "^2.4.2", "check-more-types": "^2.24.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "cli-table3": "~0.5.1", + "commander": "^4.1.1", "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "eventemitter2": "6.4.7", - "execa": "4.1.0", + "debug": "^4.1.1", + "eventemitter2": "^6.4.2", + "execa": "^1.0.0", "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", + "extract-zip": "^1.7.0", + "fs-extra": "^8.1.0", "getos": "^3.2.1", - "is-ci": "^3.0.0", - "is-installed-globally": "~0.4.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.2", "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "listr": "^0.14.3", + "lodash": "^4.17.19", + "log-symbols": "^3.0.0", + "minimist": "^1.2.5", + "moment": "^2.27.0", "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "proxy-from-env": "1.0.0", + "pretty-bytes": "^5.3.0", + "ramda": "~0.26.1", "request-progress": "^3.0.0", - "semver": "^7.3.2", - "supports-color": "^8.1.1", - "tmp": "~0.2.1", + "supports-color": "^7.1.0", + "tmp": "~0.1.0", "untildify": "^4.0.0", + "url": "^0.11.0", "yauzl": "^2.10.0" }, "bin": { "cypress": "bin/cypress" }, "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.51", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.51.tgz", - "integrity": "sha512-P9bsdGFPpVtofEKlhWMVS2qqx1A/rt9QBfihWlklfHHpUpjtYse5AzFz6j4DWrARLYh6gRnw9+5+DJcrq3KvBA==", - "dev": true - }, - "node_modules/cypress/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cypress/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "node": ">=8.0.0" } }, - "node_modules/cypress/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/cypress/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4099,54 +4146,18 @@ "node": ">=8" } }, - "node_modules/cypress/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cypress/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/cypress/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, - "node_modules/cypress/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/cytoscape": { "version": "3.25.0", "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.25.0.tgz", @@ -4645,10 +4656,16 @@ "node": ">=0.10" } }, + "node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, "node_modules/dayjs": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz", - "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==" + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" }, "node_modules/debug": { "version": "4.3.4", @@ -4824,9 +4841,18 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.435", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.435.tgz", - "integrity": "sha512-B0CBWVFhvoQCW/XtjRzgrmqcgVWg6RXOEM/dK59+wFV93BFGR6AeNKc4OyhM+T3IhJaOOG8o/V+33Y2mwJWtzw==" + "version": "1.4.466", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.466.tgz", + "integrity": "sha512-TSkRvbXRXD8BwhcGlZXDsbI2lRoP8dvqR7LQnqQNk9KxXBc4tG8O+rTuXgTyIpEdiqSGKEBSqrxdqEntnjNncA==" + }, + "node_modules/elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/elkjs": { "version": "0.8.2", @@ -4904,9 +4930,9 @@ } }, "node_modules/envinfo": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.9.0.tgz", - "integrity": "sha512-RODB4txU+xImYDemN5DqaKC0CHk05XSVkOX4pq0hK26Qx+1LChkuOyUDlGEjYb3ACr0n9qBhFjg37hQuJvpkRQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -4916,18 +4942,19 @@ } }, "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -4947,14 +4974,18 @@ "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", "safe-regex-test": "^1.0.0", "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -5673,9 +5704,9 @@ } }, "node_modules/eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", "dev": true }, "node_modules/events": { @@ -5687,76 +5718,157 @@ } }, "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=6" } }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "dependencies": { - "pify": "^2.2.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "engines": { - "node": ">=4" + "node": ">=4.8" } }, - "node_modules/executable/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "node_modules/execa/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "node": ">=0.10.0" } }, - "node_modules/extsprintf": { + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/executable/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", @@ -5777,9 +5889,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -5844,18 +5956,16 @@ } }, "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/file-entry-cache": { @@ -6050,18 +6160,17 @@ } }, "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=10" + "node": ">=6 <7 || >=8" } }, "node_modules/fs.realpath": { @@ -6160,18 +6269,15 @@ "dev": true }, "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "dependencies": { "pump": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/get-symbol-description": { @@ -6273,15 +6379,15 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", "dev": true, "dependencies": { - "ini": "2.0.0" + "ini": "1.3.7" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6311,13 +6417,13 @@ } }, "node_modules/globby": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.0.tgz", - "integrity": "sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dependencies": { "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" }, @@ -6384,6 +6490,27 @@ "node": ">= 0.4.0" } }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -6458,9 +6585,12 @@ "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" }, "node_modules/htmx.org": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-1.9.2.tgz", - "integrity": "sha512-ZGbucKcalQyXdGUl+4Zt3xdRDPmNy70yNhMyDG1eDYUm/ImxmSo2rhIBDa53XitrAVhA+/CGgry+wJ1SO77wrA==" + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-1.9.3.tgz", + "integrity": "sha512-gsOttHnAcs/mXivSSYAIPF7hwksGjobb65MyZ46Csj2sJa1bS21Pfn5iag1DTm3GQ1Gxxx2/hlehKo6qfkW1Eg==", + "engines": { + "node": "15.x" + } }, "node_modules/http-signature": { "version": "1.3.6", @@ -6477,12 +6607,12 @@ } }, "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true, "engines": { - "node": ">=8.12.0" + "node": ">=14.18.0" } }, "node_modules/husky": { @@ -6517,26 +6647,6 @@ "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", "dev": true }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -6546,9 +6656,9 @@ } }, "node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz", + "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==", "dev": true }, "node_modules/import-fresh": { @@ -6594,12 +6704,12 @@ } }, "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/inflight": { @@ -6617,13 +6727,10 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true }, "node_modules/internal-slot": { "version": "1.0.5", @@ -6723,12 +6830,12 @@ } }, "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "dependencies": { - "ci-info": "^3.2.0" + "ci-info": "^2.0.0" }, "bin": { "is-ci": "bin.js" @@ -6793,16 +6900,16 @@ } }, "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", "dev": true, "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6858,6 +6965,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "dependencies": { + "symbol-observable": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -6912,6 +7031,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -6950,15 +7075,12 @@ } }, "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/is-string": { @@ -6992,16 +7114,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -7016,18 +7134,6 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -7203,11 +7309,6 @@ "resolved": "https://registry.npmjs.org/jquery-modal/-/jquery-modal-0.9.2.tgz", "integrity": "sha512-Bx6jTBuiUbdywriWd0UAZK9v7FKEDCOD5uRh47qd4coGvx+dG4w8cOGe4TG2OoR1dNrXn6Aqaeu8MAA+Oz7vOw==" }, - "node_modules/jquery-mousewheel": { - "version": "3.1.13", - "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", - "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==" - }, "node_modules/jquery-textcomplete": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/jquery-textcomplete/-/jquery-textcomplete-1.8.5.tgz", @@ -7316,13 +7417,10 @@ } }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -7365,22 +7463,24 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz", + "integrity": "sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==", "dev": true, "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { "node": ">=4.0" } }, "node_modules/katex": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.7.tgz", - "integrity": "sha512-Xk9C6oGKRwJTfqfIbtr0Kes9OSv6IFsuhFGc7tW4urlpMJtuh+7YhzU6YEG9n8gmWKcMAFzkp7nr+r69kV0zrA==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-ftuDnJbcbOckGY11OO+zg3OofESlbR5DRl2cmN8HeWeeFIV7wTXvAOx8kEjZjobhA+9wh2fbKeO6cdcA9Mnovg==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -7479,9 +7579,9 @@ } }, "node_modules/lint-staged": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.2.tgz", - "integrity": "sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA==", + "version": "13.2.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.3.tgz", + "integrity": "sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==", "dev": true, "dependencies": { "chalk": "5.2.0", @@ -7508,21 +7608,6 @@ "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/lint-staged/node_modules/chalk": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", @@ -7535,24 +7620,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/lint-staged/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/lint-staged/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/lint-staged/node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", @@ -7597,24 +7664,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/lint-staged/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/lint-staged/node_modules/is-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", @@ -7627,53 +7676,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/listr2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", - "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/mimic-fn": { + "node_modules/lint-staged/node_modules/path-key": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "engines": { "node": ">=12" @@ -7682,106 +7718,262 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "node_modules/listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", "dev": true, "dependencies": { - "path-key": "^4.0.0" + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=6" + } + }, + "node_modules/listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "listr": "^0.14.2" } }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/listr-update-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "dependencies": { - "mimic-fn": "^4.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "dependencies": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/lint-staged/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/listr-update-renderer/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "number-is-nan": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "dependencies": { + "chalk": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/lint-staged/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/listr-update-renderer/node_modules/slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", "dev": true, "engines": { - "node": ">=12" + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/lint-staged/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "node_modules/listr-update-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/lint-staged/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/listr-update-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "engines": { - "node": ">=12" + "node": ">=0.8.0" + } + }, + "node_modules/listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" } }, "node_modules/listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", + "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", "dev": true, "dependencies": { "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", + "colorette": "^2.0.19", "log-update": "^4.0.0", "p-map": "^4.0.0", "rfdc": "^1.3.0", - "rxjs": "^7.5.1", + "rxjs": "^7.8.0", "through": "^2.3.8", "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=10.0.0" + "node": "^14.13.1 || >=16.0.0" }, "peerDependencies": { "enquirer": ">= 2.3.0 < 3" @@ -7792,6 +7984,21 @@ } } }, + "node_modules/listr2/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/listr2/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7807,6 +8014,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/listr2/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/listr2/node_modules/cli-truncate": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", @@ -7841,6 +8060,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/listr2/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -7850,13 +8075,16 @@ "node": ">=8" } }, - "node_modules/listr2/node_modules/p-map": { + "node_modules/listr2/node_modules/log-update": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "engines": { "node": ">=10" @@ -7865,10 +8093,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "node_modules/listr2/node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "dependencies": { "ansi-styles": "^4.0.0", @@ -7876,15 +8104,139 @@ "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "node_modules/listr2/node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=6.11.5" + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/listr2/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + }, + "node_modules/listr2/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" } }, "node_modules/loader-utils": { @@ -7974,180 +8326,109 @@ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" }, "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "chalk": "^2.4.2" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/log-update/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "restore-cursor": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "node_modules/log-update/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/log-update/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "mimic-fn": "^1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/log-update/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/log-update/node_modules/slice-ansi": { + "node_modules/log-update/node_modules/strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-regex": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=4" } }, "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/loose-envify": { @@ -8177,419 +8458,169 @@ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/markmap": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/markmap/-/markmap-0.6.1.tgz", - "integrity": "sha512-pjlp/nAisQ8/YxPhW7i+eDjtMlUQF6Rr27qzt+EiSYUYzYFkq9HEKHso1KgJRocexLahqr2+QO0umXDiGkfIPg==", - "dependencies": { - "d3": "3.5.6", - "remarkable": "1.7.4" - } - }, - "node_modules/markmap-common": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/markmap-common/-/markmap-common-0.14.2.tgz", - "integrity": "sha512-uGk++7mh237YneJRn9BH/KMbc1ImvMSlvOHOXqK9TyFP+NqQ0+ZYYKYXdTRyozzcMMtz0U0fb00k3Z7FNkAu1g==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.12.1" - } - }, - "node_modules/markmap-lib": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/markmap-lib/-/markmap-lib-0.14.4.tgz", - "integrity": "sha512-tyXhpER0XdQe/sxWOjMVshbPcfrcNnV5MzdjxVGUUovep1jxFuuBWS5Cp7z41pzUpW1+56Mxb7Vgp4Psme3sSw==", - "dependencies": { - "@babel/runtime": "^7.18.9", - "js-yaml": "^4.1.0", - "katex": "^0.16.0", - "prismjs": "^1.28.0", - "remarkable": "^2.0.1", - "remarkable-katex": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "markmap-common": "*" - } - }, - "node_modules/markmap-lib/node_modules/autolinker": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", - "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", - "dependencies": { - "tslib": "^2.3.0" - } - }, - "node_modules/markmap-lib/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/markmap-lib/node_modules/js-yaml/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/markmap-lib/node_modules/remarkable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", - "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", - "dependencies": { - "argparse": "^1.0.10", - "autolinker": "^3.11.0" - }, - "bin": { - "remarkable": "bin/remarkable.js" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/markmap-view": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.14.4.tgz", - "integrity": "sha512-SHG5FmqIjGiWjAn4FJ7FgzbPN9c0XPYEFu/RV7c3ZyWuKNL1YZRbwROjkElN5UXaMDhjlieoxnWJIDKp3vPRAA==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@types/d3": "^6.0.0", - "d3": "^6.2.0", - "d3-flextree": "^2.1.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "markmap-common": "*" - } - }, - "node_modules/markmap-view/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/markmap-view/node_modules/d3": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-6.7.0.tgz", - "integrity": "sha512-hNHRhe+yCDLUG6Q2LwvR/WdNFPOJQ5VWqsJcwIYVeI401+d2/rrCjxSXkiAdIlpx7/73eApFB4Olsmh3YN7a6g==", - "dependencies": { - "d3-array": "2", - "d3-axis": "2", - "d3-brush": "2", - "d3-chord": "2", - "d3-color": "2", - "d3-contour": "2", - "d3-delaunay": "5", - "d3-dispatch": "2", - "d3-drag": "2", - "d3-dsv": "2", - "d3-ease": "2", - "d3-fetch": "2", - "d3-force": "2", - "d3-format": "2", - "d3-geo": "2", - "d3-hierarchy": "2", - "d3-interpolate": "2", - "d3-path": "2", - "d3-polygon": "2", - "d3-quadtree": "2", - "d3-random": "2", - "d3-scale": "3", - "d3-scale-chromatic": "2", - "d3-selection": "2", - "d3-shape": "2", - "d3-time": "2", - "d3-time-format": "3", - "d3-timer": "2", - "d3-transition": "2", - "d3-zoom": "2" - } - }, - "node_modules/markmap-view/node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "dependencies": { - "internmap": "^1.0.0" - } - }, - "node_modules/markmap-view/node_modules/d3-axis": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-2.1.0.tgz", - "integrity": "sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw==" - }, - "node_modules/markmap-view/node_modules/d3-brush": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-2.1.0.tgz", - "integrity": "sha512-cHLLAFatBATyIKqZOkk/mDHUbzne2B3ZwxkzMHvFTCZCmLaXDpZRihQSn8UNXTkGD/3lb/W2sQz0etAftmHMJQ==", - "dependencies": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" - } - }, - "node_modules/markmap-view/node_modules/d3-chord": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-2.0.0.tgz", - "integrity": "sha512-D5PZb7EDsRNdGU4SsjQyKhja8Zgu+SHZfUSO5Ls8Wsn+jsAKUUGkcshLxMg9HDFxG3KqavGWaWkJ8EpU8ojuig==", - "dependencies": { - "d3-path": "1 - 2" - } - }, - "node_modules/markmap-view/node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" - }, - "node_modules/markmap-view/node_modules/d3-contour": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-2.0.0.tgz", - "integrity": "sha512-9unAtvIaNk06UwqBmvsdHX7CZ+NPDZnn8TtNH1myW93pWJkhsV25JcgnYAu0Ck5Veb1DHiCv++Ic5uvJ+h50JA==", - "dependencies": { - "d3-array": "2" - } - }, - "node_modules/markmap-view/node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", - "dependencies": { - "delaunator": "4" - } - }, - "node_modules/markmap-view/node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "node_modules/markmap-view/node_modules/d3-drag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", - "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", - "dependencies": { - "d3-dispatch": "1 - 2", - "d3-selection": "2" - } - }, - "node_modules/markmap-view/node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", - "dependencies": { - "commander": "2", - "iconv-lite": "0.4", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" - } - }, - "node_modules/markmap-view/node_modules/d3-ease": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", - "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" - }, - "node_modules/markmap-view/node_modules/d3-fetch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-2.0.0.tgz", - "integrity": "sha512-TkYv/hjXgCryBeNKiclrwqZH7Nb+GaOwo3Neg24ZVWA3MKB+Rd+BY84Nh6tmNEMcjUik1CSUWjXYndmeO6F7sw==", - "dependencies": { - "d3-dsv": "1 - 2" - } - }, - "node_modules/markmap-view/node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", - "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" - } - }, - "node_modules/markmap-view/node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" - }, - "node_modules/markmap-view/node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", - "dependencies": { - "d3-array": "^2.5.0" + "sourcemap-codec": "^1.4.8" } }, - "node_modules/markmap-view/node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" - }, - "node_modules/markmap-view/node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "dependencies": { - "d3-color": "1 - 2" + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/markmap-view/node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" - }, - "node_modules/markmap-view/node_modules/d3-polygon": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-2.0.0.tgz", - "integrity": "sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ==" - }, - "node_modules/markmap-view/node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" - }, - "node_modules/markmap-view/node_modules/d3-random": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-2.2.2.tgz", - "integrity": "sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw==" - }, - "node_modules/markmap-view/node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "node_modules/markmap": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/markmap/-/markmap-0.6.1.tgz", + "integrity": "sha512-pjlp/nAisQ8/YxPhW7i+eDjtMlUQF6Rr27qzt+EiSYUYzYFkq9HEKHso1KgJRocexLahqr2+QO0umXDiGkfIPg==", "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "d3": "3.5.6", + "remarkable": "1.7.4" } }, - "node_modules/markmap-view/node_modules/d3-scale-chromatic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz", - "integrity": "sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA==", + "node_modules/markmap-common": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/markmap-common/-/markmap-common-0.15.0.tgz", + "integrity": "sha512-dCE9AH13QPYIs2e44axzgAWHDy1MbXXaYpKB9YFwsmuunfU02aU+3DkKyRthOgE9jIl8PsuKd5SkM2F+INIKjg==", + "peer": true, "dependencies": { - "d3-color": "1 - 2", - "d3-interpolate": "1 - 2" + "@babel/runtime": "^7.22.6", + "@gera2ld/jsx-dom": "^2.2.2", + "npm2url": "^0.2.0" } }, - "node_modules/markmap-view/node_modules/d3-selection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", - "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" - }, - "node_modules/markmap-view/node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "node_modules/markmap-lib": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/markmap-lib/-/markmap-lib-0.14.4.tgz", + "integrity": "sha512-tyXhpER0XdQe/sxWOjMVshbPcfrcNnV5MzdjxVGUUovep1jxFuuBWS5Cp7z41pzUpW1+56Mxb7Vgp4Psme3sSw==", "dependencies": { - "d3-path": "1 - 2" + "@babel/runtime": "^7.18.9", + "js-yaml": "^4.1.0", + "katex": "^0.16.0", + "prismjs": "^1.28.0", + "remarkable": "^2.0.1", + "remarkable-katex": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "markmap-common": "*" } }, - "node_modules/markmap-view/node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "node_modules/markmap-lib/node_modules/autolinker": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", + "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", "dependencies": { - "d3-array": "2" + "tslib": "^2.3.0" } }, - "node_modules/markmap-view/node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "node_modules/markmap-lib/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { - "d3-time": "1 - 2" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/markmap-view/node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "node_modules/markmap-lib/node_modules/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/markmap-view/node_modules/d3-transition": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", - "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", + "node_modules/markmap-lib/node_modules/remarkable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", + "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", "dependencies": { - "d3-color": "1 - 2", - "d3-dispatch": "1 - 2", - "d3-ease": "1 - 2", - "d3-interpolate": "1 - 2", - "d3-timer": "1 - 2" + "argparse": "^1.0.10", + "autolinker": "^3.11.0" }, - "peerDependencies": { - "d3-selection": "2" + "bin": { + "remarkable": "bin/remarkable.js" + }, + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/markmap-view/node_modules/d3-zoom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", - "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", + "node_modules/markmap-lib/node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + }, + "node_modules/markmap-view": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.15.0.tgz", + "integrity": "sha512-enHwTAgaA7QOzMWzbVNWCT+ZL+YL6MRyLff/7d6DbAdFIAeutFHv5SKMHiiX4FZxlVJAFTGQqrYMNtRRAtnbcQ==", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" + "@babel/runtime": "^7.22.6", + "@gera2ld/jsx-dom": "^2.2.2", + "@types/d3": "^7.4.0", + "d3": "^7.8.5", + "d3-flextree": "^2.1.2" + }, + "peerDependencies": { + "markmap-common": "*" } }, - "node_modules/markmap-view/node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "node_modules/markmap-view/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/markmap-view/node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/markmap-view/node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + "node_modules/markmap-view/node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -8715,12 +8746,15 @@ } }, "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/minimatch": { @@ -8743,6 +8777,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -8786,10 +8841,16 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -8806,9 +8867,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==" + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, "node_modules/non-layered-tidy-tree-layout": { "version": "2.0.2", @@ -8824,15 +8885,39 @@ } }, "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "path-key": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm2url": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/npm2url/-/npm2url-0.2.0.tgz", + "integrity": "sha512-Zi5Bgsf40i6XziCZEbFfraAiQNIa8TqZNjx0GzsHZ0br3e9rxbVllYvAIdUkOs1nPx6DPqFWakTbY6dINUz81w==", + "peer": true + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object-assign": { @@ -8950,31 +9035,25 @@ } }, "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -8986,6 +9065,15 @@ "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", "dev": true }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -9209,9 +9297,9 @@ } }, "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "version": "8.4.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", + "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", "funding": [ { "type": "opencollective", @@ -9314,12 +9402,6 @@ "react-is": "^16.13.1" } }, - "node_modules/proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true - }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -9383,6 +9465,12 @@ "resolved": "https://registry.npmjs.org/ractive/-/ractive-0.8.14.tgz", "integrity": "sha512-oEYRyM2VbHL1bcymhLFXb8SK8htd4MPfgWdqJADaUTy3+0K4/5PfEw8szj6rWe2N2asJ1jNNdYqkvIWca1M9dg==" }, + "node_modules/ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", + "dev": true + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -9652,16 +9740,16 @@ } }, "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/reusify": { @@ -9799,14 +9887,41 @@ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9846,9 +9961,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.63.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.4.tgz", - "integrity": "sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ==", + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.0.tgz", + "integrity": "sha512-m7YtAGmQta9uANIUJwXesAJMSncqH+3INc8kdVXs6eV6GUC8Qu2IYKQSN8PRLgiQfpca697G94klm2leYMxSHw==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -9918,13 +10033,9 @@ } }, "node_modules/select2": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.3.tgz", - "integrity": "sha512-VrrDb1ZYi+tkiqbjSQzgaQ6BcltynTfp/2gYrvV32TyvrqTOtiMzH3YlPlhtuO1y+1JDy9gc9vTznFhnsiRQVA==", - "dependencies": { - "almond": "~0.3.1", - "jquery-mousewheel": "~3.1.13" - } + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" }, "node_modules/semver": { "version": "6.3.1", @@ -10123,29 +10234,46 @@ } }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" } }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/string.prototype.matchall": { @@ -10255,13 +10383,25 @@ "node": ">=10" } }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -10281,9 +10421,9 @@ "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==" }, "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", + "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==" }, "node_modules/supports-color": { "version": "5.5.0", @@ -10308,6 +10448,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", @@ -10368,6 +10517,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/table/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -10397,6 +10551,19 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -10432,22 +10599,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "node_modules/tempy/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/terser": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.1.tgz", - "integrity": "sha512-j1n0Ao919h/Ai5r43VAnfV/7azUYW43GPxK7qSATzrsERfW7+y2QW9Cp9ufnRF5CQUWbnLSo7UJokSWCqg4tsQ==", + "version": "5.19.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.1.tgz", + "integrity": "sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -10512,9 +10679,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "bin": { "acorn": "bin/acorn" }, @@ -10559,30 +10726,15 @@ "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" }, "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", "dev": true, "dependencies": { - "rimraf": "^3.0.0" + "rimraf": "^2.6.3" }, "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/tmp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6" } }, "node_modules/to-fast-properties": { @@ -10690,9 +10842,10 @@ } }, "node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/tunnel-agent": { "version": "0.6.0", @@ -10724,9 +10877,9 @@ } }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "dev": true, "engines": { "node": ">=10" @@ -10735,6 +10888,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", @@ -10749,6 +10953,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -10817,12 +11027,12 @@ } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">= 4.0.0" } }, "node_modules/untildify": { @@ -10881,6 +11091,37 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", + "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/url/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -11012,6 +11253,11 @@ "node": ">=10" } }, + "node_modules/vega-embed/node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + }, "node_modules/vega-embed/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -11134,9 +11380,9 @@ } }, "node_modules/vega-lite": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-5.9.3.tgz", - "integrity": "sha512-S1B81aOkMC/iDU2skeS7ROaIaJuxvGx1PW1LO9ECe2dsrfsaDHk20SGsEhPSKZAgSxOghJ0+AuYdU0glRNjN1Q==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-5.14.0.tgz", + "integrity": "sha512-BlGSp+nZNmBO0ukRAA86so/6KfUEIN0Mqmo2xo2Tv6UTxLlfh3oGvsKh6g6283meJickwntR+K4qUOIVnGUoyg==", "dependencies": { "@types/clone": "~2.1.1", "clone": "~2.1.2", @@ -11162,6 +11408,11 @@ "vega": "^5.24.0" } }, + "node_modules/vega-lite/node_modules/tslib": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" + }, "node_modules/vega-loader": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.1.tgz", @@ -11276,9 +11527,9 @@ } }, "node_modules/vega-themes": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.13.0.tgz", - "integrity": "sha512-SVr/YDqGhkVDO2bRS62TeGyr1dVuXaNLJNCu42b1tbcnnmX2m9cyaq8G6gcputPeibArvHT1MsTF7MUzboOIWg==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.14.0.tgz", + "integrity": "sha512-9dLmsUER7gJrDp8SEYKxBFmXmpyzLlToKIjxq3HCvYjz8cnNrRGyAhvIlKWOB3ZnGvfYV+vnv3ZRElSNL31nkA==", "peerDependencies": { "vega": "*", "vega-lite": "*" @@ -11444,9 +11695,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.87.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz", - "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -11594,9 +11845,9 @@ } }, "node_modules/webpack/node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "bin": { "acorn": "bin/acorn" }, @@ -11669,17 +11920,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -11694,14 +11944,6 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/workbox-background-sync": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", @@ -11802,12 +12044,39 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/workbox-build/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/workbox-build/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/workbox-build/node_modules/source-map": { "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", @@ -11829,6 +12098,15 @@ "punycode": "^2.1.0" } }, + "node_modules/workbox-build/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/workbox-build/node_modules/webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -12046,6 +12324,32 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -12107,6 +12411,32 @@ "node": ">=12" } }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index 7a814229b..9be86e321 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "babel-eslint": "^10.0.3", "babel-loader": "^8.2.2", "clean-webpack-plugin": "^3.0.0", - "cypress": "^10.6.0", + "cypress": "^4.2.0", "dayjs": "^1.10.6", "eslint": "^7.30.0", "eslint-config-airbnb": "^18.2.1", @@ -64,7 +64,7 @@ "leaflet": "^1.7.1", "markmap": "^0.6.1", "markmap-lib": "^0.14.4", - "markmap-view": "^0.14.4", + "markmap-view": "^0.15.0", "mermaid": "^9.3.0", "muicss": "^0.10.3", "pace-js": "^1.2.4", @@ -72,7 +72,7 @@ "po2json": "^1.0.0-beta-3", "prismjs": "^1.29.0", "ractive": "^0.8.0", - "select2": "4.0.3", + "select2": "^4.0.13", "sprintf-js": "^1.1.2", "timeago.js": "^4.0.2", "toastr": "^2.1.4", diff --git a/requirements/base.in b/requirements/base.in index cc2b7ba09..2f8c08ed6 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -14,7 +14,7 @@ chevron click cryptography dataclasses-json -Flask<2.3 # Flask 2.3 drops Python 3.7 support ahead of schedule +Flask Flask-Assets Flask-Babel Flask-Executor @@ -28,15 +28,15 @@ Flask-WTF furl geoip2 grapheme -greenlet +gunicorn html2text httpx[http2] icalendar idna itsdangerous linkify-it-py -markdown-it-py -mdit-py-plugins<0.4.0 # 0.4.0 drops Python 3.7 support +markdown-it-py<3.0 # Breaks our plugins, needs refactoring +mdit-py-plugins oauth2 oauth2client passlib @@ -47,17 +47,15 @@ psycopg[binary] pycountry pyIsEmail python-dateutil -python-dotenv<1.0 # 1.0 drops Python 3.7 support +python-dotenv python-telegram-bot -python-utils<3.6.0 # Not ours; needed by progressbar2, but latest drops Python 3.7 pytz PyVimeo qrcode -regex<2023.3.22 # Not our requirement; this version drops Python 3.7 support requests rich rq -git+https://github.com/jace/rq-dashboard#egg=rq-dashboard==0.6.0 +rq-dashboard @ git+https://github.com/jace/rq-dashboard SQLAlchemy sqlalchemy-json SQLAlchemy-Utils @@ -65,9 +63,7 @@ toml tweepy twilio typing-extensions -urllib3[socks] # Not our requirement; removing this will cause a pip-audit dupe error user-agents -uwsgi -werkzeug<2.3 # Werkzeug 2.3 drops Python 3.7 support ahead of schedule +werkzeug whitenoise zxcvbn diff --git a/requirements/base.py37.txt b/requirements/base.py37.txt new file mode 100644 index 000000000..d422b5064 --- /dev/null +++ b/requirements/base.py37.txt @@ -0,0 +1,573 @@ +# SHA1:4278e04aa69612d326a315d85b7b37f7742d3dc7 +# +# This file is autogenerated by pip-compile-multi +# To update, run: +# +# pip-compile-multi +# +-e file:./build/dependencies/baseframe + # via -r requirements/base.in +-e file:./build/dependencies/coaster + # via + # -r requirements/base.in + # baseframe +aiohttp==3.8.5 + # via + # aiohttp-retry + # geoip2 + # tuspy + # twilio +aiohttp-retry==2.8.3 + # via twilio +aiosignal==1.3.1 + # via aiohttp +alembic==1.11.1 + # via + # -r requirements/base.in + # flask-migrate +aniso8601==9.0.1 + # via coaster +anyio==3.7.1 + # via httpcore +argon2-cffi==21.3.0 + # via -r requirements/base.in +argon2-cffi-bindings==21.2.0 + # via argon2-cffi +arrow==1.2.3 + # via rq-dashboard +asgiref==3.7.2 + # via -r requirements/base.in +async-timeout==4.0.2 + # via + # aiohttp + # redis +asynctest==0.13.0 + # via aiohttp +attrs==23.1.0 + # via aiohttp +babel==2.12.1 + # via + # -r requirements/base.in + # flask-babel +backports-zoneinfo==0.2.1 + # via + # icalendar + # psycopg +base58==2.1.1 + # via + # -r requirements/base.in + # coaster +bcrypt==4.0.1 + # via -r requirements/base.in +better-profanity==0.6.1 + # via -r requirements/base.in +bleach==6.0.0 + # via + # baseframe + # coaster +blinker==1.6.2 + # via + # -r requirements/base.in + # baseframe + # coaster +boto3==1.28.7 + # via -r requirements/base.in +botocore==1.31.7 + # via + # boto3 + # s3transfer +brotli==1.0.9 + # via -r requirements/base.in +cachelib==0.9.0 + # via flask-caching +cachetools==5.3.1 + # via premailer +certifi==2023.5.7 + # via + # httpcore + # httpx + # requests + # sentry-sdk +cffi==1.15.1 + # via + # argon2-cffi-bindings + # cryptography +charset-normalizer==3.2.0 + # via + # aiohttp + # requests +chevron==0.14.0 + # via -r requirements/base.in +click==8.1.6 + # via + # -r requirements/base.in + # flask + # nltk + # rq +crontab==1.0.1 + # via rq-scheduler +cryptography==41.0.2 + # via -r requirements/base.in +cssmin==0.2.0 + # via baseframe +cssselect==1.2.0 + # via premailer +cssutils==2.7.1 + # via premailer +dataclasses-json==0.5.12 + # via -r requirements/base.in +dnspython==2.3.0 + # via + # baseframe + # mxsniff + # pyisemail +emoji==2.6.0 + # via baseframe +exceptiongroup==1.1.2 + # via anyio +filelock==3.12.2 + # via tldextract +flask==2.2.5 + # via + # -r requirements/base.in + # baseframe + # coaster + # flask-assets + # flask-babel + # flask-caching + # flask-executor + # flask-flatpages + # flask-mailman + # flask-migrate + # flask-redis + # flask-rq2 + # flask-sqlalchemy + # flask-wtf + # rq-dashboard +flask-assets==2.0 + # via + # -r requirements/base.in + # baseframe + # coaster +flask-babel==3.1.0 + # via + # -r requirements/base.in + # baseframe +flask-caching==2.0.2 + # via baseframe +flask-executor==1.0.0 + # via -r requirements/base.in +flask-flatpages==0.8.1 + # via -r requirements/base.in +flask-mailman==0.3.0 + # via -r requirements/base.in +flask-migrate==4.0.4 + # via + # -r requirements/base.in + # coaster +flask-redis==0.4.0 + # via -r requirements/base.in +flask-rq2==18.3 + # via -r requirements/base.in +flask-sqlalchemy==3.0.5 + # via + # -r requirements/base.in + # coaster + # flask-migrate +flask-wtf==1.1.1 + # via + # -r requirements/base.in + # baseframe +freezegun==1.2.2 + # via rq-scheduler +frozenlist==1.3.3 + # via + # aiohttp + # aiosignal +furl==2.1.3 + # via + # -r requirements/base.in + # baseframe + # coaster +future==0.18.3 + # via tuspy +geoip2==4.7.0 + # via -r requirements/base.in +grapheme==0.6.0 + # via + # -r requirements/base.in + # baseframe +greenlet==2.0.2 + # via sqlalchemy +gunicorn==21.2.0 + # via -r requirements/base.in +h11==0.14.0 + # via httpcore +h2==4.1.0 + # via httpx +hpack==4.0.0 + # via h2 +html2text==2020.1.16 + # via -r requirements/base.in +html5lib==1.1 + # via + # baseframe + # coaster +httpcore==0.17.3 + # via httpx +httplib2==0.22.0 + # via + # oauth2 + # oauth2client +httpx[http2]==0.24.1 + # via + # -r requirements/base.in + # python-telegram-bot +hyperframe==6.0.1 + # via h2 +icalendar==5.0.7 + # via -r requirements/base.in +idna==3.4 + # via + # -r requirements/base.in + # anyio + # httpx + # requests + # tldextract + # yarl +importlib-metadata==6.7.0 + # via + # alembic + # attrs + # click + # cssutils + # flask + # gunicorn + # mako + # markdown + # redis + # sqlalchemy + # sqlalchemy-utils +importlib-resources==5.12.0 + # via alembic +isoweek==1.3.3 + # via coaster +itsdangerous==2.1.2 + # via + # -r requirements/base.in + # flask + # flask-wtf +jinja2==3.1.2 + # via + # flask + # flask-babel + # flask-flatpages +jmespath==1.0.1 + # via + # boto3 + # botocore +joblib==1.3.1 + # via nltk +linkify-it-py==2.0.2 + # via -r requirements/base.in +lxml==4.9.3 + # via premailer +mako==1.2.4 + # via alembic +markdown==3.4.3 + # via + # coaster + # flask-flatpages + # pymdown-extensions +markdown-it-py==2.2.0 + # via + # -r requirements/base.in + # mdit-py-plugins + # rich +markupsafe==2.1.3 + # via + # baseframe + # coaster + # jinja2 + # mako + # werkzeug + # wtforms +marshmallow==3.19.0 + # via dataclasses-json +maxminddb==2.4.0 + # via geoip2 +mdit-py-plugins==0.3.5 + # via -r requirements/base.in +mdurl==0.1.2 + # via markdown-it-py +mkdocs-material-extensions==1.1.1 + # via flask-mailman +multidict==6.0.4 + # via + # aiohttp + # yarl +mxsniff==0.3.5 + # via baseframe +mypy-extensions==1.0.0 + # via typing-inspect +nltk==3.8.1 + # via coaster +oauth2==1.9.0.post1 + # via -r requirements/base.in +oauth2client==4.1.3 + # via -r requirements/base.in +oauthlib==3.2.2 + # via + # requests-oauthlib + # tweepy +orderedmultidict==1.0.1 + # via furl +packaging==23.1 + # via + # gunicorn + # marshmallow +passlib==1.7.4 + # via -r requirements/base.in +phonenumbers==8.13.16 + # via -r requirements/base.in +premailer==3.10.0 + # via -r requirements/base.in +progressbar2==4.2.0 + # via -r requirements/base.in +psycopg[binary]==3.1.9 + # via -r requirements/base.in +psycopg-binary==3.1.9 + # via psycopg +pyasn1==0.5.0 + # via + # oauth2client + # pyasn1-modules + # rsa +pyasn1-modules==0.3.0 + # via oauth2client +pycountry==22.3.5 + # via + # -r requirements/base.in + # baseframe +pycparser==2.21 + # via cffi +pygments==2.15.1 + # via rich +pyisemail==2.0.1 + # via + # -r requirements/base.in + # baseframe + # mxsniff +pyjwt==2.8.0 + # via twilio +pymdown-extensions==10.1 + # via coaster +pyparsing==3.1.0 + # via httplib2 +pypng==0.20220715.0 + # via qrcode +python-dateutil==2.8.2 + # via + # -r requirements/base.in + # arrow + # baseframe + # botocore + # freezegun + # icalendar + # rq-scheduler +python-dotenv==0.21.1 + # via -r requirements/base.in +python-telegram-bot==20.3 + # via -r requirements/base.in +python-utils==3.5.2 + # via progressbar2 +pytz==2023.3 + # via + # -r requirements/base.in + # babel + # baseframe + # coaster + # flask-babel + # icalendar + # twilio +pyvimeo==1.1.0 + # via -r requirements/base.in +pyyaml==6.0.1 + # via + # flask-flatpages + # pymdown-extensions +qrcode==7.4.2 + # via -r requirements/base.in +redis==4.6.0 + # via + # baseframe + # flask-redis + # flask-rq2 + # redis-sentinel-url + # rq + # rq-dashboard +redis-sentinel-url==1.0.1 + # via rq-dashboard +regex==2023.6.3 + # via nltk +requests==2.31.0 + # via + # -r requirements/base.in + # baseframe + # geoip2 + # premailer + # pyvimeo + # requests-file + # requests-oauthlib + # tldextract + # tuspy + # tweepy + # twilio +requests-file==1.5.1 + # via tldextract +requests-oauthlib==1.3.1 + # via tweepy +rich==13.4.2 + # via -r requirements/base.in +rq==1.15.1 + # via + # -r requirements/base.in + # baseframe + # flask-rq2 + # rq-dashboard + # rq-scheduler +rq-dashboard @ git+https://github.com/jace/rq-dashboard + # via -r requirements/base.in +rq-scheduler==0.13.1 + # via flask-rq2 +rsa==4.9 + # via oauth2client +s3transfer==0.6.1 + # via boto3 +semantic-version==2.10.0 + # via + # baseframe + # coaster +sentry-sdk==1.28.1 + # via baseframe +six==1.16.0 + # via + # bleach + # flask-flatpages + # furl + # html5lib + # mxsniff + # oauth2client + # orderedmultidict + # python-dateutil + # requests-file + # tuspy +sniffio==1.3.0 + # via + # anyio + # httpcore + # httpx +sqlalchemy==2.0.19 + # via + # -r requirements/base.in + # alembic + # coaster + # flask-sqlalchemy + # sqlalchemy-json + # sqlalchemy-utils + # wtforms-sqlalchemy +sqlalchemy-json==0.6.0 + # via -r requirements/base.in +sqlalchemy-utils==0.41.1 + # via + # -r requirements/base.in + # coaster +statsd==4.0.1 + # via baseframe +tinydb==4.8.0 + # via tuspy +tldextract==3.4.4 + # via + # coaster + # mxsniff +toml==0.10.2 + # via -r requirements/base.in +tqdm==4.65.0 + # via nltk +tuspy==1.0.1 + # via pyvimeo +tweepy==4.14.0 + # via -r requirements/base.in +twilio==8.5.0 + # via -r requirements/base.in +typing-extensions==4.7.1 + # via + # -r requirements/base.in + # aiohttp + # alembic + # anyio + # argon2-cffi + # arrow + # asgiref + # async-timeout + # baseframe + # coaster + # h11 + # importlib-metadata + # markdown-it-py + # psycopg + # pyjwt + # python-utils + # qrcode + # redis + # rich + # sqlalchemy + # typing-inspect + # yarl +typing-inspect==0.9.0 + # via dataclasses-json +ua-parser==0.18.0 + # via user-agents +uc-micro-py==1.0.2 + # via linkify-it-py +unidecode==1.3.6 + # via coaster +urllib3==1.26.16 + # via + # botocore + # requests + # sentry-sdk +user-agents==2.2.0 + # via -r requirements/base.in +webassets==2.0 + # via flask-assets +webencodings==0.5.1 + # via + # bleach + # html5lib +werkzeug==2.2.3 + # via + # -r requirements/base.in + # baseframe + # coaster + # flask +whitenoise==6.5.0 + # via -r requirements/base.in +wtforms==3.0.1 + # via + # baseframe + # flask-wtf + # wtforms-sqlalchemy +wtforms-sqlalchemy==0.3 + # via baseframe +yarl==1.9.2 + # via aiohttp +zipp==3.15.0 + # via + # importlib-metadata + # importlib-resources +zxcvbn==4.4.28 + # via -r requirements/base.in + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/requirements/base.txt b/requirements/base.txt index 568d787e2..5cbd79bac 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:5d746b010b56d8d9864db09ea2addc8c538f88ac +# SHA1:4278e04aa69612d326a315d85b7b37f7742d3dc7 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -11,7 +11,7 @@ # via # -r requirements/base.in # baseframe -aiohttp==3.8.4 +aiohttp==3.8.5 # via # aiohttp-retry # geoip2 @@ -27,7 +27,7 @@ alembic==1.11.1 # flask-migrate aniso8601==9.0.1 # via coaster -anyio==3.7.0 +anyio==3.7.1 # via httpcore argon2-cffi==21.3.0 # via -r requirements/base.in @@ -64,9 +64,10 @@ blinker==1.6.2 # -r requirements/base.in # baseframe # coaster -boto3==1.26.163 + # flask +boto3==1.28.7 # via -r requirements/base.in -botocore==1.29.163 +botocore==1.31.7 # via # boto3 # s3transfer @@ -86,13 +87,13 @@ cffi==1.15.1 # via # argon2-cffi-bindings # cryptography -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via # aiohttp # requests chevron==0.14.0 # via -r requirements/base.in -click==8.1.3 +click==8.1.6 # via # -r requirements/base.in # flask @@ -100,7 +101,7 @@ click==8.1.3 # rq crontab==1.0.1 # via rq-scheduler -cryptography==41.0.1 +cryptography==41.0.2 # via -r requirements/base.in cssmin==0.2.0 # via baseframe @@ -108,20 +109,20 @@ cssselect==1.2.0 # via premailer cssutils==2.7.1 # via premailer -dataclasses-json==0.5.8 +dataclasses-json==0.5.12 # via -r requirements/base.in -dnspython==2.3.0 +dnspython==2.4.0 # via # baseframe # mxsniff # pyisemail emoji==2.6.0 # via baseframe -exceptiongroup==1.1.1 +exceptiongroup==1.1.2 # via anyio filelock==3.12.2 # via tldextract -flask==2.2.5 +flask==2.3.2 # via # -r requirements/base.in # baseframe @@ -174,7 +175,7 @@ flask-wtf==1.1.1 # baseframe freezegun==1.2.2 # via rq-scheduler -frozenlist==1.3.3 +frozenlist==1.4.0 # via # aiohttp # aiosignal @@ -191,7 +192,7 @@ grapheme==0.6.0 # via # -r requirements/base.in # baseframe -greenlet==2.0.2 +gunicorn==21.2.0 # via -r requirements/base.in h11==0.14.0 # via httpcore @@ -205,8 +206,10 @@ html5lib==1.1 # via # baseframe # coaster -httpcore==0.17.2 - # via httpx +httpcore==0.17.3 + # via + # dnspython + # httpx httplib2==0.22.0 # via # oauth2 @@ -227,7 +230,7 @@ idna==3.4 # requests # tldextract # yarl -importlib-metadata==6.7.0 +importlib-metadata==6.8.0 # via # flask # markdown @@ -247,11 +250,11 @@ jmespath==1.0.1 # via # boto3 # botocore -joblib==1.3.0 +joblib==1.3.1 # via nltk linkify-it-py==2.0.2 # via -r requirements/base.in -lxml==4.9.2 +lxml==4.9.3 # via premailer mako==1.2.4 # via alembic @@ -274,14 +277,10 @@ markupsafe==2.1.3 # werkzeug # wtforms marshmallow==3.19.0 - # via - # dataclasses-json - # marshmallow-enum -marshmallow-enum==1.5.1 # via dataclasses-json maxminddb==2.4.0 # via geoip2 -mdit-py-plugins==0.3.5 +mdit-py-plugins==0.4.0 # via -r requirements/base.in mdurl==0.1.2 # via markdown-it-py @@ -308,10 +307,12 @@ oauthlib==3.2.2 orderedmultidict==1.0.1 # via furl packaging==23.1 - # via marshmallow + # via + # gunicorn + # marshmallow passlib==1.7.4 # via -r requirements/base.in -phonenumbers==8.13.15 +phonenumbers==8.13.16 # via -r requirements/base.in premailer==3.10.0 # via -r requirements/base.in @@ -341,16 +342,14 @@ pyisemail==2.0.1 # -r requirements/base.in # baseframe # mxsniff -pyjwt==2.7.0 +pyjwt==2.8.0 # via twilio -pymdown-extensions==10.0.1 +pymdown-extensions==10.1 # via coaster pyparsing==3.1.0 # via httplib2 pypng==0.20220715.0 # via qrcode -pysocks==1.7.1 - # via urllib3 python-dateutil==2.8.2 # via # -r requirements/base.in @@ -360,14 +359,12 @@ python-dateutil==2.8.2 # freezegun # icalendar # rq-scheduler -python-dotenv==0.21.1 +python-dotenv==1.0.0 # via -r requirements/base.in -python-telegram-bot==20.3 +python-telegram-bot==20.4 # via -r requirements/base.in -python-utils==3.5.2 - # via - # -r requirements/base.in - # progressbar2 +python-utils==3.7.0 + # via progressbar2 pytz==2023.3 # via # -r requirements/base.in @@ -378,7 +375,7 @@ pytz==2023.3 # twilio pyvimeo==1.1.0 # via -r requirements/base.in -pyyaml==6.0 +pyyaml==6.0.1 # via # flask-flatpages # pymdown-extensions @@ -394,10 +391,8 @@ redis==4.6.0 # rq-dashboard redis-sentinel-url==1.0.1 # via rq-dashboard -regex==2022.10.31 - # via - # -r requirements/base.in - # nltk +regex==2023.6.3 + # via nltk requests==2.31.0 # via # -r requirements/base.in @@ -436,7 +431,7 @@ semantic-version==2.10.0 # via # baseframe # coaster -sentry-sdk==1.26.0 +sentry-sdk==1.28.1 # via baseframe six==1.16.0 # via @@ -449,14 +444,14 @@ six==1.16.0 # orderedmultidict # python-dateutil # requests-file - # sqlalchemy-json # tuspy sniffio==1.3.0 # via # anyio + # dnspython # httpcore # httpx -sqlalchemy==2.0.17 +sqlalchemy==2.0.19 # via # -r requirements/base.in # alembic @@ -465,7 +460,7 @@ sqlalchemy==2.0.17 # sqlalchemy-json # sqlalchemy-utils # wtforms-sqlalchemy -sqlalchemy-json==0.5.0 +sqlalchemy-json==0.6.0 # via -r requirements/base.in sqlalchemy-utils==0.41.1 # via @@ -487,9 +482,9 @@ tuspy==1.0.1 # via pyvimeo tweepy==4.14.0 # via -r requirements/base.in -twilio==8.4.0 +twilio==8.5.0 # via -r requirements/base.in -typing-extensions==4.7.0 +typing-extensions==4.7.1 # via # -r requirements/base.in # alembic @@ -497,34 +492,32 @@ typing-extensions==4.7.0 # baseframe # coaster # psycopg + # python-utils # qrcode # sqlalchemy # typing-inspect typing-inspect==0.9.0 # via dataclasses-json -ua-parser==0.16.1 +ua-parser==0.18.0 # via user-agents uc-micro-py==1.0.2 # via linkify-it-py unidecode==1.3.6 # via coaster -urllib3[socks]==1.26.16 +urllib3==1.26.16 # via - # -r requirements/base.in # botocore # requests # sentry-sdk user-agents==2.2.0 # via -r requirements/base.in -uwsgi==2.0.21 - # via -r requirements/base.in webassets==2.0 # via flask-assets webencodings==0.5.1 # via # bleach # html5lib -werkzeug==2.2.3 +werkzeug==2.3.6 # via # -r requirements/base.in # baseframe @@ -541,7 +534,7 @@ wtforms-sqlalchemy==0.3 # via baseframe yarl==1.9.2 # via aiohttp -zipp==3.15.0 +zipp==3.16.2 # via importlib-metadata zxcvbn==4.4.28 # via -r requirements/base.in diff --git a/requirements/dev.in b/requirements/dev.in index 5a03a3d42..d49d8d2a9 100644 --- a/requirements/dev.in +++ b/requirements/dev.in @@ -15,6 +15,7 @@ flake8-mutable flake8-print flake8-pytest-style flask-debugtoolbar +importlib-metadata>=6.7.0;python_version=="3.7" isort lxml-stubs mypy diff --git a/requirements/dev.py37.txt b/requirements/dev.py37.txt new file mode 100644 index 000000000..2acd8ba78 --- /dev/null +++ b/requirements/dev.py37.txt @@ -0,0 +1,183 @@ +# SHA1:8f1b556d0dcd9ac078682465a2238fa29b4784ef +# +# This file is autogenerated by pip-compile-multi +# To update, run: +# +# pip-compile-multi +# +-r test.py37.txt +-e file:./build/dependencies/baseframe + # via -r requirements/base.in +-e file:./build/dependencies/coaster + # via + # -r requirements/base.in + # baseframe +astroid==2.15.6 + # via pylint +bandit==1.7.5 + # via -r requirements/dev.in +black==23.3.0 + # via -r requirements/dev.in +build==0.10.0 + # via pip-tools +cattrs==22.1.0 + # via reformat-gherkin +cfgv==3.3.1 + # via pre-commit +dill==0.3.6 + # via pylint +distlib==0.3.7 + # via virtualenv +flake8==3.9.2 + # via + # -r requirements/dev.in + # flake8-annotations + # flake8-assertive + # flake8-bugbear + # flake8-builtins + # flake8-comprehensions + # flake8-docstrings + # flake8-isort + # flake8-mutable + # flake8-print + # pep8-naming +flake8-annotations==2.9.1 + # via -r requirements/dev.in +flake8-assertive==2.1.0 + # via -r requirements/dev.in +flake8-blind-except==0.2.1 + # via -r requirements/dev.in +flake8-bugbear==23.3.12 + # via -r requirements/dev.in +flake8-builtins==2.1.0 + # via -r requirements/dev.in +flake8-comprehensions==3.13.0 + # via -r requirements/dev.in +flake8-docstrings==1.7.0 + # via -r requirements/dev.in +flake8-isort==6.0.0 + # via -r requirements/dev.in +flake8-logging-format==0.9.0 + # via -r requirements/dev.in +flake8-mutable==1.2.0 + # via -r requirements/dev.in +flake8-plugin-utils==1.3.3 + # via flake8-pytest-style +flake8-print==5.0.0 + # via -r requirements/dev.in +flake8-pytest-style==1.7.2 + # via -r requirements/dev.in +flask-debugtoolbar==0.13.1 + # via -r requirements/dev.in +gherkin-official==24.0.0 + # via reformat-gherkin +gitdb==4.0.10 + # via gitpython +gitpython==3.1.32 + # via bandit +identify==2.5.24 + # via pre-commit +isort==5.11.5 + # via + # -r requirements/dev.in + # flake8-isort + # pylint +lazy-object-proxy==1.9.0 + # via astroid +lxml-stubs==0.4.0 + # via -r requirements/dev.in +mccabe==0.6.1 + # via + # flake8 + # pylint +mypy==1.4.1 + # via -r requirements/dev.in +mypy-json-report==1.0.4 + # via -r requirements/dev.in +nodeenv==1.8.0 + # via pre-commit +pathspec==0.11.1 + # via black +pbr==5.11.1 + # via stevedore +pep8-naming==0.13.2 + # via -r requirements/dev.in +pip-compile-multi==2.6.3 + # via -r requirements/dev.in +pip-tools==6.14.0 + # via pip-compile-multi +platformdirs==3.9.1 + # via + # black + # pylint + # virtualenv +po2json==0.2.2 + # via -r requirements/dev.in +pre-commit==2.21.0 + # via -r requirements/dev.in +pycodestyle==2.7.0 + # via + # flake8 + # flake8-print +pydocstyle==6.1.1 + # via flake8-docstrings +pyflakes==2.3.1 + # via flake8 +pylint==2.17.4 + # via -r requirements/dev.in +pyproject-hooks==1.0.0 + # via build +pyupgrade==3.3.2 + # via -r requirements/dev.in +reformat-gherkin==3.0.1 + # via -r requirements/dev.in +ruff==0.0.278 + # via -r requirements/dev.in +smmap==5.0.0 + # via gitdb +snowballstemmer==2.2.0 + # via pydocstyle +stevedore==3.5.2 + # via bandit +tokenize-rt==5.0.0 + # via pyupgrade +toposort==1.10 + # via pip-compile-multi +typed-ast==1.5.5 + # via + # astroid + # black + # flake8-annotations + # mypy +types-chevron==0.14.2.4 + # via -r requirements/dev.in +types-geoip2==3.0.0 + # via -r requirements/dev.in +types-ipaddress==1.0.8 + # via types-maxminddb +types-maxminddb==1.5.0 + # via types-geoip2 +types-pyopenssl==23.2.0.1 + # via types-redis +types-python-dateutil==2.8.19.13 + # via -r requirements/dev.in +types-pytz==2023.3.0.0 + # via -r requirements/dev.in +types-redis==4.6.0.2 + # via -r requirements/dev.in +types-requests==2.31.0.1 + # via -r requirements/dev.in +types-urllib3==1.26.25.13 + # via types-requests +virtualenv==20.24.1 + # via pre-commit +wcwidth==0.2.6 + # via reformat-gherkin +wheel==0.40.0 + # via pip-tools +wrapt==1.15.0 + # via astroid + +# The following packages are considered to be unsafe in a requirements file: +# pip +# setuptools diff --git a/requirements/dev.txt b/requirements/dev.txt index a0afb8181..87e5631f7 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,4 +1,4 @@ -# SHA1:069d1ed0c3c61acf9fc9949194ca3743a20c6d89 +# SHA1:8f1b556d0dcd9ac078682465a2238fa29b4784ef # # This file is autogenerated by pip-compile-multi # To update, run: @@ -12,11 +12,11 @@ # via # -r requirements/base.in # baseframe -astroid==2.15.5 +astroid==2.15.6 # via pylint bandit==1.7.5 # via -r requirements/dev.in -black==23.3.0 +black==23.7.0 # via -r requirements/dev.in build==0.10.0 # via pip-tools @@ -26,7 +26,7 @@ cfgv==3.3.1 # via pre-commit dill==0.3.6 # via pylint -distlib==0.3.6 +distlib==0.3.7 # via virtualenv flake8==6.0.0 # via @@ -47,11 +47,11 @@ flake8-assertive==2.1.0 # via -r requirements/dev.in flake8-blind-except==0.2.1 # via -r requirements/dev.in -flake8-bugbear==23.6.5 +flake8-bugbear==23.7.10 # via -r requirements/dev.in flake8-builtins==2.1.0 # via -r requirements/dev.in -flake8-comprehensions==3.13.0 +flake8-comprehensions==3.14.0 # via -r requirements/dev.in flake8-docstrings==1.7.0 # via -r requirements/dev.in @@ -73,9 +73,9 @@ gherkin-official==24.0.0 # via reformat-gherkin gitdb==4.0.10 # via gitpython -gitpython==3.1.31 +gitpython==3.1.32 # via bandit -identify==2.5.24 +identify==2.5.25 # via pre-commit isort==5.12.0 # via @@ -104,9 +104,9 @@ pep8-naming==0.13.3 # via -r requirements/dev.in pip-compile-multi==2.6.3 # via -r requirements/dev.in -pip-tools==6.13.0 +pip-tools==7.1.0 # via pip-compile-multi -platformdirs==3.8.0 +platformdirs==3.9.1 # via # black # pylint @@ -127,11 +127,11 @@ pylint==2.17.4 # via -r requirements/dev.in pyproject-hooks==1.0.0 # via build -pyupgrade==3.7.0 +pyupgrade==3.9.0 # via -r requirements/dev.in reformat-gherkin==3.0.1 # via -r requirements/dev.in -ruff==0.0.275 +ruff==0.0.278 # via -r requirements/dev.in smmap==5.0.0 # via gitdb @@ -157,13 +157,13 @@ types-python-dateutil==2.8.19.13 # via -r requirements/dev.in types-pytz==2023.3.0.0 # via -r requirements/dev.in -types-redis==4.6.0.0 +types-redis==4.6.0.2 # via -r requirements/dev.in types-requests==2.31.0.1 # via -r requirements/dev.in types-urllib3==1.26.25.13 # via types-requests -virtualenv==20.23.1 +virtualenv==20.24.1 # via pre-commit wcwidth==0.2.6 # via reformat-gherkin diff --git a/requirements/test.py37.txt b/requirements/test.py37.txt new file mode 100644 index 000000000..2aa8b0334 --- /dev/null +++ b/requirements/test.py37.txt @@ -0,0 +1,123 @@ +# SHA1:f1dd8d59a43608d547da08b1d958365a3ca6e564 +# +# This file is autogenerated by pip-compile-multi +# To update, run: +# +# pip-compile-multi +# +-r base.py37.txt +-e file:./build/dependencies/baseframe + # via -r requirements/base.in +-e file:./build/dependencies/coaster + # via + # -r requirements/base.in + # baseframe +beautifulsoup4==4.12.2 + # via -r requirements/test.in +colorama==0.4.6 + # via -r requirements/test.in +coverage[toml]==6.5.0 + # via + # -r requirements/test.in + # coveralls + # pytest-cov +coveralls==3.3.1 + # via -r requirements/test.in +docopt==0.6.2 + # via coveralls +iniconfig==2.0.0 + # via pytest +outcome==1.2.0 + # via trio +parse==1.19.1 + # via + # parse-type + # pytest-bdd +parse-type==0.6.2 + # via pytest-bdd +pluggy==1.2.0 + # via pytest +py==1.11.0 + # via pytest-html +pysocks==1.7.1 + # via urllib3 +pytest==7.4.0 + # via + # -r requirements/test.in + # pytest-asyncio + # pytest-base-url + # pytest-bdd + # pytest-cov + # pytest-dotenv + # pytest-env + # pytest-html + # pytest-metadata + # pytest-rerunfailures + # pytest-selenium + # pytest-socket + # pytest-variables +pytest-asyncio==0.21.1 + # via -r requirements/test.in +pytest-base-url==2.0.0 + # via pytest-selenium +pytest-bdd==6.1.1 + # via -r requirements/test.in +pytest-cov==4.1.0 + # via -r requirements/test.in +pytest-dotenv==0.5.2 + # via -r requirements/test.in +pytest-env==0.8.2 + # via -r requirements/test.in +pytest-html==3.2.0 + # via pytest-selenium +pytest-metadata==3.0.0 + # via pytest-html +pytest-rerunfailures==12.0 + # via -r requirements/test.in +pytest-selenium==4.0.1 + # via -r requirements/test.in +pytest-socket==0.6.0 + # via -r requirements/test.in +pytest-variables==3.0.0 + # via pytest-selenium +requests-mock==1.11.0 + # via -r requirements/test.in +respx==0.20.1 + # via -r requirements/test.in +selenium==4.9.1 + # via + # -r requirements/test.in + # pytest-selenium +sortedcontainers==2.4.0 + # via trio +soupsieve==2.4.1 + # via beautifulsoup4 +sttable==0.0.1 + # via -r requirements/test.in +tenacity==8.2.2 + # via pytest-selenium +tomli==2.0.1 + # via + # coverage + # pytest +tomlkit==0.11.8 + # via -r requirements/test.in +trio==0.22.2 + # via + # selenium + # trio-websocket +trio-websocket==0.10.3 + # via selenium +typeguard==4.0.0 + # via -r requirements/test.in +urllib3[socks]==1.26.16 + # via + # botocore + # requests + # selenium + # sentry-sdk +wsproto==1.2.0 + # via trio-websocket + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/requirements/test.txt b/requirements/test.txt index ece75b650..2acc990c2 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -12,8 +12,6 @@ # via # -r requirements/base.in # baseframe -async-generator==1.10 - # via trio beautifulsoup4==4.12.2 # via -r requirements/test.in colorama==0.4.6 @@ -35,12 +33,14 @@ parse==1.19.1 # via # parse-type # pytest-bdd -parse-type==0.6.0 +parse-type==0.6.2 # via pytest-bdd pluggy==1.2.0 # via pytest py==1.11.0 # via pytest-html +pysocks==1.7.1 + # via urllib3 pytest==7.4.0 # via # -r requirements/test.in @@ -56,7 +56,7 @@ pytest==7.4.0 # pytest-selenium # pytest-socket # pytest-variables -pytest-asyncio==0.21.0 +pytest-asyncio==0.21.1 # via -r requirements/test.in pytest-base-url==2.0.0 # via pytest-selenium @@ -72,7 +72,7 @@ pytest-html==3.2.0 # via pytest-selenium pytest-metadata==3.0.0 # via pytest-html -pytest-rerunfailures==11.1.2 +pytest-rerunfailures==12.0 # via -r requirements/test.in pytest-selenium==4.0.1 # via -r requirements/test.in @@ -102,7 +102,7 @@ tomli==2.0.1 # pytest tomlkit==0.11.8 # via -r requirements/test.in -trio==0.22.0 +trio==0.22.2 # via # selenium # trio-websocket @@ -110,6 +110,12 @@ trio-websocket==0.10.3 # via selenium typeguard==4.0.0 # via -r requirements/test.in +urllib3[socks]==1.26.16 + # via + # botocore + # requests + # selenium + # sentry-sdk wsproto==1.2.0 # via trio-websocket diff --git a/tests/unit/views/account_test.py b/tests/unit/views/account_test.py index 566e81544..f4ac03dd1 100644 --- a/tests/unit/views/account_test.py +++ b/tests/unit/views/account_test.py @@ -161,7 +161,10 @@ def test_pwned_password_mock_endpoint_down( 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_6_1 like Mac OS X)' ' AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0' ' EdgiOS/100.1185.50 Mobile/15E148 Safari/605.1.15', - {'browser': 'Mobile Safari 15.0', 'os_device': 'Apple iPhone (iOS 15.6.1)'}, + { + 'browser': 'Edge Mobile 100.1185.50', + 'os_device': 'Apple iPhone (iOS 15.6.1)', + }, ), ( 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox One)' From 26b29fe772361ac6e68bc411855cfab8577d9add Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Thu, 20 Jul 2023 23:54:06 +0530 Subject: [PATCH 204/281] Hide ticketing widget for a member (#1808) --- funnel/templates/project_layout.html.jinja2 | 2 +- funnel/views/project.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index 9bbba0326..7ae34b1a8 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -396,7 +396,7 @@
    - {% if not project.state.PAST and project.features.tickets() -%} + {% if project.features.tickets() -%}
    diff --git a/funnel/views/project.py b/funnel/views/project.py index 27e93ff47..153fcff15 100644 --- a/funnel/views/project.py +++ b/funnel/views/project.py @@ -177,6 +177,7 @@ def feature_project_tickets(obj: Project) -> bool: and 'item_collection_id' in obj.boxoffice_data and obj.boxoffice_data['item_collection_id'] and not obj.state.PAST + and not obj.current_roles.ticket_participant ) From 4460adf6e7a20268af90f9ceb856231928cda6d1 Mon Sep 17 00:00:00 2001 From: Amogh M Aradhya Date: Fri, 21 Jul 2023 15:18:56 +0530 Subject: [PATCH 205/281] API support for the Mobile Number Revocation List (MNRL) (#1810) This commit adds support for retrieving expired phone numbers from the monthly Mobile Number Revocation List, and comparing against existing phone numbers in the `phone_number` table. It does not (yet) implement workflow for processing a match, or for retrying MNRL API access when their servers are down (which has happened a lot when working on this feature). Co-authored-by: Kiran Jonnalagadda --- funnel/cli/periodic/__init__.py | 3 +- funnel/cli/periodic/mnrl.py | 280 +++++++++++++++++++++++++ funnel/cli/periodic/stats.py | 9 +- funnel/models/phone_number.py | 13 ++ requirements/base.in | 2 +- requirements/base.py37.txt | 15 +- requirements/base.txt | 17 +- requirements/dev.in | 1 + requirements/dev.py37.txt | 16 +- requirements/dev.txt | 16 +- requirements/test.in | 1 + requirements/test.py37.txt | 6 +- requirements/test.txt | 4 +- sample.env | 2 + tests/unit/cli/periodic_mnrl_test.py | 133 ++++++++++++ tests/unit/models/phone_number_test.py | 26 +++ 16 files changed, 503 insertions(+), 41 deletions(-) create mode 100644 funnel/cli/periodic/mnrl.py create mode 100644 tests/unit/cli/periodic_mnrl_test.py diff --git a/funnel/cli/periodic/__init__.py b/funnel/cli/periodic/__init__.py index d412dbd3c..7d0e34674 100644 --- a/funnel/cli/periodic/__init__.py +++ b/funnel/cli/periodic/__init__.py @@ -8,7 +8,6 @@ 'periodic', help="Periodic tasks from cron (with recommended intervals)" ) -from . import stats # isort:skip # noqa: F401 -from . import notification # isort:skip # noqa: F401 +from . import mnrl, notification, stats # noqa: F401 app.cli.add_command(periodic) diff --git a/funnel/cli/periodic/mnrl.py b/funnel/cli/periodic/mnrl.py new file mode 100644 index 000000000..6b1827d4e --- /dev/null +++ b/funnel/cli/periodic/mnrl.py @@ -0,0 +1,280 @@ +""" +Validate Indian phone numbers against the Mobile Number Revocation List. + +About MNRL: https://mnrl.trai.gov.in/homepage +API details (requires login): https://mnrl.trai.gov.in/api_details, contents reproduced +here: + +.. list-table:: API Description + :header-rows: 1 + + * - № + - API Name + - API URL + - Method + - Remark + * - 1 + - Get MNRL Status + - https://mnrl.trai.gov.in/api/mnrl/status/{key} + - GET + - Returns the current status of MNRL. + * - 2 + - Get MNRL Files + - https://mnrl.trai.gov.in/api/mnrl/files/{key} + - GET + - Returns the summary of MNRL files, to be used for further API calls to get the + list of mobile numbers or download the file. + * - 3 + - Get MNRL + - https://mnrl.trai.gov.in/api/mnrl/json/{file_name}/{key} + - GET + - Returns the list of mobile numbers of the requested (.json) file. + * - 4 + - Download MNRL + - https://mnrl.trai.gov.in/api/mnrl/download/{file_name}/{key} + - GET + - Can be used to download the file. (xlsx, pdf, json, rar) +""" + +import asyncio +from typing import List, Set, Tuple + +import click +import httpx +import ijson +from rich import get_console, print as rprint +from rich.progress import Progress + +from ... import app +from ...models import PhoneNumber, UserPhone, db +from . import periodic + + +class KeyInvalidError(ValueError): + """MNRL API key is invalid.""" + + message = "MNRL API key is invalid" + + +class KeyExpiredError(ValueError): + """MNRL API key has expired.""" + + message = "MNRL API key has expired" + + +class AsyncStreamAsFile: + """Provide a :meth:`read` interface to a HTTPX async stream response for ijson.""" + + def __init__(self, response: httpx.Response) -> None: + self.data = response.aiter_bytes() + + async def read(self, size: int) -> bytes: + """Async read method for ijson (which expects this to be 'read' not 'aread').""" + if size == 0: + # ijson calls with size 0 and expect b'', using it only to + # print a warning if the return value is '' (str instead of bytes) + return b'' + # Python >= 3.10 supports `return await anext(self.data, b'')` but for older + # versions we need this try/except block + try: + # Ignore size parameter since anext doesn't take it + # pylint: disable=unnecessary-dunder-call + return await self.data.__anext__() + except StopAsyncIteration: + return b'' + + +async def get_existing_phone_numbers(prefix: str) -> Set[str]: + """Async wrapper for PhoneNumber.get_numbers.""" + # TODO: This is actually an async-blocking call. We need full stack async here. + return PhoneNumber.get_numbers(prefix=prefix, remove=True) + + +async def get_mnrl_json_file_list(apikey: str) -> List[str]: + """ + Return filenames for the currently published MNRL JSON files. + + TRAI publishes the MNRL as a monthly series of files in Excel, PDF and JSON + formats, of which we'll use JSON (plaintext format isn't offered). + """ + response = await httpx.AsyncClient(http2=True).get( + f'https://mnrl.trai.gov.in/api/mnrl/files/{apikey}', timeout=300 + ) + if response.status_code == 401: + raise KeyInvalidError() + if response.status_code == 407: + raise KeyExpiredError() + response.raise_for_status() + + result = response.json() + # Fallback tests for non-200 status codes in a 200 response (current API behaviour) + if result['status'] == 401: + raise KeyInvalidError() + if result['status'] == 407: + raise KeyExpiredError() + return [row['file_name'] for row in result['mnrl_files']['json']] + + +async def get_mnrl_json_file_numbers( + client: httpx.AsyncClient, apikey: str, filename: str +) -> Tuple[str, Set[str]]: + """Return phone numbers from an MNRL JSON file URL.""" + async with client.stream( + 'GET', + f'https://mnrl.trai.gov.in/api/mnrl/json/{filename}/{apikey}', + timeout=300, + ) as response: + response.raise_for_status() + # The JSON structure is {"payload": [{"n": "number"}, ...]} + # The 'item' in 'payload.item' is ijson's code for array elements + return filename, { + value + async for key, value in ijson.kvitems( + AsyncStreamAsFile(response), 'payload.item' + ) + if key == 'n' and value is not None + } + + +async def forget_phone_numbers(phone_numbers: Set[str], prefix: str) -> None: + """Mark phone numbers as forgotten.""" + for unprefixed in phone_numbers: + number = prefix + unprefixed + userphone = UserPhone.get(number) + if userphone is not None: + # TODO: Dispatch a notification to userphone.user, but since the + # notification will not know the phone number (it'll already be forgotten), + # we need a new db model to contain custom messages + # TODO: Also delay dispatch until the full MNRL scan is complete -- their + # backup contact phone number may also have expired. That means this + # function will create notifications and return them, leaving dispatch to + # the outermost function + rprint(f"{userphone} - owned by {userphone.user.pickername}") + # TODO: MNRL isn't foolproof. Don't delete! Instead, notify the user and + # only delete if they don't respond (How? Maybe delete and send them a + # re-add token?) + # db.session.delete(userphone) + phone_number = PhoneNumber.get(number) + if phone_number is not None: + rprint( + f"{phone_number} - since {phone_number.created_at:%Y-%m-%d}, updated" + f" {phone_number.updated_at:%Y-%m-%d}" + ) + # phone_number.mark_forgotten() + db.session.commit() + + +async def process_mnrl_files( + apikey: str, + existing_phone_numbers: Set[str], + phone_prefix: str, + mnrl_filenames: List[str], +) -> Tuple[Set[str], int, int]: + """ + Scan all MNRL files and return a tuple of results. + + :return: Tuple of number to be revoked (set), total expired numbers in the MNRL, + and count of failures when accessing the MNRL lists + """ + revoked_phone_numbers: Set[str] = set() + mnrl_total_count = 0 + failures = 0 + async_tasks: Set[asyncio.Task] = set() + with Progress(transient=True) as progress: + ptask = progress.add_task( + f"Processing {len(mnrl_filenames)} MNRL files", total=len(mnrl_filenames) + ) + async with httpx.AsyncClient( + http2=True, limits=httpx.Limits(max_connections=3) + ) as client: + for future in asyncio.as_completed( + [ + get_mnrl_json_file_numbers(client, apikey, filename) + for filename in mnrl_filenames + ] + ): + try: + filename, mnrl_set = await future + except httpx.HTTPError as exc: + progress.advance(ptask) + failures += 1 + # Extract filename from the URL (ends with /filename/apikey) as we + # can't get any context from asyncio.as_completed's future + filename = exc.request.url.path.split('/')[-2] + progress.update(ptask, description=f"Error in {filename}...") + if isinstance(exc, httpx.HTTPStatusError): + rprint( + f"[red]{filename}: Server returned HTTP status code" + f" {exc.response.status_code}" + ) + else: + rprint(f"[red]{filename}: Failed with {exc!r}") + else: + progress.advance(ptask) + mnrl_total_count += len(mnrl_set) + progress.update(ptask, description=f"Processing {filename}...") + found_expired = existing_phone_numbers.intersection(mnrl_set) + if found_expired: + revoked_phone_numbers.update(found_expired) + rprint( + f"[blue]{filename}: {len(found_expired):,} matches in" + f" {len(mnrl_set):,} total" + ) + async_tasks.add( + asyncio.create_task( + forget_phone_numbers(found_expired, phone_prefix) + ) + ) + else: + rprint( + f"[cyan]{filename}: No matches in {len(mnrl_set):,} total" + ) + + # Await all the background tasks + for task in async_tasks: + try: + # TODO: Change this to `notifications = await task` then return them too + await task + except Exception as exc: # noqa: B902 # pylint: disable=broad-except + app.logger.exception("%s in forget_phone_numbers", repr(exc)) + return revoked_phone_numbers, mnrl_total_count, failures + + +async def process_mnrl(apikey: str) -> None: + """Process MNRL data using the API key.""" + console = get_console() + phone_prefix = '+91' + task_numbers = asyncio.create_task(get_existing_phone_numbers(phone_prefix)) + task_files = asyncio.create_task(get_mnrl_json_file_list(apikey)) + with console.status("Loading phone numbers..."): + existing_phone_numbers = await task_numbers + rprint(f"Evaluating {len(existing_phone_numbers):,} phone numbers for expiry") + try: + with console.status("Getting MNRL download list..."): + mnrl_filenames = await task_files + except httpx.HTTPError as exc: + err = f"{exc!r} in MNRL API getting download list" + rprint(f"[red]{err}") + raise click.ClickException(err) + + revoked_phone_numbers, mnrl_total_count, failures = await process_mnrl_files( + apikey, existing_phone_numbers, phone_prefix, mnrl_filenames + ) + rprint( + f"Processed {mnrl_total_count:,} expired phone numbers in MNRL with" + f" {failures:,} failure(s) and revoked {len(revoked_phone_numbers):,} phone" + f" numbers" + ) + + +@periodic.command('mnrl') +def periodic_mnrl() -> None: + """Remove expired phone numbers using TRAI's MNRL (1 week).""" + apikey = app.config.get('MNRL_API_KEY') + if not apikey: + raise click.UsageError("App config is missing `MNRL_API_KEY`") + try: + asyncio.run(process_mnrl(apikey)) + except (KeyInvalidError, KeyExpiredError) as exc: + app.logger.error(exc.message) + raise click.ClickException(exc.message) from exc diff --git a/funnel/cli/periodic/stats.py b/funnel/cli/periodic/stats.py index 529677a3b..6ba0ccb1d 100644 --- a/funnel/cli/periodic/stats.py +++ b/funnel/cli/periodic/stats.py @@ -13,7 +13,6 @@ import httpx import pytz import telegram -from asgiref.sync import async_to_sync from dataclasses_json import DataClassJsonMixin from dateutil.relativedelta import relativedelta from furl import furl @@ -371,8 +370,6 @@ async def user_stats() -> Dict[str, ResourceStats]: # --- Commands ------------------------------------------------------------------------- -@periodic.command('dailystats') -@async_to_sync async def dailystats() -> None: """Publish daily stats to Telegram.""" if ( @@ -461,3 +458,9 @@ async def dailystats() -> None: disable_web_page_preview=True, message_thread_id=app.config.get('TELEGRAM_STATS_THREADID'), ) + + +@periodic.command('dailystats') +def periodic_dailystats() -> None: + """Publish daily stats to Telegram (midnight).""" + asyncio.run(dailystats()) diff --git a/funnel/models/phone_number.py b/funnel/models/phone_number.py index d16af0c74..7201b5fbf 100644 --- a/funnel/models/phone_number.py +++ b/funnel/models/phone_number.py @@ -705,6 +705,19 @@ def validate_for( return 'not_new' return None + @classmethod + def get_numbers(cls, prefix: str, remove: bool = True) -> Set[str]: + """Get all numbers with the given prefix as a Python set.""" + query = ( + cls.query.filter(cls.number.startswith(prefix)) + .options(sa.orm.load_only(cls.number)) + .yield_per(1000) + ) + if remove: + skip = len(prefix) + return {r.number[skip:] for r in query} + return {r.number for r in query} + @declarative_mixin class PhoneNumberMixin: diff --git a/requirements/base.in b/requirements/base.in index 2f8c08ed6..7366ebcdb 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -2,7 +2,6 @@ -e file:./build/dependencies/coaster alembic argon2-cffi -asgiref Babel base58 bcrypt @@ -33,6 +32,7 @@ html2text httpx[http2] icalendar idna +ijson itsdangerous linkify-it-py markdown-it-py<3.0 # Breaks our plugins, needs refactoring diff --git a/requirements/base.py37.txt b/requirements/base.py37.txt index d422b5064..80f23ae97 100644 --- a/requirements/base.py37.txt +++ b/requirements/base.py37.txt @@ -1,4 +1,4 @@ -# SHA1:4278e04aa69612d326a315d85b7b37f7742d3dc7 +# SHA1:2d92258ba7951d85a229036d73ae5835e50f0b5c # # This file is autogenerated by pip-compile-multi # To update, run: @@ -35,8 +35,6 @@ argon2-cffi-bindings==21.2.0 # via argon2-cffi arrow==1.2.3 # via rq-dashboard -asgiref==3.7.2 - # via -r requirements/base.in async-timeout==4.0.2 # via # aiohttp @@ -70,9 +68,9 @@ blinker==1.6.2 # -r requirements/base.in # baseframe # coaster -boto3==1.28.7 +boto3==1.28.8 # via -r requirements/base.in -botocore==1.31.7 +botocore==1.31.8 # via # boto3 # s3transfer @@ -114,7 +112,7 @@ cssselect==1.2.0 # via premailer cssutils==2.7.1 # via premailer -dataclasses-json==0.5.12 +dataclasses-json==0.5.13 # via -r requirements/base.in dnspython==2.3.0 # via @@ -235,6 +233,8 @@ idna==3.4 # requests # tldextract # yarl +ijson==3.2.2 + # via -r requirements/base.in importlib-metadata==6.7.0 # via # alembic @@ -328,7 +328,7 @@ packaging==23.1 # marshmallow passlib==1.7.4 # via -r requirements/base.in -phonenumbers==8.13.16 +phonenumbers==8.13.17 # via -r requirements/base.in premailer==3.10.0 # via -r requirements/base.in @@ -508,7 +508,6 @@ typing-extensions==4.7.1 # anyio # argon2-cffi # arrow - # asgiref # async-timeout # baseframe # coaster diff --git a/requirements/base.txt b/requirements/base.txt index 5cbd79bac..c49687996 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:4278e04aa69612d326a315d85b7b37f7742d3dc7 +# SHA1:2d92258ba7951d85a229036d73ae5835e50f0b5c # # This file is autogenerated by pip-compile-multi # To update, run: @@ -35,8 +35,6 @@ argon2-cffi-bindings==21.2.0 # via argon2-cffi arrow==1.2.3 # via rq-dashboard -asgiref==3.7.2 - # via -r requirements/base.in async-timeout==4.0.2 # via # aiohttp @@ -65,9 +63,9 @@ blinker==1.6.2 # baseframe # coaster # flask -boto3==1.28.7 +boto3==1.28.8 # via -r requirements/base.in -botocore==1.31.7 +botocore==1.31.8 # via # boto3 # s3transfer @@ -109,7 +107,7 @@ cssselect==1.2.0 # via premailer cssutils==2.7.1 # via premailer -dataclasses-json==0.5.12 +dataclasses-json==0.5.13 # via -r requirements/base.in dnspython==2.4.0 # via @@ -230,6 +228,8 @@ idna==3.4 # requests # tldextract # yarl +ijson==3.2.2 + # via -r requirements/base.in importlib-metadata==6.8.0 # via # flask @@ -276,7 +276,7 @@ markupsafe==2.1.3 # mako # werkzeug # wtforms -marshmallow==3.19.0 +marshmallow==3.20.1 # via dataclasses-json maxminddb==2.4.0 # via geoip2 @@ -312,7 +312,7 @@ packaging==23.1 # marshmallow passlib==1.7.4 # via -r requirements/base.in -phonenumbers==8.13.16 +phonenumbers==8.13.17 # via -r requirements/base.in premailer==3.10.0 # via -r requirements/base.in @@ -488,7 +488,6 @@ typing-extensions==4.7.1 # via # -r requirements/base.in # alembic - # asgiref # baseframe # coaster # psycopg diff --git a/requirements/dev.in b/requirements/dev.in index d49d8d2a9..90870123e 100644 --- a/requirements/dev.in +++ b/requirements/dev.in @@ -32,6 +32,7 @@ toml tomli types-chevron types-geoip2 +types-mock types-python-dateutil types-pytz types-redis diff --git a/requirements/dev.py37.txt b/requirements/dev.py37.txt index 2acd8ba78..2197793e2 100644 --- a/requirements/dev.py37.txt +++ b/requirements/dev.py37.txt @@ -1,4 +1,4 @@ -# SHA1:8f1b556d0dcd9ac078682465a2238fa29b4784ef +# SHA1:8d67d5bb6492c975276e27d9da9f9b0a0f5b7d77 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -149,7 +149,7 @@ typed-ast==1.5.5 # black # flake8-annotations # mypy -types-chevron==0.14.2.4 +types-chevron==0.14.2.5 # via -r requirements/dev.in types-geoip2==3.0.0 # via -r requirements/dev.in @@ -157,17 +157,19 @@ types-ipaddress==1.0.8 # via types-maxminddb types-maxminddb==1.5.0 # via types-geoip2 -types-pyopenssl==23.2.0.1 +types-mock==5.1.0.1 + # via -r requirements/dev.in +types-pyopenssl==23.2.0.2 # via types-redis -types-python-dateutil==2.8.19.13 +types-python-dateutil==2.8.19.14 # via -r requirements/dev.in types-pytz==2023.3.0.0 # via -r requirements/dev.in -types-redis==4.6.0.2 +types-redis==4.6.0.3 # via -r requirements/dev.in -types-requests==2.31.0.1 +types-requests==2.31.0.2 # via -r requirements/dev.in -types-urllib3==1.26.25.13 +types-urllib3==1.26.25.14 # via types-requests virtualenv==20.24.1 # via pre-commit diff --git a/requirements/dev.txt b/requirements/dev.txt index 87e5631f7..ea0c3704e 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,4 +1,4 @@ -# SHA1:8f1b556d0dcd9ac078682465a2238fa29b4784ef +# SHA1:8d67d5bb6492c975276e27d9da9f9b0a0f5b7d77 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -143,7 +143,7 @@ tokenize-rt==5.1.0 # via pyupgrade toposort==1.10 # via pip-compile-multi -types-chevron==0.14.2.4 +types-chevron==0.14.2.5 # via -r requirements/dev.in types-geoip2==3.0.0 # via -r requirements/dev.in @@ -151,17 +151,19 @@ types-ipaddress==1.0.8 # via types-maxminddb types-maxminddb==1.5.0 # via types-geoip2 -types-pyopenssl==23.2.0.1 +types-mock==5.1.0.1 + # via -r requirements/dev.in +types-pyopenssl==23.2.0.2 # via types-redis -types-python-dateutil==2.8.19.13 +types-python-dateutil==2.8.19.14 # via -r requirements/dev.in types-pytz==2023.3.0.0 # via -r requirements/dev.in -types-redis==4.6.0.2 +types-redis==4.6.0.3 # via -r requirements/dev.in -types-requests==2.31.0.1 +types-requests==2.31.0.2 # via -r requirements/dev.in -types-urllib3==1.26.25.13 +types-urllib3==1.26.25.14 # via types-requests virtualenv==20.24.1 # via pre-commit diff --git a/requirements/test.in b/requirements/test.in index 28f7bb9b3..481bcca33 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -4,6 +4,7 @@ colorama coverage coveralls lxml +mock;python_version=="3.7" Pygments pytest pytest-asyncio diff --git a/requirements/test.py37.txt b/requirements/test.py37.txt index 2aa8b0334..9f1899fb2 100644 --- a/requirements/test.py37.txt +++ b/requirements/test.py37.txt @@ -1,4 +1,4 @@ -# SHA1:f1dd8d59a43608d547da08b1d958365a3ca6e564 +# SHA1:210785110b0bd0694e5a75e2f1c15924908a21c4 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -27,6 +27,8 @@ docopt==0.6.2 # via coveralls iniconfig==2.0.0 # via pytest +mock==5.1.0 ; python_version == "3.7" + # via -r requirements/test.in outcome==1.2.0 # via trio parse==1.19.1 @@ -82,7 +84,7 @@ pytest-variables==3.0.0 # via pytest-selenium requests-mock==1.11.0 # via -r requirements/test.in -respx==0.20.1 +respx==0.20.2 # via -r requirements/test.in selenium==4.9.1 # via diff --git a/requirements/test.txt b/requirements/test.txt index 2acc990c2..367974ae4 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,4 +1,4 @@ -# SHA1:f1dd8d59a43608d547da08b1d958365a3ca6e564 +# SHA1:210785110b0bd0694e5a75e2f1c15924908a21c4 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -82,7 +82,7 @@ pytest-variables==3.0.0 # via pytest-selenium requests-mock==1.11.0 # via -r requirements/test.in -respx==0.20.1 +respx==0.20.2 # via -r requirements/test.in selenium==4.9.1 # via diff --git a/sample.env b/sample.env index f9c49b8d5..7c1fdc651 100644 --- a/sample.env +++ b/sample.env @@ -171,6 +171,8 @@ FLASK_GOOGLE_MAPS_API_KEY= FLASK_RECAPTCHA_USE_SSL=true FLASK_RECAPTCHA_PUBLIC_KEY=null FLASK_RECAPTCHA_PRIVATE_KEY=null +# TRAI Mobile Number Revocation List (MNRL) for expired phone numbers +FLASK_MNRL_API_KEY=null # --- SMS integrations # Exotel (for SMS to Indian numbers; primary) diff --git a/tests/unit/cli/periodic_mnrl_test.py b/tests/unit/cli/periodic_mnrl_test.py new file mode 100644 index 000000000..738845af6 --- /dev/null +++ b/tests/unit/cli/periodic_mnrl_test.py @@ -0,0 +1,133 @@ +"""Tests for the periodic CLI stats commands.""" +# pylint: disable=redefined-outer-name + +from __future__ import annotations + +from unittest.mock import patch + +import httpx +import pytest +from click.testing import CliRunner +from respx import MockRouter + +from funnel.cli.periodic import mnrl as cli_mnrl, periodic + +MNRL_FILES_URL = 'https://mnrl.trai.gov.in/api/mnrl/files/{apikey}' +MNRL_JSON_URL = 'https://mnrl.trai.gov.in/api/mnrl/json/{filename}/{apikey}' + + +@pytest.fixture(scope='module') +def mnrl_files_response() -> bytes: + """Sample response for MNRL files API.""" + return ( + b'{"status":200,"message":"Success","mnrl_files":{' + b'"zip":[{"file_name":"test.rar","size_in_kb":1}],' + b'"json":[{"file_name":"test.json","size_in_kb":1}]' + b'}}' + ) + + +@pytest.fixture(scope='module') +def mnrl_files_response_keyinvalid() -> bytes: + return b'{"status": 401, "message": "Invalid Key"}' + + +@pytest.fixture(scope='module') +def mnrl_files_response_keyexpired() -> bytes: + return b'{"status": 407,"message": "Key Expired"}' + + +@pytest.fixture(scope='module') +def mnrl_json_response() -> bytes: + """Sample response for MNRL JSON API.""" + return ( + b'{"status":200,"file_name":"test.json",' + b'"payload":[{"n":"1111111111"},{"n":"2222222222"},{"n":"3333333333"}]}' + ) + + +@pytest.mark.asyncio() +@pytest.mark.parametrize('status_code', [200, 401]) +async def test_mnrl_file_list_apikey_invalid( + respx_mock: MockRouter, mnrl_files_response_keyinvalid: bytes, status_code: int +) -> None: + """MNRL file list getter raises KeyInvalidError if the API key is invalid.""" + respx_mock.get(MNRL_FILES_URL.format(apikey='invalid')).mock( + return_value=httpx.Response(status_code, content=mnrl_files_response_keyinvalid) + ) + with pytest.raises(cli_mnrl.KeyInvalidError): + await cli_mnrl.get_mnrl_json_file_list('invalid') + + +@pytest.mark.asyncio() +@pytest.mark.parametrize('status_code', [200, 407]) +async def test_mnrl_file_list_apikey_expired( + respx_mock: MockRouter, mnrl_files_response_keyexpired: bytes, status_code: int +) -> None: + """MNRL file list getter raises KeyExpiredError if the API key has expired.""" + respx_mock.get(MNRL_FILES_URL.format(apikey='expired')).mock( + return_value=httpx.Response(status_code, content=mnrl_files_response_keyexpired) + ) + with pytest.raises(cli_mnrl.KeyExpiredError): + await cli_mnrl.get_mnrl_json_file_list('expired') + + +@pytest.mark.asyncio() +async def test_mnrl_file_list( + respx_mock: MockRouter, mnrl_files_response: bytes +) -> None: + """MNRL file list getter returns a list.""" + respx_mock.get(MNRL_FILES_URL.format(apikey='12345')).mock( + return_value=httpx.Response(200, content=mnrl_files_response) + ) + assert await cli_mnrl.get_mnrl_json_file_list('12345') == ['test.json'] + + +@pytest.mark.asyncio() +@pytest.mark.mock_config('app', {'MNRL_API_KEY': '12345'}) +async def test_mnrl_file_numbers( + respx_mock: MockRouter, mnrl_json_response: bytes +) -> None: + async with httpx.AsyncClient(http2=True) as client: + respx_mock.get(MNRL_JSON_URL.format(apikey='12345', filename='test.json')).mock( + return_value=httpx.Response(200, content=mnrl_json_response) + ) + assert await cli_mnrl.get_mnrl_json_file_numbers( + client, apikey='12345', filename='test.json' + ) == ('test.json', {'1111111111', '2222222222', '3333333333'}) + + +# --- CLI interface + + +@pytest.mark.mock_config('app', {'MNRL_API_KEY': ...}) +def test_cli_mnrl_needs_api_key() -> None: + """CLI command requires API key in config.""" + runner = CliRunner() + result = runner.invoke(periodic, ['mnrl']) + assert "App config is missing `MNRL_API_KEY`" in result.output + assert result.exit_code == 2 # click exits with 2 for UsageError + + +@pytest.mark.mock_config('app', {'MNRL_API_KEY': '12345'}) +def test_cli_mnrl_accepts_api_key() -> None: + """CLI command runs if an API key is present.""" + with patch('funnel.cli.periodic.mnrl.process_mnrl', return_value=None) as mock: + runner = CliRunner() + runner.invoke(periodic, ['mnrl']) + assert mock.called + + +@pytest.mark.mock_config('app', {'MNRL_API_KEY': 'invalid'}) +@pytest.mark.usefixtures('db_session') +def test_cli_mnrl_invalid_api_key( + respx_mock: MockRouter, mnrl_files_response_keyinvalid: bytes +) -> None: + """CLI command prints an exception given an invalid API key.""" + respx_mock.get(MNRL_FILES_URL.format(apikey='invalid')).mock( + return_value=httpx.Response(200, content=mnrl_files_response_keyinvalid) + ) + runner = CliRunner() + result = runner.invoke(periodic, ['mnrl']) + assert "key is invalid" in result.output + assert result.exit_code == 1 # click exits with 1 for ClickException diff --git a/tests/unit/models/phone_number_test.py b/tests/unit/models/phone_number_test.py index 87c5ff9cf..3a268972c 100644 --- a/tests/unit/models/phone_number_test.py +++ b/tests/unit/models/phone_number_test.py @@ -532,6 +532,32 @@ def test_phone_number_blocked() -> None: assert pn1.formatted == EXAMPLE_NUMBER_IN_FORMATTED +def test_get_numbers(db_session) -> None: + """Get phone numbers in bulk.""" + for number in ( + EXAMPLE_NUMBER_IN, + EXAMPLE_NUMBER_GB, + EXAMPLE_NUMBER_CA, + EXAMPLE_NUMBER_DE, + EXAMPLE_NUMBER_US, + ): + models.PhoneNumber.add(number) + assert models.PhoneNumber.get_numbers(prefix='+91') == { + EXAMPLE_NUMBER_IN_UNPREFIXED + } + assert models.PhoneNumber.get_numbers(prefix='+1', remove=False) == { + EXAMPLE_NUMBER_CA, + EXAMPLE_NUMBER_US, + } + assert models.PhoneNumber.get_numbers('+', False) == { + EXAMPLE_NUMBER_IN, + EXAMPLE_NUMBER_GB, + EXAMPLE_NUMBER_CA, + EXAMPLE_NUMBER_DE, + EXAMPLE_NUMBER_US, + } + + def test_phone_number_mixin( # pylint: disable=too-many-locals,too-many-statements phone_models, db_session ) -> None: From a84f4f6c80aa284976fe72e149a0e4cb957c154c Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Fri, 21 Jul 2023 17:36:30 +0530 Subject: [PATCH 206/281] Remove CleanWebpackPlugin (#1801) Fixes #1735 --- package-lock.json | 12045 ++++++++++++++++++++++++++++++++------------ package.json | 10 +- webpack.config.js | 5 +- 3 files changed, 8697 insertions(+), 3363 deletions(-) diff --git a/package-lock.json b/package-lock.json index 518518f5f..79a13e515 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "hasgeek", "version": "1.0.0", - "lockfileVersion": 3, + "lockfileVersion": 2, "requires": true, "packages": { "": { @@ -43,7 +43,7 @@ "po2json": "^1.0.0-beta-3", "prismjs": "^1.29.0", "ractive": "^0.8.0", - "select2": "^4.0.13", + "select2": "4.0.3", "sprintf-js": "^1.1.2", "timeago.js": "^4.0.2", "toastr": "^2.1.4", @@ -53,8 +53,7 @@ "vega-embed": "^6.21.0", "vega-lite": "^5.6.0", "vue": "^2.6.14", - "vue-script2": "^2.1.0", - "webpack-manifest-plugin": "^5.0.0" + "vue-script2": "^2.1.0" }, "devDependencies": { "@babel/core": "^7.14.6", @@ -64,7 +63,7 @@ "babel-eslint": "^10.0.3", "babel-loader": "^8.2.2", "clean-webpack-plugin": "^3.0.0", - "cypress": "^4.2.0", + "cypress": "^10.6.0", "dayjs": "^1.10.6", "eslint": "^7.30.0", "eslint-config-airbnb": "^18.2.1", @@ -81,22 +80,14 @@ "sass-loader": "^13.2.2", "webpack": "^5.72.1", "webpack-cli": "^4.9.2", + "webpack-manifest-plugin": "^5.0.0", "workbox-webpack-plugin": "^6.1.5" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -107,9 +98,8 @@ }, "node_modules/@babel/code-frame": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.22.5" }, @@ -118,35 +108,33 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.22.5", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", + "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.2", - "semver": "^6.3.1" + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -157,10 +145,9 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", @@ -173,9 +160,8 @@ }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -185,9 +171,8 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", - "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -196,16 +181,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", + "@babel/compat-data": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "browserslist": "^4.21.3", "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -215,20 +199,19 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", - "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" + "@babel/helper-split-export-declaration": "^7.22.5", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -238,14 +221,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", - "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", - "semver": "^6.3.1" + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -255,16 +237,16 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz", - "integrity": "sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==", + "version": "0.4.0", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.14.2", + "semver": "^6.1.2" }, "peerDependencies": { "@babel/core": "^7.4.0-0" @@ -272,18 +254,16 @@ }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.22.5", "@babel/types": "^7.22.5" @@ -294,9 +274,8 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -306,9 +285,8 @@ }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -318,9 +296,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -329,29 +306,27 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -361,22 +336,21 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-wrap-function": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -386,27 +360,25 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -416,9 +388,8 @@ }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -427,10 +398,9 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -440,38 +410,35 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", - "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { @@ -479,13 +446,12 @@ } }, "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", + "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { @@ -494,8 +460,7 @@ }, "node_modules/@babel/highlight": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", @@ -506,9 +471,8 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "version": "7.22.5", + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -518,9 +482,8 @@ }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -533,9 +496,8 @@ }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -550,9 +512,8 @@ }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -562,9 +523,8 @@ }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -578,9 +538,8 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -590,9 +549,8 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -602,9 +560,8 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -617,9 +574,8 @@ }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -629,9 +585,8 @@ }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -641,9 +596,8 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -656,9 +610,8 @@ }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -671,9 +624,8 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -683,9 +635,8 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -695,9 +646,8 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -707,9 +657,8 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -719,9 +668,8 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -731,9 +679,8 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -743,9 +690,8 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -755,9 +701,8 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -767,9 +712,8 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -782,9 +726,8 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -797,9 +740,8 @@ }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -813,9 +755,8 @@ }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -827,10 +768,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", - "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -846,9 +786,8 @@ }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -863,9 +802,8 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -878,9 +816,8 @@ }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", - "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -893,9 +830,8 @@ }, "node_modules/@babel/plugin-transform-class-properties": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -909,9 +845,8 @@ }, "node_modules/@babel/plugin-transform-class-static-block": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", - "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -925,19 +860,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-compilation-targets": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-split-export-declaration": "^7.22.5", "globals": "^11.1.0" }, "engines": { @@ -949,9 +883,8 @@ }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.5" @@ -965,9 +898,8 @@ }, "node_modules/@babel/plugin-transform-destructuring": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", - "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -980,9 +912,8 @@ }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -996,9 +927,8 @@ }, "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1011,9 +941,8 @@ }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", - "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1027,9 +956,8 @@ }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1043,9 +971,8 @@ }, "node_modules/@babel/plugin-transform-export-namespace-from": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", - "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1059,9 +986,8 @@ }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1074,9 +1000,8 @@ }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.5", "@babel/helper-function-name": "^7.22.5", @@ -1091,9 +1016,8 @@ }, "node_modules/@babel/plugin-transform-json-strings": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", - "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1107,9 +1031,8 @@ }, "node_modules/@babel/plugin-transform-literals": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1122,9 +1045,8 @@ }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", - "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1138,9 +1060,8 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1153,9 +1074,8 @@ }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1169,9 +1089,8 @@ }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", - "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -1186,9 +1105,8 @@ }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", - "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.22.5", @@ -1204,9 +1122,8 @@ }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1220,9 +1137,8 @@ }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1236,9 +1152,8 @@ }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1251,9 +1166,8 @@ }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", - "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1267,9 +1181,8 @@ }, "node_modules/@babel/plugin-transform-numeric-separator": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", - "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1283,9 +1196,8 @@ }, "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", - "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.5", @@ -1302,9 +1214,8 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.5" @@ -1318,9 +1229,8 @@ }, "node_modules/@babel/plugin-transform-optional-catch-binding": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", - "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1333,10 +1243,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", - "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1351,9 +1260,8 @@ }, "node_modules/@babel/plugin-transform-parameters": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1366,9 +1274,8 @@ }, "node_modules/@babel/plugin-transform-private-methods": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1382,9 +1289,8 @@ }, "node_modules/@babel/plugin-transform-private-property-in-object": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", - "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.5", @@ -1400,9 +1306,8 @@ }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1415,9 +1320,8 @@ }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", - "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.1" @@ -1431,9 +1335,8 @@ }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1446,9 +1349,8 @@ }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1461,9 +1363,8 @@ }, "node_modules/@babel/plugin-transform-spread": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1477,9 +1378,8 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1492,9 +1392,8 @@ }, "node_modules/@babel/plugin-transform-template-literals": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1507,9 +1406,8 @@ }, "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1522,9 +1420,8 @@ }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", - "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1537,9 +1434,8 @@ }, "node_modules/@babel/plugin-transform-unicode-property-regex": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1553,9 +1449,8 @@ }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1569,9 +1464,8 @@ }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1584,13 +1478,12 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", - "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", @@ -1615,13 +1508,13 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.7", + "@babel/plugin-transform-async-generator-functions": "^7.22.5", "@babel/plugin-transform-async-to-generator": "^7.22.5", "@babel/plugin-transform-block-scoped-functions": "^7.22.5", "@babel/plugin-transform-block-scoping": "^7.22.5", "@babel/plugin-transform-class-properties": "^7.22.5", "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-classes": "^7.22.5", "@babel/plugin-transform-computed-properties": "^7.22.5", "@babel/plugin-transform-destructuring": "^7.22.5", "@babel/plugin-transform-dotall-regex": "^7.22.5", @@ -1646,7 +1539,7 @@ "@babel/plugin-transform-object-rest-spread": "^7.22.5", "@babel/plugin-transform-object-super": "^7.22.5", "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.6", + "@babel/plugin-transform-optional-chaining": "^7.22.5", "@babel/plugin-transform-parameters": "^7.22.5", "@babel/plugin-transform-private-methods": "^7.22.5", "@babel/plugin-transform-private-property-in-object": "^7.22.5", @@ -1664,11 +1557,11 @@ "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", "@babel/preset-modules": "^0.1.5", "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.4", - "babel-plugin-polyfill-corejs3": "^0.8.2", - "babel-plugin-polyfill-regenerator": "^0.5.1", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", + "core-js-compat": "^3.30.2", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -1679,9 +1572,8 @@ }, "node_modules/@babel/preset-modules": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -1695,9 +1587,8 @@ }, "node_modules/@babel/regjsgen": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/runtime": { "version": "7.22.6", @@ -1712,9 +1603,8 @@ }, "node_modules/@babel/template": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/parser": "^7.22.5", @@ -1725,18 +1615,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "version": "7.22.5", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", + "@babel/generator": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/parser": "^7.22.5", "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" @@ -1747,9 +1636,8 @@ }, "node_modules/@babel/types": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5", @@ -1761,13 +1649,11 @@ }, "node_modules/@braintree/sanitize-url": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz", - "integrity": "sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==" + "license": "MIT" }, "node_modules/@codemirror/autocomplete": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.9.0.tgz", - "integrity": "sha512-Fbwm0V/Wn3BkEJZRhr0hi5BhCo5a7eBL6LYaliPjOSwCyfOpnjXY59HruSxOUNV+1OYer0Tgx1zRNQttjXyDog==", + "version": "6.8.0", + "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -1783,8 +1669,7 @@ }, "node_modules/@codemirror/commands": { "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.4.tgz", - "integrity": "sha512-42lmDqVH0ttfilLShReLXsDfASKLXzfyC36bzwcqzox9PlHulMcsUOfHXNo2X2aFMVNUoQ7j+d4q5bnfseYoOA==", + "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.2.0", @@ -1794,8 +1679,7 @@ }, "node_modules/@codemirror/lang-css": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.0.tgz", - "integrity": "sha512-oyIdJM29AyRPM3+PPq1I2oIk8NpUfEN3kAM05XWDDs6o3gSneIKaVJifT2P+fqONLou2uIgXynFyMUDQvo/szA==", + "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -1805,9 +1689,8 @@ } }, "node_modules/@codemirror/lang-html": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.5.tgz", - "integrity": "sha512-dUCSxkIw2G+chaUfw3Gfu5kkN83vJQN8gfQDp9iEHsIZluMJA0YJveT12zg/28BJx+uPsbQ6VimKCgx3oJrZxA==", + "version": "6.4.4", + "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", @@ -1822,8 +1705,7 @@ }, "node_modules/@codemirror/lang-javascript": { "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.1.9.tgz", - "integrity": "sha512-z3jdkcqOEBT2txn2a87A0jSy6Te3679wg/U8QzMeftFt+4KA6QooMwfdFzJiuC3L6fXKfTXZcDocoaxMYfGz0w==", + "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", @@ -1835,11 +1717,9 @@ } }, "node_modules/@codemirror/lang-markdown": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.2.0.tgz", - "integrity": "sha512-deKegEQVzfBAcLPqsJEa+IxotqPVwWZi90UOEvQbfa01NTAw8jNinrykuYPTULGUj+gha0ZG2HBsn4s5d64Qrg==", + "version": "6.1.1", + "license": "MIT", "dependencies": { - "@codemirror/autocomplete": "^6.7.1", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.3.0", "@codemirror/state": "^6.0.0", @@ -1850,8 +1730,7 @@ }, "node_modules/@codemirror/language": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.8.0.tgz", - "integrity": "sha512-r1paAyWOZkfY0RaYEZj3Kul+MiQTEbDvYqf8gPGaRvNneHXCmfSaAVFjwRUPlgxS8yflMxw2CTu6uCMp8R8A2g==", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -1862,9 +1741,8 @@ } }, "node_modules/@codemirror/lint": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.0.tgz", - "integrity": "sha512-6VZ44Ysh/Zn07xrGkdtNfmHCbGSHZzFBdzWi0pbd7chAQ/iUcpLGX99NYRZTa7Ugqg4kEHCqiHhcZnH0gLIgSg==", + "version": "6.2.2", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -1873,94 +1751,30 @@ }, "node_modules/@codemirror/state": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.1.tgz", - "integrity": "sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==" + "license": "MIT" }, "node_modules/@codemirror/view": { - "version": "6.15.3", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.15.3.tgz", - "integrity": "sha512-chNgR8H7Ipx7AZUt0+Kknk7BCow/ron3mHd1VZdM7hQXiI79+UlWqcxpCiexTxZQ+iSkqndk3HHAclJOcjSuog==", + "version": "6.13.2", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.1.4", "style-mod": "^4.0.0", "w3c-keyname": "^2.2.4" } }, - "node_modules/@cypress/listr-verbose-renderer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", - "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/@colors/colors": { + "version": "1.5.0", "dev": true, + "license": "MIT", + "optional": true, "engines": { - "node": ">=0.8.0" + "node": ">=0.1.90" } }, "node_modules/@cypress/request": { "version": "2.88.11", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", - "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1987,9 +1801,8 @@ }, "node_modules/@cypress/xvfb": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" @@ -1997,26 +1810,23 @@ }, "node_modules/@cypress/xvfb/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -2034,8 +1844,7 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -2048,8 +1857,7 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2067,8 +1875,7 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -2080,13 +1887,11 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "license": "BSD-3-Clause" }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2098,24 +1903,21 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "version": "0.3.3", + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -2123,13 +1925,11 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -2137,18 +1937,15 @@ }, "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "license": "MIT" }, "node_modules/@lezer/common": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.3.tgz", - "integrity": "sha512-JH4wAXCgUOcCGNekQPLhVeUtIqjH0yPBs7vvUdSjyQama9618IOKFJwkv2kcqdhF0my8hQEgCTEJU0GIgnahvA==" + "license": "MIT" }, "node_modules/@lezer/css": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.3.tgz", - "integrity": "sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==", + "version": "1.1.2", + "license": "MIT", "dependencies": { "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" @@ -2156,16 +1953,14 @@ }, "node_modules/@lezer/highlight": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.6.tgz", - "integrity": "sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0" } }, "node_modules/@lezer/html": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.6.tgz", - "integrity": "sha512-Kk9HJARZTc0bAnMQUqbtuhFVsB4AnteR2BFUWfZV7L/x1H0aAKz6YabrfJ2gk/BEgjh9L3hg5O4y2IDZRBdzuQ==", + "version": "1.3.4", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", @@ -2173,44 +1968,31 @@ } }, "node_modules/@lezer/javascript": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.4.tgz", - "integrity": "sha512-0BiBjpEcrt2IXrIzEAsdTLylrVhGHRqVQL3baTBx1sf4qewjIvhG1/pTUumu7W/7YR0AASjLQOQxFmo5EvNmzQ==", + "version": "1.4.3", + "license": "MIT", "dependencies": { "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "node_modules/@lezer/lr": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.9.tgz", - "integrity": "sha512-XPz6dzuTHlnsbA5M2DZgjflNQ+9Hi5Swhic0RULdp3oOs3rh6bqGZolosVqN/fQIT8uNiepzINJDnS39oweTHQ==", + "version": "1.3.6", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0" } }, "node_modules/@lezer/markdown": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.0.5.tgz", - "integrity": "sha512-J0LRA0l21Ec6ZroaOxjxsWWm+swCOFHcnOU85Z7aH9nj3eJx5ORmtzVkWzs9e21SZrdvyIzM1gt+YF/HnqbvnA==", + "version": "1.0.2", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0" } }, - "node_modules/@nicolo-ribaudo/semver-v6": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", - "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2221,16 +2003,14 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2241,9 +2021,8 @@ }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" @@ -2264,9 +2043,8 @@ }, "node_modules/@rollup/plugin-node-resolve": { "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", @@ -2284,9 +2062,8 @@ }, "node_modules/@rollup/plugin-replace": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "magic-string": "^0.25.7" @@ -2297,9 +2074,8 @@ }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -2314,35 +2090,13 @@ }, "node_modules/@rollup/pluginutils/node_modules/@types/estree": { "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/@samverschueren/stream-to-observable": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", - "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", "dev": true, - "dependencies": { - "any-observable": "^0.3.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "rxjs": { - "optional": true - }, - "zen-observable": { - "optional": true - } - } + "license": "MIT" }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "ejs": "^3.1.6", "json5": "^2.2.0", @@ -2352,8 +2106,7 @@ }, "node_modules/@types/clone": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/clone/-/clone-2.1.1.tgz", - "integrity": "sha512-BZIU34bSYye0j/BFcPraiDZ5ka6MJADjcDVELGf7glr9K+iE8NYVjFslJFVWzskSxkLLyCrSPScE82/UUoBSvg==" + "license": "MIT" }, "node_modules/@types/d3": { "version": "7.4.0", @@ -2579,8 +2332,7 @@ }, "node_modules/@types/eslint": { "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -2588,8 +2340,7 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -2597,8 +2348,7 @@ }, "node_modules/@types/estree": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + "license": "MIT" }, "node_modules/@types/geojson": { "version": "7946.0.10", @@ -2607,9 +2357,8 @@ }, "node_modules/@types/glob": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, + "license": "MIT", "dependencies": { "@types/minimatch": "*", "@types/node": "*" @@ -2617,79 +2366,67 @@ }, "node_modules/@types/json-schema": { "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/minimatch": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", - "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==" + "version": "20.3.1", + "license": "MIT" }, "node_modules/@types/resolve": { "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/sinonjs__fake-timers": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", - "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", - "dev": true + "version": "8.1.1", + "dev": true, + "license": "MIT" }, "node_modules/@types/sizzle": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/source-list-map": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/tapable": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", - "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/trusted-types": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/uglify-js": { "version": "3.17.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", - "integrity": "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "^0.6.1" } }, "node_modules/@types/webpack": { "version": "4.41.33", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", - "integrity": "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/tapable": "^1", @@ -2701,9 +2438,8 @@ }, "node_modules/@types/webpack-sources": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", - "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/source-list-map": "*", @@ -2712,17 +2448,23 @@ }, "node_modules/@types/webpack-sources/node_modules/source-map": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@vue/compiler-sfc": { "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", "dependencies": { "@babel/parser": "^7.18.4", "postcss": "^8.4.14", @@ -2731,8 +2473,7 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -2740,23 +2481,19 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -2765,13 +2502,11 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -2781,29 +2516,25 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -2817,8 +2548,7 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -2829,8 +2559,7 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -2840,8 +2569,7 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -2853,8 +2581,7 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" @@ -2862,9 +2589,8 @@ }, "node_modules/@webpack-cli/configtest": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, + "license": "MIT", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" @@ -2872,9 +2598,8 @@ }, "node_modules/@webpack-cli/info": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, + "license": "MIT", "dependencies": { "envinfo": "^7.7.3" }, @@ -2884,9 +2609,8 @@ }, "node_modules/@webpack-cli/serve": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, + "license": "MIT", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -2898,18 +2622,15 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "license": "Apache-2.0" }, "node_modules/acorn": { "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2919,17 +2640,15 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -2938,19 +2657,9 @@ "node": ">=8" } }, - "node_modules/aggregate-error/node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2964,8 +2673,7 @@ }, "node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -2980,8 +2688,7 @@ }, "node_modules/ajv-formats/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -2995,46 +2702,53 @@ }, "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "license": "MIT" }, "node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, + "node_modules/almond": { + "version": "0.3.3", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ansi-colors": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "version": "4.3.2", "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -3042,20 +2756,10 @@ "node": ">=4" } }, - "node_modules/any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -3066,8 +2770,6 @@ }, "node_modules/arch": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true, "funding": [ { @@ -3082,35 +2784,32 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/argparse/node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "license": "BSD-3-Clause" }, "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "version": "5.2.1", "dev": true, + "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" } }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -3121,9 +2820,8 @@ }, "node_modules/array-includes": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -3140,9 +2838,8 @@ }, "node_modules/array-union": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, + "license": "MIT", "dependencies": { "array-uniq": "^1.0.1" }, @@ -3152,18 +2849,16 @@ }, "node_modules/array-uniq": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/array.prototype.flat": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -3179,9 +2874,8 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -3197,9 +2891,8 @@ }, "node_modules/array.prototype.tosorted": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.2", @@ -3209,100 +2902,70 @@ "get-intrinsic": "^1.1.3" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arrify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/asn1": { "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } }, "node_modules/assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/ast-types-flow": { "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/astral-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/async": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/autolinker": { "version": "0.28.1", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", - "integrity": "sha512-zQAFO1Dlsn69eXaO6+7YZc+v84aquQKbwpzCE3L0stj56ERn9hutFxPopViLjo9G+rWwjozRhgS5KJ25Xy19cQ==", + "license": "MIT", "dependencies": { "gulp-header": "^1.7.1" } }, "node_modules/available-typed-arrays": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3312,43 +2975,37 @@ }, "node_modules/aws-sign2": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/axe-core": { "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", "dev": true, + "license": "MPL-2.0", "engines": { "node": ">=4" } }, "node_modules/axobject-query": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" } }, "node_modules/babel-eslint": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.7.0", @@ -3366,9 +3023,8 @@ }, "node_modules/babel-loader": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", "dev": true, + "license": "MIT", "dependencies": { "find-cache-dir": "^3.3.1", "loader-utils": "^2.0.0", @@ -3384,39 +3040,36 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz", - "integrity": "sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==", + "version": "0.4.3", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.1", - "@nicolo-ribaudo/semver-v6": "^6.3.3" + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.4.0", + "semver": "^6.1.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz", - "integrity": "sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==", + "version": "0.8.1", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.4.0", + "core-js-compat": "^3.30.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz", - "integrity": "sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==", + "version": "0.5.0", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1" + "@babel/helper-define-polyfill-provider": "^0.4.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -3424,46 +3077,64 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/big.js": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/blob-util": { + "version": "2.0.2", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/bluebird": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3471,8 +3142,7 @@ }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -3482,8 +3152,6 @@ }, "node_modules/browserslist": { "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "funding": [ { "type": "opencollective", @@ -3498,6 +3166,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001503", "electron-to-chromium": "^1.4.431", @@ -3511,25 +3180,45 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "5.7.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-crc32": { "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "license": "MIT" }, "node_modules/builtin-modules": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -3539,18 +3228,16 @@ }, "node_modules/cachedir": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/call-bind": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -3561,16 +3248,13 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001517", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", - "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", + "version": "1.0.30001505", "funding": [ { "type": "opencollective", @@ -3584,18 +3268,17 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/caseless": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -3607,17 +3290,14 @@ }, "node_modules/check-more-types": { "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -3625,6 +3305,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3643,9 +3324,8 @@ }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3655,32 +3335,37 @@ }, "node_modules/chrome-trace-event": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "version": "3.8.0", "dev": true, - "engines": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { "node": ">=6" } }, "node_modules/clean-webpack-plugin": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", "dev": true, + "license": "MIT", "dependencies": { "@types/webpack": "^4.4.31", "del": "^4.1.1" @@ -3693,38 +3378,34 @@ } }, "node_modules/cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "restore-cursor": "^1.0.1" + "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "version": "0.6.3", "dev": true, + "license": "MIT", "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^2.1.1" + "string-width": "^4.2.0" }, "engines": { - "node": ">=6" + "node": "10.* || >= 12.*" }, "optionalDependencies": { - "colors": "^1.1.2" + "@colors/colors": "1.5.0" } }, "node_modules/cli-truncate": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^5.0.0" @@ -3738,9 +3419,8 @@ }, "node_modules/cli-truncate/node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -3750,9 +3430,8 @@ }, "node_modules/cli-truncate/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -3767,9 +3446,8 @@ }, "node_modules/cli-truncate/node_modules/strip-ansi": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -3782,8 +3460,7 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -3793,45 +3470,17 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/clone": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/clone-deep": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -3841,49 +3490,26 @@ "node": ">=6" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" - } + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -3892,73 +3518,50 @@ } }, "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "5.1.0", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/common-tags": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } + "license": "MIT" }, "node_modules/concat-with-sourcemaps": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "license": "ISC", "dependencies": { "source-map": "^0.6.1" } }, "node_modules/confusing-browser-globals": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/copy-webpack-plugin": { "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", @@ -3980,8 +3583,7 @@ }, "node_modules/copy-webpack-plugin/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -3995,8 +3597,7 @@ }, "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -4006,13 +3607,11 @@ }, "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "license": "MIT" }, "node_modules/copy-webpack-plugin/node_modules/schema-utils": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -4028,12 +3627,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", - "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", + "version": "3.31.0", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.21.9" + "browserslist": "^4.21.5" }, "funding": { "type": "opencollective", @@ -4042,26 +3640,22 @@ }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "license": "MIT" }, "node_modules/cose-base": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", - "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", "dependencies": { "layout-base": "^1.0.0" } }, "node_modules/crelt": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4073,95 +3667,188 @@ }, "node_modules/crypto-random-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/csstype": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "license": "MIT" }, "node_modules/cypress": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-4.12.1.tgz", - "integrity": "sha512-9SGIPEmqU8vuRA6xst2CMTYd9sCFCxKSzrHt0wr+w2iAQMCIIsXsQ5Gplns1sT6LDbZcmLv6uehabAOl3fhc9Q==", + "version": "10.11.0", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { - "@cypress/listr-verbose-renderer": "^0.4.1", - "@cypress/request": "^2.88.5", + "@cypress/request": "^2.88.10", "@cypress/xvfb": "^1.2.4", - "@types/sinonjs__fake-timers": "^6.0.1", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", - "arch": "^2.1.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", "bluebird": "^3.7.2", + "buffer": "^5.6.0", "cachedir": "^2.3.0", - "chalk": "^2.4.2", + "chalk": "^4.1.0", "check-more-types": "^2.24.0", - "cli-table3": "~0.5.1", - "commander": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", "common-tags": "^1.8.0", - "debug": "^4.1.1", - "eventemitter2": "^6.4.2", - "execa": "^1.0.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", "executable": "^4.1.1", - "extract-zip": "^1.7.0", - "fs-extra": "^8.1.0", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", "getos": "^3.2.1", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.2", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", "lazy-ass": "^1.6.0", - "listr": "^0.14.3", - "lodash": "^4.17.19", - "log-symbols": "^3.0.0", - "minimist": "^1.2.5", - "moment": "^2.27.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.6", "ospath": "^1.2.2", - "pretty-bytes": "^5.3.0", - "ramda": "~0.26.1", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", "request-progress": "^3.0.0", - "supports-color": "^7.1.0", - "tmp": "~0.1.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", "untildify": "^4.0.0", - "url": "^0.11.0", "yauzl": "^2.10.0" }, "bin": { "cypress": "bin/cypress" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" + } + }, + "node_modules/cypress/node_modules/@types/node": { + "version": "14.18.51", + "dev": true, + "license": "MIT" + }, + "node_modules/cypress/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cypress/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, + "node_modules/cypress/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, "node_modules/cypress/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/cypress/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cypress/node_modules/semver": { + "version": "7.5.4", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cypress/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/cypress/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, "node_modules/cytoscape": { "version": "3.25.0", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.25.0.tgz", - "integrity": "sha512-7MW3Iz57mCUo6JQCho6CmPBCbTlJr7LzyEtIkutG255HLVd4XuBg2I9BkTZLI/e4HoaOB/BiAzXuQybQ95+r9Q==", + "license": "MIT", "dependencies": { "heap": "^0.2.6", "lodash": "^4.17.21" @@ -4172,8 +3859,7 @@ }, "node_modules/cytoscape-cose-bilkent": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", - "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", "dependencies": { "cose-base": "^1.0.0" }, @@ -4183,8 +3869,7 @@ }, "node_modules/cytoscape-fcose": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", - "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", "dependencies": { "cose-base": "^2.2.0" }, @@ -4194,26 +3879,22 @@ }, "node_modules/cytoscape-fcose/node_modules/cose-base": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", - "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", "dependencies": { "layout-base": "^2.0.0" } }, "node_modules/cytoscape-fcose/node_modules/layout-base": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + "license": "MIT" }, "node_modules/d3": { "version": "3.5.6", - "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.6.tgz", - "integrity": "sha512-i1x8Q3lGerBazuvWsImnUKrjfCdBnRnk8aq7hqOK/5+CAWJTt/zr9CaR1mlJf17oH8l/v4mOaDLU+F/l2dq1Vg==" + "license": "BSD-3-Clause" }, "node_modules/d3-array": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -4223,16 +3904,14 @@ }, "node_modules/d3-axis": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-brush": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -4246,8 +3925,7 @@ }, "node_modules/d3-chord": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -4257,16 +3935,14 @@ }, "node_modules/d3-color": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-contour": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "dependencies": { "d3-array": "^3.2.0" }, @@ -4276,8 +3952,7 @@ }, "node_modules/d3-delaunay": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "dependencies": { "delaunator": "5" }, @@ -4287,16 +3962,14 @@ }, "node_modules/d3-dispatch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-drag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -4307,8 +3980,7 @@ }, "node_modules/d3-dsv": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -4331,24 +4003,21 @@ }, "node_modules/d3-dsv/node_modules/commander": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/d3-ease": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12" } }, "node_modules/d3-fetch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" }, @@ -4358,16 +4027,14 @@ }, "node_modules/d3-flextree": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/d3-flextree/-/d3-flextree-2.1.2.tgz", - "integrity": "sha512-gJiHrx5uTTHq44bjyIb3xpbmmdZcWLYPKeO9EPVOq8EylMFOiH2+9sWqKAiQ4DcFuOZTAxPOQyv0Rnmji/g15A==", + "license": "WTFPL", "dependencies": { "d3-hierarchy": "^1.1.5" } }, "node_modules/d3-force": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -4379,16 +4046,14 @@ }, "node_modules/d3-format": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-geo": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -4398,8 +4063,7 @@ }, "node_modules/d3-geo-projection": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", - "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", + "license": "ISC", "dependencies": { "commander": "7", "d3-array": "1 - 3", @@ -4418,21 +4082,18 @@ }, "node_modules/d3-geo-projection/node_modules/commander": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/d3-hierarchy": { "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + "license": "BSD-3-Clause" }, "node_modules/d3-interpolate": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -4442,40 +4103,35 @@ }, "node_modules/d3-path": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-polygon": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-quadtree": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-random": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-scale": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -4489,8 +4145,7 @@ }, "node_modules/d3-scale-chromatic": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -4501,16 +4156,14 @@ }, "node_modules/d3-selection": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-shape": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "dependencies": { "d3-path": "^3.1.0" }, @@ -4520,8 +4173,7 @@ }, "node_modules/d3-time": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -4531,8 +4183,7 @@ }, "node_modules/d3-time-format": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -4542,16 +4193,14 @@ }, "node_modules/d3-timer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-transition": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -4568,8 +4217,7 @@ }, "node_modules/d3-zoom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -4583,8 +4231,7 @@ }, "node_modules/dagre-d3-es": { "version": "7.0.9", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz", - "integrity": "sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==", + "license": "MIT", "dependencies": { "d3": "^7.8.2", "lodash-es": "^4.17.21" @@ -4592,8 +4239,7 @@ }, "node_modules/dagre-d3-es/node_modules/d3": { "version": "7.8.5", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", - "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -4632,23 +4278,20 @@ }, "node_modules/dagre-d3-es/node_modules/d3-hierarchy": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/damerau-levenshtein": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -4656,21 +4299,13 @@ "node": ">=0.10" } }, - "node_modules/date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true - }, "node_modules/dayjs": { - "version": "1.11.9", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", - "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" + "version": "1.11.8", + "license": "MIT" }, "node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -4685,23 +4320,20 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/define-properties": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, + "license": "MIT", "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -4715,9 +4347,8 @@ }, "node_modules/del": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/glob": "^7.1.1", "globby": "^6.1.0", @@ -4733,9 +4364,8 @@ }, "node_modules/del/node_modules/globby": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^1.0.1", "glob": "^7.0.3", @@ -4749,43 +4379,38 @@ }, "node_modules/del/node_modules/globby/node_modules/pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/delaunator": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "license": "ISC", "dependencies": { "robust-predicates": "^3.0.0" } }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/dequal": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -4795,8 +4420,7 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4806,20 +4430,17 @@ }, "node_modules/dompurify": { "version": "2.4.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", - "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==" + "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ecc-jsbn": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -4827,9 +4448,8 @@ }, "node_modules/ejs": { "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -4841,39 +4461,24 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.466", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.466.tgz", - "integrity": "sha512-TSkRvbXRXD8BwhcGlZXDsbI2lRoP8dvqR7LQnqQNk9KxXBc4tG8O+rTuXgTyIpEdiqSGKEBSqrxdqEntnjNncA==" - }, - "node_modules/elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "version": "1.4.435", + "license": "ISC" }, "node_modules/elkjs": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", - "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + "license": "EPL-2.0" }, "node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emojione": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/emojione/-/emojione-4.5.0.tgz", - "integrity": "sha512-Tq55Y3UgPOnayFDN+Qd6QMP0rpoH10a1nhSFN27s8gXW3qymgFIHiXys2ECYYAI134BafmI3qP9ni2rZOe9BjA==" + "version": "4.5.0" }, "node_modules/emojionearea": { "version": "3.4.2", - "resolved": "https://registry.npmjs.org/emojionearea/-/emojionearea-3.4.2.tgz", - "integrity": "sha512-u0i5hD/VqIE2PgmreT6Q2uKQkf9p8jbp2em23xB9llxHnsPxyu1RzzUwbZ/rLGfHpxvhUwYjGa9EYsuN3J+jLQ==", + "license": "MIT", "dependencies": { "emojione": ">=2.0.1", "jquery": ">=1.8.3", @@ -4882,34 +4487,30 @@ }, "node_modules/emojis-list": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/end-of-stream": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/enhanced-resolve": { "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -4920,8 +4521,7 @@ }, "node_modules/enquirer": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -4930,10 +4530,9 @@ } }, "node_modules/envinfo": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", - "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "version": "7.9.0", "dev": true, + "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -4942,19 +4541,17 @@ } }, "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "version": "1.21.2", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -4974,18 +4571,14 @@ "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", + "regexp.prototype.flags": "^1.4.3", "safe-regex-test": "^1.0.0", "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.9" }, "engines": { "node": ">= 0.4" @@ -4996,14 +4589,12 @@ }, "node_modules/es-module-lexer": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==" + "license": "MIT" }, "node_modules/es-set-tostringtag": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3", "has": "^1.0.3", @@ -5015,18 +4606,16 @@ }, "node_modules/es-shim-unscopables": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, + "license": "MIT", "dependencies": { "has": "^1.0.3" } }, "node_modules/es-to-primitive": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -5041,24 +4630,21 @@ }, "node_modules/escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -5113,9 +4699,8 @@ }, "node_modules/eslint-config-airbnb": { "version": "18.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", - "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-config-airbnb-base": "^14.2.1", "object.assign": "^4.1.2", @@ -5134,9 +4719,8 @@ }, "node_modules/eslint-config-airbnb-base": { "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", "dev": true, + "license": "MIT", "dependencies": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", @@ -5152,9 +4736,8 @@ }, "node_modules/eslint-config-prettier": { "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -5164,9 +4747,8 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.11.0", @@ -5175,18 +4757,16 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -5201,17 +4781,15 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-cypress": { "version": "2.13.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.13.3.tgz", - "integrity": "sha512-nAPjZE5WopCsgJwl3vHm5iafpV+ZRO76Z9hMyRygWhmg5ODXDPd+9MaPl7kdJ2azj+sO87H3P1PRnggIrz848g==", + "license": "MIT", "dependencies": { "globals": "^11.12.0" }, @@ -5221,9 +4799,8 @@ }, "node_modules/eslint-plugin-import": { "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -5250,18 +4827,16 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -5271,9 +4846,8 @@ }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.7", "aria-query": "^5.1.3", @@ -5301,9 +4875,8 @@ }, "node_modules/eslint-plugin-prettier": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" }, @@ -5322,9 +4895,8 @@ }, "node_modules/eslint-plugin-react": { "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "array-includes": "^3.1.6", @@ -5352,9 +4924,8 @@ }, "node_modules/eslint-plugin-react-hooks": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -5365,9 +4936,8 @@ }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "peer": true, "dependencies": { "esutils": "^2.0.2" @@ -5378,9 +4948,8 @@ }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "is-core-module": "^2.9.0", @@ -5396,8 +4965,7 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5408,16 +4976,14 @@ }, "node_modules/eslint-scope/node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint-utils": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -5430,16 +4996,14 @@ }, "node_modules/eslint-visitor-keys": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint-webpack-plugin": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.7.0.tgz", - "integrity": "sha512-bNaVVUvU4srexGhVcayn/F4pJAz19CWBkKoMx7aSQ4wtTbZQCnG5O9LHCE42mM+JSKOUp7n6vd5CIwzj7lOVGA==", + "license": "MIT", "dependencies": { "@types/eslint": "^7.29.0", "arrify": "^2.0.1", @@ -5462,8 +5026,7 @@ }, "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -5479,16 +5042,14 @@ }, "node_modules/eslint/node_modules/@babel/code-frame": { "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "license": "MIT", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -5501,8 +5062,7 @@ }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5516,8 +5076,7 @@ }, "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -5527,13 +5086,11 @@ }, "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -5543,16 +5100,14 @@ }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -5562,8 +5117,7 @@ }, "node_modules/eslint/node_modules/globals": { "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -5576,16 +5130,14 @@ }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5595,8 +5147,7 @@ }, "node_modules/eslint/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5609,8 +5160,7 @@ }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5620,8 +5170,7 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -5631,13 +5180,11 @@ }, "node_modules/eslint/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/espree": { "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -5649,8 +5196,7 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5661,8 +5207,7 @@ }, "node_modules/esquery": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -5672,8 +5217,7 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -5683,130 +5227,61 @@ }, "node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-walker": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "dev": true + "version": "6.4.7", + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" + "node": ">=10" }, - "bin": { - "which": "bin/which" + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/executable": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.2.0" }, @@ -5816,82 +5291,56 @@ }, "node_modules/executable/node_modules/pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "bin": { "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/extract-zip/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/extsprintf": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" - ] + ], + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.2.12", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -5905,8 +5354,7 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -5916,62 +5364,56 @@ }, "node_modules/fast-json-patch": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", - "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==" + "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "license": "MIT" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fd-slicer": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "license": "MIT", "dependencies": { "pend": "~1.2.0" } }, "node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "version": "3.2.0", "dev": true, + "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=0.10.0" - } - }, + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -5981,9 +5423,8 @@ }, "node_modules/file-loader": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -6001,9 +5442,8 @@ }, "node_modules/file-loader/node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -6019,27 +5459,24 @@ }, "node_modules/filelist": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6049,8 +5486,7 @@ }, "node_modules/fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6060,9 +5496,8 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -6077,9 +5512,8 @@ }, "node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -6090,8 +5524,7 @@ }, "node_modules/flat-cache": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -6102,8 +5535,7 @@ }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -6116,40 +5548,34 @@ }, "node_modules/flatted": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + "license": "ISC" }, "node_modules/footable": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/footable/-/footable-2.0.6.tgz", - "integrity": "sha512-OSkHeQ3pSt2rVchLlUa02axnnCd/C8eaK4KJriglJtR+QWg4caNkooOqvb1owzJiZ9+/bEhnXCic3mv8vLKM2A==", "dependencies": { "jquery": ">=1.4.4" } }, "node_modules/for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/form-data": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -6160,30 +5586,27 @@ } }, "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "9.1.0", "dev": true, + "license": "MIT", "dependencies": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=10" } }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -6194,15 +5617,13 @@ }, "node_modules/function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/function.prototype.name": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -6218,40 +5639,35 @@ }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + "license": "MIT" }, "node_modules/functions-have-names": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -6264,27 +5680,27 @@ }, "node_modules/get-own-enumerable-property-symbols": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.2.0", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-symbol-description": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -6298,26 +5714,23 @@ }, "node_modules/getos": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "dev": true, + "license": "MIT", "dependencies": { "async": "^3.2.0" } }, "node_modules/getpass": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/gettext-parser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-2.0.0.tgz", - "integrity": "sha512-FDs/7XjNw58ToQwJFO7avZZbPecSYgw8PBYhd0An+4JtZSrSzKhEvTsVV2uqdO7VziWTOGSgLGD5YRPdsCjF7Q==", + "license": "MIT", "dependencies": { "encoding": "^0.1.12", "safe-buffer": "^5.1.2" @@ -6325,8 +5738,7 @@ }, "node_modules/gettext-to-messageformat": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/gettext-to-messageformat/-/gettext-to-messageformat-0.3.1.tgz", - "integrity": "sha512-UyqIL3Ul4NryU95Wome/qtlcuVIqgEWVIFw0zi7Lv14ACLXfaVDCbrjZ7o+3BZ7u+4NS1mP/2O1eXZoHCoas8g==", + "license": "MIT", "dependencies": { "gettext-parser": "^1.4.0" }, @@ -6336,8 +5748,7 @@ }, "node_modules/gettext-to-messageformat/node_modules/gettext-parser": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", - "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", + "license": "MIT", "dependencies": { "encoding": "^0.1.12", "safe-buffer": "^5.1.1" @@ -6345,8 +5756,7 @@ }, "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6364,8 +5774,7 @@ }, "node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -6375,19 +5784,17 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "license": "BSD-2-Clause" }, "node_modules/global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "ini": "1.3.7" + "ini": "2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6395,17 +5802,15 @@ }, "node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/globalthis": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3" }, @@ -6417,13 +5822,12 @@ } }, "node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "version": "13.2.0", + "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^4.0.0" }, @@ -6436,17 +5840,15 @@ }, "node_modules/globby/node_modules/ignore": { "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/gopd": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -6456,14 +5858,11 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "license": "ISC" }, "node_modules/gulp-header": { "version": "1.8.12", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", - "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", - "deprecated": "Removed event-stream from gulp-header", + "license": "MIT", "dependencies": { "concat-with-sourcemaps": "*", "lodash.template": "^4.4.0", @@ -6472,17 +5871,15 @@ }, "node_modules/hammerjs": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -6490,49 +5887,25 @@ "node": ">= 0.4.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/has-property-descriptors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -6542,9 +5915,8 @@ }, "node_modules/has-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6554,9 +5926,8 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6566,9 +5937,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -6581,22 +5951,16 @@ }, "node_modules/heap": { "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + "license": "MIT" }, "node_modules/htmx.org": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-1.9.3.tgz", - "integrity": "sha512-gsOttHnAcs/mXivSSYAIPF7hwksGjobb65MyZ46Csj2sJa1bS21Pfn5iag1DTm3GQ1Gxxx2/hlehKo6qfkW1Eg==", - "engines": { - "node": "15.x" - } + "version": "1.9.2", + "license": "BSD 2-Clause" }, "node_modules/http-signature": { "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -6607,19 +5971,17 @@ } }, "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "version": "1.1.1", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=14.18.0" + "node": ">=8.12.0" } }, "node_modules/husky": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", "dev": true, + "license": "MIT", "bin": { "husky": "lib/bin.js" }, @@ -6632,8 +5994,7 @@ }, "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -6643,28 +6004,43 @@ }, "node_modules/idb": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/immutable": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz", - "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==", - "dev": true + "version": "4.3.0", + "dev": true, + "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -6678,9 +6054,8 @@ }, "node_modules/import-local": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -6697,25 +6072,22 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6723,20 +6095,20 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } }, "node_modules/internal-slot": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -6748,26 +6120,23 @@ }, "node_modules/internmap": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/interpret": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/is-array-buffer": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -6779,9 +6148,8 @@ }, "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -6791,9 +6159,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -6803,9 +6170,8 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -6819,9 +6185,8 @@ }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6830,12 +6195,11 @@ } }, "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "ci-info": "^2.0.0" + "ci-info": "^3.2.0" }, "bin": { "is-ci": "bin.js" @@ -6843,9 +6207,8 @@ }, "node_modules/is-core-module": { "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", "dev": true, + "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -6855,9 +6218,8 @@ }, "node_modules/is-date-object": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -6870,17 +6232,15 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6890,8 +6250,7 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -6900,16 +6259,15 @@ } }, "node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "version": "0.4.0", "dev": true, + "license": "MIT", "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6917,15 +6275,13 @@ }, "node_modules/is-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-negative-zero": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6935,17 +6291,15 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -6958,39 +6312,24 @@ }, "node_modules/is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "dependencies": { - "symbol-observable": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/is-path-cwd": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-path-in-cwd": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "dev": true, + "license": "MIT", "dependencies": { "is-path-inside": "^2.1.0" }, @@ -7000,9 +6339,8 @@ }, "node_modules/is-path-in-cwd/node_modules/is-path-inside": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", "dev": true, + "license": "MIT", "dependencies": { "path-is-inside": "^1.0.2" }, @@ -7012,18 +6350,16 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -7031,17 +6367,10 @@ "node": ">=0.10.0" } }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7055,18 +6384,16 @@ }, "node_modules/is-regexp": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -7075,19 +6402,20 @@ } }, "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "version": "2.0.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7100,9 +6428,8 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -7114,12 +6441,15 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.10", "dev": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.11" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7130,15 +6460,24 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -7148,34 +6487,29 @@ }, "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isstream": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jake": { "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -7191,9 +6525,8 @@ }, "node_modules/jake/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7206,9 +6539,8 @@ }, "node_modules/jake/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7222,9 +6554,8 @@ }, "node_modules/jake/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7234,24 +6565,21 @@ }, "node_modules/jake/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jake/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jake/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7261,8 +6589,7 @@ }, "node_modules/jest-worker": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -7274,16 +6601,14 @@ }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7296,56 +6621,49 @@ }, "node_modules/jquery": { "version": "3.7.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz", - "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==" + "license": "MIT" }, "node_modules/jquery-locationpicker": { "version": "0.1.12", - "resolved": "https://registry.npmjs.org/jquery-locationpicker/-/jquery-locationpicker-0.1.12.tgz", - "integrity": "sha512-yazgCAR+9zOCsxAkKRRLujFaYIF2vCvhqvXVkVejVyDRVPlgpvbV4MWU3EmoVR4jJpzABnxi6AQqlUN2E8YcnQ==" + "license": "MIT" }, "node_modules/jquery-modal": { "version": "0.9.2", - "resolved": "https://registry.npmjs.org/jquery-modal/-/jquery-modal-0.9.2.tgz", - "integrity": "sha512-Bx6jTBuiUbdywriWd0UAZK9v7FKEDCOD5uRh47qd4coGvx+dG4w8cOGe4TG2OoR1dNrXn6Aqaeu8MAA+Oz7vOw==" + "license": "MIT" + }, + "node_modules/jquery-mousewheel": { + "version": "3.1.13" }, "node_modules/jquery-textcomplete": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/jquery-textcomplete/-/jquery-textcomplete-1.8.5.tgz", - "integrity": "sha512-WctSUxFk7GF5Tx2gHeVKrpkQ9tsV7mibBJ0AYNwEx+Zx3ZoUQgU5grkBXY3SCqpq/owMAMEvksN96DBSWT4PSg==" + "license": "MIT" }, "node_modules/jquery-ui": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", - "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", + "license": "MIT", "dependencies": { "jquery": ">=1.8.0 <4.0.0" } }, "node_modules/jquery-ui-sortable-npm": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jquery-ui-sortable-npm/-/jquery-ui-sortable-npm-1.0.0.tgz", - "integrity": "sha512-y4wIwcgpVq+vLlzT1/7aH+/WBzYEQhS4vtBExDphfnyz10ysglVfqXjwErv9xmczio+cpSAE7howhNYlD2pJQw==" + "license": "ISC" }, "node_modules/jquery-ui-touch-punch": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/jquery-ui-touch-punch/-/jquery-ui-touch-punch-0.2.3.tgz", - "integrity": "sha512-Q/7aAd+SjbV0SspHO7Kuk96NJIbLwJAS0lD81U1PKcU2T5ZKayXMORH+Y5qvYLuy41xqVQbWimsRKDn1v3oI2Q==" + "license": "Dual licensed under the MIT or GPL Version 2 licenses." }, "node_modules/jquery.cookie": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jquery.cookie/-/jquery.cookie-1.4.1.tgz", - "integrity": "sha512-c/hZOOL+8VSw/FkTVH637gS1/6YzMSCROpTZ2qBYwJ7s7sHajU7uBkSSiE5+GXWwrfCCyO+jsYjUQ7Hs2rIxAA==" + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -7356,15 +6674,13 @@ }, "node_modules/jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -7374,41 +6690,34 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "license": "MIT" }, "node_modules/json-schema": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "license": "MIT" }, "node_modules/json-stringify-pretty-compact": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz", - "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==" + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -7417,31 +6726,31 @@ } }, "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "version": "6.1.0", "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/jsonpointer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/jsprim": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", "dev": true, "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -7451,40 +6760,33 @@ }, "node_modules/jsqr": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", - "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" + "license": "Apache-2.0" }, "node_modules/jstz": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/jstz/-/jstz-2.1.1.tgz", - "integrity": "sha512-8hfl5RD6P7rEeIbzStBz3h4f+BQHfq/ABtoU6gXKQv5OcZhnmrIpG7e1pYaZ8hS9e0mp+bxUj08fnDUbKctYyA==", "engines": { "node": ">=0.10" } }, "node_modules/jsx-ast-utils": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz", - "integrity": "sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==", + "version": "3.3.3", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" }, "engines": { "node": ">=4.0" } }, "node_modules/katex": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.8.tgz", - "integrity": "sha512-ftuDnJbcbOckGY11OO+zg3OofESlbR5DRl2cmN8HeWeeFIV7wTXvAOx8kEjZjobhA+9wh2fbKeO6cdcA9Mnovg==", + "version": "0.16.7", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], + "license": "MIT", "dependencies": { "commander": "^8.3.0" }, @@ -7494,73 +6796,62 @@ }, "node_modules/katex/node_modules/commander": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/khroma": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.0.0.tgz", - "integrity": "sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==" + "version": "2.0.0" }, "node_modules/kind-of": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/language-subtag-registry": { "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/language-tags": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", "dev": true, + "license": "MIT", "dependencies": { "language-subtag-registry": "~0.3.2" } }, "node_modules/layout-base": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + "license": "MIT" }, "node_modules/lazy-ass": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "dev": true, + "license": "MIT", "engines": { "node": "> 0.8" } }, "node_modules/leaflet": { "version": "1.9.4", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", - "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + "license": "BSD-2-Clause" }, "node_modules/leven": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -7571,18 +6862,16 @@ }, "node_modules/lilconfig": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/lint-staged": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.3.tgz", - "integrity": "sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==", + "version": "13.2.2", "dev": true, + "license": "MIT", "dependencies": { "chalk": "5.2.0", "cli-truncate": "^3.1.0", @@ -7608,11 +6897,24 @@ "url": "https://opencollective.com/lint-staged" } }, + "node_modules/lint-staged/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/lint-staged/node_modules/chalk": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -7620,20 +6922,34 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/lint-staged/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/lint-staged/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, "node_modules/lint-staged/node_modules/commander": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/lint-staged/node_modules/execa": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", @@ -7654,9 +6970,8 @@ }, "node_modules/lint-staged/node_modules/get-stream": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7664,11 +6979,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "4.3.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/lint-staged/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/lint-staged/node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -7676,41 +7006,51 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "node_modules/lint-staged/node_modules/listr2": { + "version": "5.0.8", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.13.1 || >=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } } }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/lint-staged/node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/path-key": { + "node_modules/lint-staged/node_modules/mimic-fn": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -7718,262 +7058,99 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" + "path-key": "^4.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "node_modules/lint-staged/node_modules/p-map": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, - "peerDependencies": { - "listr": "^0.14.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-update-renderer/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-update-renderer/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", - "dev": true, - "dependencies": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", - "dev": true, - "dependencies": { - "chalk": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "node_modules/lint-staged/node_modules/slice-ansi": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/listr-verbose-renderer/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "node": ">=12" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/listr2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", - "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", + "version": "3.14.0", "dev": true, + "license": "MIT", "dependencies": { "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", + "colorette": "^2.0.16", "log-update": "^4.0.0", "p-map": "^4.0.0", "rfdc": "^1.3.0", - "rxjs": "^7.8.0", + "rxjs": "^7.5.1", "through": "^2.3.8", "wrap-ansi": "^7.0.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=10.0.0" }, "peerDependencies": { "enquirer": ">= 2.3.0 < 3" @@ -7984,26 +7161,10 @@ } } }, - "node_modules/listr2/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/listr2/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8014,23 +7175,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr2/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/listr2/node_modules/cli-truncate": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -8044,9 +7192,8 @@ }, "node_modules/listr2/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8056,103 +7203,21 @@ }, "node_modules/listr2/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/listr2/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/listr2/node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/listr2/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/listr2/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/listr2/node_modules/p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -8163,33 +7228,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/listr2/node_modules/slice-ansi": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -8199,51 +7241,17 @@ "node": ">=8" } }, - "node_modules/listr2/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", - "dev": true - }, - "node_modules/listr2/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/loader-runner": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/loader-utils": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -8255,9 +7263,8 @@ }, "node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -8267,46 +7274,38 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "license": "MIT" }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.template": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "license": "MIT", "dependencies": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" @@ -8314,127 +7313,181 @@ }, "node_modules/lodash.templatesettings": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "license": "MIT", "dependencies": { "lodash._reinterpolate": "^3.0.0" } }, "node_modules/lodash.truncate": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + "license": "MIT" }, "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^2.4.2" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "restore-cursor": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/log-update/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/log-update/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "node_modules/log-update": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/log-update/node_modules/strip-ansi": { + "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/log-update/node_modules/wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "version": "6.2.0", "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -8445,27 +7498,24 @@ }, "node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/magic-string": { "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, + "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.8" } }, "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -8478,28 +7528,23 @@ }, "node_modules/markmap": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/markmap/-/markmap-0.6.1.tgz", - "integrity": "sha512-pjlp/nAisQ8/YxPhW7i+eDjtMlUQF6Rr27qzt+EiSYUYzYFkq9HEKHso1KgJRocexLahqr2+QO0umXDiGkfIPg==", + "license": "MIT", "dependencies": { "d3": "3.5.6", "remarkable": "1.7.4" } }, "node_modules/markmap-common": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/markmap-common/-/markmap-common-0.15.0.tgz", - "integrity": "sha512-dCE9AH13QPYIs2e44axzgAWHDy1MbXXaYpKB9YFwsmuunfU02aU+3DkKyRthOgE9jIl8PsuKd5SkM2F+INIKjg==", + "version": "0.14.2", + "license": "MIT", "peer": true, "dependencies": { - "@babel/runtime": "^7.22.6", - "@gera2ld/jsx-dom": "^2.2.2", - "npm2url": "^0.2.0" + "@babel/runtime": "^7.12.1" } }, "node_modules/markmap-lib": { "version": "0.14.4", - "resolved": "https://registry.npmjs.org/markmap-lib/-/markmap-lib-0.14.4.tgz", - "integrity": "sha512-tyXhpER0XdQe/sxWOjMVshbPcfrcNnV5MzdjxVGUUovep1jxFuuBWS5Cp7z41pzUpW1+56Mxb7Vgp4Psme3sSw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.9", "js-yaml": "^4.1.0", @@ -8517,16 +7562,14 @@ }, "node_modules/markmap-lib/node_modules/autolinker": { "version": "3.16.2", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", - "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/markmap-lib/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -8536,13 +7579,11 @@ }, "node_modules/markmap-lib/node_modules/js-yaml/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "license": "Python-2.0" }, "node_modules/markmap-lib/node_modules/remarkable": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", - "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", + "license": "MIT", "dependencies": { "argparse": "^1.0.10", "autolinker": "^3.11.0" @@ -8554,11 +7595,6 @@ "node": ">= 6.0.0" } }, - "node_modules/markmap-lib/node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" - }, "node_modules/markmap-view": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.15.0.tgz", @@ -8624,21 +7660,18 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/mermaid": { "version": "9.4.3", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.4.3.tgz", - "integrity": "sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw==", + "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^6.0.0", "cytoscape": "^3.23.0", @@ -8660,8 +7693,7 @@ }, "node_modules/mermaid/node_modules/d3": { "version": "7.8.5", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", - "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -8700,24 +7732,21 @@ }, "node_modules/mermaid/node_modules/d3-hierarchy": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/mermaid/node_modules/uuid": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/micromatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -8728,16 +7757,14 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -8746,21 +7773,16 @@ } }, "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "version": "2.1.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8770,43 +7792,19 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "license": "MIT" }, "node_modules/muicss": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/muicss/-/muicss-0.10.3.tgz", - "integrity": "sha512-CuVrxnns64RZogHhrAxpMw2BF74Mably9KGUwk5LxHkG1yXUGArf8ZWP8jYd1ueNplqIwgrRdkau8GgrmXTMUQ==", + "license": "MIT", "dependencies": { "react-addons-shallow-compare": "^15.6.2" }, @@ -8816,14 +7814,13 @@ }, "node_modules/nanoid": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -8833,24 +7830,15 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "license": "MIT" }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "license": "MIT" }, "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "version": "2.6.11", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -8867,90 +7855,58 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.12", + "license": "MIT" }, "node_modules/non-layered-tidy-tree-layout": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", - "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "version": "4.0.1", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^2.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm2url": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/npm2url/-/npm2url-0.2.0.tgz", - "integrity": "sha512-Zi5Bgsf40i6XziCZEbFfraAiQNIa8TqZNjx0GzsHZ0br3e9rxbVllYvAIdUkOs1nPx6DPqFWakTbY6dINUz81w==", - "peer": true - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -8966,9 +7922,8 @@ }, "node_modules/object.entries": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -8980,9 +7935,8 @@ }, "node_modules/object.fromentries": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -8997,9 +7951,8 @@ }, "node_modules/object.hasown": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "define-properties": "^1.1.4", @@ -9011,9 +7964,8 @@ }, "node_modules/object.values": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -9028,32 +7980,35 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "version": "5.1.2", "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.1", + "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" }, "engines": { "node": ">= 0.8.0" @@ -9061,24 +8016,13 @@ }, "node_modules/ospath": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT" }, "node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -9091,9 +8035,8 @@ }, "node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -9103,31 +8046,27 @@ }, "node_modules/p-map": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pace-js": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/pace-js/-/pace-js-1.2.4.tgz", - "integrity": "sha512-qnCxtvUoY9yHId0AwMQCVmWltb698GiuVArmDbQzonTu9QCo0SgWUVnX9jB9mi+/FUSWvQULBPxUAAo/kLrh1A==" + "license": "MIT" }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -9137,75 +8076,64 @@ }, "node_modules/path-browserify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-is-inside": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true + "dev": true, + "license": "(WTFPL OR MIT)" }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/pend": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/performance-now": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -9215,9 +8143,8 @@ }, "node_modules/pidtree": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, + "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -9227,27 +8154,24 @@ }, "node_modules/pify": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, + "license": "MIT", "dependencies": { "pinkie": "^2.0.0" }, @@ -9257,9 +8181,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -9269,8 +8192,7 @@ }, "node_modules/po2json": { "version": "1.0.0-beta-3", - "resolved": "https://registry.npmjs.org/po2json/-/po2json-1.0.0-beta-3.tgz", - "integrity": "sha512-taS8y6ZEGzPAs0rygW9CuUPY8C3Zgx6cBy31QXxG2JlWS3fLxj/kuD3cbIfXBg30PuYN7J5oyBa/TIRjyqFFtg==", + "license": "LGPL-2.0-or-later", "dependencies": { "commander": "^6.0.0", "gettext-parser": "2.0.0", @@ -9290,16 +8212,13 @@ }, "node_modules/po2json/node_modules/commander": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", + "version": "8.4.24", "funding": [ { "type": "opencollective", @@ -9314,6 +8233,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -9325,17 +8245,15 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -9348,9 +8266,8 @@ }, "node_modules/prettier-linter-helpers": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -9360,9 +8277,8 @@ }, "node_modules/pretty-bytes": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -9372,29 +8288,25 @@ }, "node_modules/prismjs": { "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "license": "MIT" }, "node_modules/progress": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.4.0", @@ -9402,17 +8314,20 @@ "react-is": "^16.13.1" } }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, "node_modules/psl": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -9420,17 +8335,15 @@ }, "node_modules/punycode": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qs": { "version": "6.10.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", - "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -9443,8 +8356,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -9458,31 +8369,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/ractive": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/ractive/-/ractive-0.8.14.tgz", - "integrity": "sha512-oEYRyM2VbHL1bcymhLFXb8SK8htd4MPfgWdqJADaUTy3+0K4/5PfEw8szj6rWe2N2asJ1jNNdYqkvIWca1M9dg==" - }, - "node_modules/ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", - "dev": true + "version": "0.8.14" }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/react": { "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.1.0", @@ -9495,22 +8397,19 @@ }, "node_modules/react-addons-shallow-compare": { "version": "15.6.3", - "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.3.tgz", - "integrity": "sha512-EDJbgKTtGRLhr3wiGDXK/+AEJ59yqGS+tKE6mue0aNXT6ZMR7VJbbzIiT6akotmHg1BLj46ElJSb+NBMp80XBg==", + "license": "MIT", "dependencies": { "object-assign": "^4.1.0" } }, "node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT", "peer": true }, "node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9523,14 +8422,12 @@ }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "license": "MIT" }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -9540,9 +8437,8 @@ }, "node_modules/rechoir": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.9.0" }, @@ -9552,15 +8448,13 @@ }, "node_modules/regenerate": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -9570,23 +8464,20 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexp.prototype.flags": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -9601,8 +8492,7 @@ }, "node_modules/regexpp": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -9612,9 +8502,8 @@ }, "node_modules/regexpu-core": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -9629,9 +8518,8 @@ }, "node_modules/regjsparser": { "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -9641,8 +8529,6 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -9650,8 +8536,7 @@ }, "node_modules/remarkable": { "version": "1.7.4", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz", - "integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==", + "license": "MIT", "dependencies": { "argparse": "^1.0.10", "autolinker": "~0.28.0" @@ -9665,39 +8550,34 @@ }, "node_modules/remarkable-katex": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/remarkable-katex/-/remarkable-katex-1.2.1.tgz", - "integrity": "sha512-Y1VquJBZnaVsfsVcKW2hmjT+pDL7mp8l5WAVlvuvViltrdok2m1AIKmJv8SsH+mBY84PoMw67t3kTWw1dIm8+g==" + "license": "MIT" }, "node_modules/request-progress": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, + "license": "MIT", "dependencies": { "throttleit": "^1.0.0" } }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -9712,9 +8592,8 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -9724,38 +8603,34 @@ }, "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -9763,15 +8638,13 @@ }, "node_modules/rfdc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -9781,14 +8654,12 @@ }, "node_modules/robust-predicates": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + "license": "Unlicense" }, "node_modules/rollup": { "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -9801,10 +8672,8 @@ }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "jest-worker": "^26.2.1", @@ -9817,18 +8686,16 @@ }, "node_modules/rollup-plugin-terser/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/rollup-plugin-terser/node_modules/jest-worker": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -9840,18 +8707,16 @@ }, "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/rollup-plugin-terser/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9861,8 +8726,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -9877,55 +8740,25 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rw": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "license": "BSD-3-Clause" }, "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "7.8.1", "dev": true, + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "tslib": "^2.1.0" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -9939,13 +8772,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -9957,14 +8790,12 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "license": "MIT" }, "node_modules/sass": { - "version": "1.64.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.0.tgz", - "integrity": "sha512-m7YtAGmQta9uANIUJwXesAJMSncqH+3INc8kdVXs6eV6GUC8Qu2IYKQSN8PRLgiQfpca697G94klm2leYMxSHw==", + "version": "1.63.4", "dev": true, + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -9979,9 +8810,8 @@ }, "node_modules/sass-loader": { "version": "13.3.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", - "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", "dev": true, + "license": "MIT", "dependencies": { "neo-async": "^2.6.2" }, @@ -10016,9 +8846,8 @@ }, "node_modules/schema-utils": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.5", "ajv": "^6.12.4", @@ -10033,32 +8862,32 @@ } }, "node_modules/select2": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", - "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "almond": "~0.3.1", + "jquery-mousewheel": "~3.1.13" + } }, "node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/serialize-javascript": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/shallow-clone": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -10068,8 +8897,7 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -10079,17 +8907,15 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/side-channel": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -10101,14 +8927,12 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/slash": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -10118,9 +8942,8 @@ }, "node_modules/slice-ansi": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" @@ -10134,9 +8957,8 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -10146,29 +8968,26 @@ }, "node_modules/source-list-map": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + "dev": true, + "license": "MIT" }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -10176,21 +8995,17 @@ }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sprintf-js": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + "license": "BSD-3-Clause" }, "node_modules/sshpk": { "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, + "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -10213,74 +9028,50 @@ }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "license": "MIT" }, "node_modules/string-argv": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.19" } }, "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, + "version": "4.2.3", + "license": "MIT", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" }, "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, + "version": "3.0.0", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/string.prototype.matchall": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -10297,9 +9088,8 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -10314,9 +9104,8 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -10328,9 +9117,8 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -10342,9 +9130,8 @@ }, "node_modules/stringify-object": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", @@ -10356,8 +9143,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10367,47 +9153,31 @@ }, "node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "version": "2.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -10417,18 +9187,15 @@ }, "node_modules/style-mod": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.3.tgz", - "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==" + "license": "MIT" }, "node_modules/stylis": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", - "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==" + "version": "4.2.0", + "license": "MIT" }, "node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -10438,9 +9205,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10448,19 +9214,9 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/table": { "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -10474,8 +9230,7 @@ }, "node_modules/table/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -10489,8 +9244,7 @@ }, "node_modules/table/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10503,8 +9257,7 @@ }, "node_modules/table/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10514,31 +9267,22 @@ }, "node_modules/table/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "license": "MIT" }, "node_modules/table/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "license": "MIT" }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -10551,41 +9295,25 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/tapable": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/temp-dir": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tempy": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^2.0.0", "temp-dir": "^2.0.0", @@ -10599,22 +9327,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tempy/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/terser": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.1.tgz", - "integrity": "sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==", + "version": "5.18.1", + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -10630,8 +9356,7 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -10663,8 +9388,7 @@ }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -10679,9 +9403,8 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.9.0", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -10691,30 +9414,25 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "license": "MIT" }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "license": "MIT" }, "node_modules/throttleit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through2": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -10722,34 +9440,44 @@ }, "node_modules/timeago.js": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz", - "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" + "license": "MIT" }, "node_modules/tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "version": "0.2.1", "dev": true, + "license": "MIT", "dependencies": { - "rimraf": "^2.6.3" + "rimraf": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8.17.0" + } + }, + "node_modules/tmp/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -10759,16 +9487,13 @@ }, "node_modules/toastr": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", - "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", "dependencies": { "jquery": ">=1.12.0" } }, "node_modules/topojson-client": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", - "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "license": "ISC", "dependencies": { "commander": "2" }, @@ -10780,14 +9505,12 @@ }, "node_modules/topojson-client/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "license": "MIT" }, "node_modules/tough-cookie": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -10798,30 +9521,26 @@ }, "node_modules/tr46": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "license": "MIT" }, "node_modules/trunk8": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trunk8/-/trunk8-0.0.1.tgz", - "integrity": "sha512-hp7Se9cqgc0/jcuVVaEe4kAXTFKl+7R2/CkQ9mThA0AzF5RUBTxO9DO6M5FxqymGtC3EEUSEdHEjjj/17TLdsQ==", + "license": "MIT", "peerDependencies": { "jquery": ">=1.7.1" } }, "node_modules/ts-dedent": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", "engines": { "node": ">=6.10" } }, "node_modules/tsconfig-paths": { "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -10831,9 +9550,8 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -10842,16 +9560,13 @@ } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "version": "2.5.3", + "license": "0BSD" }, "node_modules/tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -10861,14 +9576,12 @@ }, "node_modules/tweetnacl": { "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true + "dev": true, + "license": "Unlicense" }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -10877,10 +9590,9 @@ } }, "node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "version": "0.21.3", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -10888,62 +9600,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/typed-array-length": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -10953,17 +9613,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, "node_modules/unbox-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -10976,18 +9629,16 @@ }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -10998,27 +9649,24 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unique-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, + "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -11027,28 +9675,25 @@ } }, "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "2.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" } }, "node_modules/untildify": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/upath": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4", "yarn": "*" @@ -11056,8 +9701,6 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "funding": [ { "type": "opencollective", @@ -11072,6 +9715,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -11085,71 +9729,34 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/url": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", - "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", - "dev": true, - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/url/node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "license": "MIT" }, "node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + "license": "MIT" }, "node_modules/vcards-js": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/vcards-js/-/vcards-js-2.10.0.tgz", - "integrity": "sha512-nah+xbVInVJaO6+C5PEUqaougmv8BN8aa7ZCtmVQcX6eWIZGRukckFtseXSI7KD7/nXtwkJe624y42T0r+L+AQ==" + "license": "MIT" }, "node_modules/vega": { "version": "5.25.0", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.25.0.tgz", - "integrity": "sha512-lr+uj0mhYlSN3JOKbMNp1RzZBenWp9DxJ7kR3lha58AFNCzzds7pmFa7yXPbtbaGhB7Buh/t6n+Bzk3Y0VnF5g==", + "license": "BSD-3-Clause", "dependencies": { "vega-crossfilter": "~4.1.1", "vega-dataflow": "~5.7.5", @@ -11182,13 +9789,11 @@ }, "node_modules/vega-canvas": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/vega-canvas/-/vega-canvas-1.2.7.tgz", - "integrity": "sha512-OkJ9CACVcN9R5Pi9uF6MZBF06pO6qFpDYHWSKBJsdHP5o724KrsgR6UvbnXFH82FdsiTOff/HqjuaG8C7FL+9Q==" + "license": "BSD-3-Clause" }, "node_modules/vega-crossfilter": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.1.1.tgz", - "integrity": "sha512-yesvlMcwRwxrtAd9IYjuxWJJuAMI0sl7JvAFfYtuDkkGDtqfLXUcCzHIATqW6igVIE7tWwGxnbfvQLhLNgK44Q==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "vega-dataflow": "^5.7.5", @@ -11197,8 +9802,7 @@ }, "node_modules/vega-dataflow": { "version": "5.7.5", - "resolved": "https://registry.npmjs.org/vega-dataflow/-/vega-dataflow-5.7.5.tgz", - "integrity": "sha512-EdsIl6gouH67+8B0f22Owr2tKDiMPNNR8lEvJDcxmFw02nXd8juimclpLvjPQriqn6ta+3Dn5txqfD117H04YA==", + "license": "BSD-3-Clause", "dependencies": { "vega-format": "^1.1.1", "vega-loader": "^4.5.1", @@ -11207,11 +9811,10 @@ }, "node_modules/vega-embed": { "version": "6.22.1", - "resolved": "https://registry.npmjs.org/vega-embed/-/vega-embed-6.22.1.tgz", - "integrity": "sha512-5a3SVhPwG5/Mz3JbcJV4WE38s/7AFrkANtPxoln7E8fbNLIbrurIennaAxB9+l0QOAg63lPSuJBNMUkM6yXvLA==", "bundleDependencies": [ "yallist" ], + "license": "BSD-3-Clause", "dependencies": { "fast-json-patch": "^3.1.1", "json-stringify-pretty-compact": "^3.0.0", @@ -11220,8 +9823,7 @@ "vega-interpreter": "^1.0.5", "vega-schema-url-parser": "^2.2.0", "vega-themes": "^2.13.0", - "vega-tooltip": "^0.32.0", - "yallist": "*" + "vega-tooltip": "^0.32.0" }, "peerDependencies": { "vega": "^5.21.0", @@ -11230,8 +9832,7 @@ }, "node_modules/vega-embed/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11241,8 +9842,7 @@ }, "node_modules/vega-embed/node_modules/semver": { "version": "7.4.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", - "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11253,11 +9853,6 @@ "node": ">=10" } }, - "node_modules/vega-embed/node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" - }, "node_modules/vega-embed/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -11266,8 +9861,7 @@ }, "node_modules/vega-encode": { "version": "4.9.2", - "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.9.2.tgz", - "integrity": "sha512-c3J0LYkgYeXQxwnYkEzL15cCFBYPRaYUon8O2SZ6O4PhH4dfFTXBzSyT8+gh8AhBd572l2yGDfxpEYA6pOqdjg==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "d3-interpolate": "^3.0.1", @@ -11278,13 +9872,11 @@ }, "node_modules/vega-event-selector": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.1.tgz", - "integrity": "sha512-K5zd7s5tjr1LiOOkjGpcVls8GsH/f2CWCrWcpKy74gTCp+llCdwz0Enqo013ZlGaRNjfgD/o1caJRt3GSaec4A==" + "license": "BSD-3-Clause" }, "node_modules/vega-expression": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.1.0.tgz", - "integrity": "sha512-u8Rzja/cn2PEUkhQN3zUj3REwNewTA92ExrcASNKUJPCciMkHJEjESwFYuI6DWMCq4hQElQ92iosOAtwzsSTqA==", + "license": "BSD-3-Clause", "dependencies": { "@types/estree": "^1.0.0", "vega-util": "^1.17.1" @@ -11292,8 +9884,7 @@ }, "node_modules/vega-force": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.2.0.tgz", - "integrity": "sha512-aE2TlP264HXM1r3fl58AvZdKUWBNOGkIvn4EWyqeJdgO2vz46zSU7x7TzPG4ZLuo44cDRU5Ng3I1eQk23Asz6A==", + "license": "BSD-3-Clause", "dependencies": { "d3-force": "^3.0.0", "vega-dataflow": "^5.7.5", @@ -11302,8 +9893,7 @@ }, "node_modules/vega-format": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.1.tgz", - "integrity": "sha512-Rll7YgpYbsgaAa54AmtEWrxaJqgOh5fXlvM2wewO4trb9vwM53KBv4Q/uBWCLK3LLGeBXIF6gjDt2LFuJAUtkQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "d3-format": "^3.1.0", @@ -11314,8 +9904,7 @@ }, "node_modules/vega-functions": { "version": "5.13.2", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.13.2.tgz", - "integrity": "sha512-YE1Xl3Qi28kw3vdXVYgKFMo20ttd3+SdKth1jUNtBDGGdrOpvPxxFhZkVqX+7FhJ5/1UkDoAYs/cZY0nRKiYgA==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "d3-color": "^3.1.0", @@ -11332,8 +9921,7 @@ }, "node_modules/vega-geo": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.4.1.tgz", - "integrity": "sha512-s4WeZAL5M3ZUV27/eqSD3v0FyJz3PlP31XNSLFy4AJXHxHUeXT3qLiDHoVQnW5Om+uBCPDtTT1ROx1smGIf2aA==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "d3-color": "^3.1.0", @@ -11347,8 +9935,7 @@ }, "node_modules/vega-hierarchy": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.1.1.tgz", - "integrity": "sha512-h5mbrDtPKHBBQ9TYbvEb/bCqmGTlUX97+4CENkyH21tJs7naza319B15KRK0NWOHuhbGhFmF8T0696tg+2c8XQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-hierarchy": "^3.1.2", "vega-dataflow": "^5.7.5", @@ -11357,21 +9944,18 @@ }, "node_modules/vega-hierarchy/node_modules/d3-hierarchy": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/vega-interpreter": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/vega-interpreter/-/vega-interpreter-1.0.5.tgz", - "integrity": "sha512-po6oTOmeQqr1tzTCdD15tYxAQLeUnOVirAysgVEemzl+vfmvcEP7jQmlc51jz0jMA+WsbmE6oJywisQPu/H0Bg==" + "license": "BSD-3-Clause" }, "node_modules/vega-label": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.2.1.tgz", - "integrity": "sha512-n/ackJ5lc0Xs9PInCaGumYn2awomPjJ87EMVT47xNgk2bHmJoZV1Ve/1PUM6Eh/KauY211wPMrNp/9Im+7Ripg==", + "license": "BSD-3-Clause", "dependencies": { "vega-canvas": "^1.2.6", "vega-dataflow": "^5.7.3", @@ -11380,9 +9964,8 @@ } }, "node_modules/vega-lite": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-5.14.0.tgz", - "integrity": "sha512-BlGSp+nZNmBO0ukRAA86so/6KfUEIN0Mqmo2xo2Tv6UTxLlfh3oGvsKh6g6283meJickwntR+K4qUOIVnGUoyg==", + "version": "5.9.3", + "license": "BSD-3-Clause", "dependencies": { "@types/clone": "~2.1.1", "clone": "~2.1.2", @@ -11408,15 +9991,9 @@ "vega": "^5.24.0" } }, - "node_modules/vega-lite/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" - }, "node_modules/vega-loader": { "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.1.tgz", - "integrity": "sha512-qy5x32SaT0YkEujQM2yKqvLGV9XWQ2aEDSugBFTdYzu/1u4bxdUSRDREOlrJ9Km3RWIOgFiCkobPmFxo47SKuA==", + "license": "BSD-3-Clause", "dependencies": { "d3-dsv": "^3.0.1", "node-fetch": "^2.6.7", @@ -11427,8 +10004,7 @@ }, "node_modules/vega-parser": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.2.0.tgz", - "integrity": "sha512-as+QnX8Qxe9q51L1C2sVBd+YYYctP848+zEvkBT2jlI2g30aZ6Uv7sKsq7QTL6DUbhXQKR0XQtzlanckSFdaOQ==", + "license": "BSD-3-Clause", "dependencies": { "vega-dataflow": "^5.7.5", "vega-event-selector": "^3.0.1", @@ -11439,8 +10015,7 @@ }, "node_modules/vega-projection": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.6.0.tgz", - "integrity": "sha512-LGUaO/kpOEYuTlul+x+lBzyuL9qmMwP1yShdUWYLW+zXoeyGbs5OZW+NbPPwLYqJr5lpXDr/vGztFuA/6g2xvQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-geo": "^3.1.0", "d3-geo-projection": "^4.0.0", @@ -11449,8 +10024,7 @@ }, "node_modules/vega-regression": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.2.0.tgz", - "integrity": "sha512-6TZoPlhV/280VbxACjRKqlE0Nv48z5g4CSNf1FmGGTWS1rQtElPTranSoVW4d7ET5eVQ6f9QLxNAiALptvEq+g==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "vega-dataflow": "^5.7.3", @@ -11460,8 +10034,7 @@ }, "node_modules/vega-runtime": { "version": "6.1.4", - "resolved": "https://registry.npmjs.org/vega-runtime/-/vega-runtime-6.1.4.tgz", - "integrity": "sha512-0dDYXyFLQcxPQ2OQU0WuBVYLRZnm+/CwVu6i6N4idS7R9VXIX5581EkCh3pZ20pQ/+oaA7oJ0pR9rJgJ6rukRQ==", + "license": "BSD-3-Clause", "dependencies": { "vega-dataflow": "^5.7.5", "vega-util": "^1.17.1" @@ -11469,8 +10042,7 @@ }, "node_modules/vega-scale": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.3.0.tgz", - "integrity": "sha512-pMOAI2h+e1z7lsqKG+gMfR6NKN2sTcyjZbdJwntooW0uFHwjLGjMSY7kSd3nSEquF0HQ8qF7zR6gs1eRwlGimw==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "d3-interpolate": "^3.0.1", @@ -11481,8 +10053,7 @@ }, "node_modules/vega-scenegraph": { "version": "4.10.2", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.10.2.tgz", - "integrity": "sha512-R8m6voDZO5+etwNMcXf45afVM3XAtokMqxuDyddRl9l1YqSJfS+3u8hpolJ50c2q6ZN20BQiJwKT1o0bB7vKkA==", + "license": "BSD-3-Clause", "dependencies": { "d3-path": "^3.1.0", "d3-shape": "^3.2.0", @@ -11494,13 +10065,11 @@ }, "node_modules/vega-schema-url-parser": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vega-schema-url-parser/-/vega-schema-url-parser-2.2.0.tgz", - "integrity": "sha512-yAtdBnfYOhECv9YC70H2gEiqfIbVkq09aaE4y/9V/ovEFmH9gPKaEgzIZqgT7PSPQjKhsNkb6jk6XvSoboxOBw==" + "license": "BSD-3-Clause" }, "node_modules/vega-selections": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.4.1.tgz", - "integrity": "sha512-EtYc4DvA+wXqBg9tq+kDomSoVUPCmQfS7hUxy2qskXEed79YTimt3Hcl1e1fW226I4AVDBEqTTKebmKMzbSgAA==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "3.2.2", "vega-expression": "^5.0.1", @@ -11509,8 +10078,7 @@ }, "node_modules/vega-selections/node_modules/d3-array": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz", - "integrity": "sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==", + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -11520,16 +10088,14 @@ }, "node_modules/vega-statistics": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.9.0.tgz", - "integrity": "sha512-GAqS7mkatpXcMCQKWtFu1eMUKLUymjInU0O8kXshWaQrVWjPIO2lllZ1VNhdgE0qGj4oOIRRS11kzuijLshGXQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2" } }, "node_modules/vega-themes": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.14.0.tgz", - "integrity": "sha512-9dLmsUER7gJrDp8SEYKxBFmXmpyzLlToKIjxq3HCvYjz8cnNrRGyAhvIlKWOB3ZnGvfYV+vnv3ZRElSNL31nkA==", + "version": "2.13.0", + "license": "BSD-3-Clause", "peerDependencies": { "vega": "*", "vega-lite": "*" @@ -11537,8 +10103,7 @@ }, "node_modules/vega-time": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.1.tgz", - "integrity": "sha512-z1qbgyX0Af2kQSGFbApwBbX2meenGvsoX8Nga8uyWN8VIbiySo/xqizz1KrP6NbB6R+x5egKmkjdnyNThPeEWA==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "d3-time": "^3.1.0", @@ -11547,16 +10112,14 @@ }, "node_modules/vega-tooltip": { "version": "0.32.0", - "resolved": "https://registry.npmjs.org/vega-tooltip/-/vega-tooltip-0.32.0.tgz", - "integrity": "sha512-Sc4/vZsXDM9nOiHrxc8hfpc9lYc7Nr0FIYYkIi90v2d6IoE6thm6T4Exo2m7cMK4rwevwf6c4/FABwjOMIs4MQ==", + "license": "BSD-3-Clause", "dependencies": { "vega-util": "^1.17.1" } }, "node_modules/vega-transforms": { "version": "4.10.2", - "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.10.2.tgz", - "integrity": "sha512-sJELfEuYQ238PRG+GOqQch8D69RYnJevYSGLsRGQD2LxNz3j+GlUX6Pid+gUEH5HJy22Q5L0vsTl2ZNhIr4teQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "vega-dataflow": "^5.7.5", @@ -11567,8 +10130,7 @@ }, "node_modules/vega-typings": { "version": "0.24.1", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.24.1.tgz", - "integrity": "sha512-WNw6tDxwMsynQ9osJb3RZi3g8GZruxVgXfe8N7nbqvNOgDQkUuVjqTZiwGg5kqjmLqx09lRRlskgp/ov7lEGeg==", + "license": "BSD-3-Clause", "dependencies": { "@types/geojson": "7946.0.4", "vega-event-selector": "^3.0.1", @@ -11578,18 +10140,15 @@ }, "node_modules/vega-typings/node_modules/@types/geojson": { "version": "7946.0.4", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.4.tgz", - "integrity": "sha512-MHmwBtCb7OCv1DSivz2UNJXPGU/1btAWRKlqJ2saEhVJkpkvqHMMaOpKg0v4sAbDWSQekHGvPVMM8nQ+Jen03Q==" + "license": "MIT" }, "node_modules/vega-util": { "version": "1.17.2", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.2.tgz", - "integrity": "sha512-omNmGiZBdjm/jnHjZlywyYqafscDdHaELHx1q96n5UOz/FlO9JO99P4B3jZg391EFG8dqhWjQilSf2JH6F1mIw==" + "license": "BSD-3-Clause" }, "node_modules/vega-view": { "version": "5.11.1", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.11.1.tgz", - "integrity": "sha512-RoWxuoEMI7xVQJhPqNeLEHCezudsf3QkVMhH5tCovBqwBADQGqq9iWyax3ZzdyX1+P3eBgm7cnLvpqtN2hU8kA==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^3.2.2", "d3-timer": "^3.0.1", @@ -11603,8 +10162,7 @@ }, "node_modules/vega-view-transforms": { "version": "4.5.9", - "resolved": "https://registry.npmjs.org/vega-view-transforms/-/vega-view-transforms-4.5.9.tgz", - "integrity": "sha512-NxEq4ZD4QwWGRrl2yDLnBRXM9FgCI+vvYb3ZC2+nVDtkUxOlEIKZsMMw31op5GZpfClWLbjCT3mVvzO2xaTF+g==", + "license": "BSD-3-Clause", "dependencies": { "vega-dataflow": "^5.7.5", "vega-scenegraph": "^4.10.2", @@ -11613,8 +10171,7 @@ }, "node_modules/vega-voronoi": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.2.1.tgz", - "integrity": "sha512-zzi+fxU/SBad4irdLLsG3yhZgXWZezraGYVQfZFWe8kl7W/EHUk+Eqk/eetn4bDeJ6ltQskX+UXH3OP5Vh0Q0Q==", + "license": "BSD-3-Clause", "dependencies": { "d3-delaunay": "^6.0.2", "vega-dataflow": "^5.7.5", @@ -11623,8 +10180,7 @@ }, "node_modules/vega-wordcloud": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/vega-wordcloud/-/vega-wordcloud-4.1.4.tgz", - "integrity": "sha512-oeZLlnjiusLAU5vhk0IIdT5QEiJE0x6cYoGNq1th+EbwgQp153t4r026fcib9oq15glHFOzf81a8hHXHSJm1Jw==", + "license": "BSD-3-Clause", "dependencies": { "vega-canvas": "^1.2.7", "vega-dataflow": "^5.7.5", @@ -11635,12 +10191,11 @@ }, "node_modules/verror": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -11649,14 +10204,12 @@ }, "node_modules/verror/node_modules/core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vue": { "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "license": "MIT", "dependencies": { "@vue/compiler-sfc": "2.7.14", "csstype": "^3.1.0" @@ -11664,18 +10217,15 @@ }, "node_modules/vue-script2": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vue-script2/-/vue-script2-2.1.0.tgz", - "integrity": "sha512-EDUOjQBFvhkJXwmWuUR9ijlF7/4JtmvjXSKaHSa/LNTMy9ltjgKgYB68aqlxgq8ORdSxowd5eo24P1syjZJnBA==" + "license": "MIT" }, "node_modules/w3c-keyname": { "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + "license": "MIT" }, "node_modules/watchpack": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -11686,18 +10236,15 @@ }, "node_modules/web-worker": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", - "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + "license": "Apache-2.0" }, "node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "version": "5.87.0", + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -11742,9 +10289,8 @@ }, "node_modules/webpack-cli": { "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, + "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", @@ -11789,17 +10335,16 @@ }, "node_modules/webpack-cli/node_modules/commander": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/webpack-manifest-plugin": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-5.0.0.tgz", - "integrity": "sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw==", + "dev": true, + "license": "MIT", "dependencies": { "tapable": "^2.0.0", "webpack-sources": "^2.2.0" @@ -11813,8 +10358,8 @@ }, "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dev": true, + "license": "MIT", "dependencies": { "source-list-map": "^2.0.1", "source-map": "^0.6.1" @@ -11825,9 +10370,8 @@ }, "node_modules/webpack-merge": { "version": "5.9.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", - "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" @@ -11838,16 +10382,14 @@ }, "node_modules/webpack-sources": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/webpack/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.9.0", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -11857,16 +10399,14 @@ }, "node_modules/webpack/node_modules/acorn-import-assertions": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "license": "MIT", "peerDependencies": { "acorn": "^8" } }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -11882,8 +10422,7 @@ }, "node_modules/whatwg-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -11891,8 +10430,7 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -11905,9 +10443,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -11920,16 +10457,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.9", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -11940,15 +10477,20 @@ }, "node_modules/wildcard": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/workbox-background-sync": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", - "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", "dev": true, + "license": "MIT", "dependencies": { "idb": "^7.0.1", "workbox-core": "6.6.0" @@ -11956,18 +10498,16 @@ }, "node_modules/workbox-broadcast-update": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", - "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.6.0" } }, "node_modules/workbox-build": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", - "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", "dev": true, + "license": "MIT", "dependencies": { "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.11.1", @@ -12013,9 +10553,8 @@ }, "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", "dev": true, + "license": "MIT", "dependencies": { "json-schema": "^0.4.0", "jsonpointer": "^5.0.0", @@ -12030,9 +10569,8 @@ }, "node_modules/workbox-build/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -12044,44 +10582,15 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/workbox-build/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/workbox-build/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/workbox-build/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } + "license": "MIT" }, "node_modules/workbox-build/node_modules/source-map": { "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "whatwg-url": "^7.0.0" }, @@ -12091,33 +10600,21 @@ }, "node_modules/workbox-build/node_modules/tr46": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/workbox-build/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/workbox-build/node_modules/webidl-conversions": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/workbox-build/node_modules/whatwg-url": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, + "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -12126,25 +10623,21 @@ }, "node_modules/workbox-cacheable-response": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", - "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", - "deprecated": "workbox-background-sync@6.6.0", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.6.0" } }, "node_modules/workbox-core": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", - "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/workbox-expiration": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", - "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", "dev": true, + "license": "MIT", "dependencies": { "idb": "^7.0.1", "workbox-core": "6.6.0" @@ -12152,9 +10645,8 @@ }, "node_modules/workbox-google-analytics": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", - "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", "dev": true, + "license": "MIT", "dependencies": { "workbox-background-sync": "6.6.0", "workbox-core": "6.6.0", @@ -12164,18 +10656,16 @@ }, "node_modules/workbox-navigation-preload": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", - "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.6.0" } }, "node_modules/workbox-precaching": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", - "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.6.0", "workbox-routing": "6.6.0", @@ -12184,18 +10674,16 @@ }, "node_modules/workbox-range-requests": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", - "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.6.0" } }, "node_modules/workbox-recipes": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", - "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", "dev": true, + "license": "MIT", "dependencies": { "workbox-cacheable-response": "6.6.0", "workbox-core": "6.6.0", @@ -12207,27 +10695,24 @@ }, "node_modules/workbox-routing": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", - "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.6.0" } }, "node_modules/workbox-strategies": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", - "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.6.0" } }, "node_modules/workbox-streams": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", - "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.6.0", "workbox-routing": "6.6.0" @@ -12235,15 +10720,13 @@ }, "node_modules/workbox-sw": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", - "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/workbox-webpack-plugin": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", - "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", "dev": true, + "license": "MIT", "dependencies": { "fast-json-stable-stringify": "^2.1.0", "pretty-bytes": "^5.4.1", @@ -12260,9 +10743,8 @@ }, "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, + "license": "MIT", "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -12270,9 +10752,8 @@ }, "node_modules/workbox-window": { "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", - "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", "dev": true, + "license": "MIT", "dependencies": { "@types/trusted-types": "^2.0.2", "workbox-core": "6.6.0" @@ -12280,8 +10761,7 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12296,8 +10776,7 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12310,8 +10789,7 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12321,75 +10799,42 @@ }, "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "license": "ISC" }, "node_modules/xtend": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", "engines": { "node": ">=0.4" } }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true, + "license": "ISC", "engines": { "node": ">= 14" } }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -12405,44 +10850,6936 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "node_modules/yauzl": { + "version": "2.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.1", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" + "@babel/code-frame": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.5" } }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "@babel/compat-data": { + "version": "7.22.5", + "dev": true + }, + "@babel/core": { + "version": "7.22.5", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "@babel/generator": { + "version": "7.22.5", "dev": true, - "dependencies": { + "requires": { + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.0" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.4.0", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.5", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.22.5", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-replace-supers": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.5" + }, + "@babel/helper-validator-option": { + "version": "7.22.5", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helpers": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/highlight": { + "version": "7.22.5", + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.22.5" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "dev": true, + "requires": {} + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/preset-env": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.5", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.5", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", + "core-js-compat": "^3.30.2", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "dev": true + }, + "@babel/runtime": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@babel/template": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/traverse": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.22.5", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + } + }, + "@braintree/sanitize-url": { + "version": "6.0.2" + }, + "@codemirror/autocomplete": { + "version": "6.8.0", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.6.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/commands": { + "version": "6.2.4", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.2.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/lang-css": { + "version": "6.2.0", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.0.0" + } + }, + "@codemirror/lang-html": { + "version": "6.4.4", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.2.2", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.0" + } + }, + "@codemirror/lang-javascript": { + "version": "6.1.9", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "@codemirror/lang-markdown": { + "version": "6.1.1", + "requires": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.3.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/markdown": "^1.0.0" + } + }, + "@codemirror/language": { + "version": "6.8.0", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "@codemirror/lint": { + "version": "6.2.2", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/state": { + "version": "6.2.1" + }, + "@codemirror/view": { + "version": "6.13.2", + "requires": { + "@codemirror/state": "^6.1.4", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "@colors/colors": { + "version": "1.5.0", + "dev": true, + "optional": true + }, + "@cypress/request": { + "version": "2.88.11", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "dev": true + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.20.0", + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2" + } + } + }, + "@gera2ld/jsx-dom": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@gera2ld/jsx-dom/-/jsx-dom-2.2.2.tgz", + "integrity": "sha512-EOqf31IATRE6zS1W1EoWmXZhGfLAoO9FIlwTtHduSrBdud4npYBxYAkv8dZ5hudDPwJeeSjn40kbCL4wAzr8dA==", + "requires": { + "@babel/runtime": "^7.21.5" + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1" + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0" + }, + "@jridgewell/set-array": { + "version": "1.1.2" + }, + "@jridgewell/source-map": { + "version": "0.3.3", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.14" + } + } + }, + "@lezer/common": { + "version": "1.0.3" + }, + "@lezer/css": { + "version": "1.1.2", + "requires": { + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/highlight": { + "version": "1.1.6", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/html": { + "version": "1.3.4", + "requires": { + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/javascript": { + "version": "1.4.3", + "requires": { + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "@lezer/lr": { + "version": "1.3.6", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/markdown": { + "version": "1.0.2", + "requires": { + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rollup/plugin-babel": { + "version": "5.3.1", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "dev": true + } + } + }, + "@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "dev": true, + "requires": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "@types/clone": { + "version": "2.1.1" + }, + "@types/d3": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", + "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", + "requires": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "@types/d3-array": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.5.tgz", + "integrity": "sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==" + }, + "@types/d3-axis": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.2.tgz", + "integrity": "sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==", + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-brush": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.2.tgz", + "integrity": "sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==", + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-chord": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.2.tgz", + "integrity": "sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==" + }, + "@types/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" + }, + "@types/d3-contour": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.2.tgz", + "integrity": "sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==", + "requires": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "@types/d3-delaunay": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", + "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==" + }, + "@types/d3-dispatch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.2.tgz", + "integrity": "sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==" + }, + "@types/d3-drag": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.2.tgz", + "integrity": "sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==", + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==" + }, + "@types/d3-ease": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + }, + "@types/d3-fetch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.2.tgz", + "integrity": "sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==", + "requires": { + "@types/d3-dsv": "*" + } + }, + "@types/d3-force": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.4.tgz", + "integrity": "sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==" + }, + "@types/d3-format": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", + "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==" + }, + "@types/d3-geo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.3.tgz", + "integrity": "sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==", + "requires": { + "@types/geojson": "*" + } + }, + "@types/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==" + }, + "@types/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "requires": { + "@types/d3-color": "*" + } + }, + "@types/d3-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + }, + "@types/d3-polygon": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", + "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==" + }, + "@types/d3-quadtree": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", + "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==" + }, + "@types/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==" + }, + "@types/d3-scale": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", + "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", + "requires": { + "@types/d3-time": "*" + } + }, + "@types/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" + }, + "@types/d3-selection": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.5.tgz", + "integrity": "sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==" + }, + "@types/d3-shape": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz", + "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==", + "requires": { + "@types/d3-path": "*" + } + }, + "@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + }, + "@types/d3-time-format": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", + "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==" + }, + "@types/d3-timer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + }, + "@types/d3-transition": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.3.tgz", + "integrity": "sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==", + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-zoom": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.3.tgz", + "integrity": "sha512-OWk1yYIIWcZ07+igN6BeoG6rqhnJ/pYe+R1qWFM2DtW49zsoSjgb9G5xB0ZXA8hh2jAzey1XuRmMSoXdKw8MDA==", + "requires": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "@types/eslint": { + "version": "7.29.0", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.1" + }, + "@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + }, + "@types/glob": { + "version": "7.2.0", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.12" + }, + "@types/json5": { + "version": "0.0.29", + "dev": true + }, + "@types/minimatch": { + "version": "5.1.2", + "dev": true + }, + "@types/node": { + "version": "20.3.1" + }, + "@types/resolve": { + "version": "1.17.1", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.1", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.3", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "dev": true + }, + "@types/tapable": { + "version": "1.0.8", + "dev": true + }, + "@types/trusted-types": { + "version": "2.0.3", + "dev": true + }, + "@types/uglify-js": { + "version": "3.17.1", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "@types/webpack": { + "version": "4.41.33", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + } + }, + "@types/webpack-sources": { + "version": "3.2.0", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "dev": true + } + } + }, + "@types/yauzl": { + "version": "2.10.0", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@vue/compiler-sfc": { + "version": "2.7.14", + "requires": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.6" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.2.0", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.5.0", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.7.0", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0" + }, + "@xtuc/long": { + "version": "4.2.2" + }, + "acorn": { + "version": "7.4.1" + }, + "acorn-jsx": { + "version": "5.3.2", + "requires": {} + }, + "aggregate-error": { + "version": "3.1.0", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "requires": {} + }, + "almond": { + "version": "0.3.3" + }, + "ansi-colors": { + "version": "4.1.3" + }, + "ansi-escapes": { + "version": "4.3.2", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1" + }, + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arch": { + "version": "2.2.0", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3" + } + } + }, + "aria-query": { + "version": "5.2.1", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-includes": { + "version": "3.1.6", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "1.0.2", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.1", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "version": "1.1.1", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "arrify": { + "version": "2.0.1" + }, + "asn1": { + "version": "0.2.6", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "dev": true + }, + "astral-regex": { + "version": "2.0.0" + }, + "async": { + "version": "3.2.4", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "dev": true + }, + "autolinker": { + "version": "0.28.1", + "requires": { + "gulp-header": "^1.7.1" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "dev": true + }, + "aws4": { + "version": "1.12.0", + "dev": true + }, + "axe-core": { + "version": "4.7.2", + "dev": true + }, + "axobject-query": { + "version": "3.2.1", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } + }, + "babel-eslint": { + "version": "10.1.0", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-loader": { + "version": "8.3.0", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.3", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.4.0", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.8.1", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.0", + "core-js-compat": "^3.30.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.0", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.0" + } + }, + "balanced-match": { + "version": "1.0.2" + }, + "base64-js": { + "version": "1.5.1", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "dev": true + }, + "blob-util": { + "version": "2.0.2", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.9", + "requires": { + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + } + }, + "buffer": { + "version": "5.7.1", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "dev": true + }, + "buffer-from": { + "version": "1.1.2" + }, + "builtin-modules": { + "version": "3.3.0", + "dev": true + }, + "cachedir": { + "version": "2.3.0", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0" + }, + "caniuse-lite": { + "version": "1.0.30001505" + }, + "caseless": { + "version": "0.12.0", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-more-types": { + "version": "2.24.0", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chrome-trace-event": { + "version": "1.0.3" + }, + "ci-info": { + "version": "3.8.0", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "dev": true + }, + "clean-webpack-plugin": { + "version": "3.0.0", + "dev": true, + "requires": { + "@types/webpack": "^4.4.31", + "del": "^4.1.1" + } + }, + "cli-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-table3": { + "version": "0.6.3", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cli-truncate": { + "version": "3.1.0", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "cliui": { + "version": "8.0.1", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "2.1.2" + }, + "clone-deep": { + "version": "4.0.1", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "colorette": { + "version": "2.0.20", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "5.1.0", + "dev": true + }, + "common-tags": { + "version": "1.8.2", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "dev": true + }, + "concat-map": { + "version": "0.0.1" + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "requires": { + "source-map": "^0.6.1" + } + }, + "confusing-browser-globals": { + "version": "1.0.11", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "dev": true + }, + "copy-webpack-plugin": { + "version": "11.0.0", + "requires": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + }, + "schema-utils": { + "version": "4.2.0", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "core-js-compat": { + "version": "3.31.0", + "dev": true, + "requires": { + "browserslist": "^4.21.5" + } + }, + "core-util-is": { + "version": "1.0.3" + }, + "cose-base": { + "version": "1.0.3", + "requires": { + "layout-base": "^1.0.0" + } + }, + "crelt": { + "version": "1.0.6" + }, + "cross-spawn": { + "version": "7.0.3", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "dev": true + }, + "csstype": { + "version": "3.1.2" + }, + "cypress": { + "version": "10.11.0", + "dev": true, + "requires": { + "@cypress/request": "^2.88.10", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.6", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.51", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "dev": true + } + } + }, + "cytoscape": { + "version": "3.25.0", + "requires": { + "heap": "^0.2.6", + "lodash": "^4.17.21" + } + }, + "cytoscape-cose-bilkent": { + "version": "4.1.0", + "requires": { + "cose-base": "^1.0.0" + } + }, + "cytoscape-fcose": { + "version": "2.2.0", + "requires": { + "cose-base": "^2.2.0" + }, + "dependencies": { + "cose-base": { + "version": "2.2.0", + "requires": { + "layout-base": "^2.0.0" + } + }, + "layout-base": { + "version": "2.0.1" + } + } + }, + "d3": { + "version": "3.5.6" + }, + "d3-array": { + "version": "3.2.4", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0" + }, + "d3-brush": { + "version": "3.0.0", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.1.0" + }, + "d3-contour": { + "version": "4.0.2", + "requires": { + "d3-array": "^3.2.0" + } + }, + "d3-delaunay": { + "version": "6.0.4", + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1" + }, + "d3-drag": { + "version": "3.0.0", + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "dependencies": { + "commander": { + "version": "7.2.0" + } + } + }, + "d3-ease": { + "version": "3.0.1" + }, + "d3-fetch": { + "version": "3.0.1", + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-flextree": { + "version": "2.1.2", + "requires": { + "d3-hierarchy": "^1.1.5" + } + }, + "d3-force": { + "version": "3.0.0", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0" + }, + "d3-geo": { + "version": "3.1.0", + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-geo-projection": { + "version": "4.0.0", + "requires": { + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" + }, + "dependencies": { + "commander": { + "version": "7.2.0" + } + } + }, + "d3-hierarchy": { + "version": "1.1.9" + }, + "d3-interpolate": { + "version": "3.0.1", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0" + }, + "d3-polygon": { + "version": "3.0.1" + }, + "d3-quadtree": { + "version": "3.0.1" + }, + "d3-random": { + "version": "3.0.1" + }, + "d3-scale": { + "version": "4.0.2", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.0.0", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0" + }, + "d3-shape": { + "version": "3.2.0", + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-time": { + "version": "3.1.0", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1" + }, + "d3-transition": { + "version": "3.0.1", + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "dagre-d3-es": { + "version": "7.0.9", + "requires": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + }, + "dependencies": { + "d3": { + "version": "7.8.5", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-hierarchy": { + "version": "3.1.2" + } + } + }, + "damerau-levenshtein": { + "version": "1.0.8", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dayjs": { + "version": "1.11.8" + }, + "debug": { + "version": "4.3.4", + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4" + }, + "deepmerge": { + "version": "4.3.1", + "dev": true + }, + "define-properties": { + "version": "1.2.0", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "del": { + "version": "4.1.1", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "dev": true + } + } + } + } + }, + "delaunator": { + "version": "5.0.0", + "requires": { + "robust-predicates": "^3.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "dev": true + }, + "dequal": { + "version": "2.0.3", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "dompurify": { + "version": "2.4.3" + }, + "eastasianwidth": { + "version": "0.2.0", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ejs": { + "version": "3.1.9", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.4.435" + }, + "elkjs": { + "version": "0.8.2" + }, + "emoji-regex": { + "version": "9.2.2", + "dev": true + }, + "emojione": { + "version": "4.5.0" + }, + "emojionearea": { + "version": "3.4.2", + "requires": { + "emojione": ">=2.0.1", + "jquery": ">=1.8.3", + "jquery-textcomplete": ">=1.3.4" + } + }, + "emojis-list": { + "version": "3.0.0", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.4.4", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.15.0", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "enquirer": { + "version": "2.3.6", + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "envinfo": { + "version": "7.9.0", + "dev": true + }, + "es-abstract": { + "version": "1.21.2", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-module-lexer": { + "version": "1.3.0" + }, + "es-set-tostringtag": { + "version": "2.0.1", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1" + }, + "escape-string-regexp": { + "version": "1.0.5" + }, + "eslint": { + "version": "7.32.0", + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "escape-string-regexp": { + "version": "4.0.0" + }, + "eslint-visitor-keys": { + "version": "2.1.0" + }, + "glob-parent": { + "version": "5.1.2", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.20.0", + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0" + }, + "lru-cache": { + "version": "6.0.0", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2" + }, + "yallist": { + "version": "4.0.0" + } + } + }, + "eslint-config-airbnb": { + "version": "18.2.1", + "dev": true, + "requires": { + "eslint-config-airbnb-base": "^14.2.1", + "object.assign": "^4.1.2", + "object.entries": "^1.1.2" + } + }, + "eslint-config-airbnb-base": { + "version": "14.2.1", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.2" + } + }, + "eslint-config-prettier": { + "version": "8.8.0", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.7", + "dev": true, + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.8.0", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-cypress": { + "version": "2.13.3", + "requires": { + "globals": "^11.12.0" + } + }, + "eslint-plugin-import": { + "version": "2.27.5", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "dev": true, + "requires": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + } + }, + "eslint-plugin-prettier": { + "version": "3.4.1", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-react": { + "version": "7.32.2", + "dev": true, + "peer": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "dev": true, + "peer": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.4", + "dev": true, + "peer": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "dev": true, + "peer": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0" + } + } + }, + "eslint-utils": { + "version": "2.1.0", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0" + }, + "eslint-webpack-plugin": { + "version": "2.7.0", + "requires": { + "@types/eslint": "^7.29.0", + "arrify": "^2.0.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1" + }, + "dependencies": { + "schema-utils": { + "version": "3.3.0", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "espree": { + "version": "7.3.1", + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + } + }, + "esprima": { + "version": "4.0.1" + }, + "esquery": { + "version": "1.5.0", + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0" + }, + "estree-walker": { + "version": "1.0.1", + "dev": true + }, + "esutils": { + "version": "2.0.3" + }, + "eventemitter2": { + "version": "6.4.7", + "dev": true + }, + "events": { + "version": "3.3.0" + }, + "execa": { + "version": "4.1.0", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "executable": { + "version": "4.1.1", + "dev": true, + "requires": { + "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "dev": true + }, + "extract-zip": { + "version": "2.0.1", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3" + }, + "fast-diff": { + "version": "1.3.0", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-patch": { + "version": "3.1.1" + }, + "fast-json-stable-stringify": { + "version": "2.1.0" + }, + "fast-levenshtein": { + "version": "2.0.6" + }, + "fastest-levenshtein": { + "version": "1.0.16", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "3.2.0", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-loader": { + "version": "6.2.0", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.3.0", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "filelist": { + "version": "1.0.4", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-cache-dir": { + "version": "3.3.2", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "3.2.7" + }, + "footable": { + "version": "2.0.6", + "requires": { + "jquery": ">=1.4.4" + } + }, + "for-each": { + "version": "0.3.3", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "forever-agent": { + "version": "0.6.1", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "9.1.0", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0" + }, + "fsevents": { + "version": "2.3.2", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1" + }, + "functions-have-names": { + "version": "1.2.3", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5" + }, + "get-intrinsic": { + "version": "1.2.1", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "dev": true + }, + "get-stream": { + "version": "5.2.0", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "getos": { + "version": "3.2.1", + "dev": true, + "requires": { + "async": "^3.2.0" + } + }, + "getpass": { + "version": "0.1.7", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gettext-parser": { + "version": "2.0.0", + "requires": { + "encoding": "^0.1.12", + "safe-buffer": "^5.1.2" + } + }, + "gettext-to-messageformat": { + "version": "0.3.1", + "requires": { + "gettext-parser": "^1.4.0" + }, + "dependencies": { + "gettext-parser": { + "version": "1.4.0", + "requires": { + "encoding": "^0.1.12", + "safe-buffer": "^5.1.1" + } + } + } + }, + "glob": { + "version": "7.2.3", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1" + }, + "global-dirs": { + "version": "3.0.1", + "dev": true, + "requires": { + "ini": "2.0.0" + } + }, + "globals": { + "version": "11.12.0" + }, + "globalthis": { + "version": "1.0.3", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "13.2.0", + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.2.4" + } + } + }, + "gopd": { + "version": "1.0.1", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11" + }, + "gulp-header": { + "version": "1.8.12", + "requires": { + "concat-with-sourcemaps": "*", + "lodash.template": "^4.4.0", + "through2": "^2.0.0" + } + }, + "hammerjs": { + "version": "2.0.8" + }, + "has": { + "version": "1.0.3", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "dev": true + }, + "has-flag": { + "version": "3.0.0" + }, + "has-property-descriptors": { + "version": "1.0.0", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "heap": { + "version": "0.2.7" + }, + "htmx.org": { + "version": "1.9.2" + }, + "http-signature": { + "version": "1.3.6", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + } + }, + "human-signals": { + "version": "1.1.1", + "dev": true + }, + "husky": { + "version": "7.0.4", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "idb": { + "version": "7.1.1", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "dev": true + }, + "ignore": { + "version": "4.0.6" + }, + "immutable": { + "version": "4.3.0", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.1.0", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4" + }, + "indent-string": { + "version": "4.0.0", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "ini": { + "version": "2.0.0", + "dev": true + }, + "internal-slot": { + "version": "1.0.5", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "internmap": { + "version": "2.0.3" + }, + "interpret": { + "version": "2.2.0", + "dev": true + }, + "is-array-buffer": { + "version": "3.0.2", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "is-bigint": { + "version": "1.0.4", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "dev": true + }, + "is-ci": { + "version": "3.0.1", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-core-module": { + "version": "2.12.1", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1" + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-module": { + "version": "1.0.0", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "dev": true + }, + "is-number": { + "version": "7.0.0" + }, + "is-number-object": { + "version": "1.0.7", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "1.0.1", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + }, + "dependencies": { + "is-path-inside": { + "version": "2.1.0", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + } + } + }, + "is-path-inside": { + "version": "3.0.3", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-regexp": { + "version": "1.0.0", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isarray": { + "version": "1.0.0" + }, + "isexe": { + "version": "2.0.0" + }, + "isobject": { + "version": "3.0.1", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "dev": true + }, + "jake": { + "version": "10.8.7", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "27.5.1", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "8.1.1", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jquery": { + "version": "3.7.0" + }, + "jquery-locationpicker": { + "version": "0.1.12" + }, + "jquery-modal": { + "version": "0.9.2" + }, + "jquery-mousewheel": { + "version": "3.1.13" + }, + "jquery-textcomplete": { + "version": "1.8.5" + }, + "jquery-ui": { + "version": "1.13.2", + "requires": { + "jquery": ">=1.8.0 <4.0.0" + } + }, + "jquery-ui-sortable-npm": { + "version": "1.0.0" + }, + "jquery-ui-touch-punch": { + "version": "0.2.3" + }, + "jquery.cookie": { + "version": "1.4.1" + }, + "js-tokens": { + "version": "4.0.0" + }, + "js-yaml": { + "version": "3.14.1", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1" + }, + "json-schema": { + "version": "0.4.0", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1" + }, + "json-stringify-pretty-compact": { + "version": "3.0.0" + }, + "json-stringify-safe": { + "version": "5.0.1", + "dev": true + }, + "json5": { + "version": "2.2.3", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonpointer": { + "version": "5.0.1", + "dev": true + }, + "jsprim": { + "version": "2.0.2", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jsqr": { + "version": "1.4.0" + }, + "jstz": { + "version": "2.1.1" + }, + "jsx-ast-utils": { + "version": "3.3.3", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + } + }, + "katex": { + "version": "0.16.7", + "requires": { + "commander": "^8.3.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0" + } + } + }, + "khroma": { + "version": "2.0.0" + }, + "kind-of": { + "version": "6.0.3", + "dev": true + }, + "language-subtag-registry": { + "version": "0.3.22", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "layout-base": { + "version": "1.0.2" + }, + "lazy-ass": { + "version": "1.6.0", + "dev": true + }, + "leaflet": { + "version": "1.9.4" + }, + "leven": { + "version": "3.1.0", + "dev": true + }, + "levn": { + "version": "0.4.1", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.1.0", + "dev": true + }, + "lint-staged": { + "version": "13.2.2", + "dev": true, + "requires": { + "chalk": "5.2.0", + "cli-truncate": "^3.1.0", + "commander": "^10.0.0", + "debug": "^4.3.4", + "execa": "^7.0.0", + "lilconfig": "2.1.0", + "listr2": "^5.0.7", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.3", + "pidtree": "^0.6.0", + "string-argv": "^0.3.1", + "yaml": "^2.2.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "5.2.0", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "commander": { + "version": "10.0.1", + "dev": true + }, + "execa": { + "version": "7.1.1", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "dev": true + }, + "human-signals": { + "version": "4.3.1", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "dev": true + }, + "listr2": { + "version": "5.0.8", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "cli-truncate": { + "version": "2.1.0", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + } + } + }, + "mimic-fn": { + "version": "4.0.0", + "dev": true + }, + "npm-run-path": { + "version": "5.1.0", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "strip-final-newline": { + "version": "3.0.0", + "dev": true + } + } + }, + "listr2": { + "version": "3.14.0", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cli-truncate": { + "version": "2.1.0", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true + }, + "p-map": { + "version": "4.0.0", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "slice-ansi": { + "version": "3.0.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + } + } + }, + "loader-runner": { + "version": "4.3.0" + }, + "loader-utils": { + "version": "2.0.4", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21" + }, + "lodash-es": { + "version": "4.17.21" + }, + "lodash._reinterpolate": { + "version": "3.0.0" + }, + "lodash.debounce": { + "version": "4.0.8", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2" + }, + "lodash.once": { + "version": "4.1.1", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.truncate": { + "version": "4.4.2" + }, + "log-symbols": { + "version": "4.1.0", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log-update": { + "version": "4.0.0", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "loose-envify": { + "version": "1.4.0", + "peer": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.9", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "markmap": { + "version": "0.6.1", + "requires": { + "d3": "3.5.6", + "remarkable": "1.7.4" + } + }, + "markmap-common": { + "version": "0.14.2", + "peer": true, + "requires": { + "@babel/runtime": "^7.12.1" + } + }, + "markmap-lib": { + "version": "0.14.4", + "requires": { + "@babel/runtime": "^7.18.9", + "js-yaml": "^4.1.0", + "katex": "^0.16.0", + "prismjs": "^1.28.0", + "remarkable": "^2.0.1", + "remarkable-katex": "^1.2.1" + }, + "dependencies": { + "autolinker": { + "version": "3.16.2", + "requires": { + "tslib": "^2.3.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "requires": { + "argparse": "^2.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1" + } + } + }, + "remarkable": { + "version": "2.0.1", + "requires": { + "argparse": "^1.0.10", + "autolinker": "^3.11.0" + } + } + } + }, + "markmap-view": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.15.0.tgz", + "integrity": "sha512-enHwTAgaA7QOzMWzbVNWCT+ZL+YL6MRyLff/7d6DbAdFIAeutFHv5SKMHiiX4FZxlVJAFTGQqrYMNtRRAtnbcQ==", + "requires": { + "@babel/runtime": "^7.22.6", + "@gera2ld/jsx-dom": "^2.2.2", + "@types/d3": "^7.4.0", + "d3": "^7.8.5", + "d3-flextree": "^2.1.2" + }, + "dependencies": { + "d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + } + } + }, + "merge-stream": { + "version": "2.0.0" + }, + "merge2": { + "version": "1.4.1" + }, + "mermaid": { + "version": "9.4.3", + "requires": { + "@braintree/sanitize-url": "^6.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "dagre-d3-es": "7.0.9", + "dayjs": "^1.11.7", + "dompurify": "2.4.3", + "elkjs": "^0.8.2", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.2", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + }, + "dependencies": { + "d3": { + "version": "7.8.5", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-hierarchy": { + "version": "3.1.2" + }, + "uuid": { + "version": "9.0.0" + } + } + }, + "micromatch": { + "version": "4.0.5", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime-db": { + "version": "1.52.0" + }, + "mime-types": { + "version": "2.1.35", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "dev": true + }, + "ms": { + "version": "2.1.2" + }, + "muicss": { + "version": "0.10.3", + "requires": { + "react-addons-shallow-compare": "^15.6.2" + } + }, + "nanoid": { + "version": "3.3.6" + }, + "natural-compare": { + "version": "1.4.0" + }, + "neo-async": { + "version": "2.6.2" + }, + "node-fetch": { + "version": "2.6.11", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-releases": { + "version": "2.0.12" + }, + "non-layered-tidy-tree-layout": { + "version": "2.0.2" + }, + "normalize-path": { + "version": "3.0.0" + }, + "npm-run-path": { + "version": "4.0.1", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "object-assign": { + "version": "4.1.1" + }, + "object-inspect": { + "version": "1.12.3", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.6", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.fromentries": { + "version": "2.0.6", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.hasown": { + "version": "1.1.2", + "dev": true, + "peer": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.values": { + "version": "1.1.6", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ospath": { + "version": "1.2.2", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "2.1.0", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "pace-js": { + "version": "1.2.4" + }, + "parent-module": { + "version": "1.0.1", + "requires": { + "callsites": "^3.0.0" + } + }, + "path-browserify": { + "version": "1.0.1" + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1" + }, + "path-is-inside": { + "version": "1.0.2", + "dev": true + }, + "path-key": { + "version": "3.1.1" + }, + "path-parse": { + "version": "1.0.7", + "dev": true + }, + "path-type": { + "version": "4.0.0" + }, + "pend": { + "version": "1.2.0", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "dev": true + }, + "picocolors": { + "version": "1.0.0" + }, + "picomatch": { + "version": "2.3.1" + }, + "pidtree": { + "version": "0.6.0", + "dev": true + }, + "pify": { + "version": "4.0.1", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "po2json": { + "version": "1.0.0-beta-3", + "requires": { + "commander": "^6.0.0", + "gettext-parser": "2.0.0", + "gettext-to-messageformat": "0.3.1" + }, + "dependencies": { + "commander": { + "version": "6.2.1" + } + } + }, + "postcss": { + "version": "8.4.24", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1" + }, + "prettier": { + "version": "2.8.8", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-bytes": { + "version": "5.6.0", + "dev": true + }, + "prismjs": { + "version": "1.29.0" + }, + "process-nextick-args": { + "version": "2.0.1" + }, + "progress": { + "version": "2.0.3" + }, + "prop-types": { + "version": "15.8.1", + "peer": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "proxy-from-env": { + "version": "1.0.0", + "dev": true + }, + "psl": { + "version": "1.9.0", + "dev": true + }, + "pump": { + "version": "3.0.0", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.0" + }, + "qs": { + "version": "6.10.4", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3" + }, + "ractive": { + "version": "0.8.14" + }, + "randombytes": { + "version": "2.1.0", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "react": { + "version": "16.14.0", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-addons-shallow-compare": { + "version": "15.6.3", + "requires": { + "object-assign": "^4.1.0" + } + }, + "react-is": { + "version": "16.13.1", + "peer": true + }, + "readable-stream": { + "version": "2.3.8", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "readdirp": { + "version": "3.6.0", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regenerate": { + "version": "1.4.2", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11" + }, + "regenerator-transform": { + "version": "0.15.1", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexp.prototype.flags": { + "version": "1.5.0", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + } + }, + "regexpp": { + "version": "3.2.0" + }, + "regexpu-core": { + "version": "5.3.2", + "dev": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "dev": true + } + } + }, + "remarkable": { + "version": "1.7.4", + "requires": { + "argparse": "^1.0.10", + "autolinker": "~0.28.0" + } + }, + "remarkable-katex": { + "version": "1.2.1" + }, + "request-progress": { + "version": "3.0.0", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1" + }, + "require-from-string": { + "version": "2.0.2" + }, + "resolve": { + "version": "1.22.2", + "dev": true, + "requires": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0" + }, + "restore-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4" + }, + "rfdc": { + "version": "1.3.0", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "robust-predicates": { + "version": "3.0.2" + }, + "rollup": { + "version": "2.79.1", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "jest-worker": { + "version": "26.6.2", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "run-parallel": { + "version": "1.2.0", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rw": { + "version": "1.3.3" + }, + "rxjs": { + "version": "7.8.1", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1" + }, + "safe-regex-test": { + "version": "1.0.0", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2" + }, + "sass": { + "version": "1.63.4", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "13.3.2", + "dev": true, + "requires": { + "neo-async": "^2.6.2" + } + }, + "schema-utils": { + "version": "2.7.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select2": { + "version": "4.0.3", + "requires": { + "almond": "~0.3.1", + "jquery-mousewheel": "~3.1.13" + } + }, + "semver": { + "version": "6.3.1", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.1", + "requires": { + "randombytes": "^2.1.0" + } + }, + "shallow-clone": { + "version": "3.0.1", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0" + }, + "side-channel": { + "version": "1.0.4", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "dev": true + }, + "slash": { + "version": "4.0.0" + }, + "slice-ansi": { + "version": "5.0.0", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.1", + "dev": true + } + } + }, + "source-list-map": { + "version": "2.0.1", + "dev": true + }, + "source-map": { + "version": "0.6.1" + }, + "source-map-js": { + "version": "1.0.2" + }, + "source-map-support": { + "version": "0.5.21", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2" + }, + "sshpk": { + "version": "1.17.0", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "string-argv": { + "version": "0.3.2", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0" + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + } + } + }, + "string.prototype.matchall": { + "version": "4.0.8", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trim": { + "version": "1.2.7", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "stringify-object": { + "version": "3.3.0", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "dev": true + }, + "strip-comments": { + "version": "2.0.1", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1" + }, + "style-mod": { + "version": "4.0.3" + }, + "stylis": { + "version": "4.2.0" + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true + }, + "table": { + "version": "6.8.1", + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "json-schema-traverse": { + "version": "1.0.0" + }, + "slice-ansi": { + "version": "4.0.0", + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + } + } + }, + "tapable": { + "version": "2.2.1" + }, + "temp-dir": { + "version": "2.0.0", + "dev": true + }, + "tempy": { + "version": "0.6.0", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0", + "dev": true + } + } + }, + "terser": { + "version": "5.18.1", + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.9.0" + }, + "commander": { + "version": "2.20.3" + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.9", + "requires": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "dependencies": { + "schema-utils": { + "version": "3.3.0", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "text-table": { + "version": "0.2.0" + }, + "throttleit": { + "version": "1.0.0", + "dev": true + }, + "through": { + "version": "2.3.8", + "dev": true + }, + "through2": { + "version": "2.0.5", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timeago.js": { + "version": "4.0.2" + }, + "tmp": { + "version": "0.2.1", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "to-fast-properties": { + "version": "2.0.0", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "requires": { + "is-number": "^7.0.0" + } + }, + "toastr": { + "version": "2.1.4", + "requires": { + "jquery": ">=1.12.0" + } + }, + "topojson-client": { + "version": "3.1.0", + "requires": { + "commander": "2" + }, + "dependencies": { + "commander": { + "version": "2.20.3" + } + } + }, + "tough-cookie": { + "version": "2.5.0", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3" + }, + "trunk8": { + "version": "0.0.1", + "requires": {} + }, + "ts-dedent": { + "version": "2.2.0" + }, + "tsconfig-paths": { + "version": "3.14.2", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "2.5.3" + }, + "tunnel-agent": { + "version": "0.6.0", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.21.3", + "dev": true + }, + "typed-array-length": { + "version": "1.0.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "unbox-primitive": { + "version": "1.0.2", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "dev": true + }, + "unique-string": { + "version": "2.0.0", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "dev": true + }, + "untildify": { + "version": "4.0.0", + "dev": true + }, + "upath": { + "version": "1.2.0", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.11", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2" + }, + "uuid": { + "version": "8.3.2", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0" + }, + "vcards-js": { + "version": "2.10.0" + }, + "vega": { + "version": "5.25.0", + "requires": { + "vega-crossfilter": "~4.1.1", + "vega-dataflow": "~5.7.5", + "vega-encode": "~4.9.2", + "vega-event-selector": "~3.0.1", + "vega-expression": "~5.1.0", + "vega-force": "~4.2.0", + "vega-format": "~1.1.1", + "vega-functions": "~5.13.2", + "vega-geo": "~4.4.1", + "vega-hierarchy": "~4.1.1", + "vega-label": "~1.2.1", + "vega-loader": "~4.5.1", + "vega-parser": "~6.2.0", + "vega-projection": "~1.6.0", + "vega-regression": "~1.2.0", + "vega-runtime": "~6.1.4", + "vega-scale": "~7.3.0", + "vega-scenegraph": "~4.10.2", + "vega-statistics": "~1.9.0", + "vega-time": "~2.1.1", + "vega-transforms": "~4.10.2", + "vega-typings": "~0.24.0", + "vega-util": "~1.17.2", + "vega-view": "~5.11.1", + "vega-view-transforms": "~4.5.9", + "vega-voronoi": "~4.2.1", + "vega-wordcloud": "~4.1.4" + } + }, + "vega-canvas": { + "version": "1.2.7" + }, + "vega-crossfilter": { + "version": "4.1.1", + "requires": { + "d3-array": "^3.2.2", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + } + }, + "vega-dataflow": { + "version": "5.7.5", + "requires": { + "vega-format": "^1.1.1", + "vega-loader": "^4.5.1", + "vega-util": "^1.17.1" + } + }, + "vega-embed": { + "version": "6.22.1", + "requires": { + "fast-json-patch": "^3.1.1", + "json-stringify-pretty-compact": "^3.0.0", + "semver": "~7.4.0", + "tslib": "^2.5.0", + "vega-interpreter": "^1.0.5", + "vega-schema-url-parser": "^2.2.0", + "vega-themes": "^2.13.0", + "vega-tooltip": "^0.32.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.4.0", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "bundled": true + } + } + }, + "vega-encode": { + "version": "4.9.2", + "requires": { + "d3-array": "^3.2.2", + "d3-interpolate": "^3.0.1", + "vega-dataflow": "^5.7.5", + "vega-scale": "^7.3.0", + "vega-util": "^1.17.1" + } + }, + "vega-event-selector": { + "version": "3.0.1" + }, + "vega-expression": { + "version": "5.1.0", + "requires": { + "@types/estree": "^1.0.0", + "vega-util": "^1.17.1" + } + }, + "vega-force": { + "version": "4.2.0", + "requires": { + "d3-force": "^3.0.0", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + } + }, + "vega-format": { + "version": "1.1.1", + "requires": { + "d3-array": "^3.2.2", + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" + } + }, + "vega-functions": { + "version": "5.13.2", + "requires": { + "d3-array": "^3.2.2", + "d3-color": "^3.1.0", + "d3-geo": "^3.1.0", + "vega-dataflow": "^5.7.5", + "vega-expression": "^5.1.0", + "vega-scale": "^7.3.0", + "vega-scenegraph": "^4.10.2", + "vega-selections": "^5.4.1", + "vega-statistics": "^1.8.1", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" + } + }, + "vega-geo": { + "version": "4.4.1", + "requires": { + "d3-array": "^3.2.2", + "d3-color": "^3.1.0", + "d3-geo": "^3.1.0", + "vega-canvas": "^1.2.7", + "vega-dataflow": "^5.7.5", + "vega-projection": "^1.6.0", + "vega-statistics": "^1.8.1", + "vega-util": "^1.17.1" + } + }, + "vega-hierarchy": { + "version": "4.1.1", + "requires": { + "d3-hierarchy": "^3.1.2", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + }, + "dependencies": { + "d3-hierarchy": { + "version": "3.1.2" + } + } + }, + "vega-interpreter": { + "version": "1.0.5" + }, + "vega-label": { + "version": "1.2.1", + "requires": { + "vega-canvas": "^1.2.6", + "vega-dataflow": "^5.7.3", + "vega-scenegraph": "^4.9.2", + "vega-util": "^1.15.2" + } + }, + "vega-lite": { + "version": "5.9.3", + "requires": { + "@types/clone": "~2.1.1", + "clone": "~2.1.2", + "fast-deep-equal": "~3.1.3", + "fast-json-stable-stringify": "~2.1.0", + "json-stringify-pretty-compact": "~3.0.0", + "tslib": "~2.5.0", + "vega-event-selector": "~3.0.1", + "vega-expression": "~5.1.0", + "vega-util": "~1.17.2", + "yargs": "~17.7.2" + } + }, + "vega-loader": { + "version": "4.5.1", + "requires": { + "d3-dsv": "^3.0.1", + "node-fetch": "^2.6.7", + "topojson-client": "^3.1.0", + "vega-format": "^1.1.1", + "vega-util": "^1.17.1" + } + }, + "vega-parser": { + "version": "6.2.0", + "requires": { + "vega-dataflow": "^5.7.5", + "vega-event-selector": "^3.0.1", + "vega-functions": "^5.13.1", + "vega-scale": "^7.3.0", + "vega-util": "^1.17.1" + } + }, + "vega-projection": { + "version": "1.6.0", + "requires": { + "d3-geo": "^3.1.0", + "d3-geo-projection": "^4.0.0", + "vega-scale": "^7.3.0" + } + }, + "vega-regression": { + "version": "1.2.0", + "requires": { + "d3-array": "^3.2.2", + "vega-dataflow": "^5.7.3", + "vega-statistics": "^1.9.0", + "vega-util": "^1.15.2" + } + }, + "vega-runtime": { + "version": "6.1.4", + "requires": { + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + } + }, + "vega-scale": { + "version": "7.3.0", + "requires": { + "d3-array": "^3.2.2", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" + } + }, + "vega-scenegraph": { + "version": "4.10.2", + "requires": { + "d3-path": "^3.1.0", + "d3-shape": "^3.2.0", + "vega-canvas": "^1.2.7", + "vega-loader": "^4.5.1", + "vega-scale": "^7.3.0", + "vega-util": "^1.17.1" + } + }, + "vega-schema-url-parser": { + "version": "2.2.0" + }, + "vega-selections": { + "version": "5.4.1", + "requires": { + "d3-array": "3.2.2", + "vega-expression": "^5.0.1", + "vega-util": "^1.17.1" + }, + "dependencies": { + "d3-array": { + "version": "3.2.2", + "requires": { + "internmap": "1 - 2" + } + } + } + }, + "vega-statistics": { + "version": "1.9.0", + "requires": { + "d3-array": "^3.2.2" + } + }, + "vega-themes": { + "version": "2.13.0", + "requires": {} + }, + "vega-time": { + "version": "2.1.1", + "requires": { + "d3-array": "^3.2.2", + "d3-time": "^3.1.0", + "vega-util": "^1.17.1" + } + }, + "vega-tooltip": { + "version": "0.32.0", + "requires": { + "vega-util": "^1.17.1" + } + }, + "vega-transforms": { + "version": "4.10.2", + "requires": { + "d3-array": "^3.2.2", + "vega-dataflow": "^5.7.5", + "vega-statistics": "^1.8.1", + "vega-time": "^2.1.1", + "vega-util": "^1.17.1" + } + }, + "vega-typings": { + "version": "0.24.1", + "requires": { + "@types/geojson": "7946.0.4", + "vega-event-selector": "^3.0.1", + "vega-expression": "^5.0.1", + "vega-util": "^1.17.1" + }, + "dependencies": { + "@types/geojson": { + "version": "7946.0.4" + } + } + }, + "vega-util": { + "version": "1.17.2" + }, + "vega-view": { + "version": "5.11.1", + "requires": { + "d3-array": "^3.2.2", + "d3-timer": "^3.0.1", + "vega-dataflow": "^5.7.5", + "vega-format": "^1.1.1", + "vega-functions": "^5.13.1", + "vega-runtime": "^6.1.4", + "vega-scenegraph": "^4.10.2", + "vega-util": "^1.17.1" + } + }, + "vega-view-transforms": { + "version": "4.5.9", + "requires": { + "vega-dataflow": "^5.7.5", + "vega-scenegraph": "^4.10.2", + "vega-util": "^1.17.1" + } + }, + "vega-voronoi": { + "version": "4.2.1", + "requires": { + "d3-delaunay": "^6.0.2", + "vega-dataflow": "^5.7.5", + "vega-util": "^1.17.1" + } + }, + "vega-wordcloud": { + "version": "4.1.4", + "requires": { + "vega-canvas": "^1.2.7", + "vega-dataflow": "^5.7.5", + "vega-scale": "^7.3.0", + "vega-statistics": "^1.8.1", + "vega-util": "^1.17.1" + } + }, + "verror": { + "version": "1.10.0", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "dev": true + } + } + }, + "vue": { + "version": "2.7.14", + "requires": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + }, + "vue-script2": { + "version": "2.1.0" + }, + "w3c-keyname": { + "version": "2.2.8" + }, + "watchpack": { + "version": "2.4.0", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "web-worker": { + "version": "1.2.0" + }, + "webidl-conversions": { + "version": "3.0.1" + }, + "webpack": { + "version": "5.87.0", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "acorn": { + "version": "8.9.0" + }, + "acorn-import-assertions": { + "version": "1.9.0", + "requires": {} + }, + "schema-utils": { + "version": "3.3.0", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-cli": { + "version": "4.10.0", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "dev": true + } + } + }, + "webpack-manifest-plugin": { + "version": "5.0.0", + "dev": true, + "requires": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "dependencies": { + "webpack-sources": { + "version": "2.3.1", + "dev": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + } + } + }, + "webpack-merge": { + "version": "5.9.0", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3" + }, + "whatwg-url": { + "version": "5.0.0", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.9", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "wildcard": { + "version": "2.0.1", + "dev": true + }, + "word-wrap": { + "version": "1.2.3" + }, + "workbox-background-sync": { + "version": "6.6.0", + "dev": true, + "requires": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "workbox-broadcast-update": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-build": { + "version": "6.6.0", + "dev": true, + "requires": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "dependencies": { + "@apideck/better-ajv-errors": { + "version": "0.3.6", + "dev": true, + "requires": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + } + }, + "ajv": { + "version": "8.12.0", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "dev": true + }, + "source-map": { + "version": "0.8.0-beta.0", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "workbox-cacheable-response": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-core": { + "version": "6.6.0", + "dev": true + }, + "workbox-expiration": { + "version": "6.6.0", + "dev": true, + "requires": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "workbox-google-analytics": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "workbox-navigation-preload": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-precaching": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "workbox-range-requests": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-recipes": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "workbox-routing": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-strategies": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-streams": { + "version": "6.6.0", + "dev": true, + "requires": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "workbox-sw": { + "version": "6.6.0", + "dev": true + }, + "workbox-webpack-plugin": { + "version": "6.6.0", + "dev": true, + "requires": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "dependencies": { + "webpack-sources": { + "version": "1.4.3", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "workbox-window": { + "version": "6.6.0", + "dev": true, + "requires": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + } + } + }, + "wrappy": { + "version": "1.0.2" + }, + "xtend": { + "version": "4.0.2" + }, + "y18n": { + "version": "5.0.8" + }, + "yallist": { + "version": "3.1.1", + "dev": true + }, + "yaml": { + "version": "2.3.1", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1" + }, + "yauzl": { + "version": "2.10.0", + "dev": true, + "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } diff --git a/package.json b/package.json index 9be86e321..328baf07f 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "@codemirror/state": "^6.0.0", "babel-eslint": "^10.0.3", "babel-loader": "^8.2.2", + "cypress": "^10.6.0", "clean-webpack-plugin": "^3.0.0", - "cypress": "^4.2.0", "dayjs": "^1.10.6", "eslint": "^7.30.0", "eslint-config-airbnb": "^18.2.1", @@ -35,7 +35,8 @@ "sass-loader": "^13.2.2", "webpack": "^5.72.1", "webpack-cli": "^4.9.2", - "workbox-webpack-plugin": "^6.1.5" + "workbox-webpack-plugin": "^6.1.5", + "webpack-manifest-plugin": "^5.0.0" }, "dependencies": { "@codemirror/autocomplete": "^6.3.0", @@ -72,7 +73,7 @@ "po2json": "^1.0.0-beta-3", "prismjs": "^1.29.0", "ractive": "^0.8.0", - "select2": "^4.0.13", + "select2": "4.0.3", "sprintf-js": "^1.1.2", "timeago.js": "^4.0.2", "toastr": "^2.1.4", @@ -82,7 +83,6 @@ "vega-embed": "^6.21.0", "vega-lite": "^5.6.0", "vue": "^2.6.14", - "vue-script2": "^2.1.0", - "webpack-manifest-plugin": "^5.0.0" + "vue-script2": "^2.1.0" } } diff --git a/webpack.config.js b/webpack.config.js index bd4e20c3d..7a0a2f5b5 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,7 +3,6 @@ process.traceDeprecation = true; const webpack = require('webpack'); const ESLintPlugin = require('eslint-webpack-plugin'); const path = require('path'); -const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const { InjectManifest } = require('workbox-webpack-plugin'); const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); @@ -92,6 +91,7 @@ module.exports = { path: path.resolve(__dirname, 'funnel/static/build'), publicPath: '/static/build/', filename: 'js/[name].[chunkhash].js', + clean: true, }, module: { rules: [ @@ -143,9 +143,6 @@ module.exports = { new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify(nodeEnv) }, }), - new CleanWebpackPlugin({ - root: path.join(__dirname, 'funnel/static'), - }), new WebpackManifestPlugin({ fileName: path.join(__dirname, 'funnel/static/build/manifest.json'), }), From 3e4370b446dc7429e534df8384c3d8bed8d74143 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Fri, 21 Jul 2023 23:36:40 +0530 Subject: [PATCH 207/281] Changed messaging for the 403 template (#1816) * Changed messaging for the 403 template * Updated messaging for the 403 template --- funnel/templates/errors/403.html.jinja2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/funnel/templates/errors/403.html.jinja2 b/funnel/templates/errors/403.html.jinja2 index cd649e60e..5eea0b1ee 100644 --- a/funnel/templates/errors/403.html.jinja2 +++ b/funnel/templates/errors/403.html.jinja2 @@ -9,5 +9,5 @@ {% endblock top_title %} {% block content %} -

    {% trans %}This page is not currently available{% endtrans %}

    +

    {% trans %}This page is private and you do not have access{% endtrans %}

    {% endblock content %} From eec1ae03b21a3130aac249d4c9d566babff55f0c Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Sun, 23 Jul 2023 16:33:43 +0530 Subject: [PATCH 208/281] Support serving through Gunicorn with config from environment (#1799) Co-authored-by: Kiran Jonnalagadda --- .flaskenv | 6 ++++++ gunicorn.conf.py | 8 ++++++++ sample.env | 50 ++++++++++++++++++++++++++++++++++++++++++++++-- wsgi.py | 11 ++++++++--- 4 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 .flaskenv create mode 100644 gunicorn.conf.py diff --git a/.flaskenv b/.flaskenv new file mode 100644 index 000000000..ce2163fdb --- /dev/null +++ b/.flaskenv @@ -0,0 +1,6 @@ +# The settings in this file are secondary to .env, which overrides + +# Assume production by default, unset debug and testing state +FLASK_DEBUG=false +FLASK_DEBUG_TB_ENABLED=false +FLASK_TESTING=false diff --git a/gunicorn.conf.py b/gunicorn.conf.py new file mode 100644 index 000000000..7e80587ce --- /dev/null +++ b/gunicorn.conf.py @@ -0,0 +1,8 @@ +"""Gunicorn default configuration.""" +# The settings in this file may be overriden using env var `GUNICORN_CMD_ARGS` or +# directly on the command line to `gunicorn` + +import multiprocessing + +bind = '127.0.0.1:3000' +workers = 2 * multiprocessing.cpu_count() + 1 diff --git a/sample.env b/sample.env index 7c1fdc651..159905cbc 100644 --- a/sample.env +++ b/sample.env @@ -25,7 +25,7 @@ FLASK_DEBUG=1 # Flask-DebugToolbar (optional) is useful for dev, but MUST NOT BE enabled in production FLASK_DEBUG_TB_ENABLED=true -# --- Domain configuration (these must point to 127.0.0.1 in /etc/hosts) +# --- Domain configuration (these must point to 127.0.0.1 in /etc/hosts in dev and test) # Funnel app's server name (Hasgeek uses 'hasgeek.com' in production) APP_FUNNEL_SERVER_NAME=funnel.test:3000 # Funnel app's default domain when running without a HTTP context @@ -57,7 +57,7 @@ FLASK_LASTUSER_SECRET_KEYS='["make-this-something-random", "older-secret-keys-he # --- App configuration # Default timezone when user timezone is not known FLASK_TIMEZONE='Asia/Kolkata' -# Support email and phone numbers +# Support email and phone numbers (must be syntactically valid) FLASK_SITE_SUPPORT_EMAIL=support@example.com FLASK_SITE_SUPPORT_PHONE=+91... # Optional featured accounts for the home page (list of featured names, or empty list) @@ -76,6 +76,25 @@ FLASK_MATOMO_TOKEN=null # Matomo site id (app-specific) APP_FUNNEL_MATOMO_ID= +# --- Statsd logging (always enabled, emits to UDP) +# Support for tagging varies between implementations: +# Etsy's statsd doesn't support tagging (default `false` merges tags into metric name) +# Telegraf uses `,` as a tag separator +# Prometheus uses `;` as a tag separator +FLASK_STATSD_TAGS=, +# Other statsd settings have default values: +# FLASK_STATSD_HOST=127.0.0.1 +# FLASK_STATSD_PORT=8125 +# FLASK_STATSD_MAXUDPSIZE=512 +# FLASK_STATSD_IPV6=false +# Sampling rate, 0.0-1.0, default 1 logs 100% +# FLASK_STATSD_RATE=1 +# FLASK_STATSD_TAGS=false +# Log all Flask requests (time to serve, response status code) +# FLASK_STATSD_REQUEST_LOG=true +# Log all WTForms validations (when using baseframe.forms.Form subclass) +# FLASK_STATSD_FORM_LOG=true + # --- Redis Queue and Redis cache (use separate dbs to isolate) # Redis server host REDIS_HOST=localhost @@ -107,6 +126,27 @@ FLASK_MAIL_PASSWORD=null # Default "From:" address in email FLASK_MAIL_DEFAULT_SENDER="Hasgeek " +# --- GeoIP databases for IP address geolocation (used in account settings) +# Obtain a free license key from Maxmind, install geoipupdate, place the account id and +# key in GeoIP.conf and enable the GeoLite2-ASN database. The location of GeoIP.conf +# varies between Ubuntu and macOS. +# https://support.maxmind.com/hc/en-us/articles/4407111582235-Generate-a-License-Key + +# Ubuntu: +# sudo add-apt-repository ppa:maxmind/ppa +# sudo apt install geoipupdate +# vim /etc/GeoIP.conf +# sudo geoipupdate -f /etc/GeoIP.conf +# FLASK_GEOIP_DB_CITY=/usr/share/GeoIP/GeoLite2-City.mmdb +# FLASK_GEOIP_DB_ASN=/usr/share/GeoIP/GeoLite2-ASN.mmdb + +# macOS with Homebrew on Apple Silicon: +# brew install geoipupdate +# vim /opt/homebrew/etc/GeoIP.conf +# geoipupdate -f /opt/homebrew/etc/GeoIP.conf +# FLASK_GEOIP_DB_CITY=/opt/homebrew/var/GeoIP/GeoLite2-City.mmdb +# FLASK_GEOIP_DB_ASN=/opt/homebrew/var/GeoIP/GeoLite2-ASN.mmdb + # --- AWS SNS configuration # AWS SES events (required only if app is configured to send email via SES) # AWS SNS must be configured with callback URL https://domain.tld/api/1/email/ses_event @@ -157,6 +197,9 @@ FLASK_OAUTH_GOOGLE_SCOPE='["email", "profile"]' # LinkedIn FLASK_OAUTH_LINKEDIN_KEY=null FLASK_OAUTH_LINKEDIN_SECRET=null +# Zoom +FLASK_OAUTH_ZOOM_KEY=null +FLASK_OAUTH_ZOOM_SECRET=null # --- Functional integrations # YouTube (for thumbnails and video metadata) @@ -171,6 +214,9 @@ FLASK_GOOGLE_MAPS_API_KEY= FLASK_RECAPTCHA_USE_SSL=true FLASK_RECAPTCHA_PUBLIC_KEY=null FLASK_RECAPTCHA_PRIVATE_KEY=null +# Daily stats to Telegram +FLASK_TELEGRAM_STATS_APIKEY=null +FLASK_TELEGRAM_STATS_CHATID=null # TRAI Mobile Number Revocation List (MNRL) for expired phone numbers FLASK_MNRL_API_KEY=null diff --git a/wsgi.py b/wsgi.py index ab7918184..ba99c82c8 100644 --- a/wsgi.py +++ b/wsgi.py @@ -3,9 +3,14 @@ import os.path import sys -__all__ = ['application', 'shortlinkapp'] +from flask.cli import load_dotenv +from flask.helpers import get_load_dotenv + +__all__ = ['application', 'shortlinkapp', 'unsubscribeapp'] sys.path.insert(0, os.path.dirname(__file__)) +if get_load_dotenv(): + load_dotenv() + # pylint: disable=wrong-import-position -from funnel import app as application # isort:skip -from funnel import shortlinkapp # isort:skip +from funnel import app as application, shortlinkapp, unsubscribeapp # isort:skip From f2255ab81300e8a9d875c2d73174b96e8b692b2b Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Sun, 23 Jul 2023 16:49:59 +0530 Subject: [PATCH 209/281] pip-audit 2.6.0 requires `--disable-pip` or it chokes on editable dependencies (#1817) --- .pre-commit-config.yaml | 3 ++- requirements/base.in | 1 + requirements/base.py37.txt | 15 +++++++++------ requirements/base.txt | 15 +++++++++------ requirements/dev.py37.txt | 6 +++--- requirements/dev.txt | 8 ++++---- requirements/test.py37.txt | 8 -------- requirements/test.txt | 8 -------- 8 files changed, 28 insertions(+), 36 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fa4e1101b..fa58e1c1d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -27,6 +27,7 @@ repos: hooks: - id: pip-audit args: [ + '--disable-pip', '--no-deps', '--skip-editable', '-r', @@ -46,7 +47,7 @@ repos: ] files: ^requirements/.*\.txt$ - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.278 + rev: v0.0.280 hooks: - id: ruff args: ['--fix', '--exit-non-zero-on-fix'] diff --git a/requirements/base.in b/requirements/base.in index 7366ebcdb..792641774 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -63,6 +63,7 @@ toml tweepy twilio typing-extensions +urllib3[socks] # Not required here, but the [socks] extra shows up in test.txt user-agents werkzeug whitenoise diff --git a/requirements/base.py37.txt b/requirements/base.py37.txt index 80f23ae97..19e5db7ad 100644 --- a/requirements/base.py37.txt +++ b/requirements/base.py37.txt @@ -1,4 +1,4 @@ -# SHA1:2d92258ba7951d85a229036d73ae5835e50f0b5c +# SHA1:5413ec7fabb7788a7e93e2cc0ed7b97ce62aa936 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -68,9 +68,9 @@ blinker==1.6.2 # -r requirements/base.in # baseframe # coaster -boto3==1.28.8 +boto3==1.28.9 # via -r requirements/base.in -botocore==1.31.8 +botocore==1.31.9 # via # boto3 # s3transfer @@ -80,7 +80,7 @@ cachelib==0.9.0 # via flask-caching cachetools==5.3.1 # via premailer -certifi==2023.5.7 +certifi==2023.7.22 # via # httpcore # httpx @@ -233,7 +233,7 @@ idna==3.4 # requests # tldextract # yarl -ijson==3.2.2 +ijson==3.2.3 # via -r requirements/base.in importlib-metadata==6.7.0 # via @@ -366,6 +366,8 @@ pyparsing==3.1.0 # via httplib2 pypng==0.20220715.0 # via qrcode +pysocks==1.7.1 + # via urllib3 python-dateutil==2.8.2 # via # -r requirements/base.in @@ -531,8 +533,9 @@ uc-micro-py==1.0.2 # via linkify-it-py unidecode==1.3.6 # via coaster -urllib3==1.26.16 +urllib3[socks]==1.26.16 # via + # -r requirements/base.in # botocore # requests # sentry-sdk diff --git a/requirements/base.txt b/requirements/base.txt index c49687996..0d02d955b 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:2d92258ba7951d85a229036d73ae5835e50f0b5c +# SHA1:5413ec7fabb7788a7e93e2cc0ed7b97ce62aa936 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -63,9 +63,9 @@ blinker==1.6.2 # baseframe # coaster # flask -boto3==1.28.8 +boto3==1.28.9 # via -r requirements/base.in -botocore==1.31.8 +botocore==1.31.9 # via # boto3 # s3transfer @@ -75,7 +75,7 @@ cachelib==0.9.0 # via flask-caching cachetools==5.3.1 # via premailer -certifi==2023.5.7 +certifi==2023.7.22 # via # httpcore # httpx @@ -228,7 +228,7 @@ idna==3.4 # requests # tldextract # yarl -ijson==3.2.2 +ijson==3.2.3 # via -r requirements/base.in importlib-metadata==6.8.0 # via @@ -350,6 +350,8 @@ pyparsing==3.1.0 # via httplib2 pypng==0.20220715.0 # via qrcode +pysocks==1.7.1 + # via urllib3 python-dateutil==2.8.2 # via # -r requirements/base.in @@ -503,8 +505,9 @@ uc-micro-py==1.0.2 # via linkify-it-py unidecode==1.3.6 # via coaster -urllib3==1.26.16 +urllib3[socks]==1.26.16 # via + # -r requirements/base.in # botocore # requests # sentry-sdk diff --git a/requirements/dev.py37.txt b/requirements/dev.py37.txt index 2197793e2..79b9a6e5f 100644 --- a/requirements/dev.py37.txt +++ b/requirements/dev.py37.txt @@ -24,7 +24,7 @@ cattrs==22.1.0 # via reformat-gherkin cfgv==3.3.1 # via pre-commit -dill==0.3.6 +dill==0.3.7 # via pylint distlib==0.3.7 # via virtualenv @@ -131,7 +131,7 @@ pyupgrade==3.3.2 # via -r requirements/dev.in reformat-gherkin==3.0.1 # via -r requirements/dev.in -ruff==0.0.278 +ruff==0.0.280 # via -r requirements/dev.in smmap==5.0.0 # via gitdb @@ -175,7 +175,7 @@ virtualenv==20.24.1 # via pre-commit wcwidth==0.2.6 # via reformat-gherkin -wheel==0.40.0 +wheel==0.41.0 # via pip-tools wrapt==1.15.0 # via astroid diff --git a/requirements/dev.txt b/requirements/dev.txt index ea0c3704e..1e2e66914 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -24,7 +24,7 @@ cattrs==22.1.0 # via reformat-gherkin cfgv==3.3.1 # via pre-commit -dill==0.3.6 +dill==0.3.7 # via pylint distlib==0.3.7 # via virtualenv @@ -75,7 +75,7 @@ gitdb==4.0.10 # via gitpython gitpython==3.1.32 # via bandit -identify==2.5.25 +identify==2.5.26 # via pre-commit isort==5.12.0 # via @@ -131,7 +131,7 @@ pyupgrade==3.9.0 # via -r requirements/dev.in reformat-gherkin==3.0.1 # via -r requirements/dev.in -ruff==0.0.278 +ruff==0.0.280 # via -r requirements/dev.in smmap==5.0.0 # via gitdb @@ -169,7 +169,7 @@ virtualenv==20.24.1 # via pre-commit wcwidth==0.2.6 # via reformat-gherkin -wheel==0.40.0 +wheel==0.41.0 # via pip-tools wrapt==1.15.0 # via astroid diff --git a/requirements/test.py37.txt b/requirements/test.py37.txt index 9f1899fb2..44308ea2f 100644 --- a/requirements/test.py37.txt +++ b/requirements/test.py37.txt @@ -41,8 +41,6 @@ pluggy==1.2.0 # via pytest py==1.11.0 # via pytest-html -pysocks==1.7.1 - # via urllib3 pytest==7.4.0 # via # -r requirements/test.in @@ -112,12 +110,6 @@ trio-websocket==0.10.3 # via selenium typeguard==4.0.0 # via -r requirements/test.in -urllib3[socks]==1.26.16 - # via - # botocore - # requests - # selenium - # sentry-sdk wsproto==1.2.0 # via trio-websocket diff --git a/requirements/test.txt b/requirements/test.txt index 367974ae4..5a108e6a8 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -39,8 +39,6 @@ pluggy==1.2.0 # via pytest py==1.11.0 # via pytest-html -pysocks==1.7.1 - # via urllib3 pytest==7.4.0 # via # -r requirements/test.in @@ -110,12 +108,6 @@ trio-websocket==0.10.3 # via selenium typeguard==4.0.0 # via -r requirements/test.in -urllib3[socks]==1.26.16 - # via - # botocore - # requests - # selenium - # sentry-sdk wsproto==1.2.0 # via trio-websocket From 8f6cb5c0cb14c0d7a1c73829445e5025eb0652e4 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Mon, 24 Jul 2023 10:02:08 +0530 Subject: [PATCH 210/281] Add branch ref to telegram push message (#1818) * Add branch ref to telegram push message * Try out ref_name in the telegram message for push --- .github/workflows/telegram.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/telegram.yml b/.github/workflows/telegram.yml index c46b48d1f..feb7b1e99 100644 --- a/.github/workflows/telegram.yml +++ b/.github/workflows/telegram.yml @@ -140,4 +140,4 @@ jobs: format: html disable_web_page_preview: true message: | - ${{ github.event_name }} by ${{ needs.tguser.outputs.tguser }} (${{ github.actor }}) in ${{ github.repository }}: ${{ github.event.head_commit.message }} ${{ github.event.compare }} + ${{ github.event_name }} by ${{ needs.tguser.outputs.tguser }} (${{ github.actor }}) in ${{ github.repository }}/${{ github.ref_name }}: ${{ github.event.head_commit.message }} ${{ github.event.compare }} From d7969df753be8ed6c203858c553da8deab2c9d31 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Tue, 25 Jul 2023 10:55:31 +0530 Subject: [PATCH 211/281] Styling fixes (#1819) Fix spotlight card size in medium screen. Align venue room to bottom in schedule page --- funnel/assets/sass/pages/index.scss | 2 +- funnel/assets/sass/pages/schedule.scss | 2 +- funnel/templates/profile_layout.html.jinja2 | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/funnel/assets/sass/pages/index.scss b/funnel/assets/sass/pages/index.scss index dc2d373d2..38745b929 100644 --- a/funnel/assets/sass/pages/index.scss +++ b/funnel/assets/sass/pages/index.scss @@ -43,7 +43,7 @@ } } -@media (min-width: 768px) { +@media (min-width: 992px) { .spotlight-container { padding: 0 40px; .spotlight-container__details { diff --git a/funnel/assets/sass/pages/schedule.scss b/funnel/assets/sass/pages/schedule.scss index af218a8af..8adfdc138 100644 --- a/funnel/assets/sass/pages/schedule.scss +++ b/funnel/assets/sass/pages/schedule.scss @@ -94,7 +94,6 @@ .schedule__row--sticky { display: flex; - align-items: center; overflow-x: auto; position: sticky; position: -webkit-sticky; @@ -225,6 +224,7 @@ .schedule__row__column--time--header { display: block; padding: $mui-grid-padding * 0.5 0; + align-self: center; } } .schedule__row--calendar { diff --git a/funnel/templates/profile_layout.html.jinja2 b/funnel/templates/profile_layout.html.jinja2 index f70485830..66a6de3e0 100644 --- a/funnel/templates/profile_layout.html.jinja2 +++ b/funnel/templates/profile_layout.html.jinja2 @@ -94,7 +94,7 @@
    {% if featured_project.primary_venue %}{{ faicon(icon='map-marker-alt', icon_size='caption', baseline=false) }} {% if featured_project.primary_venue.city %}{{ featured_project.primary_venue.city }}{% else %}{{ featured_project.primary_venue.title }}{% endif %}{% elif featured_project.location %}{{ faicon(icon='map-marker-alt', icon_size='caption', baseline=false) }} {{ featured_project.location }}{% endif %}
    {% trans %}Learn more{% endtrans %}
    -
    +
    @@ -109,8 +109,8 @@ {{ featured_project.profile.title }}
    - {%- if not current_auth.is_anonymous and add_bookmark %} - {% set save_form_id = save_form_id_prefix + project.uuid_b58 %} + {%- if not current_auth.is_anonymous %} + {% set save_form_id = "spotlight_spfm_mobile_" + featured_project.uuid_b58 %}
    {{ saveprojectform(featured_project, formid=save_form_id) }}
    {% endif %}
    From 2836ac2154290cd6720820cd2eb0af2350f3e69b Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Tue, 25 Jul 2023 14:58:51 +0530 Subject: [PATCH 212/281] SMS template for Update should show account instead of project (#1821) Update notifications are now sent to all participants (soon followers) of an account, so the project name will not be familiar. Show account instead. Co-authored-by: Amogh M Aradhya --- funnel/models/profile.py | 3 ++- funnel/views/notifications/mixins.py | 21 ++++++++++--------- .../notifications/update_notification.py | 6 +++--- tests/unit/views/notification_test.py | 4 ++-- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/funnel/models/profile.py b/funnel/models/profile.py index 0864b10d2..21e2c2903 100644 --- a/funnel/models/profile.py +++ b/funnel/models/profile.py @@ -221,6 +221,7 @@ class Profile(EnumerateMembershipsMixin, UuidMixin, BaseMixin, Model): 'uuid_b58', 'name', 'title', + 'pickername', 'tagline', 'description', 'website', @@ -282,7 +283,7 @@ def __repr__(self) -> str: return f'' @property - def owner(self) -> Union[User, Organization]: + def owner(self) -> Optional[Union[User, Organization]]: """Return the user or organization that owns this account.""" return self.user or self.organization diff --git a/funnel/views/notifications/mixins.py b/funnel/views/notifications/mixins.py index 18f8e25b5..ffc71e616 100644 --- a/funnel/views/notifications/mixins.py +++ b/funnel/views/notifications/mixins.py @@ -5,7 +5,7 @@ import grapheme -from ...models import Project, User +from ...models import Organization, Profile, Project, User _T = TypeVar('_T') # Host type for SetVar _I = TypeVar('_I') # Input type for SetVar's setter @@ -78,15 +78,16 @@ def project(self, project: Project) -> str: return title[:index] + '…' @SetVar - def user(self, user: User) -> str: - """Set user's display name, truncated to fit.""" - pickername = user.pickername + def account(self, account: Union[User, Organization, Profile]) -> str: + """Set account's display name, truncated to fit.""" + pickername = account.pickername if len(pickername) <= self.var_max_length: return pickername - fullname = user.fullname - if len(fullname) <= self.var_max_length: - return fullname - index = grapheme.safe_split_index(fullname, self.var_max_length - 1) - return fullname[:index] + '…' + title = account.title + if len(title) <= self.var_max_length: + return title + index = grapheme.safe_split_index(title, self.var_max_length - 1) + return title[:index] + '…' - actor = user # This will trigger cloning in SetVar.__set_name__ + # This will trigger cloning in SetVar.__set_name__ + actor = user = organization = profile = account diff --git a/funnel/views/notifications/update_notification.py b/funnel/views/notifications/update_notification.py index 07bd200eb..c4a995708 100644 --- a/funnel/views/notifications/update_notification.py +++ b/funnel/views/notifications/update_notification.py @@ -20,9 +20,9 @@ class UpdateTemplate(TemplateVarMixin, SmsTemplate): 'There is an update in {#var#}: {#var#}\n\nhttps://bye.li to stop -Hasgeek' ) template = ( - "There is an update in {project}: {url}\n\nhttps://bye.li to stop -Hasgeek" + "There is an update in {profile}: {url}\n\nhttps://bye.li to stop -Hasgeek" ) - plaintext_template = "There is an update in {project}: {url}" + plaintext_template = "There is an update in {profile}: {url}" url: str @@ -65,7 +65,7 @@ def email_content(self) -> str: def sms(self) -> UpdateTemplate: return UpdateTemplate( - project=self.update.project, + profile=self.update.project.profile, url=shortlink( self.update.url_for(_external=True, **self.tracking_tags('sms')), shorter=True, diff --git a/tests/unit/views/notification_test.py b/tests/unit/views/notification_test.py index 3c623c314..0cd2238fc 100644 --- a/tests/unit/views/notification_test.py +++ b/tests/unit/views/notification_test.py @@ -146,9 +146,9 @@ def test_template_var_mixin() -> None: title='Ankh-Morpork 2010', joined_title='Ankh-Morpork / Ankh-Morpork 2010' ) u1 = SimpleNamespace( - pickername='Havelock Vetinari (@vetinari)', fullname='Havelock Vetinari' + pickername='Havelock Vetinari (@vetinari)', title='Havelock Vetinari' ) - u2 = SimpleNamespace(pickername='Twoflower', fullname='Twoflower') + u2 = SimpleNamespace(pickername='Twoflower', title='Twoflower') t1.project = cast(models.Project, p1) t1.user = cast(models.User, u2) t1.actor = cast(models.User, u1) From 7672b971afd8df28dc242dcd286a20314af95103 Mon Sep 17 00:00:00 2001 From: anishTP <119032387+anishTP@users.noreply.github.com> Date: Wed, 26 Jul 2023 11:38:18 +0530 Subject: [PATCH 213/281] Identify project or proposal in the comment notification (#1812) Co-authored-by: Kiran Jonnalagadda --- funnel/models/profile.py | 8 +++ funnel/models/project.py | 8 +++ funnel/models/proposal.py | 9 +++ funnel/models/user.py | 20 +++++- .../notifications/comment_notification.py | 70 +++++++++++++++---- 5 files changed, 100 insertions(+), 15 deletions(-) diff --git a/funnel/models/profile.py b/funnel/models/profile.py index 21e2c2903..b56217bb5 100644 --- a/funnel/models/profile.py +++ b/funnel/models/profile.py @@ -282,6 +282,14 @@ def __repr__(self) -> str: """Represent :class:`Profile` as a string.""" return f'' + def __str__(self) -> str: + return self.pickername + + def __format__(self, format_spec: str) -> str: + if not format_spec: + return self.pickername + return self.pickername.__format__(format_spec) + @property def owner(self) -> Optional[Union[User, Organization]]: """Return the user or organization that owns this account.""" diff --git a/funnel/models/project.py b/funnel/models/project.py index 5aa8b7c0f..153e34627 100644 --- a/funnel/models/project.py +++ b/funnel/models/project.py @@ -469,6 +469,14 @@ def __repr__(self) -> str: """Represent :class:`Project` as a string.""" return f'' + def __str__(self) -> str: + return self.joined_title + + def __format__(self, format_spec: str) -> str: + if not format_spec: + return self.joined_title + return self.joined_title.__format__(format_spec) + @with_roles(call={'editor'}) @cfp_state.transition( cfp_state.OPENABLE, diff --git a/funnel/models/proposal.py b/funnel/models/proposal.py index 7f5072d2f..9bd864af0 100644 --- a/funnel/models/proposal.py +++ b/funnel/models/proposal.py @@ -227,6 +227,7 @@ class Proposal( # type: ignore[misc] __roles__ = { 'all': { 'read': { + 'absolute_url', # From UrlForMixin 'urls', 'uuid_b58', 'url_name_uuid_b58', @@ -285,6 +286,14 @@ def __repr__(self) -> str: f' by "{self.user.fullname}">' ) + def __str__(self) -> str: + return self.title + + def __format__(self, format_spec: str) -> str: + if not format_spec: + return self.title + return self.title.__format__(format_spec) + # State transitions state.add_conditional_state( 'SCHEDULED', diff --git a/funnel/models/user.py b/funnel/models/user.py index a0175fd94..12623132e 100644 --- a/funnel/models/user.py +++ b/funnel/models/user.py @@ -398,9 +398,13 @@ def __repr__(self) -> str: return f"" def __str__(self) -> str: - """Return picker name for user.""" return self.pickername + def __format__(self, format_spec: str) -> str: + if not format_spec: + return self.pickername + return self.pickername.__format__(format_spec) + @property def pickername(self) -> str: """Return fullname and @name in a format suitable for identification.""" @@ -1043,9 +1047,13 @@ def __init__(self, representation: str) -> None: self.fullname = self.title = self.pickername = representation def __str__(self) -> str: - """Represent user account as a string.""" return self.pickername + def __format__(self, format_spec: str) -> str: + if not format_spec: + return self.pickername + return self.pickername.__format__(format_spec) + def url_for(self, *args, **kwargs) -> Literal['']: """Return blank URL for anything to do with this user.""" return '' @@ -1209,6 +1217,14 @@ def __repr__(self) -> str: return f"" return f"" + def __str__(self) -> str: + return self.pickername + + def __format__(self, format_spec: str) -> str: + if not format_spec: + return self.pickername + return self.pickername.__format__(format_spec) + @property def pickername(self) -> str: """Return title and @name in a format suitable for identification.""" diff --git a/funnel/views/notifications/comment_notification.py b/funnel/views/notifications/comment_notification.py index 990fa13c3..3c023b614 100644 --- a/funnel/views/notifications/comment_notification.py +++ b/funnel/views/notifications/comment_notification.py @@ -15,8 +15,11 @@ CommentModeratorReport, CommentReplyNotification, CommentReportReceivedNotification, + Commentset, DuckTypeUser, NewCommentNotification, + Project, + Proposal, User, ) from ...transports.sms import OneLineTemplate, SmsTemplate @@ -38,7 +41,6 @@ class CommentReplyTemplate(TemplateVarMixin, SmsTemplate): ) plaintext_template = '{actor} has replied to your comment: {url}' - actor: str url: str @@ -55,7 +57,6 @@ class CommentProposalTemplate(TemplateVarMixin, SmsTemplate): ) plaintext_template = '{actor} commented on your submission: {url}' - actor: str url: str @@ -72,7 +73,6 @@ class CommentProjectTemplate(TemplateVarMixin, SmsTemplate): ) plaintext_template = '{actor} commented on a project you are in: {url}' - actor: str url: str @@ -121,6 +121,7 @@ def sms(self) -> OneLineTemplate: class CommentNotification(RenderNotification): """Render comment notifications for various document types.""" + document: Union[Commentset, Comment] comment: Comment aliases = {'fragment': 'comment'} emoji_prefix = "💬 " @@ -145,6 +146,20 @@ def commenters(self) -> List[User]: user_ids.add(comment.user.uuid) return users + @property + def project(self) -> Optional[Project]: + if self.document_type == 'project': + return self.document.project + if self.document_type == 'proposal': + return self.document.proposal.project + return None + + @property + def proposal(self) -> Optional[Proposal]: + if self.document_type == 'proposal': + return self.document.proposal + return None + @property def document_type(self) -> str: """Return type of document this comment is on ('comment' for replies).""" @@ -165,11 +180,11 @@ def activity_template_standalone(self, comment: Optional[Comment] = None) -> str if comment is None: comment = self.comment if self.document_type == 'comment': - return _("{actor} replied to your comment") + return _("{actor} replied to your comment in {project}") if self.document_type == 'project': - return _("{actor} commented on a project you are in") + return _("{actor} commented in {project}") if self.document_type == 'proposal': - return _("{actor} commented on your submission") + return _("{actor} commented on {proposal}") # Unknown document type return _("{actor} replied to you") @@ -178,11 +193,11 @@ def activity_template_inline(self, comment: Optional[Comment] = None) -> str: if comment is None: comment = self.comment if self.document_type == 'comment': - return _("{actor} replied to your comment:") + return _("{actor} replied to your comment in {project}:") if self.document_type == 'project': - return _("{actor} commented on a project you are in:") + return _("{actor} commented in {project}:") if self.document_type == 'proposal': - return _("{actor} commented on your submission:") + return _("{actor} commented on {proposal}:") # Unknown document type return _("{actor} replied to you:") @@ -190,13 +205,38 @@ def activity_html(self, comment: Optional[Comment] = None) -> str: """Activity template rendered into HTML, for use in web and email templates.""" if comment is None: comment = self.comment - return Markup(self.activity_template_inline(comment)).format( - actor=Markup( + + actor_markup = ( + Markup( f'' f'{escape(self.actor.pickername)}' ) if self.actor.profile_url - else escape(self.actor.pickername), + else escape(self.actor.pickername) + ) + project = self.project + project_markup = ( + Markup( + f'' + f'{escape(project.joined_title)}' + ) + if project is not None + else Markup('') + ) + proposal = self.proposal + proposal_markup = ( + Markup( + f'' + f'{escape(proposal.title)}' + ) + if proposal is not None + else Markup('') + ) + + return Markup(self.activity_template_inline(comment)).format( + actor=actor_markup, + project=project_markup, + proposal=proposal_markup, ) def web(self) -> str: @@ -207,8 +247,12 @@ def web(self) -> str: ) def email_subject(self) -> str: + project = self.project + proposal = self.proposal return self.emoji_prefix + self.activity_template_standalone().format( - actor=self.actor.pickername + actor=self.actor.pickername, + project=project.joined_title if project else '', + proposal=proposal.title if proposal else '', ) def email_content(self) -> str: From 1a3009a20a4de44945f8f8ac7ec033faedb33cab Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Thu, 27 Jul 2023 15:27:31 +0530 Subject: [PATCH 214/281] Flask CLI command to compare an environment file with sample.env (#1822) --- funnel/cli/misc.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/funnel/cli/misc.py b/funnel/cli/misc.py index d5f924bf8..1a277e55a 100644 --- a/funnel/cli/misc.py +++ b/funnel/cli/misc.py @@ -2,9 +2,11 @@ from __future__ import annotations +from pathlib import Path from typing import Any, Dict import click +from dotenv import dotenv_values from baseframe import baseframe_translations @@ -45,3 +47,13 @@ def dbcreate() -> None: def baseframe_translations_path() -> None: """Show path to Baseframe translations.""" click.echo(list(baseframe_translations.translation_directories)[0]) + + +@app.cli.command('checkenv') +@click.argument('file', type=click.Path(exists=True, path_type=Path), default='.env') +def check_env(file: Path) -> None: + """Compare environment file with sample.env and lists variables that do not exist.""" + env = dotenv_values(file) + for var in dotenv_values('sample.env'): + if var not in env: + click.echo(var + ' does not exist') From 8fc7f4395a578273daf4395505ad9667793ebae7 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Fri, 28 Jul 2023 10:58:58 +0530 Subject: [PATCH 215/281] Enable badge scan checkin (#1827) * Enable badge scan checkin * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- funnel/views/ticket_participant.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/funnel/views/ticket_participant.py b/funnel/views/ticket_participant.py index 316530405..4047e476a 100644 --- a/funnel/views/ticket_participant.py +++ b/funnel/views/ticket_participant.py @@ -4,7 +4,7 @@ from typing import Optional -from flask import abort, flash, request, url_for +from flask import flash, request, url_for from sqlalchemy.exc import IntegrityError from baseframe import _, forms @@ -316,7 +316,7 @@ def label_badges(self) -> ReturnRenderWith: TicketEventParticipantView.init_app(app) -# FIXME: make this endpoint use uuid_b58 instead of puk, along with badge generation +# TODO: make this endpoint use uuid_b58 instead of puk, along with badge generation @route('///event//ticket_participant/') class TicketEventParticipantCheckinView(ClassView): __decorators__ = [requires_login] @@ -325,8 +325,6 @@ class TicketEventParticipantCheckinView(ClassView): def checkin_puk( self, profile: str, project: str, event: str, puk: str ) -> ReturnView: - abort(403) - checked_in = getbool( # type: ignore[unreachable] request.form.get('checkin', 't') ) From 51cd0f0e77af59421ab1e8dc9add5fc9eefdaf2d Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Fri, 28 Jul 2023 11:09:50 +0530 Subject: [PATCH 216/281] Add djlint to dev requirements, upgrade all (#1826) --- .pre-commit-config.yaml | 2 +- requirements/base.in | 1 + requirements/base.py37.txt | 16 +++++++++------- requirements/base.txt | 17 +++++++---------- requirements/dev.in | 1 + requirements/dev.py37.txt | 8 +++++--- requirements/dev.txt | 28 ++++++++++++++++++++++++---- requirements/test.py37.txt | 4 ++-- requirements/test.txt | 4 ++-- 9 files changed, 52 insertions(+), 29 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fa58e1c1d..5727b00f5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -23,7 +23,7 @@ repos: - id: pip-compile-multi-verify files: ^requirements/.*\.(in|txt)$ - repo: https://github.com/pypa/pip-audit - rev: v2.6.0 + rev: v2.6.1 hooks: - id: pip-audit args: [ diff --git a/requirements/base.in b/requirements/base.in index 792641774..0babaaf55 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -52,6 +52,7 @@ python-telegram-bot pytz PyVimeo qrcode +regex>=2023.6.3;python_version=="3.7" requests rich rq diff --git a/requirements/base.py37.txt b/requirements/base.py37.txt index 19e5db7ad..a2ccd12aa 100644 --- a/requirements/base.py37.txt +++ b/requirements/base.py37.txt @@ -1,4 +1,4 @@ -# SHA1:5413ec7fabb7788a7e93e2cc0ed7b97ce62aa936 +# SHA1:72c75846e0a5508515bb8bd11a5b6b2363a1d3be # # This file is autogenerated by pip-compile-multi # To update, run: @@ -68,9 +68,9 @@ blinker==1.6.2 # -r requirements/base.in # baseframe # coaster -boto3==1.28.9 +boto3==1.28.12 # via -r requirements/base.in -botocore==1.31.9 +botocore==1.31.12 # via # boto3 # s3transfer @@ -119,7 +119,7 @@ dnspython==2.3.0 # baseframe # mxsniff # pyisemail -emoji==2.6.0 +emoji==2.7.0 # via baseframe exceptiongroup==1.1.2 # via anyio @@ -274,7 +274,7 @@ lxml==4.9.3 # via premailer mako==1.2.4 # via alembic -markdown==3.4.3 +markdown==3.4.4 # via # coaster # flask-flatpages @@ -410,8 +410,10 @@ redis==4.6.0 # rq-dashboard redis-sentinel-url==1.0.1 # via rq-dashboard -regex==2023.6.3 - # via nltk +regex==2023.6.3 ; python_version == "3.7" + # via + # -r requirements/base.in + # nltk requests==2.31.0 # via # -r requirements/base.in diff --git a/requirements/base.txt b/requirements/base.txt index 0d02d955b..f853bcc69 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:5413ec7fabb7788a7e93e2cc0ed7b97ce62aa936 +# SHA1:72c75846e0a5508515bb8bd11a5b6b2363a1d3be # # This file is autogenerated by pip-compile-multi # To update, run: @@ -63,9 +63,9 @@ blinker==1.6.2 # baseframe # coaster # flask -boto3==1.28.9 +boto3==1.28.12 # via -r requirements/base.in -botocore==1.31.9 +botocore==1.31.12 # via # boto3 # s3transfer @@ -109,12 +109,12 @@ cssutils==2.7.1 # via premailer dataclasses-json==0.5.13 # via -r requirements/base.in -dnspython==2.4.0 +dnspython==2.4.1 # via # baseframe # mxsniff # pyisemail -emoji==2.6.0 +emoji==2.7.0 # via baseframe exceptiongroup==1.1.2 # via anyio @@ -205,9 +205,7 @@ html5lib==1.1 # baseframe # coaster httpcore==0.17.3 - # via - # dnspython - # httpx + # via httpx httplib2==0.22.0 # via # oauth2 @@ -258,7 +256,7 @@ lxml==4.9.3 # via premailer mako==1.2.4 # via alembic -markdown==3.4.3 +markdown==3.4.4 # via # coaster # flask-flatpages @@ -450,7 +448,6 @@ six==1.16.0 sniffio==1.3.0 # via # anyio - # dnspython # httpcore # httpx sqlalchemy==2.0.19 diff --git a/requirements/dev.in b/requirements/dev.in index 90870123e..eb529bd96 100644 --- a/requirements/dev.in +++ b/requirements/dev.in @@ -1,6 +1,7 @@ -r test.in bandit black +djlint flake8 flake8-annotations flake8-assertive diff --git a/requirements/dev.py37.txt b/requirements/dev.py37.txt index 79b9a6e5f..a8026623e 100644 --- a/requirements/dev.py37.txt +++ b/requirements/dev.py37.txt @@ -1,4 +1,4 @@ -# SHA1:8d67d5bb6492c975276e27d9da9f9b0a0f5b7d77 +# SHA1:b7eb14c29369180f5bff0c1128d4b718c90123de # # This file is autogenerated by pip-compile-multi # To update, run: @@ -28,6 +28,8 @@ dill==0.3.7 # via pylint distlib==0.3.7 # via virtualenv +djlint==0.3.4 + # via -r requirements/dev.in flake8==3.9.2 # via # -r requirements/dev.in @@ -123,7 +125,7 @@ pydocstyle==6.1.1 # via flake8-docstrings pyflakes==2.3.1 # via flake8 -pylint==2.17.4 +pylint==2.17.5 # via -r requirements/dev.in pyproject-hooks==1.0.0 # via build @@ -171,7 +173,7 @@ types-requests==2.31.0.2 # via -r requirements/dev.in types-urllib3==1.26.25.14 # via types-requests -virtualenv==20.24.1 +virtualenv==20.24.2 # via pre-commit wcwidth==0.2.6 # via reformat-gherkin diff --git a/requirements/dev.txt b/requirements/dev.txt index 1e2e66914..17fbe3ee3 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,4 +1,4 @@ -# SHA1:8d67d5bb6492c975276e27d9da9f9b0a0f5b7d77 +# SHA1:b7eb14c29369180f5bff0c1128d4b718c90123de # # This file is autogenerated by pip-compile-multi # To update, run: @@ -24,10 +24,18 @@ cattrs==22.1.0 # via reformat-gherkin cfgv==3.3.1 # via pre-commit +cssbeautifier==1.14.9 + # via djlint dill==0.3.7 # via pylint distlib==0.3.7 # via virtualenv +djlint==1.32.1 + # via -r requirements/dev.in +editorconfig==0.12.3 + # via + # cssbeautifier + # jsbeautifier flake8==6.0.0 # via # -r requirements/dev.in @@ -75,6 +83,10 @@ gitdb==4.0.10 # via gitpython gitpython==3.1.32 # via bandit +html-tag-names==0.1.2 + # via djlint +html-void-elements==0.1.0 + # via djlint identify==2.5.26 # via pre-commit isort==5.12.0 @@ -82,6 +94,12 @@ isort==5.12.0 # -r requirements/dev.in # flake8-isort # pylint +jsbeautifier==1.14.9 + # via + # cssbeautifier + # djlint +json5==0.9.14 + # via djlint lazy-object-proxy==1.9.0 # via astroid lxml-stubs==0.4.0 @@ -97,7 +115,9 @@ mypy-json-report==1.0.4 nodeenv==1.8.0 # via pre-commit pathspec==0.11.1 - # via black + # via + # black + # djlint pbr==5.11.1 # via stevedore pep8-naming==0.13.3 @@ -123,7 +143,7 @@ pydocstyle==6.3.0 # via flake8-docstrings pyflakes==3.0.1 # via flake8 -pylint==2.17.4 +pylint==2.17.5 # via -r requirements/dev.in pyproject-hooks==1.0.0 # via build @@ -165,7 +185,7 @@ types-requests==2.31.0.2 # via -r requirements/dev.in types-urllib3==1.26.25.14 # via types-requests -virtualenv==20.24.1 +virtualenv==20.24.2 # via pre-commit wcwidth==0.2.6 # via reformat-gherkin diff --git a/requirements/test.py37.txt b/requirements/test.py37.txt index 44308ea2f..4bd1ee7bf 100644 --- a/requirements/test.py37.txt +++ b/requirements/test.py37.txt @@ -100,7 +100,7 @@ tomli==2.0.1 # via # coverage # pytest -tomlkit==0.11.8 +tomlkit==0.12.1 # via -r requirements/test.in trio==0.22.2 # via @@ -108,7 +108,7 @@ trio==0.22.2 # trio-websocket trio-websocket==0.10.3 # via selenium -typeguard==4.0.0 +typeguard==4.0.1 # via -r requirements/test.in wsproto==1.2.0 # via trio-websocket diff --git a/requirements/test.txt b/requirements/test.txt index 5a108e6a8..21adbef8d 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -98,7 +98,7 @@ tomli==2.0.1 # via # coverage # pytest -tomlkit==0.11.8 +tomlkit==0.12.1 # via -r requirements/test.in trio==0.22.2 # via @@ -106,7 +106,7 @@ trio==0.22.2 # trio-websocket trio-websocket==0.10.3 # via selenium -typeguard==4.0.0 +typeguard==4.0.1 # via -r requirements/test.in wsproto==1.2.0 # via trio-websocket From 699dfdd39d53f35c798667cb7e7188ac5237b94a Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Fri, 28 Jul 2023 12:00:12 +0530 Subject: [PATCH 217/281] Fix project starting email template (#1828) --- .../notifications/project_starting_email.html.jinja2 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/funnel/templates/notifications/project_starting_email.html.jinja2 b/funnel/templates/notifications/project_starting_email.html.jinja2 index 8d4b32297..0d3bb507d 100644 --- a/funnel/templates/notifications/project_starting_email.html.jinja2 +++ b/funnel/templates/notifications/project_starting_email.html.jinja2 @@ -15,8 +15,4 @@ {{ pinned_update(view, view.project) }} - {# Email body footer : BEGIN #} - {{ rsvp_footer(view, gettext("Cancel registration")) }} - {# Email body footer : END #} - {%- endblock content -%} From cf2266c5f0181f12fc1a5f1a17604a7b7a653890 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Fri, 28 Jul 2023 12:30:57 +0530 Subject: [PATCH 218/281] Hardened .gitattibutes (#1825) * Hardened .gitattributes * Normalize all the line endings * Specify .gif and .webp as binary files in .gitattributes * .env and .env.* files are never checked in - removed them from .gitattributes --- .gitattributes | 39 +- funnel/static/img/community.svg | 1470 ++++++++++++++-------------- funnel/static/img/conversation.svg | 814 +++++++-------- funnel/static/img/error-403.svg | 108 +- funnel/static/img/error-404.svg | 68 +- funnel/static/img/error-405.svg | 100 +- funnel/static/img/error-410.svg | 128 +-- funnel/static/img/error-429.svg | 102 +- funnel/static/img/error-500.svg | 118 +-- funnel/static/img/error-503.svg | 128 +-- funnel/static/img/hg-logo.svg | 40 +- funnel/static/img/peers.svg | 942 +++++++++--------- 12 files changed, 2046 insertions(+), 2011 deletions(-) diff --git a/.gitattributes b/.gitattributes index ef4d50569..dc177a25e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,7 +1,42 @@ * text=auto eol=lf -*.py text eol=lf +*.gif binary +*.ico binary +*.jpg binary +*.mo binary +*.png binary +*.webp binary + +.coveragerc text eol=lf +.dockerignore text eol=lf +.flaskenv text eol=lf +.gitattributes text eol=lf +.gitignore text eol=lf +Dockerfile text eol=lf +HOSTALIASES text eol=lf +Makefile text eol=lf +*.cfg text eol=lf +*.css text eol=lf +*.Dockerfile text eol=lf +*.env text eol=lf +*.feature text eol=lf +*.html text eol=lf +*.in text eol=lf +*.ini text eol=lf +*.jinja2 text eol=lf *.js text eol=lf +*.json text eol=lf +*.md text eol=lf +*.po text eol=lf +*.pot text eol=lf +*.py text eol=lf +*.rb text eol=lf +*.rst text eol=lf +*.sample text eol=lf *.scss text eol=lf -*.jinja2 text eol=lf +*.sh text eol=lf +*.svg text eol=lf *.toml text eol=lf +*.txt text eol=lf +*.yaml text eol=lf +*.yml text eol=lf diff --git a/funnel/static/img/community.svg b/funnel/static/img/community.svg index b67e7d263..85f607dfb 100644 --- a/funnel/static/img/community.svg +++ b/funnel/static/img/community.svg @@ -1,735 +1,735 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/funnel/static/img/conversation.svg b/funnel/static/img/conversation.svg index 94e68bcf0..9a6d3dfb1 100644 --- a/funnel/static/img/conversation.svg +++ b/funnel/static/img/conversation.svg @@ -1,407 +1,407 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/funnel/static/img/error-403.svg b/funnel/static/img/error-403.svg index 5c40616ee..29e358f31 100644 --- a/funnel/static/img/error-403.svg +++ b/funnel/static/img/error-403.svg @@ -1,54 +1,54 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/funnel/static/img/error-404.svg b/funnel/static/img/error-404.svg index dde135437..d13270749 100644 --- a/funnel/static/img/error-404.svg +++ b/funnel/static/img/error-404.svg @@ -1,34 +1,34 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/funnel/static/img/error-405.svg b/funnel/static/img/error-405.svg index b80b54223..de45021b8 100644 --- a/funnel/static/img/error-405.svg +++ b/funnel/static/img/error-405.svg @@ -1,50 +1,50 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/funnel/static/img/error-410.svg b/funnel/static/img/error-410.svg index f87b1baab..8ca096ff9 100644 --- a/funnel/static/img/error-410.svg +++ b/funnel/static/img/error-410.svg @@ -1,64 +1,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/funnel/static/img/error-429.svg b/funnel/static/img/error-429.svg index 14ba16f41..1bd2e69dd 100644 --- a/funnel/static/img/error-429.svg +++ b/funnel/static/img/error-429.svg @@ -1,51 +1,51 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/funnel/static/img/error-500.svg b/funnel/static/img/error-500.svg index 169a4b98f..28e3fec4e 100644 --- a/funnel/static/img/error-500.svg +++ b/funnel/static/img/error-500.svg @@ -1,59 +1,59 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/funnel/static/img/error-503.svg b/funnel/static/img/error-503.svg index a36f9d1ba..4574be413 100644 --- a/funnel/static/img/error-503.svg +++ b/funnel/static/img/error-503.svg @@ -1,64 +1,64 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/funnel/static/img/hg-logo.svg b/funnel/static/img/hg-logo.svg index bce5da0fe..12122af3e 100644 --- a/funnel/static/img/hg-logo.svg +++ b/funnel/static/img/hg-logo.svg @@ -1,20 +1,20 @@ - - - - - + + + + + diff --git a/funnel/static/img/peers.svg b/funnel/static/img/peers.svg index 2e439e976..a1751c3fd 100644 --- a/funnel/static/img/peers.svg +++ b/funnel/static/img/peers.svg @@ -1,471 +1,471 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 5089bfdaa29142cf981428e4d57a9b8123a247e4 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Fri, 28 Jul 2023 12:38:55 +0530 Subject: [PATCH 219/281] Faster (and fixed!) query for follower role (#1830) --- funnel/models/profile.py | 7 +++---- funnel/models/project.py | 19 +++++++------------ funnel/models/rsvp.py | 18 +++++++++++++++++- funnel/models/sync_ticket.py | 17 +++++++++++++++++ funnel/models/update.py | 8 ++++++-- 5 files changed, 50 insertions(+), 19 deletions(-) diff --git a/funnel/models/profile.py b/funnel/models/profile.py index b56217bb5..c8f832f78 100644 --- a/funnel/models/profile.py +++ b/funnel/models/profile.py @@ -307,6 +307,8 @@ def owner(self, value: Union[User, Organization]) -> None: raise ValueError(value) self.reserved = False + with_roles(owner, grants_via={None: {'owner', 'admin'}}) + @hybrid_property def is_user_profile(self) -> bool: """Test if this is a user account.""" @@ -392,10 +394,7 @@ def roles_for( self, actor: Optional[User] = None, anchors: Sequence = () ) -> LazyRoleSet: """Identify roles for the given actor.""" - if self.owner: - roles = self.owner.roles_for(actor, anchors) - else: - roles = super().roles_for(actor, anchors) + roles = super().roles_for(actor, anchors) if self.state.PUBLIC: roles.add('reader') return roles diff --git a/funnel/models/project.py b/funnel/models/project.py index 153e34627..617e8e4e5 100644 --- a/funnel/models/project.py +++ b/funnel/models/project.py @@ -771,19 +771,14 @@ def migrate_profile( # type: ignore[return] class __Profile: id: Mapped[int] # noqa: A003 - listed_projects: DynamicMapped[Project] = with_roles( - relationship( - Project, - lazy='dynamic', - primaryjoin=sa.and_( - Profile.id == Project.profile_id, - Project.state.PUBLISHED, - ), - viewonly=True, + listed_projects: DynamicMapped[Project] = relationship( + Project, + lazy='dynamic', + primaryjoin=sa.and_( + Profile.id == Project.profile_id, + Project.state.PUBLISHED, ), - # This grant of follower from Project participant is interim until Account gets - # it's own follower membership model - grants_via={None: {'participant': {'follower'}}}, + viewonly=True, ) draft_projects: DynamicMapped[Project] = relationship( Project, diff --git a/funnel/models/rsvp.py b/funnel/models/rsvp.py index 6f598e58a..79738e6b5 100644 --- a/funnel/models/rsvp.py +++ b/funnel/models/rsvp.py @@ -13,8 +13,9 @@ from coaster.utils import LabeledEnum from ..typing import OptionalMigratedTables -from . import Mapped, Model, NoIdMixin, UuidMixin, db, relationship, sa, types +from . import Mapped, Model, NoIdMixin, Query, UuidMixin, db, relationship, sa, types from .helpers import reopen +from .profile import Profile from .project import Project from .project_membership import project_child_role_map from .user import User, UserEmail, UserEmailClaim, UserPhone @@ -249,3 +250,18 @@ def rsvp_count_going(self) -> int: .filter(User.state.ACTIVE, Rsvp.state.YES) .count() ) + + +@reopen(Profile) +class __Profile: + @property + def rsvp_followers(self) -> Query[User]: + """All users with an active RSVP in a project.""" + return ( + User.query.filter(User.state.ACTIVE) + .join(Rsvp, Rsvp.user_id == User.id) + .join(Project, Rsvp.project_id == Project.id) + .filter(Rsvp.state.YES, Project.state.PUBLISHED, Project.profile == self) + ) + + with_roles(rsvp_followers, grants={'follower'}) diff --git a/funnel/models/sync_ticket.py b/funnel/models/sync_ticket.py index bf1ced27c..97976c902 100644 --- a/funnel/models/sync_ticket.py +++ b/funnel/models/sync_ticket.py @@ -14,6 +14,7 @@ DynamicMapped, Mapped, Model, + Query, UuidMixin, db, relationship, @@ -22,6 +23,7 @@ ) from .email_address import EmailAddress, EmailAddressMixin from .helpers import reopen +from .profile import Profile from .project import Project from .project_membership import project_child_role_map from .user import User, UserEmail @@ -597,6 +599,21 @@ class __Project: ) +@reopen(Profile) +class __Profile: + @property + def ticket_followers(self) -> Query[User]: + """All users with a ticket in a project.""" + return ( + User.query.filter(User.state.ACTIVE) + .join(TicketParticipant, TicketParticipant.user_id == User.id) + .join(Project, TicketParticipant.project_id == Project.id) + .filter(Project.state.PUBLISHED, Project.profile == self) + ) + + with_roles(ticket_followers, grants={'follower'}) + + # Tail imports to avoid cyclic dependency errors, for symbols used only in methods # pylint: disable=wrong-import-position from .contact_exchange import ContactExchange # isort:skip diff --git a/funnel/models/update.py b/funnel/models/update.py index ec2c8e153..578511c70 100644 --- a/funnel/models/update.py +++ b/funnel/models/update.py @@ -13,7 +13,6 @@ from . import ( BaseScopedIdNameMixin, Mapped, - MarkdownCompositeDocument, Model, Query, TimestampMixin, @@ -24,7 +23,12 @@ sa, ) from .comment import SET_TYPE, Commentset -from .helpers import add_search_trigger, reopen, visual_field_delimiter +from .helpers import ( + MarkdownCompositeDocument, + add_search_trigger, + reopen, + visual_field_delimiter, +) from .project import Project from .user import User From bc47b0c56d4b0d50b2331b0ac076af33dd06d656 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Fri, 28 Jul 2023 16:11:29 +0530 Subject: [PATCH 220/281] Reduce z-index of overlay of card (#1832) --- funnel/assets/sass/components/_card.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/funnel/assets/sass/components/_card.scss b/funnel/assets/sass/components/_card.scss index 63da0a41e..8a308a434 100644 --- a/funnel/assets/sass/components/_card.scss +++ b/funnel/assets/sass/components/_card.scss @@ -431,7 +431,7 @@ .card__image-wrapper--default:after { content: ''; position: absolute; - z-index: 2; + z-index: 1; top: 0; left: 0; background-color: $mui-primary-color; From 2c4876a7a3b6b1677897644c9987aede667abc84 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Mon, 31 Jul 2023 10:31:26 +0530 Subject: [PATCH 221/281] Set tel mode for username only in login form (#1831) * Set tel mode for username only in login form * Overlay had a higher z-index than anchor and hence click on the blank banner was not working --- funnel/assets/js/utils/form_widgets.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/funnel/assets/js/utils/form_widgets.js b/funnel/assets/js/utils/form_widgets.js index 240d2c452..cf2a54466 100644 --- a/funnel/assets/js/utils/form_widgets.js +++ b/funnel/assets/js/utils/form_widgets.js @@ -121,8 +121,8 @@ export async function activateFormWidgets() { } }); - // Change username field input mode to tel - if ($('#username').length > 0) { + // Change username field input mode to tel in login form + if ($('#loginformwrapper').length && $('#username').length) { $('#username').attr('inputmode', 'tel'); $('#username').attr('autocomplete', 'tel'); $('.js-keyboard-switcher[data-inputmode="tel"]').addClass('active'); From 136c499b45db7a53cd7d566eea3fb0f31468cf38 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Mon, 31 Jul 2023 20:22:28 +0530 Subject: [PATCH 222/281] Resize banner sizes (#1833) * Fix the profile banner size and missing resize of project banner * Image resize value --- funnel/templates/macros.html.jinja2 | 1 + funnel/templates/profile_layout.html.jinja2 | 2 +- funnel/templates/project_layout.html.jinja2 | 3 +-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/funnel/templates/macros.html.jinja2 b/funnel/templates/macros.html.jinja2 index 2dd45d8b1..64658285c 100644 --- a/funnel/templates/macros.html.jinja2 +++ b/funnel/templates/macros.html.jinja2 @@ -1,4 +1,5 @@ {%- set img_size = namespace() %} +{%- set img_size.profile_banner = 1200 %} {%- set img_size.spotlight_banner = 700 %} {%- set img_size.card_banner = 400 %} {%- set img_size.card_banner_small = 100 %} diff --git a/funnel/templates/profile_layout.html.jinja2 b/funnel/templates/profile_layout.html.jinja2 index 66a6de3e0..1b7e692ef 100644 --- a/funnel/templates/profile_layout.html.jinja2 +++ b/funnel/templates/profile_layout.html.jinja2 @@ -320,7 +320,7 @@
    {%- if profile.banner_image_url.url %} - {{ profile.title }} + {{ profile.title }} {% else %} {{ profile.title }} {% endif %} diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index 7ae34b1a8..fcadb2bd5 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -1,7 +1,6 @@ {% extends "layout.html.jinja2" %} {% set title_suffix = project.title %} {%- from "macros.html.jinja2" import faicon, csrf_tag, calendarwidget, saveprojectform, share_dropdown, useravatar, add_submission_btn, img_size %} -{%- set header_banner = 700 %} {% block title %}{{ project.title }}{% endblock title %} {% block description %}{{ project.tagline }}{% endblock description %} {% block twitter_card %}summary_large_image{% endblock twitter_card %} @@ -96,7 +95,7 @@

    {%- elif project.bg_image.url %} - {{ project.title }} + {{ project.title }} {%- else %} {{ project.title }} {% endif %} From 4df83bffc828a17adec3d707bec5e7dec428648d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 21:56:40 +0530 Subject: [PATCH 223/281] [pre-commit.ci] pre-commit autoupdate (#1834) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/asottile/pyupgrade: v3.9.0 → v3.10.1](https://github.com/asottile/pyupgrade/compare/v3.9.0...v3.10.1) - [github.com/PyCQA/flake8: 6.0.0 → 6.1.0](https://github.com/PyCQA/flake8/compare/6.0.0...6.1.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5727b00f5..c0eeb5569 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -65,7 +65,7 @@ repos: '--remove-duplicate-keys', ] - repo: https://github.com/asottile/pyupgrade - rev: v3.9.0 + rev: v3.10.1 hooks: - id: pyupgrade args: @@ -123,7 +123,7 @@ repos: # - types-requests # - typing-extensions - repo: https://github.com/PyCQA/flake8 - rev: 6.0.0 + rev: 6.1.0 hooks: - id: flake8 additional_dependencies: *flake8deps From bea2956e544db6d39c5066417ad205c39acbea27 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Tue, 1 Aug 2023 20:36:52 +0530 Subject: [PATCH 224/281] Fix tests that are breaking with config in `.env` (#1836) * Fix tests that are breaking with config in .env Also upgrade dependencies. * Note on why merge_users always prefers the old account --- .pre-commit-config.yaml | 2 +- funnel/models/utils.py | 4 +++- requirements/base.py37.txt | 12 ++++++------ requirements/base.txt | 12 ++++++------ requirements/dev.py37.txt | 6 +++--- requirements/dev.txt | 16 ++++++++-------- requirements/test.py37.txt | 2 +- requirements/test.txt | 2 +- tests/unit/transports/sms_send_test.py | 11 ++++------- tests/unit/transports/sms_template_test.py | 2 ++ 10 files changed, 35 insertions(+), 34 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c0eeb5569..f221d660b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -47,7 +47,7 @@ repos: ] files: ^requirements/.*\.txt$ - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.280 + rev: v0.0.281 hooks: - id: ruff args: ['--fix', '--exit-non-zero-on-fix'] diff --git a/funnel/models/utils.py b/funnel/models/utils.py index 47c4c9242..7ab1bb15f 100644 --- a/funnel/models/utils.py +++ b/funnel/models/utils.py @@ -129,7 +129,9 @@ def getextid(service: str, userid: str) -> Optional[UserExternalId]: def merge_users(user1: User, user2: User) -> Optional[User]: """Merge two user accounts and return the new user account.""" app.logger.info("Preparing to merge users %s and %s", user1, user2) - # Always keep the older account and merge from the newer account + # Always keep the older account and merge from the newer account. This keeps the + # UUID stable when there are multiple mergers as new accounts are easy to create, + # but old accounts cannot be created. if user1.created_at < user2.created_at: keep_user, merge_user = user1, user2 else: diff --git a/requirements/base.py37.txt b/requirements/base.py37.txt index a2ccd12aa..248694728 100644 --- a/requirements/base.py37.txt +++ b/requirements/base.py37.txt @@ -68,9 +68,9 @@ blinker==1.6.2 # -r requirements/base.in # baseframe # coaster -boto3==1.28.12 +boto3==1.28.16 # via -r requirements/base.in -botocore==1.31.12 +botocore==1.31.16 # via # boto3 # s3transfer @@ -112,7 +112,7 @@ cssselect==1.2.0 # via premailer cssutils==2.7.1 # via premailer -dataclasses-json==0.5.13 +dataclasses-json==0.5.14 # via -r requirements/base.in dnspython==2.3.0 # via @@ -362,7 +362,7 @@ pyjwt==2.8.0 # via twilio pymdown-extensions==10.1 # via coaster -pyparsing==3.1.0 +pyparsing==3.1.1 # via httplib2 pypng==0.20220715.0 # via qrcode @@ -431,7 +431,7 @@ requests-file==1.5.1 # via tldextract requests-oauthlib==1.3.1 # via tweepy -rich==13.4.2 +rich==13.5.1 # via -r requirements/base.in rq==1.15.1 # via @@ -452,7 +452,7 @@ semantic-version==2.10.0 # via # baseframe # coaster -sentry-sdk==1.28.1 +sentry-sdk==1.29.0 # via baseframe six==1.16.0 # via diff --git a/requirements/base.txt b/requirements/base.txt index f853bcc69..49bfe07a2 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -63,9 +63,9 @@ blinker==1.6.2 # baseframe # coaster # flask -boto3==1.28.12 +boto3==1.28.16 # via -r requirements/base.in -botocore==1.31.12 +botocore==1.31.16 # via # boto3 # s3transfer @@ -107,7 +107,7 @@ cssselect==1.2.0 # via premailer cssutils==2.7.1 # via premailer -dataclasses-json==0.5.13 +dataclasses-json==0.5.14 # via -r requirements/base.in dnspython==2.4.1 # via @@ -344,7 +344,7 @@ pyjwt==2.8.0 # via twilio pymdown-extensions==10.1 # via coaster -pyparsing==3.1.0 +pyparsing==3.1.1 # via httplib2 pypng==0.20220715.0 # via qrcode @@ -410,7 +410,7 @@ requests-file==1.5.1 # via tldextract requests-oauthlib==1.3.1 # via tweepy -rich==13.4.2 +rich==13.5.1 # via -r requirements/base.in rq==1.15.1 # via @@ -431,7 +431,7 @@ semantic-version==2.10.0 # via # baseframe # coaster -sentry-sdk==1.28.1 +sentry-sdk==1.29.0 # via baseframe six==1.16.0 # via diff --git a/requirements/dev.py37.txt b/requirements/dev.py37.txt index a8026623e..a8010a6d0 100644 --- a/requirements/dev.py37.txt +++ b/requirements/dev.py37.txt @@ -98,7 +98,7 @@ mypy-json-report==1.0.4 # via -r requirements/dev.in nodeenv==1.8.0 # via pre-commit -pathspec==0.11.1 +pathspec==0.11.2 # via black pbr==5.11.1 # via stevedore @@ -108,7 +108,7 @@ pip-compile-multi==2.6.3 # via -r requirements/dev.in pip-tools==6.14.0 # via pip-compile-multi -platformdirs==3.9.1 +platformdirs==3.10.0 # via # black # pylint @@ -133,7 +133,7 @@ pyupgrade==3.3.2 # via -r requirements/dev.in reformat-gherkin==3.0.1 # via -r requirements/dev.in -ruff==0.0.280 +ruff==0.0.281 # via -r requirements/dev.in smmap==5.0.0 # via gitdb diff --git a/requirements/dev.txt b/requirements/dev.txt index 17fbe3ee3..46f146cad 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -36,7 +36,7 @@ editorconfig==0.12.3 # via # cssbeautifier # jsbeautifier -flake8==6.0.0 +flake8==6.1.0 # via # -r requirements/dev.in # flake8-annotations @@ -114,7 +114,7 @@ mypy-json-report==1.0.4 # via -r requirements/dev.in nodeenv==1.8.0 # via pre-commit -pathspec==0.11.1 +pathspec==0.11.2 # via # black # djlint @@ -126,7 +126,7 @@ pip-compile-multi==2.6.3 # via -r requirements/dev.in pip-tools==7.1.0 # via pip-compile-multi -platformdirs==3.9.1 +platformdirs==3.10.0 # via # black # pylint @@ -135,23 +135,23 @@ po2json==0.2.2 # via -r requirements/dev.in pre-commit==3.3.3 # via -r requirements/dev.in -pycodestyle==2.10.0 +pycodestyle==2.11.0 # via # flake8 # flake8-print pydocstyle==6.3.0 # via flake8-docstrings -pyflakes==3.0.1 +pyflakes==3.1.0 # via flake8 pylint==2.17.5 # via -r requirements/dev.in pyproject-hooks==1.0.0 # via build -pyupgrade==3.9.0 +pyupgrade==3.10.1 # via -r requirements/dev.in reformat-gherkin==3.0.1 # via -r requirements/dev.in -ruff==0.0.280 +ruff==0.0.281 # via -r requirements/dev.in smmap==5.0.0 # via gitdb @@ -159,7 +159,7 @@ snowballstemmer==2.2.0 # via pydocstyle stevedore==5.1.0 # via bandit -tokenize-rt==5.1.0 +tokenize-rt==5.2.0 # via pyupgrade toposort==1.10 # via pip-compile-multi diff --git a/requirements/test.py37.txt b/requirements/test.py37.txt index 4bd1ee7bf..a20599423 100644 --- a/requirements/test.py37.txt +++ b/requirements/test.py37.txt @@ -108,7 +108,7 @@ trio==0.22.2 # trio-websocket trio-websocket==0.10.3 # via selenium -typeguard==4.0.1 +typeguard==4.1.0 # via -r requirements/test.in wsproto==1.2.0 # via trio-websocket diff --git a/requirements/test.txt b/requirements/test.txt index 21adbef8d..d8838b696 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -106,7 +106,7 @@ trio==0.22.2 # trio-websocket trio-websocket==0.10.3 # via selenium -typeguard==4.0.1 +typeguard==4.1.0 # via -r requirements/test.in wsproto==1.2.0 # via trio-websocket diff --git a/tests/unit/transports/sms_send_test.py b/tests/unit/transports/sms_send_test.py index 0e52dd3be..cee2ba2d8 100644 --- a/tests/unit/transports/sms_send_test.py +++ b/tests/unit/transports/sms_send_test.py @@ -8,7 +8,7 @@ from funnel.transports import TransportConnectionError, TransportRecipientError from funnel.transports.sms import ( - OneLineTemplate, + WebOtpTemplate, make_exotel_token, send, validate_exotel_token, @@ -27,11 +27,7 @@ EXOTEL_CALLBACK_TO = "09999999999" # Dummy Message -MESSAGE = OneLineTemplate( - text1="Test Message", - url='https://example.com/', - unsubscribe_url='https://unsubscribe.example/', -) +MESSAGE = WebOtpTemplate(otp="1234") @pytest.mark.enable_socket() @@ -92,7 +88,8 @@ def test_exotel_nonce(client) -> None: @pytest.mark.requires_config('app', 'exotel') -@pytest.mark.usefixtures('app_context') +@pytest.mark.usefixtures('app_context', 'db_session') +@patch.object(WebOtpTemplate, 'registered_templateid', 'test') def test_exotel_send_error() -> None: """Only tests if url_for works and usually fails otherwise, which is OK.""" # Check False Path via monkey patching the requests object diff --git a/tests/unit/transports/sms_template_test.py b/tests/unit/transports/sms_template_test.py index d15d45bd7..518ae7119 100644 --- a/tests/unit/transports/sms_template_test.py +++ b/tests/unit/transports/sms_template_test.py @@ -2,6 +2,7 @@ # pylint: disable=possibly-unused-variable,redefined-outer-name from types import SimpleNamespace +from unittest.mock import patch import pytest from flask import Flask @@ -199,6 +200,7 @@ class MySubMessage(msgt.MyMessage): # type: ignore[name-defined] assert MySubMessage.registered_templateid == 'qwerty' +@patch.object(sms.SmsTemplate, 'registered_entityid', None) def test_init_app(app: Flask, msgt: SimpleNamespace) -> None: assert sms.SmsTemplate.registered_entityid is None assert msgt.MyMessage.registered_entityid is None From ec622438e1a7028f3f2208123ee709b626633650 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Wed, 2 Aug 2023 13:03:59 +0530 Subject: [PATCH 225/281] Add new pre-commit checks for CRLF and tab characters (#1837) --- .pre-commit-config.yaml | 9 +- funnel/static/img/community.svg | 1454 +++++++++++++-------------- funnel/static/img/conversation.svg | 802 +++++++-------- funnel/static/img/error-403.svg | 94 +- funnel/static/img/error-404.svg | 54 +- funnel/static/img/error-405.svg | 86 +- funnel/static/img/error-410.svg | 114 +-- funnel/static/img/error-429.svg | 88 +- funnel/static/img/error-500.svg | 104 +- funnel/static/img/error-503.svg | 114 +-- funnel/static/img/hg-logo.svg | 30 +- funnel/static/img/peers.svg | 930 ++++++++--------- funnel/templates/delete.html.jinja2 | 20 +- requirements/base.py37.txt | 2 +- requirements/base.txt | 2 +- 15 files changed, 1955 insertions(+), 1948 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f221d660b..0c1c97a74 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -47,7 +47,7 @@ repos: ] files: ^requirements/.*\.txt$ - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.281 + rev: v0.0.282 hooks: - id: ruff args: ['--fix', '--exit-non-zero-on-fix'] @@ -181,6 +181,13 @@ repos: files: requirements/.*\.in - id: trailing-whitespace args: ['--markdown-linebreak-ext=md'] + - repo: https://github.com/Lucas-C/pre-commit-hooks + rev: v1.5.1 + hooks: + - id: forbid-crlf + - id: remove-crlf + - id: forbid-tabs + - id: remove-tabs - repo: https://github.com/pre-commit/mirrors-prettier rev: v3.0.0 hooks: diff --git a/funnel/static/img/community.svg b/funnel/static/img/community.svg index 85f607dfb..200ea9639 100644 --- a/funnel/static/img/community.svg +++ b/funnel/static/img/community.svg @@ -1,735 +1,735 @@ + width="376px" height="300.706px" viewBox="0 0 376 300.706" enable-background="new 0 0 376 300.706" xml:space="preserve"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/funnel/static/img/conversation.svg b/funnel/static/img/conversation.svg index 9a6d3dfb1..43013ae36 100644 --- a/funnel/static/img/conversation.svg +++ b/funnel/static/img/conversation.svg @@ -1,407 +1,407 @@ + width="502px" height="264px" viewBox="0 0 502 264" enable-background="new 0 0 502 264" xml:space="preserve"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/funnel/static/img/error-403.svg b/funnel/static/img/error-403.svg index 29e358f31..1252a2a11 100644 --- a/funnel/static/img/error-403.svg +++ b/funnel/static/img/error-403.svg @@ -1,54 +1,54 @@ + width="700px" height="600px" viewBox="0 0 700 600" style="enable-background:new 0 0 700 600;" xml:space="preserve"> - - - - - - - - + + + + + + + + diff --git a/funnel/static/img/error-404.svg b/funnel/static/img/error-404.svg index d13270749..3257fcbf2 100644 --- a/funnel/static/img/error-404.svg +++ b/funnel/static/img/error-404.svg @@ -1,34 +1,34 @@ + width="700px" height="600px" viewBox="0 0 700 600" style="enable-background:new 0 0 700 600;" xml:space="preserve"> - - - - - + + + + + diff --git a/funnel/static/img/error-405.svg b/funnel/static/img/error-405.svg index de45021b8..444357efb 100644 --- a/funnel/static/img/error-405.svg +++ b/funnel/static/img/error-405.svg @@ -1,50 +1,50 @@ + width="700px" height="600px" viewBox="0 0 700 600" style="enable-background:new 0 0 700 600;" xml:space="preserve"> - - - - - + + + + + diff --git a/funnel/static/img/error-410.svg b/funnel/static/img/error-410.svg index 8ca096ff9..b20524f41 100644 --- a/funnel/static/img/error-410.svg +++ b/funnel/static/img/error-410.svg @@ -1,64 +1,64 @@ + width="700px" height="600px" viewBox="0 0 700 600" style="enable-background:new 0 0 700 600;" xml:space="preserve"> - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/funnel/static/img/error-429.svg b/funnel/static/img/error-429.svg index 1bd2e69dd..0bdcc28a6 100644 --- a/funnel/static/img/error-429.svg +++ b/funnel/static/img/error-429.svg @@ -1,51 +1,51 @@ + width="700px" height="600px" viewBox="0 0 700 600" style="enable-background:new 0 0 700 600;" xml:space="preserve"> - - - - - + + + + + diff --git a/funnel/static/img/error-500.svg b/funnel/static/img/error-500.svg index 28e3fec4e..4b5517701 100644 --- a/funnel/static/img/error-500.svg +++ b/funnel/static/img/error-500.svg @@ -1,59 +1,59 @@ + width="700px" height="600px" viewBox="0 0 700 600" style="enable-background:new 0 0 700 600;" xml:space="preserve"> - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/funnel/static/img/error-503.svg b/funnel/static/img/error-503.svg index 4574be413..f079bb51a 100644 --- a/funnel/static/img/error-503.svg +++ b/funnel/static/img/error-503.svg @@ -1,64 +1,64 @@ + width="700px" height="600px" viewBox="0 0 700 600" style="enable-background:new 0 0 700 600;" xml:space="preserve"> - - - - - + + + + + diff --git a/funnel/static/img/hg-logo.svg b/funnel/static/img/hg-logo.svg index 12122af3e..2ecbc896e 100644 --- a/funnel/static/img/hg-logo.svg +++ b/funnel/static/img/hg-logo.svg @@ -1,20 +1,20 @@ + width="40px" height="30px" viewBox="0 0 40 30" enable-background="new 0 0 40 30" xml:space="preserve"> + c-0.099,0.121-0.262,0.171-0.41,0.12l-0.016-0.006c-0.077-0.027-0.13-0.098-0.133-0.18c-0.119-3.026-0.467-6.13-0.929-9.155 + c-0.162-1.061-1.005-1.887-2.07-2.024C28.673,0.325,26.073,0.105,23.477,0c-0.421-0.017-0.728,0.392-0.593,0.791l0,0 + c0.028,0.082,0.074,0.155,0.132,0.219c0.648,0.705,1.043,1.634,1.043,2.652c0,2.205-1.847,3.993-4.126,3.993 + s-4.126-1.788-4.126-3.993c0-1.018,0.395-1.947,1.043-2.652c0.058-0.063,0.104-0.137,0.132-0.219l0,0 + C17.117,0.392,16.809-0.017,16.389,0c-2.595,0.105-5.194,0.325-7.806,0.661c-1.064,0.137-1.908,0.963-2.07,2.024 + C6.051,5.711,5.819,8.818,5.7,11.845c-0.003,0.082-0.056,0.153-0.133,0.18h0c-0.148,0.052-0.311,0.002-0.41-0.12 + c-0.47-0.575-1.104-0.952-1.827-1.015c-1.65-0.144-3.133,1.399-3.312,3.448c-0.179,2.049,1.013,3.826,2.663,3.971 + c0.91,0.08,1.769-0.355,2.386-1.103c0.079-0.096,0.21-0.132,0.328-0.091h0c0.165,0.057,0.276,0.21,0.282,0.384 + c0.101,3.248,0.399,6.573,0.895,9.819c0.162,1.059,1.006,1.883,2.069,2.02c2.612,0.336,5.211,0.556,7.806,0.661 + c0.421,0.017,0.728-0.392,0.593-0.791v0c-0.028-0.082-0.074-0.155-0.132-0.219c-0.648-0.705-1.043-1.634-1.043-2.652 + c0-2.205,1.847-3.993,4.126-3.993s4.126,1.788,4.126,3.993c0,1.018-0.395,1.947-1.043,2.652c-0.058,0.063-0.104,0.137-0.132,0.219 + l0,0c-0.135,0.399,0.173,0.808,0.593,0.791c2.596-0.105,5.196-0.325,7.809-0.662c1.063-0.137,1.907-0.961,2.069-2.02 + c0.496-3.244,0.793-6.568,0.895-9.814c0.005-0.174,0.117-0.327,0.282-0.384l0.016-0.006c0.118-0.041,0.249-0.005,0.328,0.091 + c0.618,0.749,1.477,1.183,2.386,1.103C38.969,18.165,40.161,16.387,39.982,14.339z"/> diff --git a/funnel/static/img/peers.svg b/funnel/static/img/peers.svg index a1751c3fd..c72bc410b 100644 --- a/funnel/static/img/peers.svg +++ b/funnel/static/img/peers.svg @@ -1,471 +1,471 @@ + width="410px" height="251px" viewBox="0 0 410 251" enable-background="new 0 0 410 251" xml:space="preserve"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/funnel/templates/delete.html.jinja2 b/funnel/templates/delete.html.jinja2 index ce1e56a1c..6abe515bf 100644 --- a/funnel/templates/delete.html.jinja2 +++ b/funnel/templates/delete.html.jinja2 @@ -1,14 +1,14 @@ {% extends "layout.html.jinja2" %} {% block content %} -

    {{ message }}

    -
    - - {{ form.hidden_tag() }} - {% if form.csrf_token.errors %} -

    {% trans %}This form timed out because it was open for a long time. Please submit again{% endtrans %}

    - {% endif %} - - -
    +

    {{ message }}

    +
    + + {{ form.hidden_tag() }} + {% if form.csrf_token.errors %} +

    {% trans %}This form timed out because it was open for a long time. Please submit again{% endtrans %}

    + {% endif %} + + +
    {% endblock content %} diff --git a/requirements/base.py37.txt b/requirements/base.py37.txt index 248694728..c7b88b30c 100644 --- a/requirements/base.py37.txt +++ b/requirements/base.py37.txt @@ -104,7 +104,7 @@ click==8.1.6 # rq crontab==1.0.1 # via rq-scheduler -cryptography==41.0.2 +cryptography==41.0.3 # via -r requirements/base.in cssmin==0.2.0 # via baseframe diff --git a/requirements/base.txt b/requirements/base.txt index 49bfe07a2..71f62591e 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -99,7 +99,7 @@ click==8.1.6 # rq crontab==1.0.1 # via rq-scheduler -cryptography==41.0.2 +cryptography==41.0.3 # via -r requirements/base.in cssmin==0.2.0 # via baseframe From 7bcf97c1ab4a3ac866b150057799223062f59ba1 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Fri, 4 Aug 2023 13:01:57 +0530 Subject: [PATCH 226/281] Add contact consent popup to submission form (#1838) Co-authored-by: Kiran Jonnalagadda --- funnel/models/proposal.py | 8 +++- funnel/models/user.py | 2 +- funnel/templates/project_layout.html.jinja2 | 3 ++ funnel/templates/submission.html.jinja2 | 5 +++ funnel/templates/submission_form.html.jinja2 | 20 ++++++++- funnel/views/project.py | 45 ++++++++++++++++++++ funnel/views/proposal.py | 19 +++++++++ 7 files changed, 98 insertions(+), 4 deletions(-) diff --git a/funnel/models/proposal.py b/funnel/models/proposal.py index 9bd864af0..0c8c0843b 100644 --- a/funnel/models/proposal.py +++ b/funnel/models/proposal.py @@ -242,7 +242,13 @@ class Proposal( # type: ignore[misc] 'call': {'url_for', 'state', 'commentset', 'views', 'getprev', 'getnext'}, }, 'project_editor': { - 'call': {'reorder_item', 'reorder_before', 'reorder_after'}, + 'call': { + 'user', + 'first_user', + 'reorder_item', + 'reorder_before', + 'reorder_after', + }, }, } diff --git a/funnel/models/user.py b/funnel/models/user.py index 12623132e..6957e31e7 100644 --- a/funnel/models/user.py +++ b/funnel/models/user.py @@ -109,7 +109,7 @@ def avatar(self) -> Optional[ImgeeFurl]: def profile_url(self) -> Optional[str]: """Return optional URL to account page.""" profile = self.profile - return profile.url_for() if profile is not None else None + return profile.url_for(_external=True) if profile is not None else None with_roles(profile_url, read={'all'}) diff --git a/funnel/templates/project_layout.html.jinja2 b/funnel/templates/project_layout.html.jinja2 index fcadb2bd5..784a24851 100644 --- a/funnel/templates/project_layout.html.jinja2 +++ b/funnel/templates/project_layout.html.jinja2 @@ -230,6 +230,9 @@ {% if project.view_for('rsvp_list').is_available() %}
  • {{ faicon(icon='users', icon_size='subhead', baseline=false, css_class="mui--text-light fa-icon--right-margin mui--align-middle") }}{% trans %}View participants{% endtrans %}
  • {% endif %} + {% if project.view_for('proposals_csv').is_available() %} +
  • {{ faicon(icon='download', icon_size='subhead', baseline=false, css_class="mui--text-light fa-icon--right-margin mui--align-middle") }}{% trans %}Download submissions CSV{% endtrans %}
  • + {% endif %} {%- endif %}
    diff --git a/funnel/templates/submission.html.jinja2 b/funnel/templates/submission.html.jinja2 index c6841696b..4fad0ca6e 100644 --- a/funnel/templates/submission.html.jinja2 +++ b/funnel/templates/submission.html.jinja2 @@ -135,6 +135,11 @@ {%- endif %} {%- if proposal.current_roles.project_editor %} +
  • + {{ faicon(icon='eye', icon_size='subhead', baseline=false, css_class="mui--text-light fa-icon--right-margin mui--align-middle") }}{% trans %}View contact details{% endtrans %} +
  • + -
    {% endblock basecontent %} {% block pagescripts %} @@ -138,6 +153,7 @@ var markdownPreviewElem = '#preview'; var markdownPreviewApi = {{ url_for('markdown_preview')|tojson }}; window.Hasgeek.submissionFormInit(sortUrl, formId, markdownPreviewElem, markdownPreviewApi); + $('#contact-consent').modal(); }); {% endblock innerscripts %} diff --git a/funnel/views/project.py b/funnel/views/project.py index 153fcff15..723463cf4 100644 --- a/funnel/views/project.py +++ b/funnel/views/project.py @@ -329,6 +329,51 @@ def view_proposals(self) -> ReturnRenderWith: ], } + @route('sub/csv', methods=['GET']) + @requires_login + @requires_roles({'editor'}) + def proposals_csv(self) -> Response: + filename = f'submissions-{self.obj.profile.name}-{self.obj.name}.csv' + outfile = io.StringIO(newline='') + out = csv.writer(outfile) + out.writerow( + [ + 'title', + 'url', + 'proposer', + 'username', + 'email', + 'phone', + 'state', + 'labels', + 'body', + 'datetime', + ] + ) + for proposal in self.obj.proposals: + user = proposal.first_user + out.writerow( + [ + proposal.title, + proposal.url_for(_external=True), + user.fullname, + user.username, + user.email, + user.phone, + proposal.state.label.title, + '; '.join(label.title for label in proposal.labels), + proposal.body, + proposal.datetime.replace(second=0, microsecond=0).isoformat(), + ] + ) + + outfile.seek(0) + return Response( + outfile.getvalue(), + content_type='text/csv', + headers=[('Content-Disposition', f'attachment;filename="{filename}"')], + ) + @route('videos') @render_with(html_in_json('project_videos.html.jinja2')) def session_videos(self) -> ReturnRenderWith: diff --git a/funnel/views/proposal.py b/funnel/views/proposal.py index 7d1c1a2ba..36445e6ce 100644 --- a/funnel/views/proposal.py +++ b/funnel/views/proposal.py @@ -417,6 +417,25 @@ def edit_labels(self) -> ReturnView: title=_("Edit labels for '{}'").format(self.obj.title), ) + @route('contacts.json', methods=['GET']) + @requires_login + @requires_roles({'project_editor'}) + def contacts_json(self): + """Return the contact details of collaborators as JSON.""" + return { + 'title': self.obj.title, + 'collaborators': [ + { + 'fullname': membership.subject.fullname, + 'username': membership.subject.username, + 'profile': membership.subject.profile_url, + 'email': str(membership.subject.email), + 'phone': str(membership.subject.phone), + } + for membership in self.obj.memberships + ], + } + ProposalView.init_app(app) From a48240df3f96fe4d6d7029cf6652cd091ba3ad82 Mon Sep 17 00:00:00 2001 From: Mitesh Ashar Date: Fri, 4 Aug 2023 21:24:12 +0530 Subject: [PATCH 227/281] Assign unassigned tickets to user (#1840) * Use requires_sudo instead of requires_login for account merge * When a user adds an email address, assign unassigned tickets with that email address to the user * Assign unassigned tickets to newly registered users(via OTP), if email or phone match * Addresses failing tests for phone-based OTP logins * Add type for 'changes', update docstring * Fix typo * Assign ticket to user, when they register through an externalid and there is a match in email address * Unassign tickets of a user when they delete their account * Unassign tickets of a user when they delete their account --------- Co-authored-by: Kiran Jonnalagadda --- funnel/models/user.py | 5 ++++- funnel/views/login.py | 12 +++++++--- funnel/views/login_session.py | 2 +- funnel/views/ticket_participant.py | 35 +++++++++++++++++++++++++++++- 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/funnel/models/user.py b/funnel/models/user.py index 6957e31e7..faa1ccb60 100644 --- a/funnel/models/user.py +++ b/funnel/models/user.py @@ -741,7 +741,10 @@ def do_delete(self): ): db.session.delete(self.profile) - # 6. Clear fullname and stored password hash + # 7. Unassign tickets assigned to the user + self.ticket_participants = [] # pylint: disable=attribute-defined-outside-init + + # 8. Clear fullname and stored password hash self.fullname = '' self.password = None diff --git a/funnel/views/login.py b/funnel/views/login.py index ef22781a7..5d00c9f61 100644 --- a/funnel/views/login.py +++ b/funnel/views/login.py @@ -58,7 +58,7 @@ login_registry, ) from ..serializers import crossapp_serializer -from ..signals import user_data_changed +from ..signals import user_data_changed, user_registered from ..transports import TransportError, TransportRecipientError from ..typing import ReturnView from ..utils import abort_null @@ -70,6 +70,7 @@ register_internal, reload_for_cookies, requires_login, + requires_sudo, save_session_next_url, set_loginmethod_cookie, ) @@ -292,6 +293,7 @@ def login() -> ReturnView: user, session.get('next', ''), ) + user_registered.send(current_auth.user, changes=['registered-otp']) flash( _("You are now one of us. Welcome aboard!"), category='success' ) @@ -497,9 +499,10 @@ def login_service_postcallback(service: str, userdata: LoginProviderData) -> Ret Called from :func:`login_service_callback` after receiving data from the upstream login service. """ + new_registration = False # 1. Check whether we have an existing UserExternalId user, extid, useremail = get_user_extid(service, userdata) - # If extid is not None, user.extid == user, guaranteed. + # If extid is not None, extid.user == user, guaranteed. # If extid is None but useremail is not None, user == useremail.user # However, if both extid and useremail are present, they may be different users if extid is not None: @@ -546,6 +549,7 @@ def login_service_postcallback(service: str, userdata: LoginProviderData) -> Ret if Profile.is_available_name(userdata.username): # Set a username for this user if it's available user.username = userdata.username + new_registration = True else: # We have an existing user account from extid or useremail if current_auth and current_auth.user != user: # Woah! Account merger handler required @@ -594,6 +598,8 @@ def login_service_postcallback(service: str, userdata: LoginProviderData) -> Ret db.session.add(extid) # If we made a new extid, add it to the session now db.session.commit() + if new_registration: + user_registered.send(current_auth.user, changes=['registered-extid']) # Finally: set a login method cookie and send user on their way if not current_auth.user.is_profile_complete(): @@ -609,7 +615,7 @@ def login_service_postcallback(service: str, userdata: LoginProviderData) -> Ret @app.route('/account/merge', methods=['GET', 'POST']) -@requires_login +@requires_sudo def account_merge() -> ReturnView: """Merge two accounts.""" if 'merge_buid' not in session: diff --git a/funnel/views/login_session.py b/funnel/views/login_session.py index d19bdb9ba..6c94a029d 100644 --- a/funnel/views/login_session.py +++ b/funnel/views/login_session.py @@ -873,7 +873,7 @@ def register_internal(username, fullname, password): if not username: user.username = None db.session.add(user) - user_registered.send(user) + user_registered.send(user, changes=['registered']) return user diff --git a/funnel/views/ticket_participant.py b/funnel/views/ticket_participant.py index 4047e476a..fa67667be 100644 --- a/funnel/views/ticket_participant.py +++ b/funnel/views/ticket_participant.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Optional +from typing import List, Optional from flask import flash, request, url_for from sqlalchemy.exc import IntegrityError @@ -22,15 +22,19 @@ from .. import app from ..forms import TicketParticipantForm from ..models import ( + EmailAddress, Profile, Project, SyncTicket, TicketEvent, TicketEventParticipant, TicketParticipant, + User, db, + sa, ) from ..proxies import request_wants +from ..signals import user_data_changed, user_registered from ..typing import ReturnRenderWith, ReturnView from ..utils import ( abort_null, @@ -225,6 +229,35 @@ def label_badge(self) -> ReturnRenderWith: return {'badges': ticket_participant_badge_data([self.obj], self.obj.project)} +@user_data_changed.connect +@user_registered.connect +def user_ticket_assignment(user: User, changes: List[str]) -> None: + """Scan for event tickets to be assigned to the user based on matching contacts.""" + emails = [str(e) for e in user.emails] + phones = [str(p) for p in user.phones] + if {'email', 'phone', 'merge', 'registered-otp', 'registered-extid'} & set(changes): + updated = False + tickets = ( + TicketParticipant.query.join( + EmailAddress, TicketParticipant.email_address_id == EmailAddress.id + ) + .filter( + sa.or_( + EmailAddress.email.in_(emails), + TicketParticipant.phone.in_(phones), + ) + ) + .all() + ) + + for ticket in tickets: + if ticket.user is None: + updated = True + ticket.user = user + if updated: + db.session.commit() + + TicketParticipantView.init_app(app) From f6ee38096c83693a38a783bc26b71376d803b142 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Sun, 6 Aug 2023 14:55:31 +0530 Subject: [PATCH 228/281] Block emails to bouncing addresses (#1842) --- funnel/devtest.py | 1 + funnel/models/email_address.py | 6 ++++ funnel/transports/email/send.py | 55 +++++++++++++++++++---------- funnel/views/notification.py | 9 ++++- tests/unit/transports/email_test.py | 36 ++++++++++++++++++- 5 files changed, 86 insertions(+), 21 deletions(-) diff --git a/funnel/devtest.py b/funnel/devtest.py index 9bf43d885..41441b00a 100644 --- a/funnel/devtest.py +++ b/funnel/devtest.py @@ -200,6 +200,7 @@ def mock_email( attachments=None, from_email: Optional[Any] = None, headers: Optional[dict] = None, + base_url: Optional[str] = None, ) -> str: capture = CapturedEmail( subject, diff --git a/funnel/models/email_address.py b/funnel/models/email_address.py index b42ebcd1d..27c0d0878 100644 --- a/funnel/models/email_address.py +++ b/funnel/models/email_address.py @@ -351,6 +351,12 @@ def __str__(self) -> str: """Cast email address into a string.""" return self.email or '' + def __format__(self, format_spec: str) -> str: + """Format the email address.""" + if not format_spec: + return self.__str__() + return self.__str__().__format__(format_spec) + def __repr__(self) -> str: """Debugging representation of the email address.""" return f'EmailAddress({self.email!r})' diff --git a/funnel/transports/email/send.py b/funnel/transports/email/send.py index ee9319df0..bd36bbad6 100644 --- a/funnel/transports/email/send.py +++ b/funnel/transports/email/send.py @@ -118,24 +118,28 @@ def send_email( attachments: Optional[List[EmailAttachment]] = None, from_email: Optional[EmailRecipient] = None, headers: Optional[Union[dict, Headers]] = None, + base_url: Optional[str] = None, ) -> str: """ Send an email. - :param str subject: Subject line of email message - :param list to: List of recipients. May contain (a) User objects, (b) tuple of + :param subject: Subject line of email message + :param to: List of recipients. May contain (a) User objects, (b) tuple of (name, email_address), or (c) a pre-formatted email address - :param str content: HTML content of the message (plain text is auto-generated) - :param list attachments: List of :class:`EmailAttachment` attachments + :param content: HTML content of the message (plain text is auto-generated) + :param attachments: List of :class:`EmailAttachment` attachments :param from_email: Email sender, same format as email recipient - :param dict headers: Optional extra email headers (for List-Unsubscribe, etc) + :param headers: Optional extra email headers (for List-Unsubscribe, etc) + :param base_url: Optional base URL for all relative links in the email """ # Parse recipients and convert as needed to = [process_recipient(recipient) for recipient in to] if from_email: from_email = process_recipient(from_email) body = html2text(content) - html = transform(content, base_url=f'https://{app.config["DEFAULT_DOMAIN"]}/') + html = transform( + content, base_url=base_url or f'https://{app.config["DEFAULT_DOMAIN"]}/' + ) headers = Headers() if headers is None else Headers(headers) # Amazon SES will replace Message-ID, so we keep our original in an X- header @@ -158,16 +162,27 @@ def send_email( filename=attachment.filename, mimetype=attachment.mimetype, ) - try: - # If an EmailAddress is blocked, this line will throw an exception - emails = [ - EmailAddress.add(email) for name, email in getaddresses(msg.recipients()) - ] - except EmailAddressBlockedError as exc: - raise TransportRecipientError(_("This email address has been blocked")) from exc - # FIXME: This won't raise an exception on delivery_state.HARD_FAIL. We need to do - # catch that, remove the recipient, and notify the user via the upcoming - # notification centre. (Raise a TransportRecipientError) + + email_addresses: List[EmailAddress] = [] + for _name, email in getaddresses(msg.recipients()): + try: + # If an EmailAddress is blocked, this line will throw an exception + ea = EmailAddress.add(email) + # If an email address is hard-bouncing, it cannot be emailed or it'll hurt + # sender reputation. There is no automated way to flag an email address as + # no longer bouncing, so it'll require customer support intervention + if ea.delivery_state.HARD_FAIL: + raise TransportRecipientError( + _( + "This email address is bouncing messages: {email}. If you" + " believe this to be incorrect, please contact customer support" + ).format(email=email) + ) + email_addresses.append(ea) + except EmailAddressBlockedError as exc: + raise TransportRecipientError( + _("This email address has been blocked: {email}").format(email=email) + ) from exc try: msg.send() @@ -182,10 +197,12 @@ def send_email( else: if len(to) == len(exc.recipients): + # We don't know which recipients were rejected, so the error message + # can't identify them message = _("These email addresses are not valid") else: message = _("These email addresses are not valid: {emails}").format( - emails=', '.join(exc.recipients.keys()) + emails=_(", ").join(exc.recipients.keys()) ) raise TransportRecipientError(message) from exc @@ -193,8 +210,8 @@ def send_email( # statistics counters. Note that this will only track emails sent by *this app*. # However SES events will track statistics across all apps and hence the difference # between this counter and SES event counters will be emails sent by other apps. - statsd.incr('email_address.sent', count=len(emails)) - for ea in emails: + statsd.incr('email_address.sent', count=len(email_addresses)) + for ea in email_addresses: ea.mark_sent() return headers['Message-ID'] diff --git a/funnel/views/notification.py b/funnel/views/notification.py index 741e34cf4..27a5c37b4 100644 --- a/funnel/views/notification.py +++ b/funnel/views/notification.py @@ -23,6 +23,7 @@ from ..models import ( Notification, NotificationFor, + User, UserEmail, UserNotification, UserPhone, @@ -336,7 +337,7 @@ def has_current_access(self) -> bool: # --- Overrideable render methods @property - def actor(self): + def actor(self) -> Optional[User]: """Actor that prompted this notification. May be overriden.""" return self.notification.user @@ -348,6 +349,11 @@ def web(self) -> str: """ raise NotImplementedError("Subclasses must implement `web`") + @property + def email_base_url(self) -> str: + """Base URL for relative links in email.""" + return self.notification.role_provider_obj.absolute_url + def email_subject(self) -> str: """ Render the subject of an email update, suitable for handing over to send_email. @@ -547,6 +553,7 @@ def dispatch_transport_email( 'List-Unsubscribe-Post': 'One-Click', 'List-Archive': f'<{url_for("notifications")}>', }, + base_url=view.email_base_url, ) statsd.incr( 'notification.transport', diff --git a/tests/unit/transports/email_test.py b/tests/unit/transports/email_test.py index c24cedfb3..c25a57899 100644 --- a/tests/unit/transports/email_test.py +++ b/tests/unit/transports/email_test.py @@ -1,8 +1,12 @@ """Test email transport functions.""" + +import pytest from flask_mailman.message import sanitize_address -from funnel.transports.email import process_recipient +from funnel.models import EmailAddress +from funnel.transports import TransportRecipientError +from funnel.transports.email import process_recipient, send_email def test_process_recipient() -> None: @@ -47,3 +51,33 @@ def test_process_recipient() -> None: ) ) assert process_recipient(("", "example@example.com")) == 'example@example.com' + + +@pytest.mark.usefixtures('db_session') +def test_send_email_blocked() -> None: + """Confirm that send_email will raise an exception on a blocked email address.""" + ea = EmailAddress.add('blocked@example.com') + EmailAddress.mark_blocked(ea.email) + with pytest.raises( + TransportRecipientError, match='This email address has been blocked' + ): + send_email("Email subject", ['blocked@example.com'], "Email content") + + +@pytest.mark.usefixtures('db_session') +def test_send_email_hard_bouncing() -> None: + """Confirm that send_email will raise an exception on a hard bouncing email.""" + ea = EmailAddress.add('hard-fail@example.com') + ea.mark_hard_fail() + with pytest.raises(TransportRecipientError, match='This email address is bouncing'): + send_email("Email subject", ['hard-fail@example.com'], "Email content") + + +@pytest.mark.usefixtures('db_session') +def test_send_email_soft_bouncing() -> None: + """Confirm that send_email will not fail on a soft bouncing email address.""" + ea = EmailAddress.add('soft-fail@example.com') + ea.mark_soft_fail() + assert isinstance( + send_email("Email subject", ['soft-fail@example.com'], "Email content"), str + ) From b834167f036d2ef05192ef64796fce9ca28bbab1 Mon Sep 17 00:00:00 2001 From: Vidya Ramakrishnan Date: Sun, 6 Aug 2023 15:11:31 +0530 Subject: [PATCH 229/281] Show past featured sessions with videos on profile page (#1839) Co-authored-by: Kiran Jonnalagadda --- funnel/templates/macros.html.jinja2 | 5 +++- .../past_projects_section.html.jinja2 | 2 +- .../past_sessions_section.html.jinja2 | 16 +++++++++++ funnel/templates/profile.html.jinja2 | 1 + funnel/templates/profile_layout.html.jinja2 | 27 ++++++++++++++++-- funnel/views/profile.py | 28 ++++++++++++++++++- 6 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 funnel/templates/past_sessions_section.html.jinja2 diff --git a/funnel/templates/macros.html.jinja2 b/funnel/templates/macros.html.jinja2 index 64658285c..6c2cc9b0a 100644 --- a/funnel/templates/macros.html.jinja2 +++ b/funnel/templates/macros.html.jinja2 @@ -217,7 +217,7 @@ {% endmacro %} -{% macro video_thumbnail(session) %} +{% macro video_thumbnail(session, project_heading=false) %}
    {%- if session.views.video.thumbnail %} @@ -227,6 +227,9 @@ {{ session.title }} {%- endif %} + {%- if project_heading %} +

    {{ session.project.title }}

    + {%- endif %}

    {{ session.title }}

    {%- if session.speaker %}

    {{ session.speaker }}

    {%- endif %} {%- if session.views.video %} diff --git a/funnel/templates/past_projects_section.html.jinja2 b/funnel/templates/past_projects_section.html.jinja2 index f9d77c465..126d6799b 100644 --- a/funnel/templates/past_projects_section.html.jinja2 +++ b/funnel/templates/past_projects_section.html.jinja2 @@ -23,6 +23,6 @@ hx-get="{{ url_for('past_projects', page=next_page) }}" {%- endif %} hx-trigger="revealed" - hx-swap="afterend"> + hx-swap="outerHTML"> {% endif %} diff --git a/funnel/templates/past_sessions_section.html.jinja2 b/funnel/templates/past_sessions_section.html.jinja2 new file mode 100644 index 000000000..bbeb79ec2 --- /dev/null +++ b/funnel/templates/past_sessions_section.html.jinja2 @@ -0,0 +1,16 @@ +{%- from "macros.html.jinja2" import video_thumbnail, faicon %} + +{% for session in past_sessions %} +
  • + {{ video_thumbnail(session, project_heading=true) }} +
  • +{%- else -%} +

    {% trans %}No past videos{% endtrans %}

    +{%- endfor -%} +{% if next_page %} +
  • Loading +
  • +{% endif %} diff --git a/funnel/templates/profile.html.jinja2 b/funnel/templates/profile.html.jinja2 index ad7a19c22..8e91f8f6e 100644 --- a/funnel/templates/profile.html.jinja2 +++ b/funnel/templates/profile.html.jinja2 @@ -143,6 +143,7 @@ {{ upcoming_section(upcoming_projects) }} {{ open_cfp_section(open_cfp_projects) }} {{ all_projects_section(all_projects) }} + {{ past_featured_session_videos(profile) }} {% if sponsored_projects %}
    diff --git a/funnel/templates/profile_layout.html.jinja2 b/funnel/templates/profile_layout.html.jinja2 index 1b7e692ef..981bb9cfc 100644 --- a/funnel/templates/profile_layout.html.jinja2 +++ b/funnel/templates/profile_layout.html.jinja2 @@ -1,5 +1,5 @@ {% extends "layout.html.jinja2" %} -{%- from "macros.html.jinja2" import img_size, saveprojectform, calendarwidget, projectcard %} +{%- from "macros.html.jinja2" import img_size, saveprojectform, calendarwidget, projectcard, video_thumbnail %} {% block title %}{{ profile.title }}{% endblock title %} {% macro featured_section(featured_project, heading=true) %} @@ -297,7 +297,8 @@ {% trans %}Location{% endtrans %} - + +
    @@ -306,6 +307,28 @@
    {% endmacro %} +{% macro past_featured_session_videos(profile) %} +
    +
    +
    +
    +

    {% trans %}Past videos{% endtrans %}

    +
    +
      +
    • +
      +
      +

      {{ faicon(icon='play', icon_size='headline', baseline=false) }}

      +

      Loading

      +
      +
      +
    • +
    +
    +
    +
    +{% endmacro %} + {% macro profile_header(profile, class="", current_page='profile', title="") %}
    diff --git a/funnel/views/profile.py b/funnel/views/profile.py index ea60cfd0f..fb773ddbd 100644 --- a/funnel/views/profile.py +++ b/funnel/views/profile.py @@ -26,7 +26,7 @@ ProfileLogoForm, ProfileTransitionForm, ) -from ..models import Profile, Project, db, sa +from ..models import Profile, Project, Session, db, sa from ..typing import ReturnRenderWith, ReturnView from .helpers import render_redirect from .login_session import requires_login, requires_user_not_spammy @@ -268,6 +268,32 @@ def past_projects(self, page: int = 1, per_page: int = 10) -> ReturnView: ], } + @route('past.sessions') + @requestargs(('page', int), ('per_page', int)) + @render_with('past_sessions_section.html.jinja2') + def past_sessions(self, page: int = 1, per_page: int = 10) -> ReturnView: + featured_sessions = ( + Session.query.join(Project, Session.project_id == Project.id) + .filter( + Session.featured.is_(True), + Session.video_id.is_not(None), + Session.video_source.is_not(None), + Project.state.PUBLISHED, + Project.profile == self.obj, + ) + .order_by(Session.start_at.desc()) + ) + pagination = featured_sessions.paginate(page=page, per_page=per_page) + return { + 'status': 'ok', + 'profile': self.obj, + 'next_page': ( + pagination.page + 1 if pagination.page < pagination.pages else '' + ), + 'total_pages': pagination.pages, + 'past_sessions': pagination.items, + } + @route('edit', methods=['GET', 'POST']) @requires_roles({'admin'}) @requires_user_not_spammy() From 94d9a98366c072184d164e14fffa8c42fce3123c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Aug 2023 22:40:15 +0530 Subject: [PATCH 230/281] [pre-commit.ci] pre-commit autoupdate (#1844) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0c1c97a74..296872ad1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -182,14 +182,14 @@ repos: - id: trailing-whitespace args: ['--markdown-linebreak-ext=md'] - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.5.1 + rev: v1.5.3 hooks: - id: forbid-crlf - id: remove-crlf - id: forbid-tabs - id: remove-tabs - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.0.0 + rev: v3.0.1 hooks: - id: prettier args: From 9d75596eacb3e7998b18170d3b894152d3dc0335 Mon Sep 17 00:00:00 2001 From: Kiran Jonnalagadda Date: Mon, 7 Aug 2023 22:46:07 +0530 Subject: [PATCH 231/281] Restrict video to participants (#1845) --- funnel/forms/session.py | 5 +- funnel/models/session.py | 7 +++ .../templates/session_view_popup.html.jinja2 | 27 +++++++--- funnel/templates/submission.html.jinja2 | 4 +- funnel/views/session.py | 4 +- ...7_add_restricted_video_flag_to_session_.py | 51 +++++++++++++++++++ 6 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 migrations/versions/ee418ce7d057_add_restricted_video_flag_to_session_.py diff --git a/funnel/forms/session.py b/funnel/forms/session.py index 0b537dd11..2bec70d1e 100644 --- a/funnel/forms/session.py +++ b/funnel/forms/session.py @@ -54,7 +54,7 @@ class SessionForm(forms.Form): ) video_url = forms.URLField( __("Video URL"), - description=__("URL of the uploaded video after the session is over"), + description=__("URL of the session’s video (YouTube or Vimeo)"), validators=[ forms.validators.Optional(), forms.validators.URL(), @@ -63,6 +63,9 @@ class SessionForm(forms.Form): ], filters=nullable_strip_filters, ) + is_restricted_video = forms.BooleanField( + __("Restrict video to participants"), default=False + ) @SavedSession.forms('main') diff --git a/funnel/models/session.py b/funnel/models/session.py index 5a3f22816..1506b4022 100644 --- a/funnel/models/session.py +++ b/funnel/models/session.py @@ -77,6 +77,9 @@ class Session(UuidMixin, BaseScopedIdNameMixin, VideoMixin, Model): ) is_break = sa.orm.mapped_column(sa.Boolean, default=False, nullable=False) featured = sa.orm.mapped_column(sa.Boolean, default=False, nullable=False) + is_restricted_video = sa.orm.mapped_column( + sa.Boolean, default=False, nullable=False + ) banner_image_url: Mapped[Optional[str]] = sa.orm.mapped_column( ImgeeType, nullable=True ) @@ -142,6 +145,7 @@ class Session(UuidMixin, BaseScopedIdNameMixin, VideoMixin, Model): 'end_at', 'venue_room', 'is_break', + 'is_restricted_video', 'banner_image_url', 'start_at_localized', 'end_at_localized', @@ -164,6 +168,7 @@ class Session(UuidMixin, BaseScopedIdNameMixin, VideoMixin, Model): 'end_at', 'venue_room', 'is_break', + 'is_restricted_video', 'banner_image_url', 'start_at_localized', 'end_at_localized', @@ -179,6 +184,7 @@ class Session(UuidMixin, BaseScopedIdNameMixin, VideoMixin, Model): 'end_at', 'venue_room', 'is_break', + 'is_restricted_video', 'banner_image_url', 'start_at_localized', 'end_at_localized', @@ -194,6 +200,7 @@ class Session(UuidMixin, BaseScopedIdNameMixin, VideoMixin, Model): 'end_at', 'venue_room', 'is_break', + 'is_restricted_video', 'banner_image_url', 'start_at_localized', 'end_at_localized', diff --git a/funnel/templates/session_view_popup.html.jinja2 b/funnel/templates/session_view_popup.html.jinja2 index 8a0a781da..807cd25aa 100644 --- a/funnel/templates/session_view_popup.html.jinja2 +++ b/funnel/templates/session_view_popup.html.jinja2 @@ -30,16 +30,29 @@